From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754152AbdLFI1t (ORCPT ); Wed, 6 Dec 2017 03:27:49 -0500 Received: from mga06.intel.com ([134.134.136.31]:9291 "EHLO mga06.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750989AbdLFI1r (ORCPT ); Wed, 6 Dec 2017 03:27:47 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,367,1508828400"; d="scan'208";a="10982258" Subject: Re: [PATCH v3 3/6] iommu/vt-d: Add Intel IOMMU debugfs to show extended context internals To: Sohil Mehta , Joerg Roedel , Alex Williamson References: <1512531807-24268-1-git-send-email-sohil.mehta@intel.com> <1512531807-24268-4-git-send-email-sohil.mehta@intel.com> Cc: Ravi V Shankar , Fenghua Yu , linux-kernel@vger.kernel.org, iommu@lists.linux-foundation.org, David Woodhouse , Gayatri Kammela , Andriy Shevchenko From: Lu Baolu Message-ID: <5A27A7B3.1080108@linux.intel.com> Date: Wed, 6 Dec 2017 16:17:55 +0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.5.1 MIME-Version: 1.0 In-Reply-To: <1512531807-24268-4-git-send-email-sohil.mehta@intel.com> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On 12/06/2017 11:43 AM, Sohil Mehta wrote: > From: Gayatri Kammela > > Debugfs extension to dump internals such as extended context table > entries for each IOMMU to the userspace. > > root@OTC-KBLH-01:~# cat > /sys/kernel/debug/intel_iommu/dmar_translation_struct > > IOMMU dmar1: Extended Root Table Addr:4558a1800 > Extended Root tbl entries: > Bus 0 L: 4558a6001 H: 0 > Lower Context table entries for Bus: 0 > [entry] DID :B :D .F Low High > [16] 0000:00:02.00 4558a5005 102 > Higher Context tbl entries for Bus: 0 > [16] 0000:00:02.00 401b0000c 401400000 > > IOMMU dmar0: Extended Root Table Addr:4558a2800 > Extended Root tbl entries: > Bus 0 L: 4016f4001 H: 0 > Lower Context table entries for Bus: 0 > [entry] DID :B :D .F Low High > [80] 0000:00:0a.00 4016f3a05 102 > Higher Context tbl entries for Bus: 0 Do you mind changing "tbl entries" to "table entries" so that it could be consistent with above lower one? Best regards, Lu Baolu > [80] 0000:00:0a.00 40150000c 671b80000000 > > Cc: Sohil Mehta > Cc: Fenghua Yu > Cc: Jacob Pan > Cc: Ashok Raj > Signed-off-by: Gayatri Kammela > --- > > v3: No change > > v2: No change > > drivers/iommu/intel-iommu-debug.c | 35 +++++++++++++++++++++++++++++++++++ > 1 file changed, 35 insertions(+) > > diff --git a/drivers/iommu/intel-iommu-debug.c b/drivers/iommu/intel-iommu-debug.c > index 8ae0c4d..8e7f5d2 100644 > --- a/drivers/iommu/intel-iommu-debug.c > +++ b/drivers/iommu/intel-iommu-debug.c > @@ -46,6 +46,38 @@ static const struct file_operations __name ## _fops = \ > .owner = THIS_MODULE, \ > } > > +#ifdef CONFIG_INTEL_IOMMU_SVM > +static void ext_ctx_tbl_entry_show(struct seq_file *m, void *unused, > + struct intel_iommu *iommu, int bus, int ctx, > + struct context_entry *context, bool new_ext) > +{ > + u64 ctx_lo; > + > + if (new_ext) { > + seq_printf(m, "Higher Context tbl entries for Bus: %d\n", bus); > + ctx_lo = context[0].lo; > + > + if (!(ctx_lo & CONTEXT_PASIDE)) { > + context[1].hi = (u64)virt_to_phys( > + iommu->pasid_state_table); > + context[1].lo = (u64)virt_to_phys(iommu->pasid_table) | > + intel_iommu_get_pts(iommu); > + } > + > + seq_printf(m, "[%d]\t%04x:%02x:%02x.%02x\t%llx\t%llx\n", ctx, > + iommu->segment, bus, PCI_SLOT(ctx), PCI_FUNC(ctx), > + context[1].lo, context[1].hi); > + } > +} > +#else /* CONFIG_INTEL_IOMMU_SVM */ > +static void ext_ctx_tbl_entry_show(struct seq_file *m, void *unused, > + struct intel_iommu *iommu, int bus, int ctx, > + struct context_entry *context, bool new_ext) > +{ > + return; > +} > +#endif /* CONFIG_INTEL_IOMMU_SVM */ > + > static void ctx_tbl_entry_show(struct seq_file *m, void *unused, > struct intel_iommu *iommu, int bus, bool ext, > bool new_ext) > @@ -69,6 +101,9 @@ static void ctx_tbl_entry_show(struct seq_file *m, void *unused, > seq_printf(m, "[%d]\t%04x:%02x:%02x.%02x\t%llx\t%llx\n", > ctx, iommu->segment, bus, PCI_SLOT(ctx), > PCI_FUNC(ctx), context[0].lo, context[0].hi); > + > + ext_ctx_tbl_entry_show(m, unused, iommu, bus, ctx, > + context, new_ext); > } > } > out: