From patchwork Thu Nov 24 23:26:36 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Gleixner X-Patchwork-Id: 25773 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:adf:f944:0:0:0:0:0 with SMTP id q4csp3689353wrr; Thu, 24 Nov 2022 16:49:29 -0800 (PST) X-Google-Smtp-Source: AA0mqf4ZEm7XqVWJ1aUuiGujGbyfaD4Qvltmv6Tu/blp0NLF1gZfk0rl1RrPm17Km/Ry8fDWtTuA X-Received: by 2002:a63:4701:0:b0:476:d784:1c44 with SMTP id u1-20020a634701000000b00476d7841c44mr15415472pga.431.1669337369466; Thu, 24 Nov 2022 16:49:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1669337369; cv=none; d=google.com; s=arc-20160816; b=NwWdlire+Ht0xr4aPjfIuS3fg9JhBnU1LXHf0rD0/IFT9bUngg6Ubwmef6wIOBEdV1 J57JwbawIH0Fhdwu9qPotHUfaHpqsFdQY3O1RrGire8ZZJoEDV5FtTpGS2gsMlEvUYpc vvsfbvW/80i3z8+njD7ocqb5y1F8uiLotKwYdjim77w/W81jgmFPpcIkl90hf7B3gOm8 24QemFbKyCTXCxMkCagkyFaCmN5inCEbFkki77VZwjeaQURHmo3s8Jlics1wPx7BmkL3 Z6TNO7nVuk8h2/JjoQnxv12nhW10tcrwhXlg/MlowA2Tj6NtEGtHkQj21kj+NyNoEkkH 3UuQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:date:mime-version:references:subject:cc:to:from :dkim-signature:dkim-signature:message-id; bh=/8ptqSNRM2lDaMDazh2hH5MeM7Cg1Cfp+pBZYsTAF/4=; b=z9iogdMgFmEEYki2odzdbALyPA4clAvWdBlEtJa4Ar13D03taA3DA2pi/uhGtDcs6m RXa8uLusW4o58d2b8n3MYJhu9tcjCrv0V1g5OdAO3C0s9HQ4wuu59Tge11asKlI08ziA VQcLP+1yUsNvwYl+VXbidCe2Cjqj9HY9Pb/K9m+3gnIg8FaKSEM7ZJHWQRUfjtCbSagR J6SFk3xCHpaMLF7jNN0UIoszF9f7n7PG99NMFQqOKMGvcjUw5IyMTVODVRJtbsmVgw9M fg636hx3FMPvp2NEQVm5E5MonYg/jPb8uDadEt32F5vvjHNEiACnl6Lgj21zklmefYYt mnOQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=WWGH+ztk; dkim=neutral (no key) header.i=@linutronix.de; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h13-20020a170902680d00b001869c2b3a3csi2147881plk.537.2022.11.24.16.49.16; Thu, 24 Nov 2022 16:49:29 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=WWGH+ztk; dkim=neutral (no key) header.i=@linutronix.de; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230050AbiKXXa6 (ORCPT + 99 others); Thu, 24 Nov 2022 18:30:58 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54438 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230011AbiKXXaB (ORCPT ); Thu, 24 Nov 2022 18:30:01 -0500 Received: from galois.linutronix.de (Galois.linutronix.de [IPv6:2a0a:51c0:0:12e:550::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 722D68CF33; Thu, 24 Nov 2022 15:28:02 -0800 (PST) Message-ID: <20221124232327.140571546@linutronix.de> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1669332396; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=/8ptqSNRM2lDaMDazh2hH5MeM7Cg1Cfp+pBZYsTAF/4=; b=WWGH+ztk9ARRPXkCs//xWWHperFjxKzonkgGGDJYW5Dqx/aG3uvU8oBe1ufx0DJvtxmdrS MYEn9Vx62ip2hWr5M2DmLHvrtWHQRklP+B1uLhTthr8M8IFd7HgOKNhSQskuUDCla+JP59 WE3QBcVwTIwI07wMj7T44s2DIc+yCHwMaw1aCMH9oMD7efmATrdG9bt85OhSaYQs2P2PXd D1pb97jY8/MmPPn9qXm6cYVrJ6UEOx9e8oV+q+7bMVMl19ZUUhgxFFyPmMvqTVh+yk7zs/ OxrRF97L/y/0nULYcuMSOon+0LoLchmv8ilaPplXa2pM7b7AUSP0j85yZdRzVw== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1669332396; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: references:references; bh=/8ptqSNRM2lDaMDazh2hH5MeM7Cg1Cfp+pBZYsTAF/4=; b=JfV3W3IYhlVyRU9VQDQP/+KkG87oio6896IfInAUeN6yem7L5Iohw2fGrPxWEjycry7KNM DCdZd0v4WszkQpCg== From: Thomas Gleixner To: LKML Cc: x86@kernel.org, Joerg Roedel , Will Deacon , linux-pci@vger.kernel.org, Bjorn Helgaas , Lorenzo Pieralisi , Marc Zyngier , Greg Kroah-Hartman , Jason Gunthorpe , Dave Jiang , Alex Williamson , Kevin Tian , Dan Williams , Logan Gunthorpe , Ashok Raj , Jon Mason , Allen Hubbe Subject: [patch V3 32/33] iommu/amd: Enable PCI/IMS References: <20221124230505.073418677@linutronix.de> MIME-Version: 1.0 Date: Fri, 25 Nov 2022 00:26:36 +0100 (CET) X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1750427101373234803?= X-GMAIL-MSGID: =?utf-8?q?1750427101373234803?= PCI/IMS works like PCI/MSI-X in the remapping. Just add the feature flag, but only when on real hardware. Virtualized IOMMUs need additional support. Signed-off-by: Thomas Gleixner --- V3: Only enable on real hardware (Kevin) --- drivers/iommu/amd/iommu.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) --- a/drivers/iommu/amd/iommu.c +++ b/drivers/iommu/amd/iommu.c @@ -3649,11 +3649,20 @@ static struct irq_chip amd_ir_chip = { }; static const struct msi_parent_ops amdvi_msi_parent_ops = { - .supported_flags = X86_VECTOR_MSI_FLAGS_SUPPORTED | MSI_FLAG_MULTI_PCI_MSI, + .supported_flags = X86_VECTOR_MSI_FLAGS_SUPPORTED | + MSI_FLAG_MULTI_PCI_MSI | + MSI_FLAG_PCI_IMS, .prefix = "IR-", .init_dev_msi_info = msi_parent_init_dev_msi_info, }; +static const struct msi_parent_ops virt_amdvi_msi_parent_ops = { + .supported_flags = X86_VECTOR_MSI_FLAGS_SUPPORTED | + MSI_FLAG_MULTI_PCI_MSI, + .prefix = "vIR-", + .init_dev_msi_info = msi_parent_init_dev_msi_info, +}; + int amd_iommu_create_irq_domain(struct amd_iommu *iommu) { struct fwnode_handle *fn; @@ -3670,7 +3679,11 @@ int amd_iommu_create_irq_domain(struct a irq_domain_update_bus_token(iommu->ir_domain, DOMAIN_BUS_AMDVI); iommu->ir_domain->flags |= IRQ_DOMAIN_FLAG_MSI_PARENT; - iommu->ir_domain->msi_parent_ops = &amdvi_msi_parent_ops; + + if (amd_iommu_np_cache) + iommu->ir_domain->msi_parent_ops = &virt_amdvi_msi_parent_ops; + else + iommu->ir_domain->msi_parent_ops = &amdvi_msi_parent_ops; return 0; }