Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp457984ybb; Sat, 28 Mar 2020 03:05:55 -0700 (PDT) X-Google-Smtp-Source: ADFU+vuIzy3q6CAGTA5ZB2W/yyUPuillyo75+bMU6Ad7iE6nQt7EWGBMXua4ctPImgEYijP9kQ99 X-Received: by 2002:aca:1e1a:: with SMTP id m26mr1968740oic.39.1585389954966; Sat, 28 Mar 2020 03:05:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585389954; cv=none; d=google.com; s=arc-20160816; b=MKcJXZ8GDXKtLmWuLCXfKQ9riiQFTx667xqHURT6OHAYzbFaq0DuRiAkZEoPXuSuf+ EG109GA/8P+lidwGFjFKqRUJyaaa5GNYcd81wnoCiOkCCQ0+JyFyTeF2cFjOnIuVtfyU GFCmA/TEzJKOxcDN9I1w8kCguRItDO/pXKlqrWxdSHxFraIfC/zGpjl2/TPKouBRxbxs Yn1MYbFKnWBYPYVLLejwgWGZXZDf8Ce2enLmmQNMq6JCqi3B6CMTi+0wKql+BAAx05Sz GilG3UIsVzNdczdYlZfe0/ieeSsfbiFQDQ6CCL0WUBf90iGa4qtrncY/Okgc9+6f/x3h tnBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :dlp-reaction:dlp-version:dlp-product:content-language :accept-language:in-reply-to:references:message-id:date:thread-index :thread-topic:subject:cc:to:from:ironport-sdr:ironport-sdr; bh=wQWQAiIFVe3ucET2mO0RnP1DnGs04cptieGGxVWdAxo=; b=Pbwd6gmEI+FctDOBgcumv9Scgx2GUQ045ROPkwvGaj7vCbpjqjrvQzBFjPhHdZ5qQ6 Qpgl7ljWVfM1Bab7EcAfG/NuNM677Figx77JRgx31vdGqKx9OWKHw4ZdV7kt92B7Hq4K RTvcnL4IxBzX8V6sD6BY8IhLnrp68CB/kOawtX0hspnJVUdK5DEj9DSwgR7Pqoj7Hylq JAeCD7CFRkXV2sDnNaU0bxFmmayYHQ4FuNspqCY3btZgKkckZeXbrOxyj23O+jsRvCCR Grhj214tQeEmGkp+3EHe/2WmRs0O4pgADynWQhoErDGeljDaj+my0pa/XoF+kD/jr1wH EMMw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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. [209.132.180.67]) by mx.google.com with ESMTP id o5si3507195oig.147.2020.03.28.03.05.41; Sat, 28 Mar 2020 03:05:54 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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 S1726195AbgC1KEp convert rfc822-to-8bit (ORCPT + 99 others); Sat, 28 Mar 2020 06:04:45 -0400 Received: from mga11.intel.com ([192.55.52.93]:35566 "EHLO mga11.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725865AbgC1KEo (ORCPT ); Sat, 28 Mar 2020 06:04:44 -0400 IronPort-SDR: nV/9sAT6jJLlsZM/0TahtkM5mQdp3qRdCgzGoMmqjQxQFjF+U0Tl3bgjLF5jBuyGlEYVtQqNeg vuPDddyoiVAg== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Mar 2020 03:04:42 -0700 IronPort-SDR: T40Hw7MfIyknEyOeVIl8GiXkWY5PV7i104H//lJYTs7OHoBGKx83Yqhj5CiC5VdYmDZEWTifJ8 aNFtYGnuB7+A== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.72,315,1580803200"; d="scan'208";a="266458124" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga002.jf.intel.com with ESMTP; 28 Mar 2020 03:04:42 -0700 Received: from fmsmsx111.amr.corp.intel.com (10.18.116.5) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sat, 28 Mar 2020 03:04:41 -0700 Received: from shsmsx101.ccr.corp.intel.com (10.239.4.153) by fmsmsx111.amr.corp.intel.com (10.18.116.5) with Microsoft SMTP Server (TLS) id 14.3.439.0; Sat, 28 Mar 2020 03:04:41 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.225]) by SHSMSX101.ccr.corp.intel.com ([169.254.1.129]) with mapi id 14.03.0439.000; Sat, 28 Mar 2020 18:04:39 +0800 From: "Tian, Kevin" To: Jacob Pan , Lu Baolu , "iommu@lists.linux-foundation.org" , LKML , Joerg Roedel , David Woodhouse , "Alex Williamson" , Jean-Philippe Brucker CC: "Liu, Yi L" , "Raj, Ashok" , Christoph Hellwig , Jonathan Cameron , Eric Auger Subject: RE: [PATCH V10 09/11] iommu/vt-d: Cache virtual command capability register Thread-Topic: [PATCH V10 09/11] iommu/vt-d: Cache virtual command capability register Thread-Index: AQHV/w5hEOke1Pb7eU69zDhx+Na506hd0kSA Date: Sat, 28 Mar 2020 10:04:38 +0000 Message-ID: References: <1584746861-76386-1-git-send-email-jacob.jun.pan@linux.intel.com> <1584746861-76386-10-git-send-email-jacob.jun.pan@linux.intel.com> In-Reply-To: <1584746861-76386-10-git-send-email-jacob.jun.pan@linux.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > From: Jacob Pan > Sent: Saturday, March 21, 2020 7:28 AM > > Virtual command registers are used in the guest only, to prevent > vmexit cost, we cache the capability and store it during initialization. > > Signed-off-by: Jacob Pan > Reviewed-by: Eric Auger > Reviewed-by: Lu Baolu > > --- > v7 Reviewed by Eric & Baolu > --- > --- > drivers/iommu/dmar.c | 1 + > include/linux/intel-iommu.h | 5 +++++ > 2 files changed, 6 insertions(+) > > diff --git a/drivers/iommu/dmar.c b/drivers/iommu/dmar.c > index 4d6b7b5b37ee..3b36491c8bbb 100644 > --- a/drivers/iommu/dmar.c > +++ b/drivers/iommu/dmar.c > @@ -963,6 +963,7 @@ static int map_iommu(struct intel_iommu *iommu, > u64 phys_addr) > warn_invalid_dmar(phys_addr, " returns all ones"); > goto unmap; > } > + iommu->vccap = dmar_readq(iommu->reg + DMAR_VCCAP_REG); > > /* the registers might be more than one page */ > map_size = max_t(int, ecap_max_iotlb_offset(iommu->ecap), > diff --git a/include/linux/intel-iommu.h b/include/linux/intel-iommu.h > index 43539713b3b3..ccbf164fb711 100644 > --- a/include/linux/intel-iommu.h > +++ b/include/linux/intel-iommu.h > @@ -194,6 +194,9 @@ > #define ecap_max_handle_mask(e) ((e >> 20) & 0xf) > #define ecap_sc_support(e) ((e >> 7) & 0x1) /* Snooping Control */ > > +/* Virtual command interface capabilities */ capabilities -> capability Reviewed-by: Kevin Tian > +#define vccap_pasid(v) ((v & DMA_VCS_PAS)) /* PASID > allocation */ > + > /* IOTLB_REG */ > #define DMA_TLB_FLUSH_GRANU_OFFSET 60 > #define DMA_TLB_GLOBAL_FLUSH (((u64)1) << 60) > @@ -287,6 +290,7 @@ > > /* PRS_REG */ > #define DMA_PRS_PPR ((u32)1) > +#define DMA_VCS_PAS ((u64)1) > > #define IOMMU_WAIT_OP(iommu, offset, op, cond, sts) > \ > do { \ > @@ -537,6 +541,7 @@ struct intel_iommu { > u64 reg_size; /* size of hw register set */ > u64 cap; > u64 ecap; > + u64 vccap; > u32 gcmd; /* Holds TE, EAFL. Don't need SRTP, SFL, WBF > */ > raw_spinlock_t register_lock; /* protect register handling */ > int seq_id; /* sequence id of the iommu */ > -- > 2.7.4