Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp5408467pxu; Tue, 22 Dec 2020 16:53:08 -0800 (PST) X-Google-Smtp-Source: ABdhPJxgCeSdp1NYZuTDD9RMb6UGuweC7TdI1X8+F7K3+VpH864MKoYcf1jIYgwmH19CPwiSqveW X-Received: by 2002:aa7:df91:: with SMTP id b17mr23064481edy.272.1608684787938; Tue, 22 Dec 2020 16:53:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1608684787; cv=none; d=google.com; s=arc-20160816; b=m3dG8AxCilueREJXQqKNuy4H25dUj2Iaz07I8JSIpKHFLhmtEx3mOvEhcr26GqnPV0 Y9QhYN+ZuFia3exP59vfZ421hI0mTJvpZC0Go6ecsuM6vBnNWORnZhJ4UYADDryxq/+z Kn4eBWIGMvXq2qznXf9s9391ymYgG9lzeV2ZBtxKXF69nsqvoD+SLNMebSbBgcJMXxgJ JHBhdQ2p6B9atSoGCOQrn9s5rgV6hsk1CDhOlrm1dviUHvpjH4sXezWdwZWKsDmRxuLQ 1x/yj5WqJFC4sKfjK3VmRvT66TodiKoSS9hxRWQdBvnyyyuvg4Kema8qaCJLWItIjbq0 phCw== 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=6x2nY1bqUG5dPl/jsjGb4YkAaRxWhUr0lMRLeCD0a0M=; b=HoUWpD07STTIN93lWwUKx6tU1j7iNVV4El3DXLute05q39UCiD3PEZx/MvLoFhEZgz lth2Fu0jf7s0wEAJkstjYDrDdx86PwsAX9EgOuB8IuQZC+PwfHIbeOnjtmcrJ1DO7HVb ovnL6f/c1hUf8NrOTW4gDfYAnWE/EyaNdrtEE84ZVkZrYlBCTMwerNU1DeWKpzRieZoR kF6gzgSPXfY5pJhL2s2GUZolS67cIN/koez3rShpRd86wH5+AqFRw5v21aiyJwph/WrE 9xrj5IyOky/boh7cqaNqSR3QHekKrWeFiOk7lsJLU9jbazR59w6RMWMhhZmjVHiuYzyq mLKg== 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 z20si11271135eja.502.2020.12.22.16.52.45; Tue, 22 Dec 2020 16:53:07 -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 S1726350AbgLWAvH (ORCPT + 99 others); Tue, 22 Dec 2020 19:51:07 -0500 Received: from mga11.intel.com ([192.55.52.93]:60048 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726289AbgLWAvH (ORCPT ); Tue, 22 Dec 2020 19:51:07 -0500 IronPort-SDR: srBg/bNXVOnL/dj7Ra6O7YZxnhzLAaQxGMFSr5L7gdrVYxMSIU8JHXOQXZ2Ts3iIEHLhDuvc/K PKQ0P7C/rnvw== X-IronPort-AV: E=McAfee;i="6000,8403,9843"; a="172430825" X-IronPort-AV: E=Sophos;i="5.78,440,1599548400"; d="scan'208";a="172430825" Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Dec 2020 16:50:25 -0800 IronPort-SDR: al2gQmAe6shFl/QBKdY1AAtjG3IgHecQva40t44FuSDqIR9Clw/CjSLqlha8jCbNxQJy9ZwBo1 JJBW4/mLIF3w== X-IronPort-AV: E=Sophos;i="5.78,440,1599548400"; d="scan'208";a="397599451" Received: from km-skylake-client-platform.sc.intel.com ([10.3.52.146]) by fmsmga003-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Dec 2020 16:50:25 -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, ricardo.neri@intel.com, ravi.v.shankar@intel.com, kevin.tian@intel.com, ashok.raj@intel.com, sohil.mehta@intel.com, kyung.min.park@intel.com Subject: [PATCH v3 0/3] Audit Capability and Extended Capability among IOMMUs Date: Tue, 22 Dec 2020 16:29:01 -0800 Message-Id: <20201223002904.13872-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 v2 to v3: 1. fix the wrong macro names and rebase to v5.10. - 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 | 39 ++--- 7 files changed, 394 insertions(+), 94 deletions(-) create mode 100644 drivers/iommu/intel/cap_audit.c create mode 100644 drivers/iommu/intel/cap_audit.h -- 2.17.1