Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp1385314pxu; Sat, 5 Dec 2020 14:22:06 -0800 (PST) X-Google-Smtp-Source: ABdhPJxkmJI40ZRnwqPsg5gM2JqqUKuA3ERUSFBltVmwHNd13FnzVGg8Eq9hWQ78HZN76IGxUrVv X-Received: by 2002:aa7:d886:: with SMTP id u6mr14060983edq.139.1607206925838; Sat, 05 Dec 2020 14:22:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1607206925; cv=none; d=google.com; s=arc-20160816; b=zSRceWb4NfoALpO/XBoPO0gdfEv27ga4WeT4zkgcCduY3iOIJMAtze1zAPcT3rFm58 lX8QjkQ0+NrKKWRrrUpfABdut4cCRL5FUe0WhsF/xkOLUlxoL0u5ehOimuh2KtrKm4ui rAKABVZP8Dth2PTeYdZ21lmDcM0O884B1+rzAvsJ/5qIZRl6PHn2IhzQzb0SI7Ws76f4 OUtXO4WjKEDu/ryNLVFvdjoEhM4aYuR56CfmfVr6L9x3VKseyhS2wfwdKsKdyiYRhHQi 8Y0xgQlW7o4uYSVQ+LE0mIi5HBQ7z/eEzg37Ys1MMIvcF7J8v7Kp0w6G1xYr2CDXIRUa bK1A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:message-id:date:subject:cc:to:from:ironport-sdr :ironport-sdr; bh=CbRkSeUOuBexNIWzbTvAstiO5DmxvnbCZKMZ0e7jRkI=; b=yfngCIWLslAeqLGOLBL8Lcq38+/eZa+jZu5MpEdTETlmrxkbfqZDNKxIGKBauZWEXQ ZKGu6tMWvsBFK2yuW+WKoUPMxjk8HB1/JPYUKSgHw0qQqQ37JLnvq2nZMKLti+TKsgqG tK4Dz6FyB9D+yW6oZGnIyTopWG3fGoeav+tb1CofP2Qt3YtwuPiu4vUUlVukHDc0Qzcq ka05YOTp6iAoZic8/YTGfYwahZPmafhMD5JHXHaVG4Y+vcvsK6HIKjLVJ2JJRQY+2jYo bd/WKp6BFH+uNt/Ia4rtIqncWe8aSJGLWkSJParERqxwMiyP2nVho2zYYms1LK/FptYB 2Wkw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id j12si4047925ejb.431.2020.12.05.14.21.42; Sat, 05 Dec 2020 14:22:05 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726152AbgLEWTK (ORCPT + 99 others); Sat, 5 Dec 2020 17:19:10 -0500 Received: from mga12.intel.com ([192.55.52.136]:56475 "EHLO mga12.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725270AbgLEWTJ (ORCPT ); Sat, 5 Dec 2020 17:19:09 -0500 IronPort-SDR: uRRSXbuZ51+x58WQJkzYLgyEpwksioqhRyu2yFpxbY9WfS288dG2aSJ80u+yfrW0GUKyf9aGSX z8EH91R1km5w== X-IronPort-AV: E=McAfee;i="6000,8403,9826"; a="152791254" X-IronPort-AV: E=Sophos;i="5.78,395,1599548400"; d="scan'208";a="152791254" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Dec 2020 14:18:29 -0800 IronPort-SDR: zqqrqwyBarlR0XINBBu+Ca0VvXghTsoLlMDVAcbn4NQOcemOOpPQScDPEEVlybsynO78EIabs/ qOzKtscV2tPQ== X-IronPort-AV: E=Sophos;i="5.78,395,1599548400"; d="scan'208";a="362584189" Received: from km-skylake-client-platform.sc.intel.com ([10.3.52.146]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Dec 2020 14:18:29 -0800 From: Kyung Min Park To: linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org Cc: dwmw2@infradead.org, baolu.lu@linux.intel.com, joro@8bytes.org, will@kernel.org, ravi.v.shankar@intel.com, kevin.tian@intel.com, ashok.raj@intel.com, ricardo.neri@intel.com, sohil.mehta@intel.com, Kyung Min Park Subject: [PATCH v2 0/3] Audit Capability and Extended Capability among IOMMUs Date: Sat, 5 Dec 2020 13:57:40 -0800 Message-Id: <20201205215743.27803-1-kyung.min.park@intel.com> X-Mailer: git-send-email 2.17.1 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Modern platforms have more than one IOMMU. Each IOMMU has its own feature set. Some of these features must be consistent among IOMMUs. Otherwise, these differences can lead to improper behavior in the system. On the other hand, for some features, each IOMMU can have different capacity values. So, different actions are required to deal with the inconsistencies depending on the IOMMU features. Currently, some inconsistencies are ignored by the IOMMU driver. This patchset checks IOMMU capabilities and extended capabilities centralizedly during boot and take different actions according to the impacts caused by the mismatches. For example: 1. Disable Shared Virtual Memory. 2. Use common capacity values (normally the lowest capacity value) for all IOMMUs. 3. Report feature mismatches. Detailed information on the IOMMU Capability / Extended Capability can be found in Intel VT-d Specification. Link: https://software.intel.com/sites/default/files/managed/c5/15/vt-directed-io-spec.pdf ChangeLog: - Change from v1 to v2: 1. Add missing cap/ecaps for audit. 2. Refactor function/macros overal suggested by Lu, Baolu. 2. Skip audit for gfx dedicated IOMMU. 3. Change commit message. Kyung Min Park (3): iommu/vt-d: Audit IOMMU Capabilities and add helper functions iommu/vt-d: Move capability check code to cap_audit files iommu/vt-d: Disable SVM in the platform when IOMMUs have inconsistencies drivers/iommu/intel/Makefile | 2 +- drivers/iommu/intel/cap_audit.c | 219 ++++++++++++++++++++++++++++ drivers/iommu/intel/cap_audit.h | 132 +++++++++++++++++ drivers/iommu/intel/iommu.c | 85 ++--------- drivers/iommu/intel/irq_remapping.c | 8 + drivers/iommu/intel/svm.c | 3 +- include/linux/intel-iommu.h | 40 ++--- 7 files changed, 395 insertions(+), 94 deletions(-) create mode 100644 drivers/iommu/intel/cap_audit.c create mode 100644 drivers/iommu/intel/cap_audit.h -- 2.17.1