From patchwork Thu Apr 13 04:06:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolu Lu X-Patchwork-Id: 82778 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp775367vqo; Wed, 12 Apr 2023 21:22:07 -0700 (PDT) X-Google-Smtp-Source: AKy350aIGH3sQggxvmjQdlDJwAb3YqwQ+vQPTi0sOehKssvOysc4q8lDMahA0pj7VThgOtcCmS9X X-Received: by 2002:a17:907:a49:b0:94e:9efa:2a86 with SMTP id be9-20020a1709070a4900b0094e9efa2a86mr1124120ejc.15.1681359727334; Wed, 12 Apr 2023 21:22:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681359727; cv=none; d=google.com; s=arc-20160816; b=qyVNGqkFv1gjT6n3iHWFKk+XUV24MwsMz6kAqxUwW4QEqX9TO5/gTP6nlo4WKK1L+c 6t9VCY+9IQnDIU3giUDJgfSIJrA5dOqp3S/uoNbxZcIkCKgQduLVOyZRlRYhFi7oFfgh reBnA1r2S1Yraxk+FcrH7ltiVdWUo0xxyWj8/JNbXXkyIVD+4dK24GTfThUq6LQXKZeO 90QOuUm0Ffh6lTx8EyRLHi33pfVp9+sZsc+5AJ1jCp5A9ImPYpf11KB0DqkulI/EK8QN ZST/NLKvy5gQV4LrRr2KsM85qo29pLnwJ/HAz1YGMUgxHtxytHfOT2orH+t6zgt/1srf PvkA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=QNffrsOaPumzXjVNxgC3OY4a07NDvgzKCFKLxh0izCU=; b=khuUeDDkqZdyvb4FbyazxYSRMhpdO2ceRfrO1A746sByq4wvqOmbdpP6w/LxLzt+k5 UiC/7VAG3+ng6LgrjcNgeM6B/oT7jibjeRxyY6cNiscJxfhxKZiGydOWk00FbaSKZJqB 7wip1uOqs8F7PuvNrX93q8BE64JQiJIFzXt11vgIm5pavckyJamWyU9yvQYLERCwe+5m gPg6g9KzdMdz67V1KBlxLcRI7BLlQmEqmQkmPqDXWF9l+4oxzY4bTSx6RcaDut02tk8O WaLtwzqa5kaFrU/1ti88t6gaf0lV3Wf9B4VB1V7v61vcw+x53vowtkbLOXQxWFUCkCqi u0xw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=l57rlOs4; 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=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id wg13-20020a1709078f0d00b00947ab463d2dsi690336ejc.674.2023.04.12.21.21.43; Wed, 12 Apr 2023 21:22:07 -0700 (PDT) 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=@intel.com header.s=Intel header.b=l57rlOs4; 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=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229900AbjDMEHk (ORCPT + 99 others); Thu, 13 Apr 2023 00:07:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36780 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229734AbjDMEGy (ORCPT ); Thu, 13 Apr 2023 00:06:54 -0400 Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7E14676A2 for ; Wed, 12 Apr 2023 21:06:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1681358813; x=1712894813; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=UfvO6KWRpB3fInOz1odZU3ajkyQZJiVnPHFd0TJPDQ4=; b=l57rlOs4lRXdO8U3cFcRXOpN3juonVwGIYlnaqQochJOL0cfNxK/qesi lmwbTbgmuFtDAffyN399FPFUUiFf6K3LCStyl6praJgpDe5WeDYTVgnJQ aFf12M08OKQ877p1CTPCL+NYZAsZb/TeU1gd/0IHaG3s5loA3V4a8Gfc4 To+aM1L7jwlwqAvA10ZieEsLLA/eyBjUX+IYZMoNzyD+PFbp4SXwYtFSQ JMZUng2TxL1VV99+jGZhK6neAR30ltSAT5Rsl5lxVYC5Pv+KpJsR4N7Rh +6WgV2SxvgPk6u1dZ1igUv8c84CB6bCWrLqMybRZceZCwMSoVOw2k+gcy A==; X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="323702324" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="323702324" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Apr 2023 21:06:49 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="935360963" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="935360963" Received: from allen-box.sh.intel.com ([10.239.159.127]) by fmsmga006.fm.intel.com with ESMTP; 12 Apr 2023 21:06:43 -0700 From: Lu Baolu To: Joerg Roedel Cc: Tina Zhang , Jacob Pan , Christophe JAILLET , iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 01/17] dmaengine: idxd: Add enable/disable device IOPF feature Date: Thu, 13 Apr 2023 12:06:29 +0800 Message-Id: <20230413040645.46157-2-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230413040645.46157-1-baolu.lu@linux.intel.com> References: <20230413040645.46157-1-baolu.lu@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_PASS, SPF_NONE,URIBL_BLOCKED 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?1763033457698095132?= X-GMAIL-MSGID: =?utf-8?q?1763033457698095132?= The iommu subsystem requires IOMMU_DEV_FEAT_IOPF must be enabled before and disabled after IOMMU_DEV_FEAT_SVA, if device's I/O page faults rely on the IOMMU. Add explicit IOMMU_DEV_FEAT_IOPF enabling/disabling in this driver. At present, missing IOPF enabling/disabling doesn't cause any real issue, because the IOMMU driver places the IOPF enabling/disabling in the path of SVA feature handling. But this may change. Reviewed-by: Dave Jiang Reviewed-by: Fenghua Yu Reviewed-by: Kevin Tian Acked-by: Vinod Koul Signed-off-by: Lu Baolu Link: https://lore.kernel.org/r/20230324120234.313643-2-baolu.lu@linux.intel.com --- drivers/dma/idxd/init.c | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/drivers/dma/idxd/init.c b/drivers/dma/idxd/init.c index 640d3048368e..09ef62aa0635 100644 --- a/drivers/dma/idxd/init.c +++ b/drivers/dma/idxd/init.c @@ -516,6 +516,27 @@ static void idxd_disable_system_pasid(struct idxd_device *idxd) idxd->sva = NULL; } +static int idxd_enable_sva(struct pci_dev *pdev) +{ + int ret; + + ret = iommu_dev_enable_feature(&pdev->dev, IOMMU_DEV_FEAT_IOPF); + if (ret) + return ret; + + ret = iommu_dev_enable_feature(&pdev->dev, IOMMU_DEV_FEAT_SVA); + if (ret) + iommu_dev_disable_feature(&pdev->dev, IOMMU_DEV_FEAT_IOPF); + + return ret; +} + +static void idxd_disable_sva(struct pci_dev *pdev) +{ + iommu_dev_disable_feature(&pdev->dev, IOMMU_DEV_FEAT_SVA); + iommu_dev_disable_feature(&pdev->dev, IOMMU_DEV_FEAT_IOPF); +} + static int idxd_probe(struct idxd_device *idxd) { struct pci_dev *pdev = idxd->pdev; @@ -530,7 +551,7 @@ static int idxd_probe(struct idxd_device *idxd) dev_dbg(dev, "IDXD reset complete\n"); if (IS_ENABLED(CONFIG_INTEL_IDXD_SVM) && sva) { - if (iommu_dev_enable_feature(dev, IOMMU_DEV_FEAT_SVA)) { + if (idxd_enable_sva(pdev)) { dev_warn(dev, "Unable to turn on user SVA feature.\n"); } else { set_bit(IDXD_FLAG_USER_PASID_ENABLED, &idxd->flags); @@ -578,21 +599,19 @@ static int idxd_probe(struct idxd_device *idxd) if (device_pasid_enabled(idxd)) idxd_disable_system_pasid(idxd); if (device_user_pasid_enabled(idxd)) - iommu_dev_disable_feature(dev, IOMMU_DEV_FEAT_SVA); + idxd_disable_sva(pdev); return rc; } static void idxd_cleanup(struct idxd_device *idxd) { - struct device *dev = &idxd->pdev->dev; - perfmon_pmu_remove(idxd); idxd_cleanup_interrupts(idxd); idxd_cleanup_internals(idxd); if (device_pasid_enabled(idxd)) idxd_disable_system_pasid(idxd); if (device_user_pasid_enabled(idxd)) - iommu_dev_disable_feature(dev, IOMMU_DEV_FEAT_SVA); + idxd_disable_sva(idxd->pdev); } static int idxd_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) @@ -710,7 +729,7 @@ static void idxd_remove(struct pci_dev *pdev) pci_free_irq_vectors(pdev); pci_iounmap(pdev, idxd->reg_base); if (device_user_pasid_enabled(idxd)) - iommu_dev_disable_feature(&pdev->dev, IOMMU_DEV_FEAT_SVA); + idxd_disable_sva(pdev); pci_disable_device(pdev); destroy_workqueue(idxd->wq); perfmon_pmu_remove(idxd); From patchwork Thu Apr 13 04:06:30 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolu Lu X-Patchwork-Id: 82765 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp770787vqo; Wed, 12 Apr 2023 21:08:50 -0700 (PDT) X-Google-Smtp-Source: AKy350ZtJFxzVwNEktJi6Eh+KhcGM2oGRf9oSP7iawS2T3RwIy7KJGoMg6kw7znvrLIC0rGY5ZPr X-Received: by 2002:a17:907:3112:b0:933:3b2e:6016 with SMTP id wl18-20020a170907311200b009333b2e6016mr1030242ejb.7.1681358930036; Wed, 12 Apr 2023 21:08:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681358930; cv=none; d=google.com; s=arc-20160816; b=tIZPGkLHEepBLCJO89lJFtF5H80/W5izVV6icfGHIMhJKLIiN6x0PjNgobSKid8uUM JdpXxK2TYEBVebnrO+0Ye+KVksoMGWjKV9w9OiRJkmuSOHQKj8lcCaN70uPdpQQI5GT1 bqrPH7/GXx6Om3RNRjgTG6SwD3MBsr1wsDdzYv6H0v83c7MDP++9MIr9/SiQ4z2Xm83W 6aTCZtH8L2SI28HUDO4d2jLHEKLSEHKWD/Udaq4hZ8BGmtWN7a5EjH5b1/LMvptjYqwg mvq2kXTrLt8rTAFCAh4SAsqHrhyK5MUcWVGx8Ai8gADR38wLx5ZWFNiPEZEMzbDMVUik NP9Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=HzKsz7jNlWnzWgPd2vx0mLE6A+aXguSuShUgDyco2Cg=; b=sC15QCRbDItrlT7pqtAEPdwzqbKIhC2PbDS0unsX1vC+Ra89aBibiOxy0IlHANVHIw bbsPyAGK2J6jGmpmwDFm5quiDBPnYLENGw/IaTur3WGRHJ4VUkkCwCugjT2FYyZl+8vr IJVpwxI1M6ZCcxCADfOzFgLPgaMXGSlz23glNMelAZjujFQXNw0kODKYl8JOgAf5h/x5 nQretUnWs/PvEczZr7zvnjtvytNriYOugp3RpZtgU2oVfqDB98MyOcWEanWQg837yzGA JnM6rNE2SghP8mioVJoyBoWivLBFO9LOhY/0J1YS7Zh1SzvqFVpjAsCAw93O2Cp7xbYs BNwg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="TiB2xdO/"; 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=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id fl23-20020a1709072a9700b0094e887f845csi684641ejc.277.2023.04.12.21.08.25; Wed, 12 Apr 2023 21:08:50 -0700 (PDT) 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=@intel.com header.s=Intel header.b="TiB2xdO/"; 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=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229742AbjDMEGz (ORCPT + 99 others); Thu, 13 Apr 2023 00:06:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36666 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229451AbjDMEGu (ORCPT ); Thu, 13 Apr 2023 00:06:50 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0F3A372BB for ; Wed, 12 Apr 2023 21:06:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1681358808; x=1712894808; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=rMHo8yYSBVXvdzGdpugvYObeZKKcdE/cMZKOA3T4vNU=; b=TiB2xdO/59MGPxxW+IIvYDZZAlJAgiE9qtG7sVXEwmpp5rQI73VnnwSC 1t57xhgWAOs7cn5K7h0f7eIDazrS2XywubqG7b/U0Qf9SeP6HASTG7e3x ZtXcubuNXuXPCmWnu5ynFjXjtRLBSx+ECkkvNs89tBLgzp+7eDu30dlZp IyEEH3znnQykle675V1lBheMWYbb/ynt184M4UOWTJw7HGo6HQdqcgcf7 opt/OoiU89vgY7rGlCGjkpr5ssEkpKnNi4J3+lrK4r4Apu5PSjRe/fDfv 7MiHqDOCZGYlwqDJ3QGEruE5aZ4e784HC2bWtf+N/YkrJ3yfwN7CKWyAW Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="332786512" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="332786512" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Apr 2023 21:06:47 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="935360969" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="935360969" Received: from allen-box.sh.intel.com ([10.239.159.127]) by fmsmga006.fm.intel.com with ESMTP; 12 Apr 2023 21:06:45 -0700 From: Lu Baolu To: Joerg Roedel Cc: Tina Zhang , Jacob Pan , Christophe JAILLET , iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 02/17] iommu/vt-d: Allow SVA with device-specific IOPF Date: Thu, 13 Apr 2023 12:06:30 +0800 Message-Id: <20230413040645.46157-3-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230413040645.46157-1-baolu.lu@linux.intel.com> References: <20230413040645.46157-1-baolu.lu@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, URIBL_BLOCKED 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?1763032621475015976?= X-GMAIL-MSGID: =?utf-8?q?1763032621475015976?= Currently enabling SVA requires IOPF support from the IOMMU and device PCI PRI. However, some devices can handle IOPF by itself without ever sending PCI page requests nor advertising PRI capability. Allow SVA support with IOPF handled either by IOMMU (PCI PRI) or device driver (device-specific IOPF). As long as IOPF could be handled, SVA should continue to work. Reviewed-by: Kevin Tian Signed-off-by: Lu Baolu Link: https://lore.kernel.org/r/20230324120234.313643-3-baolu.lu@linux.intel.com --- drivers/iommu/intel/iommu.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c index 7c2f4bd33582..caf664448ee9 100644 --- a/drivers/iommu/intel/iommu.c +++ b/drivers/iommu/intel/iommu.c @@ -4650,7 +4650,21 @@ static int intel_iommu_enable_sva(struct device *dev) if (!(iommu->flags & VTD_FLAG_SVM_CAPABLE)) return -ENODEV; - if (!info->pasid_enabled || !info->pri_enabled || !info->ats_enabled) + if (!info->pasid_enabled || !info->ats_enabled) + return -EINVAL; + + /* + * Devices having device-specific I/O fault handling should not + * support PCI/PRI. The IOMMU side has no means to check the + * capability of device-specific IOPF. Therefore, IOMMU can only + * default that if the device driver enables SVA on a non-PRI + * device, it will handle IOPF in its own way. + */ + if (!info->pri_supported) + return 0; + + /* Devices supporting PRI should have it enabled. */ + if (!info->pri_enabled) return -EINVAL; ret = iopf_queue_add_device(iommu->iopf_queue, dev); From patchwork Thu Apr 13 04:06:31 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolu Lu X-Patchwork-Id: 82767 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp770798vqo; Wed, 12 Apr 2023 21:08:51 -0700 (PDT) X-Google-Smtp-Source: AKy350ZHn+zWttlTLbScg7GpR40NHiZKclB0V034jtCUvOL+YqfZ8grbPfbzxOdDzTZRBHPuhnrw X-Received: by 2002:a17:907:1c0a:b0:93b:49e8:d7b9 with SMTP id nc10-20020a1709071c0a00b0093b49e8d7b9mr1682295ejc.40.1681358931029; Wed, 12 Apr 2023 21:08:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681358931; cv=none; d=google.com; s=arc-20160816; b=LAGrVy7GBDifDjdalHXL4FUCC4mf5d/f0lc1iIa9QU8x+WN/M+8xQy5LUvzVw+cWg4 i1M4G+twS1bJzRNBa31fqpqbU9FwtSnRoLUD7w3T7RANRPJtvMgAwXNEV+0aW/Q0VWni Y5ro9aCe/KSkKIHhtaEJci7rv3CRvq5VJGpWlAH92MDgMaA6PmmHYZoSEgob75WH9ajU fVL1LyW0v9CfKxspGZPcJwRVOGV8lver9/ylrZCVnUobasVj384Gl+FtyiQiYWuptdVN V1o3hB1DfBOWTJ57foU8sM5vmdzociBTB55EVVq4d7UtFleY8MeyaZmvllWsBbvLmWYv HVgw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=kHUpPjSNJ6c0EqsxjYcImO5F3N1y9C3adyprfWloZvw=; b=ObrwRGXMio/NMDmXM31kCFHYFPeloEuauBEIWaMeJw1dvRp9bCAH/BTys+Lr/qzikp AUAkZZRNvRDYikyemh8DLomA2W4ujtdUxE1HrD5FaxOG/PTBt+uBkaDnDhWfMCXQIkqi TrsSk9fYtOOR1wUB5WPymP5nKhaDHRtrlenVmpbZbaMvfnm6nO94RodydzdZDMqpT8J2 Ee2aqLvaapRl2kuDgs5QBkvKskkp1GMxFCSMYCVLU7f0d+CCz/YSWXR7aUw2ZTT64qOQ 1JTWCoVPk0/4R3R+ewnOaYrrRsX5NCJPPVVWAovrUoS7vWF4YjmJTFsAh9a9hBJ+1AIl I1YA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="c/6X6xnl"; 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=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id gz21-20020a170906f2d500b0094a86bb62a2si826365ejb.854.2023.04.12.21.08.25; Wed, 12 Apr 2023 21:08:51 -0700 (PDT) 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=@intel.com header.s=Intel header.b="c/6X6xnl"; 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=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229819AbjDMEG5 (ORCPT + 99 others); Thu, 13 Apr 2023 00:06:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36682 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229661AbjDMEGv (ORCPT ); Thu, 13 Apr 2023 00:06:51 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B3F0F83D2 for ; Wed, 12 Apr 2023 21:06:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1681358809; x=1712894809; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=AH2O7XJ83CyJq/BvNVtHKqMDArNO32apjduqQxjWqso=; b=c/6X6xnlqIlA28zt8FN598rY0qvw3co6p5Lu8Ca2WFmINnTSa3OjnbSQ N9cz1g1YTxphPA1Za+ERXyf/JGI3DQxjvzIaiXK90SJ3MSXmW2qEl5TwR iIsDVQ5u+8LhEJHYxvIReCBPFZJwPMZiCDqH7f81NK+qICicugCD29li7 /wtM9iN8VSrpHrDjN8s6IFRvvEjPo4ZNjudBpwqNIiMsLhJRkoihzO+q4 GIQ+W8joDaFDF/n796wk+qSat+RsImLxQTM0zMGc+QX4603gF9a7knNN3 Qxs0EdRfM89xm2pwUyhfsRK9g2NZmz51d1GsJTvXLnL27szR+S/O5Mgqu Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="332786525" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="332786525" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Apr 2023 21:06:49 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="935360978" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="935360978" Received: from allen-box.sh.intel.com ([10.239.159.127]) by fmsmga006.fm.intel.com with ESMTP; 12 Apr 2023 21:06:47 -0700 From: Lu Baolu To: Joerg Roedel Cc: Tina Zhang , Jacob Pan , Christophe JAILLET , iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 03/17] iommu/vt-d: Move iopf code from SVA to IOPF enabling path Date: Thu, 13 Apr 2023 12:06:31 +0800 Message-Id: <20230413040645.46157-4-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230413040645.46157-1-baolu.lu@linux.intel.com> References: <20230413040645.46157-1-baolu.lu@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, URIBL_BLOCKED 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?1763032622859792744?= X-GMAIL-MSGID: =?utf-8?q?1763032622859792744?= Generally enabling IOMMU_DEV_FEAT_SVA requires IOMMU_DEV_FEAT_IOPF, but some devices manage I/O Page Faults themselves instead of relying on the IOMMU. Move IOPF related code from SVA to IOPF enabling path. For the device drivers that relies on the IOMMU for IOPF through PCI/PRI, IOMMU_DEV_FEAT_IOPF must be enabled before and disabled after IOMMU_DEV_FEAT_SVA. Reviewed-by: Kevin Tian Signed-off-by: Lu Baolu Link: https://lore.kernel.org/r/20230324120234.313643-4-baolu.lu@linux.intel.com --- drivers/iommu/intel/iommu.c | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c index caf664448ee9..a6f07c74da2d 100644 --- a/drivers/iommu/intel/iommu.c +++ b/drivers/iommu/intel/iommu.c @@ -4638,7 +4638,6 @@ static int intel_iommu_enable_sva(struct device *dev) { struct device_domain_info *info = dev_iommu_priv_get(dev); struct intel_iommu *iommu; - int ret; if (!info || dmar_disabled) return -EINVAL; @@ -4667,6 +4666,21 @@ static int intel_iommu_enable_sva(struct device *dev) if (!info->pri_enabled) return -EINVAL; + return 0; +} + +static int intel_iommu_enable_iopf(struct device *dev) +{ + struct device_domain_info *info = dev_iommu_priv_get(dev); + struct intel_iommu *iommu; + int ret; + + if (!info || !info->ats_enabled || !info->pri_enabled) + return -ENODEV; + iommu = info->iommu; + if (!iommu) + return -EINVAL; + ret = iopf_queue_add_device(iommu->iopf_queue, dev); if (ret) return ret; @@ -4678,7 +4692,7 @@ static int intel_iommu_enable_sva(struct device *dev) return ret; } -static int intel_iommu_disable_sva(struct device *dev) +static int intel_iommu_disable_iopf(struct device *dev) { struct device_domain_info *info = dev_iommu_priv_get(dev); struct intel_iommu *iommu = info->iommu; @@ -4695,16 +4709,6 @@ static int intel_iommu_disable_sva(struct device *dev) return ret; } -static int intel_iommu_enable_iopf(struct device *dev) -{ - struct device_domain_info *info = dev_iommu_priv_get(dev); - - if (info && info->pri_supported) - return 0; - - return -ENODEV; -} - static int intel_iommu_dev_enable_feat(struct device *dev, enum iommu_dev_features feat) { @@ -4725,10 +4729,10 @@ intel_iommu_dev_disable_feat(struct device *dev, enum iommu_dev_features feat) { switch (feat) { case IOMMU_DEV_FEAT_IOPF: - return 0; + return intel_iommu_disable_iopf(dev); case IOMMU_DEV_FEAT_SVA: - return intel_iommu_disable_sva(dev); + return 0; default: return -ENODEV; From patchwork Thu Apr 13 04:06:32 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolu Lu X-Patchwork-Id: 82766 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp770789vqo; Wed, 12 Apr 2023 21:08:50 -0700 (PDT) X-Google-Smtp-Source: AKy350bgSkV6XXppDnVi3TySBrmE2TWxpLxxj5S8fgdm0aHQxM2T2M7CB90BeONlfNGlm8iHuKm8 X-Received: by 2002:a17:907:2042:b0:945:5510:2b9f with SMTP id pg2-20020a170907204200b0094555102b9fmr1728561ejb.54.1681358930417; Wed, 12 Apr 2023 21:08:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681358930; cv=none; d=google.com; s=arc-20160816; b=ZzSd0Hqi52DlEzKOMh2IBU7CrczkyRE7lyK5ERU8kWrn/UN7vV9WEz+ucvP6kapUOU vN90ULqZEF536r8DLtesD04lqwIBNCbKJItCkeQa0PrAE0xSy1s/iSlPJC8IQHo65xnr h3eIs9p7APF77BNZcNq7eTNxag1RvMoKzB5EBb0y5gf9R61nyk19TrjOkMmNhyRdsD28 soj+JnVYn+Hs2D1CtNWq+Wrp/BiMR+i19YO+rtqKuYI7D37GFIhJWEWfTgeHQzPQHNE0 RF5Jdh0VMqMtVuzZEwPxlwADsuO5I3stiAibki9DWghvpd4p/gisixk4WIG0jSIwKJt+ 3jRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=y3YNAnrJhQeBjfDYhqbnv3YY1S3AGyg7NwQWYgpkPJ8=; b=DLKYg/nwXkqvsfy1Byqtpgo5Rwz9AxOsVaDpNTiq7c8DDgDku7TkV+inl6XjpNhiZS JfLiI3/IHwndc/C46iHLJ76Wa/HOfdKin2kBHCGtt/0MQ/mqnxG19tkPdQ73j+zpAMzn 6rpkpft6ElqTLeZabI3eMgPF5b3ENmv9JFfULsjCybPu7N1hFZIHCoeyTh8PtZaupCjj jak2VuHbDPSMCeIYpoUyunwDqwQauKIU0CPpHb7toyOWQTEDTcyjYcaQiMyezSkOXkMb zEL7cz+SGMkaMAbyCBROv7dACPd1UrNXkbZQgQXZJpbU6Kv2OThJlF/10E1TSvdmgqK5 g/Vw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=bgFriL1M; 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=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id su14-20020a17090703ce00b0094e4d06822csi761706ejb.196.2023.04.12.21.08.25; Wed, 12 Apr 2023 21:08:50 -0700 (PDT) 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=@intel.com header.s=Intel header.b=bgFriL1M; 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=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229642AbjDMEH1 (ORCPT + 99 others); Thu, 13 Apr 2023 00:07:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36680 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229721AbjDMEGw (ORCPT ); Thu, 13 Apr 2023 00:06:52 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 463C761BF for ; Wed, 12 Apr 2023 21:06:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1681358811; x=1712894811; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=svE7EgjquyhwRZbom4QiBGJ7Mxb0NsfSfLHDW+HF/GA=; b=bgFriL1MB07Fb7DrfEjlyjrE/cBB2csacfJ+aqMBuflFReuqhWfuw9Ke DvvvGBJv+V2yM5dGkxc5Z+9wYfeKGTXrnZ/FZCyPho+wD0PpsCGq+gT3A QjqH4hefbjYV2+nTnqYXyWPd+5Fzza3wVNngGnPd+XNj0AZsO8M5Ati5d rj40CR0PzZeUEW1EbVYcEjx9gVVtjmwOvca2EcElVarzO9Msln4RLyXwO zyPp+kkxIsc2Eq+UX5eqn1Z+KC+l9525ZVxQ7Jhrg0BHFXuyBHAGO9Ttl WbYe7kiY22kENNNaERNrBuZLPW/3u63U2qLD9aQLJnE8lHQlMb8yaxAcG Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="332786537" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="332786537" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Apr 2023 21:06:51 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="935360987" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="935360987" Received: from allen-box.sh.intel.com ([10.239.159.127]) by fmsmga006.fm.intel.com with ESMTP; 12 Apr 2023 21:06:49 -0700 From: Lu Baolu To: Joerg Roedel Cc: Tina Zhang , Jacob Pan , Christophe JAILLET , iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 04/17] iommu/vt-d: Move pfsid and ats_qdep calculation to device probe path Date: Thu, 13 Apr 2023 12:06:32 +0800 Message-Id: <20230413040645.46157-5-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230413040645.46157-1-baolu.lu@linux.intel.com> References: <20230413040645.46157-1-baolu.lu@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, URIBL_BLOCKED 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?1763032621721190445?= X-GMAIL-MSGID: =?utf-8?q?1763032621721190445?= They should be part of the per-device iommu private data initialization. Reviewed-by: Jacob Pan Reviewed-by: Kevin Tian Signed-off-by: Lu Baolu Link: https://lore.kernel.org/r/20230324120234.313643-5-baolu.lu@linux.intel.com --- drivers/iommu/intel/iommu.c | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c index a6f07c74da2d..6d77b4072fdd 100644 --- a/drivers/iommu/intel/iommu.c +++ b/drivers/iommu/intel/iommu.c @@ -1406,20 +1406,6 @@ static void iommu_enable_pci_caps(struct device_domain_info *info) return; pdev = to_pci_dev(info->dev); - /* For IOMMU that supports device IOTLB throttling (DIT), we assign - * PFSID to the invalidation desc of a VF such that IOMMU HW can gauge - * queue depth at PF level. If DIT is not set, PFSID will be treated as - * reserved, which should be set to 0. - */ - if (!ecap_dit(info->iommu->ecap)) - info->pfsid = 0; - else { - struct pci_dev *pf_pdev; - - /* pdev will be returned if device is not a vf */ - pf_pdev = pci_physfn(pdev); - info->pfsid = pci_dev_id(pf_pdev); - } /* The PCIe spec, in its wisdom, declares that the behaviour of the device if you enable PASID support after ATS support is @@ -1438,7 +1424,6 @@ static void iommu_enable_pci_caps(struct device_domain_info *info) !pci_enable_ats(pdev, VTD_PAGE_SHIFT)) { info->ats_enabled = 1; domain_update_iotlb(info->domain); - info->ats_qdep = pci_ats_queue_depth(pdev); } } @@ -4521,6 +4506,17 @@ static struct iommu_device *intel_iommu_probe_device(struct device *dev) dmar_ats_supported(pdev, iommu)) { info->ats_supported = 1; info->dtlb_extra_inval = dev_needs_extra_dtlb_flush(pdev); + + /* + * For IOMMU that supports device IOTLB throttling + * (DIT), we assign PFSID to the invalidation desc + * of a VF such that IOMMU HW can gauge queue depth + * at PF level. If DIT is not set, PFSID will be + * treated as reserved, which should be set to 0. + */ + if (ecap_dit(iommu->ecap)) + info->pfsid = pci_dev_id(pci_physfn(pdev)); + info->ats_qdep = pci_ats_queue_depth(pdev); } if (sm_supported(iommu)) { if (pasid_supported(iommu)) { From patchwork Thu Apr 13 04:06:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolu Lu X-Patchwork-Id: 82771 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp774443vqo; Wed, 12 Apr 2023 21:19:09 -0700 (PDT) X-Google-Smtp-Source: AKy350aSyQ6xxKswmPfqo7LopVWJCVIy97tOa/UxwslJR1FPLdvZB2rVgOWk8awK1EQZw07ODKVA X-Received: by 2002:a17:906:899d:b0:94e:4586:f135 with SMTP id gg29-20020a170906899d00b0094e4586f135mr1034739ejc.6.1681359549465; Wed, 12 Apr 2023 21:19:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681359549; cv=none; d=google.com; s=arc-20160816; b=ExCAC3wZ6pWJF6zv/5CKzh1y0UTneJROO+4JhL/oPtohI98xLuJAUaQMD2IMQhYtW+ l4XDrCgyAAle7xOaO6i5zSSOP5Qwlv9E0nRi3tjOeeDAH17JCmKflOb0ZWUOsTUd7O5+ 3+2z2F5CdclNa53s0CCpFLtEtBfoh3NAd+FWenilvBANsd9X3YuiFk5ymJ0KQvpx10ef Zc+K4jU/qE47KNhCRf9Ru2NhAJh1Di2klGyvUJWLKsKI5D1w+iWZZ7c2bpCu0q/rOpav IexZcvfnWZMWj30hKtJQdY2/oLQ4mp836iIhHe2OtbbAskabK4oicZoG/U85fiNn+Esn nV3g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=0qpVKpdfS2rOt2uWXdNUxmiFJBJ3pg8rxrl91vZoM2E=; b=Ocbm4ZCzCSKrrHqPn2bROws+xBlYSbVK3PlP/oXL1h7w91ia0zjM57xzJitnto8gef 8Kl8kk0wwuj4cEzJ3vaoT/EoOJ/G4yCUZ2OdJUwEoqZ3YS/YKiE3KRT+K6IGuu82hnT7 4tvUThGPrwt0RHRjiaKneVhhKxTRWB3Mf7v+SYDe+lzlFwD5rRhLBVEhhn5rBGTmkdXU Kc1c1FIyqJdiib3c14JK1Wu0PrEWwpDER/SYghesgcfLPqD3pdQ5CknZwdbKKcemHDbC DOlU7APZnqH8a2CNFUioj8XSOngfHuL4dXLZwlaEQmSqVfZn5CXfNVjcfrkEsqJzBudj 9uxQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=jgUhg5gg; 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=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ew9-20020a170907950900b009329c6f66adsi789809ejc.378.2023.04.12.21.18.45; Wed, 12 Apr 2023 21:19:09 -0700 (PDT) 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=@intel.com header.s=Intel header.b=jgUhg5gg; 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=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229786AbjDMEHh (ORCPT + 99 others); Thu, 13 Apr 2023 00:07:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36680 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229729AbjDMEGy (ORCPT ); Thu, 13 Apr 2023 00:06:54 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 566787AB5 for ; Wed, 12 Apr 2023 21:06:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1681358813; x=1712894813; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=zGpEfMgloBsWMUOjxE9fyxNifshGPev/lcFUTQ3YvYY=; b=jgUhg5ggWOmI+TMIKGAb8h6C1HH8IkbjOnMvgGjwABH80EWzpjYBWy+t O5xFVSdXTvxCYt4xiISU3TWa883tTr+apfZB7lJLZkiQ7zLqGHEH+CtzS Kq97mUDfg4TmHBKVPD08RjL7RjprFgTTUIvaxlrpmT+ATd9ceHK7TxKfu VEDwdJPrgh/YC7edgxJVpNEIfks2yrMVQCtoqI5vQzxKA7UC0Tts1M/V1 IXSynZyK3DEPgkKICN4iOqaVZEO1rJuwa7p6nYsPMCB7R5i1rUS/5hylK VBtZ/3YXAbz9oriAsjfnIgWexyIjWzSIT/uTVHDB3DForCt5mpFrg4bq2 w==; X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="332786551" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="332786551" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Apr 2023 21:06:52 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="935360996" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="935360996" Received: from allen-box.sh.intel.com ([10.239.159.127]) by fmsmga006.fm.intel.com with ESMTP; 12 Apr 2023 21:06:50 -0700 From: Lu Baolu To: Joerg Roedel Cc: Tina Zhang , Jacob Pan , Christophe JAILLET , iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 05/17] iommu/vt-d: Move PRI handling to IOPF feature path Date: Thu, 13 Apr 2023 12:06:33 +0800 Message-Id: <20230413040645.46157-6-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230413040645.46157-1-baolu.lu@linux.intel.com> References: <20230413040645.46157-1-baolu.lu@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, URIBL_BLOCKED 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?1763033271265081793?= X-GMAIL-MSGID: =?utf-8?q?1763033271265081793?= PRI is only used for IOPF. With this move, the PCI/PRI feature could be controlled by the device driver through iommu_dev_enable/disable_feature() interfaces. Reviewed-by: Jacob Pan Reviewed-by: Kevin Tian Signed-off-by: Lu Baolu Link: https://lore.kernel.org/r/20230324120234.313643-6-baolu.lu@linux.intel.com --- drivers/iommu/intel/iommu.c | 53 ++++++++++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 12 deletions(-) diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c index 6d77b4072fdd..cd3a3c4b5e64 100644 --- a/drivers/iommu/intel/iommu.c +++ b/drivers/iommu/intel/iommu.c @@ -1415,11 +1415,6 @@ static void iommu_enable_pci_caps(struct device_domain_info *info) if (info->pasid_supported && !pci_enable_pasid(pdev, info->pasid_supported & ~1)) info->pasid_enabled = 1; - if (info->pri_supported && - (info->pasid_enabled ? pci_prg_resp_pasid_required(pdev) : 1) && - !pci_reset_pri(pdev) && !pci_enable_pri(pdev, PRQ_DEPTH)) - info->pri_enabled = 1; - if (info->ats_supported && pci_ats_page_aligned(pdev) && !pci_enable_ats(pdev, VTD_PAGE_SHIFT)) { info->ats_enabled = 1; @@ -1442,11 +1437,6 @@ static void iommu_disable_pci_caps(struct device_domain_info *info) domain_update_iotlb(info->domain); } - if (info->pri_enabled) { - pci_disable_pri(pdev); - info->pri_enabled = 0; - } - if (info->pasid_enabled) { pci_disable_pasid(pdev); info->pasid_enabled = 0; @@ -4667,23 +4657,48 @@ static int intel_iommu_enable_sva(struct device *dev) static int intel_iommu_enable_iopf(struct device *dev) { + struct pci_dev *pdev = dev_is_pci(dev) ? to_pci_dev(dev) : NULL; struct device_domain_info *info = dev_iommu_priv_get(dev); struct intel_iommu *iommu; int ret; - if (!info || !info->ats_enabled || !info->pri_enabled) + if (!pdev || !info || !info->ats_enabled || !info->pri_supported) return -ENODEV; + + if (info->pri_enabled) + return -EBUSY; + iommu = info->iommu; if (!iommu) return -EINVAL; + /* PASID is required in PRG Response Message. */ + if (info->pasid_enabled && !pci_prg_resp_pasid_required(pdev)) + return -EINVAL; + + ret = pci_reset_pri(pdev); + if (ret) + return ret; + ret = iopf_queue_add_device(iommu->iopf_queue, dev); if (ret) return ret; ret = iommu_register_device_fault_handler(dev, iommu_queue_iopf, dev); if (ret) - iopf_queue_remove_device(iommu->iopf_queue, dev); + goto iopf_remove_device; + + ret = pci_enable_pri(pdev, PRQ_DEPTH); + if (ret) + goto iopf_unregister_handler; + info->pri_enabled = 1; + + return 0; + +iopf_unregister_handler: + iommu_unregister_device_fault_handler(dev); +iopf_remove_device: + iopf_queue_remove_device(iommu->iopf_queue, dev); return ret; } @@ -4694,6 +4709,20 @@ static int intel_iommu_disable_iopf(struct device *dev) struct intel_iommu *iommu = info->iommu; int ret; + if (!info->pri_enabled) + return -EINVAL; + + /* + * PCIe spec states that by clearing PRI enable bit, the Page + * Request Interface will not issue new page requests, but has + * outstanding page requests that have been transmitted or are + * queued for transmission. This is supposed to be called after + * the device driver has stopped DMA, all PASIDs have been + * unbound and the outstanding PRQs have been drained. + */ + pci_disable_pri(to_pci_dev(dev)); + info->pri_enabled = 0; + ret = iommu_unregister_device_fault_handler(dev); if (ret) return ret; From patchwork Thu Apr 13 04:06:34 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolu Lu X-Patchwork-Id: 82769 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp770932vqo; Wed, 12 Apr 2023 21:09:15 -0700 (PDT) X-Google-Smtp-Source: AKy350ZPh3mAk3kFAqLUjj8Pw2X9P10XD16O430G3osc4tKaIlpO+ZGdhm1wq8ixvMMHTMqxgZOS X-Received: by 2002:aa7:c75a:0:b0:505:8f4:7412 with SMTP id c26-20020aa7c75a000000b0050508f47412mr967587eds.10.1681358955662; Wed, 12 Apr 2023 21:09:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681358955; cv=none; d=google.com; s=arc-20160816; b=tFZb5vFaIHYfgq9np6AxsB3sqP/Xs0RngbLGSGrLwNyfoi7h7FYHK9NYd3tSzSt+xu kQZAvbzGVg3rpMTH1m4EUdcaeoZu60CLbUtz/CrgNdUrNnDWWffOxnIu3dA6T5lS22am QCa20Et6YXuEdHPAaFFSEM1/eCE47EL3Nv7jbn3QOYdz3EUJ+FpdQFivGFIZ/hvIv17C iAH91gagioI7Zg5zp2sXruOgLcEJ1T3uWq0dzcYiUSsTaL01ezLSA2UgsOmvbBFY+OcI V4O+K1pyjXwiTP3YH1vjgfcRW9GTTZLdjUjB8KHPxSuc5PDC6/JQCSMHnzsm4G4jfM5j SKHw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=7KMmoJ12NTX1568WzI4DJfvmxwgNN4bnTRZjclGJFyY=; b=qJ6RM0J3sg6r93bNh1mAeCCIDCTJtYrVix95yBj02Nb8ie1ShfzXj2ym9CdvvuuQhc S8o6c5Lj35p+Lx4CV3RAYsLCUssQxVi49BuzNHgxKX0Zhbwqp2ie7ZAj6z9vfGf+CHBK UEQ/aj8Vw1dr2tsHLc3yIDYnZIL0K1cv8JZm4es+rAeNcUL3NAqULIr1QGfL7oFJb6o7 V/5VQfJKXZnUSh0dJr/EoMG8Vag5AEKt8Si1H74a/cr6DobSme/2SoscDtNKbRFbtfSg g1gnrPMthRtGGd5uqq4ZBR36KmCfVMwT4X4Lgoytt2rvTT402GEb5EJg4rlftQPRaLOE TjmA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=U1jC3xrl; 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=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id b15-20020aa7c90f000000b005046e05e3cbsi761276edt.71.2023.04.12.21.08.50; Wed, 12 Apr 2023 21:09:15 -0700 (PDT) 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=@intel.com header.s=Intel header.b=U1jC3xrl; 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=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229959AbjDMEHm (ORCPT + 99 others); Thu, 13 Apr 2023 00:07:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36816 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229791AbjDMEG4 (ORCPT ); Thu, 13 Apr 2023 00:06:56 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CCEF16EB7 for ; Wed, 12 Apr 2023 21:06:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1681358814; x=1712894814; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=sDMJTalig0nzuhTIrI4QQ+mFyR3+Py8XwH5/FAztKD8=; b=U1jC3xrlnqfu5MAydoz4vItj8kYmboqqc720XumjJJN5MsClA7SwueWD KcfWOEhcwa2beHway58KVBZUjDN7u8xlZ3nxPEFOIvPQCvbPJTZv8XFJl IqHo4v1vxrZpDR7XrEQmTbT0Oy5dhrfwKz+5cVuc7MjFrF9bmWk30bNKB FIEVYxq/Z6tlhhI6aZP+ct008e64oqtLqmGLpMmV3Tg14VFHnjWTzJU47 Jeq26kQe4CFAVNR+0o5SbK8J/cuOgF0TZ+L7EF01ecWrIYPH+VVTKFV2Z FHfsSBcosa4bhP3xXJT/l9KWWKReWyj+UrcE0fYlEmE7izU0DTOyeJ3Z4 Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="332786564" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="332786564" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Apr 2023 21:06:54 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="935361006" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="935361006" Received: from allen-box.sh.intel.com ([10.239.159.127]) by fmsmga006.fm.intel.com with ESMTP; 12 Apr 2023 21:06:52 -0700 From: Lu Baolu To: Joerg Roedel Cc: Tina Zhang , Jacob Pan , Christophe JAILLET , iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 06/17] iommu/vt-d: Remove unnecessary checks in iopf disabling path Date: Thu, 13 Apr 2023 12:06:34 +0800 Message-Id: <20230413040645.46157-7-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230413040645.46157-1-baolu.lu@linux.intel.com> References: <20230413040645.46157-1-baolu.lu@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, URIBL_BLOCKED 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?1763032648392037954?= X-GMAIL-MSGID: =?utf-8?q?1763032648392037954?= iommu_unregister_device_fault_handler() and iopf_queue_remove_device() are called after device has stopped issuing new page falut requests and all outstanding page requests have been drained. They should never fail. Trigger a warning if it happens unfortunately. Reviewed-by: Kevin Tian Signed-off-by: Lu Baolu Link: https://lore.kernel.org/r/20230324120234.313643-7-baolu.lu@linux.intel.com --- drivers/iommu/intel/iommu.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c index cd3a3c4b5e64..c771233d6f2a 100644 --- a/drivers/iommu/intel/iommu.c +++ b/drivers/iommu/intel/iommu.c @@ -4707,7 +4707,6 @@ static int intel_iommu_disable_iopf(struct device *dev) { struct device_domain_info *info = dev_iommu_priv_get(dev); struct intel_iommu *iommu = info->iommu; - int ret; if (!info->pri_enabled) return -EINVAL; @@ -4723,15 +4722,15 @@ static int intel_iommu_disable_iopf(struct device *dev) pci_disable_pri(to_pci_dev(dev)); info->pri_enabled = 0; - ret = iommu_unregister_device_fault_handler(dev); - if (ret) - return ret; - - ret = iopf_queue_remove_device(iommu->iopf_queue, dev); - if (ret) - iommu_register_device_fault_handler(dev, iommu_queue_iopf, dev); + /* + * With PRI disabled and outstanding PRQs drained, unregistering + * fault handler and removing device from iopf queue should never + * fail. + */ + WARN_ON(iommu_unregister_device_fault_handler(dev)); + WARN_ON(iopf_queue_remove_device(iommu->iopf_queue, dev)); - return ret; + return 0; } static int From patchwork Thu Apr 13 04:06:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolu Lu X-Patchwork-Id: 82772 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp774833vqo; Wed, 12 Apr 2023 21:20:30 -0700 (PDT) X-Google-Smtp-Source: AKy350b6sHfkCo8sS0SvzHrbCpUA+SwA4y/H/V6oLKRwrmRR1on0iG78FRzr4zJzUfWhS+tDCpLK X-Received: by 2002:a05:6402:2141:b0:505:745:a271 with SMTP id bq1-20020a056402214100b005050745a271mr1276770edb.23.1681359629756; Wed, 12 Apr 2023 21:20:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681359629; cv=none; d=google.com; s=arc-20160816; b=t6byncZ8f7UVTTPH861vRgtBwEDy3F8bq+NsB7reUItw1uHltBGGVvoFYjKUn6T9mU 8pKU9pNAPQKQyNp6yApEtNPZWVgjhTdXB6/3OySzh2Rx4ec1O/HEfnb0NzxTANtBSc6s fos49MxoVWpRUM7bjFJM7KcvzfOZfv9BzoiX7D84ypkC9/0vEitrVOi4TuPFCT1rR/Sp 3IJ17jB/kO3m6Jm+YOiY3AOANgMJ/zBssDOTquMhc14IyjbQb0vaQ6VVObKsa7kTIMhs 3ImZxpZ2S2FUyQ+TOBhV+c/z2o+Asp9eMRaAcdkISef3ZRJCxCHrkI34k30RkHP/Pa8u mKvg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=gtm8RkT0yxwe71dbqxBAk2+ojNT/TWjrefqo1SdVU6I=; b=hNvWQYDmO4q8dLh02rWbzb4Yiu4CSCWmbzSa55gf6QqVDZxQudLgrEgxjnSJzrtJZ4 fuxDiUcFtK4UhddQhaLHYrEAQr6ADBuxJspjKrE6p68rtLzbS4xhpr5Yc7CB7iPkWpRF Wj69aos2Nn7J/84Pdnd8LsREzJ/7MHJ3+wJ6XXx6/rbkV3bdAvqfPGR2R19rjfYEJDrV dgWX1GyACWcGOK/yO/VqeV3m4Ja6W3WDA6mqh4lXQeECsDv7VWwwq142kW5e72etH/ji Vt/FwaVSyQZy460Z48nxnYDndY55Bpk8Yjznq/zpOXHeW4LMccWQdmq4mv/FzLbSgP7t bWOA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=aLApzQdi; 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=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k18-20020aa7d8d2000000b0050202f2c2f7si740425eds.424.2023.04.12.21.20.05; Wed, 12 Apr 2023 21:20:29 -0700 (PDT) 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=@intel.com header.s=Intel header.b=aLApzQdi; 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=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230063AbjDMEHs (ORCPT + 99 others); Thu, 13 Apr 2023 00:07:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36862 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229828AbjDMEG6 (ORCPT ); Thu, 13 Apr 2023 00:06:58 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F15A576AE for ; Wed, 12 Apr 2023 21:06:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1681358817; x=1712894817; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=KLcSzST6hDd+fcr/F74YMXpjYh9sQavSmsQ3e9U8YPk=; b=aLApzQdiJi4uay8uEI4J9WflgjO17BjCpwY7RlyRMJtCwKY7r2lZe2vO 0UUJaIEeBHtEz//fW2HaBuhlCw2Tbp7j2CYRXQo8M/fInszr/Z7QANSJN YOgLs5IoNyC3DtabVdfpCyarMs9vFbk9lwLMhk4zIi6vnmQKHY4zCtTch Hl95ZA847SXtPZuow80x6ZjQ4e4mlVfYkOhXVDbd9bMEhM2AWPyGeaRaB rhw2TMqziY9PPwKoho1QEIMt1N/kZs1FtUbcbB1JNyYR7I5BcuhPVanGj xYZIAwNj1kn8IHLdRv3AV1IEYs15+6SoOLaBAMRGc3HOUBG+BWZwn9NQW Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="332786576" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="332786576" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Apr 2023 21:06:56 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="935361017" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="935361017" Received: from allen-box.sh.intel.com ([10.239.159.127]) by fmsmga006.fm.intel.com with ESMTP; 12 Apr 2023 21:06:54 -0700 From: Lu Baolu To: Joerg Roedel Cc: Tina Zhang , Jacob Pan , Christophe JAILLET , iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 07/17] iommu/vt-d: Do not use GFP_ATOMIC when not needed Date: Thu, 13 Apr 2023 12:06:35 +0800 Message-Id: <20230413040645.46157-8-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230413040645.46157-1-baolu.lu@linux.intel.com> References: <20230413040645.46157-1-baolu.lu@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, URIBL_BLOCKED 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?1763033354673966493?= X-GMAIL-MSGID: =?utf-8?q?1763033354673966493?= From: Christophe JAILLET There is no need to use GFP_ATOMIC here. GFP_KERNEL is already used for some other memory allocations just a few lines above. Commit e3a981d61d15 ("iommu/vt-d: Convert allocations to GFP_KERNEL") has changed the other memory allocation flags. Signed-off-by: Christophe JAILLET Link: https://lore.kernel.org/r/e2a8a1019ffc8a86b4b4ed93def3623f60581274.1675542576.git.christophe.jaillet@wanadoo.fr Signed-off-by: Lu Baolu --- drivers/iommu/intel/irq_remapping.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/iommu/intel/irq_remapping.c b/drivers/iommu/intel/irq_remapping.c index df9e261af0b5..a1b987335b31 100644 --- a/drivers/iommu/intel/irq_remapping.c +++ b/drivers/iommu/intel/irq_remapping.c @@ -548,7 +548,7 @@ static int intel_setup_irq_remapping(struct intel_iommu *iommu) goto out_free_table; } - bitmap = bitmap_zalloc(INTR_REMAP_TABLE_ENTRIES, GFP_ATOMIC); + bitmap = bitmap_zalloc(INTR_REMAP_TABLE_ENTRIES, GFP_KERNEL); if (bitmap == NULL) { pr_err("IR%d: failed to allocate bitmap\n", iommu->seq_id); goto out_free_pages; From patchwork Thu Apr 13 04:06:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolu Lu X-Patchwork-Id: 82776 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp775266vqo; Wed, 12 Apr 2023 21:21:48 -0700 (PDT) X-Google-Smtp-Source: AKy350bRgAF/jQ3oPciQpiemG5yNenlTDiNA01J0pn9/o+jd7jknsB6QepBwtC151/jN6sPIf8zF X-Received: by 2002:a17:906:6a09:b0:895:58be:957 with SMTP id qw9-20020a1709066a0900b0089558be0957mr1438870ejc.2.1681359708190; Wed, 12 Apr 2023 21:21:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681359708; cv=none; d=google.com; s=arc-20160816; b=oqcP1AtjLlPfL4UxBgBUkvWwg3QDEzDHSr413PMnqUu/xBl/vTza7bMVW6Gn8TqZjJ LZ2ptJVTchcE3NjBCPtGHIsy57c7CW7YbX8plxy6sOKVGBkXwMuQgv2H/t+k6/1vc7yS U08cqEeU075XSn2Pyo3ChHdfkAmgnFlkxlT9hLf/Cqb0lL4ZEsS+ZAHNfVQea12b8+QL SyagnFuy8d08LxgtUXUnchhlAnhPwkchv1YChWlYKK6bvk6GmgpwviO6I2u/b6pqjhP1 T2rifn8R1n5WhjBPAFA7ZqAQ2uj+7T3ZtaJJq1jVbBY3uUdtSkVtRcqkevKiMrzMj37/ gLnw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=7mE/s0ObJJiLS6ntssYvwNXrA1i52/LM2nUEnSuBChs=; b=q4zMxfQS6rQIQnxddo2Zjs9sIwLjAvYEmO793cIhUI8d5KIHd9w5cRd1Od6MfuAoLE hgQCof+AkzbsDrOm7azJ1Krk4gB9Mx63y5R+WubMIuYcJgOvQH4owhatCC8EX9ZXKQk5 E0zujUppifF6hVVsFklVxRWW49Gg+dTlinizvifPpggZPgpNdQq8XgXiJSAS2ULJxdnx S1qzfoA05j+y/OVWCrlz6CWoQTBFTK/NqTeJDT9bnczkFgseBsnKTBD/8/QEFM9nKDjO 4NGGTn9mCi9OCrF5Ydu3sf+EuKbknkV71B9SfU71zpsFjgf5ZNsqpbGqSJlPQ4yV4Ncr EVLA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=C75+GQT3; 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=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ev8-20020a17090729c800b0094a44eda460si837374ejc.87.2023.04.12.21.21.24; Wed, 12 Apr 2023 21:21:48 -0700 (PDT) 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=@intel.com header.s=Intel header.b=C75+GQT3; 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=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230095AbjDMEHt (ORCPT + 99 others); Thu, 13 Apr 2023 00:07:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36926 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229869AbjDMEHB (ORCPT ); Thu, 13 Apr 2023 00:07:01 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6C64B7D96 for ; Wed, 12 Apr 2023 21:06:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1681358818; x=1712894818; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=EXw7iRfpei7pJiqdEoClA47q842CS/GvW0oVWNgTE1k=; b=C75+GQT3j+VEHeBkv/KJdj2/LqRGrEuxdWO4hhO+DEWK1YWGZdlrOfIw bu7zbuZp5Crv6iuCf8dTfVIQgENwDH58fKS6rXpT+lRUU8I1bneM1dEq+ 4IvNAzi7BnuyJrsAJx7s7K7o6SSF1yFJaamhN6SfKDyGJO7fgjhVloeXD HF8SCvDK2sVo3wTPX11etjMAJ95gP8DUFdWWLq630gNdMdZvFVqHo4G2i 9PUds1oF3zQYv0wnPveBXjMu9/D/MilZ2ee0kXFE/g1qUlpQgXn3+6nKt SZjqE97vkUNkLi7bF73AFWBw7VlgiB8Q46Vhc944rVcdn153nl4H8+AIK A==; X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="332786586" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="332786586" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Apr 2023 21:06:58 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="935361032" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="935361032" Received: from allen-box.sh.intel.com ([10.239.159.127]) by fmsmga006.fm.intel.com with ESMTP; 12 Apr 2023 21:06:56 -0700 From: Lu Baolu To: Joerg Roedel Cc: Tina Zhang , Jacob Pan , Christophe JAILLET , iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 08/17] iommu/vt-d: Remove extern from function prototypes Date: Thu, 13 Apr 2023 12:06:36 +0800 Message-Id: <20230413040645.46157-9-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230413040645.46157-1-baolu.lu@linux.intel.com> References: <20230413040645.46157-1-baolu.lu@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, URIBL_BLOCKED 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?1763033437705066275?= X-GMAIL-MSGID: =?utf-8?q?1763033437705066275?= The kernel coding style does not require 'extern' in function prototypes in .h files, so remove them from drivers/iommu/intel/iommu.h as they are not needed. Signed-off-by: Lu Baolu Link: https://lore.kernel.org/r/20230331045452.500265-1-baolu.lu@linux.intel.com --- drivers/iommu/intel/iommu.h | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/drivers/iommu/intel/iommu.h b/drivers/iommu/intel/iommu.h index 694ab9b7d3e9..19494713d6b3 100644 --- a/drivers/iommu/intel/iommu.h +++ b/drivers/iommu/intel/iommu.h @@ -798,18 +798,18 @@ static inline bool context_present(struct context_entry *context) return (context->lo & 1); } -extern struct dmar_drhd_unit * dmar_find_matched_drhd_unit(struct pci_dev *dev); - -extern int dmar_enable_qi(struct intel_iommu *iommu); -extern void dmar_disable_qi(struct intel_iommu *iommu); -extern int dmar_reenable_qi(struct intel_iommu *iommu); -extern void qi_global_iec(struct intel_iommu *iommu); - -extern void qi_flush_context(struct intel_iommu *iommu, u16 did, u16 sid, - u8 fm, u64 type); -extern void qi_flush_iotlb(struct intel_iommu *iommu, u16 did, u64 addr, - unsigned int size_order, u64 type); -extern void qi_flush_dev_iotlb(struct intel_iommu *iommu, u16 sid, u16 pfsid, +struct dmar_drhd_unit *dmar_find_matched_drhd_unit(struct pci_dev *dev); + +int dmar_enable_qi(struct intel_iommu *iommu); +void dmar_disable_qi(struct intel_iommu *iommu); +int dmar_reenable_qi(struct intel_iommu *iommu); +void qi_global_iec(struct intel_iommu *iommu); + +void qi_flush_context(struct intel_iommu *iommu, u16 did, + u16 sid, u8 fm, u64 type); +void qi_flush_iotlb(struct intel_iommu *iommu, u16 did, u64 addr, + unsigned int size_order, u64 type); +void qi_flush_dev_iotlb(struct intel_iommu *iommu, u16 sid, u16 pfsid, u16 qdep, u64 addr, unsigned mask); void qi_flush_piotlb(struct intel_iommu *iommu, u16 did, u32 pasid, u64 addr, @@ -832,7 +832,7 @@ int qi_submit_sync(struct intel_iommu *iommu, struct qi_desc *desc, */ #define QI_OPT_WAIT_DRAIN BIT(0) -extern int dmar_ir_support(void); +int dmar_ir_support(void); void *alloc_pgtable_page(int node, gfp_t gfp); void free_pgtable_page(void *vaddr); @@ -840,9 +840,9 @@ void iommu_flush_write_buffer(struct intel_iommu *iommu); struct intel_iommu *device_to_iommu(struct device *dev, u8 *bus, u8 *devfn); #ifdef CONFIG_INTEL_IOMMU_SVM -extern void intel_svm_check(struct intel_iommu *iommu); -extern int intel_svm_enable_prq(struct intel_iommu *iommu); -extern int intel_svm_finish_prq(struct intel_iommu *iommu); +void intel_svm_check(struct intel_iommu *iommu); +int intel_svm_enable_prq(struct intel_iommu *iommu); +int intel_svm_finish_prq(struct intel_iommu *iommu); int intel_svm_page_response(struct device *dev, struct iommu_fault_event *evt, struct iommu_page_response *msg); struct iommu_domain *intel_svm_domain_alloc(void); @@ -889,8 +889,8 @@ extern const struct iommu_ops intel_iommu_ops; #ifdef CONFIG_INTEL_IOMMU extern int intel_iommu_sm; -extern int iommu_calculate_agaw(struct intel_iommu *iommu); -extern int iommu_calculate_max_sagaw(struct intel_iommu *iommu); +int iommu_calculate_agaw(struct intel_iommu *iommu); +int iommu_calculate_max_sagaw(struct intel_iommu *iommu); int ecmd_submit_sync(struct intel_iommu *iommu, u8 ecmd, u64 oa, u64 ob); static inline bool ecmd_has_pmu_essential(struct intel_iommu *iommu) From patchwork Thu Apr 13 04:06:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolu Lu X-Patchwork-Id: 82774 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp774845vqo; Wed, 12 Apr 2023 21:20:32 -0700 (PDT) X-Google-Smtp-Source: AKy350ZZ5Sq8HhNaKMxALTjMdYfgv7ZkEdnmlndLMe8E17CAQsYlQ8eYjaN9clniVa+9z300x5P4 X-Received: by 2002:a17:906:4f0c:b0:94a:a2fe:d8f with SMTP id t12-20020a1709064f0c00b0094aa2fe0d8fmr1256612eju.19.1681359632560; Wed, 12 Apr 2023 21:20:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681359632; cv=none; d=google.com; s=arc-20160816; b=HImcu9N5FPu8ww/iHf/JdOO13d88MY+bxpaToTc/uXcV0+WiNa9hOlVot+1M4KWajH JdliGyW/nECs4CoUFedeeLW4m4a3SpuwyITiUs+zMQnPo0YUBr6HtIX9XEMcpk6EDnGy pHCDA5Z9eMsFvktsf6OYr28x2DdxFAmqjWkm06i2rOoNzJFIHC3jq0NHE7EZrClJtrLw /WiO4tgQ/yEO7kxgyNz5vgz2EliAA3JJ/mrZv/BeWdKL57D/ylwkxFUQB5jdYKqK0HU6 QK4RPxjS6TQxwvUD18i1+LIMT7nvfmcwIxhQGV4/ZZ9XHKe+NZkPb8fidb20rqUCS6K5 b+kQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=95Slb6gDq2Q8DqAEdw9GcmaKIDFRfGxJCE5rKIys6xk=; b=glXy3ufVOMjGnz6l5Gng+OLoDYG9Gl3zlinwylwa8KSMdNGq/rAQZrWv37/pUDqcvt vuHKnICRNsK0/yzYqGqiwcenE6u6YX1142tXxYUbk1DkoWYda3KoLiISrniQFgZ2mdUR ZYCP7EsKZQ7p/8fkT7G/8EO75YyLjDaagGSNxvt4JFnQgcNyfn1ye7NRYU9jw4Wrkjjm F8jqQxd+tINAvc6khGtwtyg12TzjTAnZwK/VRbTGFl+QNgvcK/dXDR/ddAb2ccwbD/ZW YTZRrfY8N1G0nSYjZCiYlGrJ3V4a6WhK4Y+qGnTcMtyh1bythSShgb3E1f2Vi1xLut18 Kx+Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=md9YwPsT; 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=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id jr7-20020a170906514700b0094a74a599f1si825418ejc.253.2023.04.12.21.20.08; Wed, 12 Apr 2023 21:20:32 -0700 (PDT) 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=@intel.com header.s=Intel header.b=md9YwPsT; 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=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230126AbjDMEHw (ORCPT + 99 others); Thu, 13 Apr 2023 00:07:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36862 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229907AbjDMEHF (ORCPT ); Thu, 13 Apr 2023 00:07:05 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 91A335B88 for ; Wed, 12 Apr 2023 21:07:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1681358820; x=1712894820; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=BV5LLOlacNTt4g++kWcPPRqikSTDi86tcqNaVPEHCy0=; b=md9YwPsTqGUmJsqcI3YVi51hBdH+AkO846OfxXPD3en8fmdsxtCFAA6k lowIZA/Ua8eJtYqRkaI/jWJ7cexChMPYDpeO+fY1OfX0Cb/jZgWJ4QK5B OBd5XM4K7gwZthvj8pRXoxjzPnFtbJvaT+WTPIiyrPZs+cb5ApP8yCq1M WhONo1tePNomfF3qlBrGPF0cNUjNFLBHhIBeCMVYEfCuS2rLT5A73C2Km F24SuP3Eq4WglclLARaVWXYJhsrE45FlPwPpogsVlKJ1T8f7oQF6hQyxi nTFczV6WWZoFC4OdSbjwayLR33ub0UO7UUdSpqmJdh8ZsQXygB6q9v5D/ A==; X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="332786597" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="332786597" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Apr 2023 21:06:59 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="935361047" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="935361047" Received: from allen-box.sh.intel.com ([10.239.159.127]) by fmsmga006.fm.intel.com with ESMTP; 12 Apr 2023 21:06:58 -0700 From: Lu Baolu To: Joerg Roedel Cc: Tina Zhang , Jacob Pan , Christophe JAILLET , iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 09/17] iommu/vt-d: Use non-privileged mode for all PASIDs Date: Thu, 13 Apr 2023 12:06:37 +0800 Message-Id: <20230413040645.46157-10-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230413040645.46157-1-baolu.lu@linux.intel.com> References: <20230413040645.46157-1-baolu.lu@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, URIBL_BLOCKED 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?1763033357905568826?= X-GMAIL-MSGID: =?utf-8?q?1763033357905568826?= From: Jacob Pan Supervisor Request Enable (SRE) bit in a PASID entry is for permission checking on DMA requests. When SRE = 0, DMA with supervisor privilege will be blocked. However, for in-kernel DMA this is not necessary in that we are targeting kernel memory anyway. There's no need to differentiate user and kernel for in-kernel DMA. Let's use non-privileged (user) permission for all PASIDs used in kernel, it will be consistent with DMA without PASID (RID_PASID) as well. Signed-off-by: Jacob Pan Link: https://lore.kernel.org/r/20230331231137.1947675-2-jacob.jun.pan@linux.intel.com Signed-off-by: Lu Baolu --- drivers/iommu/intel/iommu.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c index c771233d6f2a..f4e536fd5a28 100644 --- a/drivers/iommu/intel/iommu.c +++ b/drivers/iommu/intel/iommu.c @@ -2316,8 +2316,6 @@ static int domain_setup_first_level(struct intel_iommu *iommu, if (level != 4 && level != 5) return -EINVAL; - if (pasid != PASID_RID2PASID) - flags |= PASID_FLAG_SUPERVISOR_MODE; if (level == 5) flags |= PASID_FLAG_FL5LP; From patchwork Thu Apr 13 04:06:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Baolu Lu X-Patchwork-Id: 82770 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp774079vqo; Wed, 12 Apr 2023 21:17:57 -0700 (PDT) X-Google-Smtp-Source: AKy350Z85C54E7FwPiwhpU9BF8UvXbZsm1oH+ZsNsoPipx5BqRJ0aaikyXxgaYraQGyzMoEMKjEW X-Received: by 2002:a17:906:6d03:b0:94a:845c:3529 with SMTP id m3-20020a1709066d0300b0094a845c3529mr1246748ejr.9.1681359477218; Wed, 12 Apr 2023 21:17:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681359477; cv=none; d=google.com; s=arc-20160816; b=lCw0i2fly7r4kzT22ttKiAHNUEI2UatUrTHqKIryzk+4taGygio4wAu78n9eAywfrc Qx1ywK7UXFEFMN0KykHDTu8G720G7U+qFJHZwpReFiv9NrtPFUBj1mrdXwgL/eo49Tow luVpek8nH2+NoAQytmcj5rJvl7gG8BJkju7boXoe6khn5wrKVYgT79A0tNhfsC5MUVtI gMHopassYnPjlVgNiqPicJ20GQsDNnNTbiaVoaTS9eQArOrya98CJBt6/kSCaD52yr5+ 3e+HmhAJj86ANUTur5KzQcBOD1wlL0FQthgHGyCGNsI8c5vyw5/t74b5DCQEqY5rBhcg r0jA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=w470Ull3lIZp7kyFNkspMKEX+35yPucZIYPaiuZ1ccw=; b=YreNCKG5UUgFuENpeXUHT3h2DnIYel8UAj9czjO0nILIeS6HkNpmadyvmOU3t4rnme Dwxt5EYgo7/QJA9fpMa5F6sGAv4FkqgcwpaKCFjd1dbho2MOba0OW1EfPPkejPpVjmfo Ca5q+21jqR90iAZAeTs8vTkYR99+bXlZZ1UlOHZNJN6l+kAPxuS+V8V2ixgXbYNP9ZP3 unBkmPl6O9i/7p3avh2E2oCu+FZ9+OsDIDapL3tQMEishdRYzUHnBpnkQ7w6VLkVyDML gnmqKbtvKHSTS+cIGjp51kauK9R0iezOEoVYkHfpqQRneGprTlxw7ue28M9Ug6JR4aGW 2Nog== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="FIaLT/9D"; 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=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id fp18-20020a1709069e1200b0093defbd6273si688409ejc.1018.2023.04.12.21.17.32; Wed, 12 Apr 2023 21:17:57 -0700 (PDT) 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=@intel.com header.s=Intel header.b="FIaLT/9D"; 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=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230134AbjDMEHx (ORCPT + 99 others); Thu, 13 Apr 2023 00:07:53 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36892 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229924AbjDMEHG (ORCPT ); Thu, 13 Apr 2023 00:07:06 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 11D436A4D for ; Wed, 12 Apr 2023 21:07:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1681358822; x=1712894822; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=QWKb5WYVBBtztVXr3PHvMcXCQDDphOV1gmNATePnwEA=; b=FIaLT/9DNmz1UT6YxYaeQ6IlOONLMCdsPrXXY+s5k/+fOXOhuBxVqcCq 3FMrlpvKjNWUK+2KR5jCGsruFygztt6Y/x5yRq77HHJbXE2PGJdFaC7ob Szb5dnqGlzYOAUWvHmsMzwM5U4Mqy3up5qBU3f1SLOOuDbZJS6WKVuTeJ yX8O2BXrVBeNeR6ykcwYtTdxVE3GDwwuZTbIzauaDW0GQwahBhfAI4sxt 9SHsEDE+tDq/I0Gq0cN5JCyZcdrmXCegI8Gv8Wxp3/NNzj0+NpFL+/ie1 nTah+Isnri+5p+1b+eTOEse4oAxuBPwDfYWF+CYJJEpCa3M5chtML8hyk w==; X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="332786610" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="332786610" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Apr 2023 21:07:01 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="935361058" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="935361058" Received: from allen-box.sh.intel.com ([10.239.159.127]) by fmsmga006.fm.intel.com with ESMTP; 12 Apr 2023 21:06:59 -0700 From: Lu Baolu To: Joerg Roedel Cc: Tina Zhang , Jacob Pan , Christophe JAILLET , iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 10/17] iommu/vt-d: Remove PASID supervisor request support Date: Thu, 13 Apr 2023 12:06:38 +0800 Message-Id: <20230413040645.46157-11-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230413040645.46157-1-baolu.lu@linux.intel.com> References: <20230413040645.46157-1-baolu.lu@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, URIBL_BLOCKED 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?1763033195079867134?= X-GMAIL-MSGID: =?utf-8?q?1763033195079867134?= From: Jacob Pan There's no more usage, remove PASID supervisor support. Suggested-by: Lu Baolu Reviewed-by: Lu Baolu Signed-off-by: Jacob Pan Link: https://lore.kernel.org/r/20230331231137.1947675-3-jacob.jun.pan@linux.intel.com Signed-off-by: Lu Baolu --- drivers/iommu/intel/pasid.h | 7 ------ drivers/iommu/intel/pasid.c | 43 ------------------------------------- 2 files changed, 50 deletions(-) diff --git a/drivers/iommu/intel/pasid.h b/drivers/iommu/intel/pasid.h index 20c54e50f533..d6b7d21244b1 100644 --- a/drivers/iommu/intel/pasid.h +++ b/drivers/iommu/intel/pasid.h @@ -41,13 +41,6 @@ #define FLPT_DEFAULT_DID 1 #define NUM_RESERVED_DID 2 -/* - * The SUPERVISOR_MODE flag indicates a first level translation which - * can be used for access to kernel addresses. It is valid only for - * access to the kernel's static 1:1 mapping of physical memory — not - * to vmalloc or even module mappings. - */ -#define PASID_FLAG_SUPERVISOR_MODE BIT(0) #define PASID_FLAG_NESTED BIT(1) #define PASID_FLAG_PAGE_SNOOP BIT(2) diff --git a/drivers/iommu/intel/pasid.c b/drivers/iommu/intel/pasid.c index 633e0a4a01e7..c5d479770e12 100644 --- a/drivers/iommu/intel/pasid.c +++ b/drivers/iommu/intel/pasid.c @@ -335,15 +335,6 @@ static inline void pasid_set_fault_enable(struct pasid_entry *pe) pasid_set_bits(&pe->val[0], 1 << 1, 0); } -/* - * Setup the SRE(Supervisor Request Enable) field (Bit 128) of a - * scalable mode PASID entry. - */ -static inline void pasid_set_sre(struct pasid_entry *pe) -{ - pasid_set_bits(&pe->val[2], 1 << 0, 1); -} - /* * Setup the WPE(Write Protect Enable) field (Bit 132) of a * scalable mode PASID entry. @@ -521,23 +512,6 @@ int intel_pasid_setup_first_level(struct intel_iommu *iommu, return -EINVAL; } - if (flags & PASID_FLAG_SUPERVISOR_MODE) { -#ifdef CONFIG_X86 - unsigned long cr0 = read_cr0(); - - /* CR0.WP is normally set but just to be sure */ - if (unlikely(!(cr0 & X86_CR0_WP))) { - pr_err("No CPU write protect!\n"); - return -EINVAL; - } -#endif - if (!ecap_srs(iommu->ecap)) { - pr_err("No supervisor request support on %s\n", - iommu->name); - return -EINVAL; - } - } - if ((flags & PASID_FLAG_FL5LP) && !cap_fl5lp_support(iommu->cap)) { pr_err("No 5-level paging support for first-level on %s\n", iommu->name); @@ -560,10 +534,6 @@ int intel_pasid_setup_first_level(struct intel_iommu *iommu, /* Setup the first level page table pointer: */ pasid_set_flptr(pte, (u64)__pa(pgd)); - if (flags & PASID_FLAG_SUPERVISOR_MODE) { - pasid_set_sre(pte); - pasid_set_wpe(pte); - } if (flags & PASID_FLAG_FL5LP) pasid_set_flpm(pte, 1); @@ -658,12 +628,6 @@ int intel_pasid_setup_second_level(struct intel_iommu *iommu, pasid_set_fault_enable(pte); pasid_set_page_snoop(pte, !!ecap_smpwc(iommu->ecap)); - /* - * Since it is a second level only translation setup, we should - * set SRE bit as well (addresses are expected to be GPAs). - */ - if (pasid != PASID_RID2PASID && ecap_srs(iommu->ecap)) - pasid_set_sre(pte); pasid_set_present(pte); spin_unlock(&iommu->lock); @@ -700,13 +664,6 @@ int intel_pasid_setup_pass_through(struct intel_iommu *iommu, pasid_set_translation_type(pte, PASID_ENTRY_PGTT_PT); pasid_set_fault_enable(pte); pasid_set_page_snoop(pte, !!ecap_smpwc(iommu->ecap)); - - /* - * We should set SRE bit as well since the addresses are expected - * to be GPAs. - */ - if (ecap_srs(iommu->ecap)) - pasid_set_sre(pte); pasid_set_present(pte); spin_unlock(&iommu->lock); From patchwork Thu Apr 13 04:06:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolu Lu X-Patchwork-Id: 82781 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp775621vqo; Wed, 12 Apr 2023 21:22:59 -0700 (PDT) X-Google-Smtp-Source: AKy350bRQl76GDpT/q2GMauM2rXNN+xVGFARzwBx3LzKeqn/UmFoMUTe+qgLm2EH/itFmcOnGZwh X-Received: by 2002:aa7:c658:0:b0:504:8b96:4ece with SMTP id z24-20020aa7c658000000b005048b964ecemr1043989edr.9.1681359779085; Wed, 12 Apr 2023 21:22:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681359779; cv=none; d=google.com; s=arc-20160816; b=GBq2z4kroIgVb6OD4+yCRbInYSGjb4TeQp2cMi0cEhi7nPiwvGYcz6UV1lNl93iUY5 QvjUaKLz90IrhdUhnganyQuI0H/8A609HB0Cds82IrdWOxP6sQFu/s8maVZAiWctdM5S 9WxXdwKMvTb6w4KdGXBkYMi2UN/f62Dwsg29tWM4bEQso7tt7ediS17l6Q744341zucp vmDQXvq9iuvtVEFwRXW8KTn3CUhNZdlDTvsD8W5FNPjJ54uRkSsPD4odVJ3vp/0BDJyp OMzm6eBO8GLqkLLa6eLmE0MjJFh0kpR5vvoqfBGH8PuvzYW/5KE1jDFZXWQBhAKYdfeC 0jew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=P1AmvZ8S4/BBfUAE6wHlMHuVxpAcPQeBUFxQFkyibFA=; b=m6vt5MOiWP7DKFTgy+7Vp6z/SFby062R7e+GrV2fEo7+owHHazp2/M3hkiLdFnWfvh e6p9yK1V33dl8dxjQOYTEGG18kvT6P/bxHGbzr/fP9nCKQEuKAM8bjtoynRNJps1q8R4 xpVU49+mYFipoRnppFMmATgWYNTFsTOuGkkeFF2EjBfEE6Q6cUcQ1qA+OSnN1aJ7VTsr xOIWBNIPokZm9EayjoVEx1leAQXQKLqyIEtrAG6AwIGQKEnWpptlCb3+hPYBJdUDnuYM q5SJ19G5nQ9sOBaFS4Y1FIx6o62TZsZsRdXcaiI5uZWFpNUShmEEAnUypbtB9DhfzKcM jGdw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=AQMedRG0; 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=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id v6-20020aa7d646000000b0050487d8485csi844620edr.55.2023.04.12.21.22.35; Wed, 12 Apr 2023 21:22:59 -0700 (PDT) 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=@intel.com header.s=Intel header.b=AQMedRG0; 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=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230156AbjDMEH4 (ORCPT + 99 others); Thu, 13 Apr 2023 00:07:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36914 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229935AbjDMEHI (ORCPT ); Thu, 13 Apr 2023 00:07:08 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1ACAB7692 for ; Wed, 12 Apr 2023 21:07:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1681358824; x=1712894824; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=Q6c2RL66NWPgMe19n99YQtaras/AoCO0RRaTvgASTqo=; b=AQMedRG0CIl2RvX/TquRSoa85+3cgSvxVE4Kaijnd1GDlDbbobE23OzT wm28uiVsCsuXbVv0W2LwyPeaMWgjVl1BvdyD/ihLESbqGIbh/GZkfFW7g X0xXJOGYcvqy0QzyRLFM3GCex3Y2H/JXuy9kO96x4chUcEusWnQPMESus ZXIEnzgdYCcDk99/5U6ETv0VlXcUTZTLZJgie7L/lCC6oOXiFZiAOb3jW kwDS4+KQL+w63d5oWswRQqe11JS6aGKDg2p8EpDBSQC4uZWjfjjoBImjb GLcNurZAVFSgymp2guY4cF4x2Fx7svUDEbSuTyjR75ZXB+I0FrzAMv9SP A==; X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="332786621" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="332786621" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Apr 2023 21:07:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="935361069" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="935361069" Received: from allen-box.sh.intel.com ([10.239.159.127]) by fmsmga006.fm.intel.com with ESMTP; 12 Apr 2023 21:07:01 -0700 From: Lu Baolu To: Joerg Roedel Cc: Tina Zhang , Jacob Pan , Christophe JAILLET , iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 11/17] iommu/vt-d: Make size of operands same in bitwise operations Date: Thu, 13 Apr 2023 12:06:39 +0800 Message-Id: <20230413040645.46157-12-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230413040645.46157-1-baolu.lu@linux.intel.com> References: <20230413040645.46157-1-baolu.lu@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, URIBL_BLOCKED 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?1763033511551265013?= X-GMAIL-MSGID: =?utf-8?q?1763033511551265013?= From: Tina Zhang This addresses the following issue reported by klocwork tool: - operands of different size in bitwise operations Suggested-by: Yongwei Ma Signed-off-by: Tina Zhang Link: https://lore.kernel.org/r/20230406065944.2773296-2-tina.zhang@intel.com Signed-off-by: Lu Baolu --- drivers/iommu/intel/dmar.c | 2 +- drivers/iommu/intel/iommu.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/iommu/intel/dmar.c b/drivers/iommu/intel/dmar.c index 23828d189c2a..f0f51c957ccb 100644 --- a/drivers/iommu/intel/dmar.c +++ b/drivers/iommu/intel/dmar.c @@ -1690,7 +1690,7 @@ static void __dmar_enable_qi(struct intel_iommu *iommu) * is present. */ if (ecap_smts(iommu->ecap)) - val |= (1 << 11) | 1; + val |= BIT_ULL(11) | BIT_ULL(0); raw_spin_lock_irqsave(&iommu->register_lock, flags); diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c index f4e536fd5a28..acbf82fa90e7 100644 --- a/drivers/iommu/intel/iommu.c +++ b/drivers/iommu/intel/iommu.c @@ -1870,7 +1870,7 @@ context_set_sm_rid2pasid(struct context_entry *context, unsigned long pasid) */ static inline void context_set_sm_dte(struct context_entry *context) { - context->lo |= (1 << 2); + context->lo |= BIT_ULL(2); } /* @@ -1879,7 +1879,7 @@ static inline void context_set_sm_dte(struct context_entry *context) */ static inline void context_set_sm_pre(struct context_entry *context) { - context->lo |= (1 << 4); + context->lo |= BIT_ULL(4); } /* Convert value to context PASID directory size field coding. */ From patchwork Thu Apr 13 04:06:40 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolu Lu X-Patchwork-Id: 82775 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp774856vqo; Wed, 12 Apr 2023 21:20:35 -0700 (PDT) X-Google-Smtp-Source: AKy350b8ribX0bzgA/Xp3ba9LQZR4d+Nctr/RQgiCQt18dZleIhHrgBgir8IOexpehh36XvKUt9n X-Received: by 2002:aa7:c41a:0:b0:504:98f1:bdbf with SMTP id j26-20020aa7c41a000000b0050498f1bdbfmr1090800edq.34.1681359634965; Wed, 12 Apr 2023 21:20:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681359634; cv=none; d=google.com; s=arc-20160816; b=KXQSqPu8iDWe5Hbe58RqwVp8ijrGn0f668wJZxTE/i6UtoMdJFPmg44OQPGVE0Wqgb Xc962eY+/NGMNxyr2/9K5SNiIv33INF1aHPaiaizHB4RZymwh67Qkypzgsc0ntGO8lis Y3vy8U3UXKdTpFbM7pt2UTeiOLkFY/ovSh6GepTvIBgp2c9meyRriUULmxxTeTEoqdlj jhf0O1JX3jDNwaeix0safi8a3+vjeu3VYeCBbMTD+I9ynJVBcaxegoyCwAIt/zycAt1g DliV9Voszm9L8OGlhETPVWP1UhBOy5JjAtjYa75XwO6YMtOoAATB7ml2mruggd7MjHns lJxg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=hMuiJvcXemHYX/dZDy8Z65W61JRJJZl/+NLpuc0cxxM=; b=tmrpbLKLbKsoXNR1aJ7gD1kPclzyMQtUDa1fTMqeaLC2qSc2NfphdMN4eJ5CJ6KMU3 FUuy3DO0VFq+Or6HreCYMn+JxsQQP94aS8b7o1YhGH3uFHOXLaW/lk8rrGWERLIuKfXQ /LjvrqqJJW08qgERYTKCr7f2gFj8c8GPRG7AJexHp6LjK3+vp9oKKy1E3aDyE3Hqqbcf P/jcxM9+YNt0P9ZCWfgtRnTMIoRC1f+IagbzcjdnDuoQXWVhz2Kkj9nwdXqVa1rxJXpI Ga9YScJT/JXtrGfBok9BE34sgBpkgydXBxaewwPZQrkVQ/sfQqWD9lXbyPmhSqxa52eK 0A8A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=GSaGvf0a; 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=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id d22-20020aa7d5d6000000b00504b1f83926si832392eds.202.2023.04.12.21.20.11; Wed, 12 Apr 2023 21:20:34 -0700 (PDT) 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=@intel.com header.s=Intel header.b=GSaGvf0a; 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=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230184AbjDMEH6 (ORCPT + 99 others); Thu, 13 Apr 2023 00:07:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36780 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229939AbjDMEHL (ORCPT ); Thu, 13 Apr 2023 00:07:11 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 593B476B8 for ; Wed, 12 Apr 2023 21:07:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1681358826; x=1712894826; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=fSH+9CuukwrVCuz9aJxEFN4y0MR5HKb9VSv4IIAZmfM=; b=GSaGvf0aeGnC3fnHwHemK6ADs/e/Mj/R7RidQMQsz3MnL2llM+3I5snI RnqxTSB3cZyE8NmH5HYI6kwYhp2OG7IyL7G8IzXNgbd5GRjgGt1rhalcw KCU+CPVqWi24qNZN2dkuZTY4llqOMbRxL0w7wLhhoxX+lloGksMddfS7d g/986Seg7NyOeKXVS6wJgjgWWhHSuo4iZ3d2J/2MUfzyrUAHldgPsAyky md5oSwjy04NYuP0JjcMZHTa7HueVgsEV+GDaCLhAfLJkiFRTCrAWJ5JAV 9Jy/h3hrjg4x6WvYsxWrtHAn5gE1jNgYHy14FJd7QxQHbw+EaeQVGUEJK Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="332786632" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="332786632" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Apr 2023 21:07:05 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="935361078" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="935361078" Received: from allen-box.sh.intel.com ([10.239.159.127]) by fmsmga006.fm.intel.com with ESMTP; 12 Apr 2023 21:07:03 -0700 From: Lu Baolu To: Joerg Roedel Cc: Tina Zhang , Jacob Pan , Christophe JAILLET , iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 12/17] iommu/vt-d: Remove BUG_ON on checking valid pfn range Date: Thu, 13 Apr 2023 12:06:40 +0800 Message-Id: <20230413040645.46157-13-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230413040645.46157-1-baolu.lu@linux.intel.com> References: <20230413040645.46157-1-baolu.lu@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, URIBL_BLOCKED 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?1763033360988719679?= X-GMAIL-MSGID: =?utf-8?q?1763033360988719679?= From: Tina Zhang When encountering an unexpected invalid pfn range, the kernel should attempt recovery and proceed with execution. Therefore, using WARN_ON to replace BUG_ON to avoid halting the machine. Besides, one redundant checking is reduced. Signed-off-by: Tina Zhang Link: https://lore.kernel.org/r/20230406065944.2773296-3-tina.zhang@intel.com Signed-off-by: Lu Baolu --- drivers/iommu/intel/iommu.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c index acbf82fa90e7..c4847a5aaf52 100644 --- a/drivers/iommu/intel/iommu.c +++ b/drivers/iommu/intel/iommu.c @@ -1005,9 +1005,9 @@ static void dma_pte_clear_range(struct dmar_domain *domain, unsigned int large_page; struct dma_pte *first_pte, *pte; - BUG_ON(!domain_pfn_supported(domain, start_pfn)); - BUG_ON(!domain_pfn_supported(domain, last_pfn)); - BUG_ON(start_pfn > last_pfn); + if (WARN_ON(!domain_pfn_supported(domain, last_pfn)) || + WARN_ON(start_pfn > last_pfn)) + return; /* we don't need lock here; nobody else touches the iova range */ do { @@ -1166,9 +1166,9 @@ static void dma_pte_clear_level(struct dmar_domain *domain, int level, static void domain_unmap(struct dmar_domain *domain, unsigned long start_pfn, unsigned long last_pfn, struct list_head *freelist) { - BUG_ON(!domain_pfn_supported(domain, start_pfn)); - BUG_ON(!domain_pfn_supported(domain, last_pfn)); - BUG_ON(start_pfn > last_pfn); + if (WARN_ON(!domain_pfn_supported(domain, last_pfn)) || + WARN_ON(start_pfn > last_pfn)) + return; /* we don't need lock here; nobody else touches the iova range */ dma_pte_clear_level(domain, agaw_to_level(domain->agaw), From patchwork Thu Apr 13 04:06:41 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolu Lu X-Patchwork-Id: 82777 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp775350vqo; Wed, 12 Apr 2023 21:22:04 -0700 (PDT) X-Google-Smtp-Source: AKy350ZhUiutSqSBKXbdIKl4I/V4LusEIdj8GAXPpdTcVEV546ELhO/rnHd47fCTOdEojXjL+Msn X-Received: by 2002:a17:907:6b8e:b0:94a:56ec:7f12 with SMTP id rg14-20020a1709076b8e00b0094a56ec7f12mr1305948ejc.30.1681359724165; Wed, 12 Apr 2023 21:22:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681359724; cv=none; d=google.com; s=arc-20160816; b=rPPEv2Z/XMGunfwFg8gHfb8HdBH99j9flYew6mwMX7VeI2hWyeTBL3o7KJvP3jPckp FwvLH4dC+1Tld2uA93yvRl4zDDySn7AgzK1DUVmovLFqFr7THUG/Q87oAQpGfTDGWsDk FtyHKh6Nke3gTLjECfBoiyOFQ15OtEBO1WDQn0RxnR/t6podt2o5YEfHkoIaur3kc+5q 4nW+OPoHVjIrKzwXuMdMZiyqitW5gYfj8efWaL8NvXG7OwlXf9kCj3Jif3ZFU55w1EGh dv/V8knYFUH0FsedXFUridwld/Qk2tiGMUTQtlG6yU+O6BJOsKGs7GZ28N7X2nbNuSqE pFWQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=da+sWeatrPMJqe/nMXibACnGC0HtDx0V9Zj/9Kbs5Q4=; b=klTMBU4jkSsETVAi7gjGVheekqBnkOp6y/IIl6Q3OM3n/MSaftSL+WJzZOsFs9PPex c9BYhJeXYTeIKyuJwZkEEUY+f5StUT2xYBwdS3RGRJdOD59ijobZTD8udgvUXWFJaz6a s+UkeY94gDbBe9jeFiyh8TVFORNfiCFnBhmvs1nETG/clnRKpn/uofNF5nrU/hl93iUN db5FFv1k4vxciIgMSfns+t7B3L0w23kT4EMHT4dASIpUpJG5K6dGGWAg2F8pS0EtcvJq Zc42joi+zSIANGlWWj7fdDo5WwX5ChQjEl48dJI52bakTQ3qO0cmzLJiZDxDMZbGM7tC S8jA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=CWmOo0Ns; 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=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id jr7-20020a170906514700b0094a74a599f1si825418ejc.253.2023.04.12.21.21.40; Wed, 12 Apr 2023 21:22:04 -0700 (PDT) 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=@intel.com header.s=Intel header.b=CWmOo0Ns; 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=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229492AbjDMEID (ORCPT + 99 others); Thu, 13 Apr 2023 00:08:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36822 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229945AbjDMEHL (ORCPT ); Thu, 13 Apr 2023 00:07:11 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1A38A7A85 for ; Wed, 12 Apr 2023 21:07:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1681358827; x=1712894827; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=KoxeI8nGmhipdmhbf/hPatJykHf7P/Wr8q6XOawTXGM=; b=CWmOo0NsEnSuGLhyIkmTHa10WBYbnrRHXhSWq2KrERFusSxZBowISQ8M 88e3qYTRdJc+Juu33mkJSfhrS6RpGT2ABVUwr3nRkWokg9Yun7GtsP3Eg p+aNSpkBGCWpa34BHf9DcEbyMkxmIIp32neFKvZBOQ/nHztN+6QVtPx7R 4aQuKgXCa1ZLyBGvIk+dLj6jsJvSdbgKp/7/7nhe0agv5lbiqH9zwm46Q UC7hFp467kegZJ93Urt56pI8QC5oqncTsqHYip/f2qR/ZSpoIZPW/EBl1 z1M0ob72BdsIdRIB2f1Xl+DgzRYCZC3CsLc1q9AV9ijpn/En0QAeZp+NC A==; X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="332786640" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="332786640" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Apr 2023 21:07:06 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="935361089" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="935361089" Received: from allen-box.sh.intel.com ([10.239.159.127]) by fmsmga006.fm.intel.com with ESMTP; 12 Apr 2023 21:07:05 -0700 From: Lu Baolu To: Joerg Roedel Cc: Tina Zhang , Jacob Pan , Christophe JAILLET , iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 13/17] iommu/vt-d: Remove BUG_ON in handling iotlb cache invalidation Date: Thu, 13 Apr 2023 12:06:41 +0800 Message-Id: <20230413040645.46157-14-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230413040645.46157-1-baolu.lu@linux.intel.com> References: <20230413040645.46157-1-baolu.lu@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, URIBL_BLOCKED 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?1763033454130830050?= X-GMAIL-MSGID: =?utf-8?q?1763033454130830050?= From: Tina Zhang VT-d iotlb cache invalidation request with unexpected type is considered as a bug to developers, which can be fixed. So, when such kind of issue comes out, it needs to be reported through the kernel log, instead of halting the system. Replacing BUG_ON with warning reporting. Signed-off-by: Tina Zhang Link: https://lore.kernel.org/r/20230406065944.2773296-4-tina.zhang@intel.com Signed-off-by: Lu Baolu --- drivers/iommu/intel/iommu.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c index c4847a5aaf52..dd61bb554aa7 100644 --- a/drivers/iommu/intel/iommu.c +++ b/drivers/iommu/intel/iommu.c @@ -1272,7 +1272,9 @@ static void __iommu_flush_context(struct intel_iommu *iommu, | DMA_CCMD_SID(source_id) | DMA_CCMD_FM(function_mask); break; default: - BUG(); + pr_warn("%s: Unexpected context-cache invalidation type 0x%llx\n", + iommu->name, type); + return; } val |= DMA_CCMD_ICC; @@ -1308,7 +1310,9 @@ static void __iommu_flush_iotlb(struct intel_iommu *iommu, u16 did, val_iva = size_order | addr; break; default: - BUG(); + pr_warn("%s: Unexpected iotlb invalidation type 0x%llx\n", + iommu->name, type); + return; } /* Note: set drain read/write */ #if 0 @@ -1483,7 +1487,8 @@ static void iommu_flush_iotlb_psi(struct intel_iommu *iommu, uint64_t addr = (uint64_t)pfn << VTD_PAGE_SHIFT; u16 did = domain_id_iommu(domain, iommu); - BUG_ON(pages == 0); + if (WARN_ON(!pages)) + return; if (ih) ih = 1 << 6; From patchwork Thu Apr 13 04:06:42 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolu Lu X-Patchwork-Id: 82779 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp775370vqo; Wed, 12 Apr 2023 21:22:09 -0700 (PDT) X-Google-Smtp-Source: AKy350alqkaiNrrWUtVR6nTqLy2krSclWJ4ofmA4PyT7OyweXS/G1snnnhHLunTtMz1b8mziSi6v X-Received: by 2002:a17:906:af0b:b0:949:fdd5:eecd with SMTP id lx11-20020a170906af0b00b00949fdd5eecdmr1206380ejb.28.1681359729354; Wed, 12 Apr 2023 21:22:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681359729; cv=none; d=google.com; s=arc-20160816; b=Dvpmpot5FtFAyAjYRivobfSrjYoMWiXUKwXC2Cr0fvr17Q1eanurfQdkMnu9RAzwc3 gvLB1DuyrW8ImrPr1uTVoQnWgJmlrrzwUKBw1CBQs1QBYEJmcN3f7odrPpaKYCW0cRfl Rtgc7CkZ5b1DIDbQ2gzcFHgY/318+lakPQDLltFBzexfSWTdCHZ+PHTiCtA+XELpbygZ aWdqikIWNbnrB15TebX+RBrr1tZdoo4Jw5Tv0gYDyloW6tolyvFULveFjL7WL7IfWBtH +F4j3/pST8nNLq5sDBNgRvd3JSC4FDsQd6KVUxedHpSr/9g8MRF1RKK0iJUSkuP0g1iK 6YdA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=mzPtakEcRhO3QOefmfwyhDEB1APQPoGBeKnI1gQUcvo=; b=kZHBt0kqSZIMFGKIeKQrzNZmVApW5Ls78paMbPcxIM7C5/Z2d/pMf7gn7QZ6iQSEmn r/95YXceW7OetpMqnmRDTqh5TNyb79/7bwneN005knAU2MdIO4ZhEGSWPyRtk8grrdSS SXrH5lSzbVZB70a9r8NEYcRx0r65b8h+dMyp4XcQoscjPAdowAit3YFVSCYQq/vkOq39 fwe8XqwD31e+0N3HFgrsdfEBCpxnlPipWnXUoKe9N564qfJCTxqMfwnYPzlWqFS8oUup rBaGb8k8r2B02ziEen4H0L/A+6ZHgJnVi7Lo8t3OmuuanOzWYJ+sJ7kkuHq7VLAvupWO 2Ftg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=La9rb1j1; 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=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id fq14-20020a1709069d8e00b0094a6f4ddb3csi677415ejc.263.2023.04.12.21.21.45; Wed, 12 Apr 2023 21:22:09 -0700 (PDT) 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=@intel.com header.s=Intel header.b=La9rb1j1; 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=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229932AbjDMEIM (ORCPT + 99 others); Thu, 13 Apr 2023 00:08:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36842 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229951AbjDMEHM (ORCPT ); Thu, 13 Apr 2023 00:07:12 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A9CFF6E94 for ; Wed, 12 Apr 2023 21:07:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1681358828; x=1712894828; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=n8EBKPy48sTV6ZkkN0Av9i1KZOvW3Gj5TdFWIOX431s=; b=La9rb1j1U9Fjk1IIa+s5RBcchJpsJN8unbEfurOLnEtKDu86pej4lxQH 6rCUrj5MmcKP1QHrDH9/h5MtIuLjQyjXc4hRRl4/aHrqJv2FtX6NUxwgF IZjWTqZTEkFcoonXkLoOdUPzbH+X9Q+vC5/RAGeoOKlthTYc5gDcsOg5J K1q2LEOuzi0V17UZDoXc7pJzpA+5+zs4jjAD8caWYpd4Bf4bgLgXERewd 0V05AcftmHS9xramBF92hTYJh2gUzV2STiZKf7SG06VZkUdwrMWZw1R/V cDPNxbJQRFp5f+CjXkiNxxXfnCysz5Gc6VFXEqerNGcZMjpZtyniAGfdM w==; X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="332786648" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="332786648" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Apr 2023 21:07:08 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="935361101" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="935361101" Received: from allen-box.sh.intel.com ([10.239.159.127]) by fmsmga006.fm.intel.com with ESMTP; 12 Apr 2023 21:07:06 -0700 From: Lu Baolu To: Joerg Roedel Cc: Tina Zhang , Jacob Pan , Christophe JAILLET , iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 14/17] iommu/vt-d: Remove BUG_ON when domain->pgd is NULL Date: Thu, 13 Apr 2023 12:06:42 +0800 Message-Id: <20230413040645.46157-15-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230413040645.46157-1-baolu.lu@linux.intel.com> References: <20230413040645.46157-1-baolu.lu@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, URIBL_BLOCKED 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?1763033459504428692?= X-GMAIL-MSGID: =?utf-8?q?1763033459504428692?= From: Tina Zhang When performing domain_context_mapping or getting dma_pte of a pfn, the availability of the domain page table directory is ensured. Therefore, the domain->pgd checkings are unnecessary. Signed-off-by: Tina Zhang Link: https://lore.kernel.org/r/20230406065944.2773296-5-tina.zhang@intel.com Signed-off-by: Lu Baolu --- drivers/iommu/intel/iommu.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c index dd61bb554aa7..f11347a590d7 100644 --- a/drivers/iommu/intel/iommu.c +++ b/drivers/iommu/intel/iommu.c @@ -915,8 +915,6 @@ static struct dma_pte *pfn_to_dma_pte(struct dmar_domain *domain, int level = agaw_to_level(domain->agaw); int offset; - BUG_ON(!domain->pgd); - if (!domain_pfn_supported(domain, pfn)) /* Address beyond IOMMU's addressing capabilities. */ return NULL; @@ -1910,8 +1908,6 @@ static int domain_context_mapping_one(struct dmar_domain *domain, pr_debug("Set context mapping for %02x:%02x.%d\n", bus, PCI_SLOT(devfn), PCI_FUNC(devfn)); - BUG_ON(!domain->pgd); - spin_lock(&iommu->lock); ret = -ENOMEM; context = iommu_context_addr(iommu, bus, devfn, 1); From patchwork Thu Apr 13 04:06:43 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolu Lu X-Patchwork-Id: 82780 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp775600vqo; Wed, 12 Apr 2023 21:22:57 -0700 (PDT) X-Google-Smtp-Source: AKy350aF4qW6VZt1YMQSJhvXfabMs0Jv2YUB7YdiV9juAGcbcklcmiFoeBOGBQcL82QROTIAJacw X-Received: by 2002:a17:906:556:b0:94d:fd87:44eb with SMTP id k22-20020a170906055600b0094dfd8744ebmr1081264eja.63.1681359776982; Wed, 12 Apr 2023 21:22:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681359776; cv=none; d=google.com; s=arc-20160816; b=Udfk58omsBKQ8emp6Yvarl4GD3SbR8DqiEk1ULnkT3Eyxigny2Yqh3Fj+7wNogymDQ NA+Kbd776JcorG5lLJ3IJRv2Kk5nIPVdyqNOxao8syJNMWg0S9vnWKWcPVhp/k8nSMYO SfplNl/xFtkFRh0aEPtruJkPCB5Wgo2qXvQaqxvdPrszZimZCDzwy8ILD+5Vq1f1cyxy PbRqvJDE8jFTbshOYFjqgl1PvwxYi17KjU3caQ58Y0W2FwGF4arKBg7hSwU9BldIHvga 9Zw67kLKYqEryriwI4CR4QptFa3BF6QzKx0+3jxrGjI68ucYm61F3Nxiy1Im7a5JzI9G kVEw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=py4L1jtJZLQJLTfwPtuzz8WsWGIjDXabocbPTycsMGg=; b=js34Eu6uXOl+4Tr8AMMdi51OYaLoUMMqkD/7VrMe/+XQEDR5qeMs3M+dQBFwFcL1PC 8oI9SvM4PZY7xBqp5UjaIwSUCI16QxHGZFC3JtM9vqN3KWRAyyc7kXUqv5DngT8rf7iU 44oxBvVNhyGrY5K0p9l9MMx0UhhYEfe2VI/xy3eRbjOKPWRKCQ6fcXoWJA4/OgIXK/ov Ehqddj4Zo7mf9YXfj0l5WtqvGvwiTvRy+d/viRETpg+q2G9S1tEOzYPv5JjqLz9AfwaU wG671/cNL7AatyKZH8fFgInuwdciZnMmp0GwYcCF0tt66G+kHivkEK5DCbR7egG3gHjW pNag== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=fFItq+Ek; 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=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id y16-20020a170906471000b0094e918d3a4csi831335ejq.881.2023.04.12.21.22.28; Wed, 12 Apr 2023 21:22:56 -0700 (PDT) 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=@intel.com header.s=Intel header.b=fFItq+Ek; 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=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229895AbjDMEIH (ORCPT + 99 others); Thu, 13 Apr 2023 00:08:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36862 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229954AbjDMEHM (ORCPT ); Thu, 13 Apr 2023 00:07:12 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 431D976BB for ; Wed, 12 Apr 2023 21:07:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1681358831; x=1712894831; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=INsqM7kHCgplauDTVYgaDtYvmiBKWDtVPT9hnQCqHlE=; b=fFItq+EkNtBBobiEP+RYlqv5pWUBrCugfOue5vslmgUU7Wjw3/Ut8IFb bayUGN6DeDOatzn0auVtFbbpU/nZmbapqKDUoPXhFO/21WuI5yl4m+3gX t1HYB1OTqQMD2RgHEWQh36TpU/8CSqv4l5dDbCfH6iXRdhmiKNbHFsFDM +nSrTHUPRkFlr+hiy1jylmXwSBmVdQJ5ny8Og/0GxFQbfdELyAZB02PAF AVHwaB4ZTdoTeuGvMDmZhnzsi6RIMKI9OpQSIlu6Ng5y27wkZw0eg+XWM pmcOuy3wufa6PuNckLZzsFnfSE7x5rnzMsoTJOe6RzaB/9zXUYdxMGsux w==; X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="332786660" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="332786660" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Apr 2023 21:07:10 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="935361108" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="935361108" Received: from allen-box.sh.intel.com ([10.239.159.127]) by fmsmga006.fm.intel.com with ESMTP; 12 Apr 2023 21:07:08 -0700 From: Lu Baolu To: Joerg Roedel Cc: Tina Zhang , Jacob Pan , Christophe JAILLET , iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 15/17] iommu/vt-d: Remove BUG_ON in map/unmap() Date: Thu, 13 Apr 2023 12:06:43 +0800 Message-Id: <20230413040645.46157-16-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230413040645.46157-1-baolu.lu@linux.intel.com> References: <20230413040645.46157-1-baolu.lu@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, URIBL_BLOCKED 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?1763033509289681876?= X-GMAIL-MSGID: =?utf-8?q?1763033509289681876?= From: Tina Zhang Domain map/unmap with invalid parameters shouldn't crash the kernel. Therefore, using if() replaces the BUG_ON. Signed-off-by: Tina Zhang Link: https://lore.kernel.org/r/20230406065944.2773296-6-tina.zhang@intel.com Signed-off-by: Lu Baolu --- drivers/iommu/intel/iommu.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c index f11347a590d7..ab21ef1ddb3c 100644 --- a/drivers/iommu/intel/iommu.c +++ b/drivers/iommu/intel/iommu.c @@ -2159,7 +2159,8 @@ __domain_mapping(struct dmar_domain *domain, unsigned long iov_pfn, phys_addr_t pteval; u64 attr; - BUG_ON(!domain_pfn_supported(domain, iov_pfn + nr_pages - 1)); + if (unlikely(!domain_pfn_supported(domain, iov_pfn + nr_pages - 1))) + return -EINVAL; if ((prot & (DMA_PTE_READ|DMA_PTE_WRITE)) == 0) return -EINVAL; @@ -4314,8 +4315,9 @@ static size_t intel_iommu_unmap(struct iommu_domain *domain, /* Cope with horrid API which requires us to unmap more than the size argument if it happens to be a large-page mapping. */ - BUG_ON(!pfn_to_dma_pte(dmar_domain, iova >> VTD_PAGE_SHIFT, &level, - GFP_ATOMIC)); + if (unlikely(!pfn_to_dma_pte(dmar_domain, iova >> VTD_PAGE_SHIFT, + &level, GFP_ATOMIC))) + return 0; if (size < VTD_PAGE_SIZE << level_to_offset_bits(level)) size = VTD_PAGE_SIZE << level_to_offset_bits(level); From patchwork Thu Apr 13 04:06:44 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolu Lu X-Patchwork-Id: 82783 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp776573vqo; Wed, 12 Apr 2023 21:25:41 -0700 (PDT) X-Google-Smtp-Source: AKy350bgNSFlolrVSfZUVnvPT5a0SEt5fY8gXb0b4/X3X5vr+put14zOXGXO8q1vuDZHEE5d9fVP X-Received: by 2002:a05:6402:8d2:b0:502:24a4:b0ad with SMTP id d18-20020a05640208d200b0050224a4b0admr1087779edz.4.1681359941310; Wed, 12 Apr 2023 21:25:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681359941; cv=none; d=google.com; s=arc-20160816; b=tosKH+BWkDJYxsJBx8kd1kKikS5eEYWpfXus38BITQO7xXKUFFaA9PCgO4opPJn4gZ K+Gxv4T3IdB9v3EQPNYUygxTLDA1EWABmETX4z+ZdzL0f8Rn+K1U7B+85VOzmPp/UaL5 LisK8sTadcoTtFA265E9G+0NWGH+RWC/IOup3c3L/RfZK9/e2rmtqjvViQURwB4GRt3K fRRHE84CYU/olaAJwAminvyj6gdOzHEM5phaoIZsbGp8ayiZ3srtYCtGbmNzCYUL6TB7 2MTii/2yUjogANvXKqiUlImyNmil38LLG+bLy9KR44GO27dNWx+xtysVAxLnThfO3Fo9 frpQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=JkWEsnZSHpDwUuQeyDX9oA5BBAR+sK+h6IMXfFeyS3k=; b=ubE/DmS3tsSt1/cucyqKJDNNW1F0gHHCdlZmDM37xHxG7Ytj6Tjf22qNBqVVgeX+9H TrwPCwppJdA2mmQuvvMaYgRAbRwarLminAkkSB0LSooQovuUTRfAhbdGSOhNxwh4g7OV dQylgI/zmatXKGtCfUQUZUgMepw/7F32Y3ct4yoALqpMHyWmzOnKpFDFUwBZd2jlRHid X1UqFZdiCJ2fcr6vYXzufNQmNkSpjhMOo+Bs3vgV4/kkTEj98zrBkEKPfpFgK0Az+wk5 4Ftb7JD74q0QBnxtTA8uO7pxNZ3wW+xUxH5gBuNM+utOXi3iVd42zq3ptLdiVwVD9hf1 FjeA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=jQSQALmc; 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=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f6-20020a056402068600b00504a32f988csi727347edy.692.2023.04.12.21.25.17; Wed, 12 Apr 2023 21:25:41 -0700 (PDT) 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=@intel.com header.s=Intel header.b=jQSQALmc; 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=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229962AbjDMEIP (ORCPT + 99 others); Thu, 13 Apr 2023 00:08:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37058 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229963AbjDMEHN (ORCPT ); Thu, 13 Apr 2023 00:07:13 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0938E61BF for ; Wed, 12 Apr 2023 21:07:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1681358832; x=1712894832; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=tiukwRnefzsk0G3cv6MPqdFvIODlX3L3N/gwsxTD9ak=; b=jQSQALmcifK1fFFrrqgZ5VymZN722Neq0d42JVCUDnKzJVBeyn2LLKOv NrU04Rhmxs5B8DK0Gqs64MvevTJoinZp9+CJ4ThXmvOb3eBzbicwf080d VKUtmtHCYaOaaLdutgKP1xcPLID4PNw77XocCzNa2w370isTtpozq8grd w8J7Ho6z3LvlvwZaXtjDuHNboEJbyjkiZalDmm4p8+DSezGDesP038N77 kVEKJC9vT6ww6al+uThs16giV++D05KI3fe0U0Bfbui+QWgoj6QjLmBx9 Fgc81iqmKFRgSG1+hMXtnkLwFlx5Wjb0q9YFK+XOFctHMIoXQYRLEiw5j w==; X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="332786667" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="332786667" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Apr 2023 21:07:11 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="935361122" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="935361122" Received: from allen-box.sh.intel.com ([10.239.159.127]) by fmsmga006.fm.intel.com with ESMTP; 12 Apr 2023 21:07:10 -0700 From: Lu Baolu To: Joerg Roedel Cc: Tina Zhang , Jacob Pan , Christophe JAILLET , iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 16/17] iommu/vt-d: Remove a useless BUG_ON(dev->is_virtfn) Date: Thu, 13 Apr 2023 12:06:44 +0800 Message-Id: <20230413040645.46157-17-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230413040645.46157-1-baolu.lu@linux.intel.com> References: <20230413040645.46157-1-baolu.lu@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, URIBL_BLOCKED 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?1763033681952520509?= X-GMAIL-MSGID: =?utf-8?q?1763033681952520509?= From: Tina Zhang When dmar_alloc_pci_notify_info() is being invoked, the invoker has ensured the dev->is_virtfn is false. So, remove the useless BUG_ON in dmar_alloc_pci_notify_info(). Signed-off-by: Tina Zhang Link: https://lore.kernel.org/r/20230406065944.2773296-7-tina.zhang@intel.com Signed-off-by: Lu Baolu --- drivers/iommu/intel/dmar.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/iommu/intel/dmar.c b/drivers/iommu/intel/dmar.c index f0f51c957ccb..9346c6e7ebae 100644 --- a/drivers/iommu/intel/dmar.c +++ b/drivers/iommu/intel/dmar.c @@ -127,8 +127,6 @@ dmar_alloc_pci_notify_info(struct pci_dev *dev, unsigned long event) struct pci_dev *tmp; struct dmar_pci_notify_info *info; - BUG_ON(dev->is_virtfn); - /* * Ignore devices that have a domain number higher than what can * be looked up in DMAR, e.g. VMD subdevices with domain 0x10000 From patchwork Thu Apr 13 04:06:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Baolu Lu X-Patchwork-Id: 82773 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp774844vqo; Wed, 12 Apr 2023 21:20:31 -0700 (PDT) X-Google-Smtp-Source: AKy350YoBUt8wTSMY0MaSlpYAbhZpl65UssAJRKAN/qo9VAiyhQR8B3kZYhBhmJNvGqAucivbzGy X-Received: by 2002:a17:906:8043:b0:94b:4a4:2836 with SMTP id x3-20020a170906804300b0094b04a42836mr1199657ejw.69.1681359631172; Wed, 12 Apr 2023 21:20:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681359631; cv=none; d=google.com; s=arc-20160816; b=hn5UJ48ZoeItmymqLTD9St3bHCNuz61pI/7qpO1Y40f5BoB0pdaaHInoWKsY9l2vL8 X5/O5s4qqr3IW+ECEUHLgaw3Xsa+lRJ1MD0YnX8MuMQ3gDgt3kdzOEQOntF3aq5Boty8 UR1tBCkqdMlRwFm48AO5Wb85abHxuBK9QOHFtXJAVcCs+h5V4f95d0mOnvKSqt0RzT4p jntv3RNj8lkOTj4kW4js1D9jEtd0ONAJNaGPSxmYVEPCj7cOVfeNZeFMgySy1oAJ4z8c /oNzwgmOKY5/+zHyxQfmgWCdcclKAgedS27Esn542stm2jy4ZpmfWfIUUUQ7aVq5cxMW 1i+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=3lqyxVFiCeY9TSGILleT5k7M8saB/ecNiGz9Hk1gUdA=; b=lWNq9XU7lfdLSzHzF4puUJrXHUAwu6bGMt7fHcMaj4IZoQ5o8b0F2H2bxQisYGqipP LmK5t19Z4GoXDxcglIUFDmgU4QUrLDUuQB4FXnylTgq4mf6vbFAOmQLyC6Ys0jlKJRJB W0L5vpIMoPTsydDKNw9Szq43XNpA2Fn/bKyRFw92A9kB2TypLETIIgDO0yzGKUvkId/g NBRNqv4F2WHueJzrPtf6IxbEa6UOb2cxoE9E7nfMIGUdiZ+ukPv9AIaku+fV2/tDGuO0 IyFpx6HNKhddB1vNCfZ7wr9Vok6rBSvxD4cf6fmi5IfDDH7ZcyCzGFAnE0F1yiKTTnFc BMkA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="m/l4SloR"; 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=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id y16-20020a170906471000b0094e918d3a4csi831335ejq.881.2023.04.12.21.20.07; Wed, 12 Apr 2023 21:20:31 -0700 (PDT) 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=@intel.com header.s=Intel header.b="m/l4SloR"; 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=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229983AbjDMEIT (ORCPT + 99 others); Thu, 13 Apr 2023 00:08:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36994 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229978AbjDMEHO (ORCPT ); Thu, 13 Apr 2023 00:07:14 -0400 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C1C877D96 for ; Wed, 12 Apr 2023 21:07:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1681358833; x=1712894833; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=fGa6nb2+nmNFRDt+vgd1O06FQw1KI1Dbhhp5ECOkeNE=; b=m/l4SloRW02cg0IHjvYjHDRsYzbCoY76LH7oiEC9oQmbAqYAszTVGjtq xGd4gqsJt/A38Btl0nYTW/tIMCoRj79Bc5MSD2qsvfOiakifuSdvXFZs/ oJTcWVSWbuHx+6/5If/EuZ0Ika/AWqHFkaWPG5ECbdzJ/zGpdiWAflSS9 vlUQPZ/8n6R8SeLhvAZneaXI29MUH4QknJA+g0X/QzUrz8E3PyszW/ESO Bx+ODtUgnAqeYJpREgtyqP5GM2BXcKksx9mV7olgxeqdmnwFGW5Re0hfY seLRFwrSdQK4fwMvUGKIjAiCxh2qjp1fVNIcFzn/t2+6ITHu8UrSohbSN g==; X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="332786676" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="332786676" Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Apr 2023 21:07:13 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10678"; a="935361128" X-IronPort-AV: E=Sophos;i="5.98,339,1673942400"; d="scan'208";a="935361128" Received: from allen-box.sh.intel.com ([10.239.159.127]) by fmsmga006.fm.intel.com with ESMTP; 12 Apr 2023 21:07:11 -0700 From: Lu Baolu To: Joerg Roedel Cc: Tina Zhang , Jacob Pan , Christophe JAILLET , iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH v2 17/17] iommu/vt-d: Remove BUG_ON in dmar_insert_dev_scope() Date: Thu, 13 Apr 2023 12:06:45 +0800 Message-Id: <20230413040645.46157-18-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230413040645.46157-1-baolu.lu@linux.intel.com> References: <20230413040645.46157-1-baolu.lu@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE, URIBL_BLOCKED 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?1763033356718874082?= X-GMAIL-MSGID: =?utf-8?q?1763033356718874082?= From: Tina Zhang The dmar_insert_dev_scope() could fail if any unexpected condition is encountered. However, in this situation, the kernel should attempt recovery and proceed with execution. Remove BUG_ON with WARN_ON, so that kernel can avoid being crashed when an unexpected condition occurs. Signed-off-by: Tina Zhang Link: https://lore.kernel.org/r/20230406065944.2773296-8-tina.zhang@intel.com Signed-off-by: Lu Baolu --- drivers/iommu/intel/dmar.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/iommu/intel/dmar.c b/drivers/iommu/intel/dmar.c index 9346c6e7ebae..e35be3786bde 100644 --- a/drivers/iommu/intel/dmar.c +++ b/drivers/iommu/intel/dmar.c @@ -262,7 +262,8 @@ int dmar_insert_dev_scope(struct dmar_pci_notify_info *info, get_device(dev)); return 1; } - BUG_ON(i >= devices_cnt); + if (WARN_ON(i >= devices_cnt)) + return -EINVAL; } return 0;