All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Jim,Yan" <jimyan@baidu.com>
To: Jerry Snitselaar <jsnitsel@redhat.com>
Cc: "joro@8bytes.org" <joro@8bytes.org>,
	"iommu@lists.linux-foundation.org"
	<iommu@lists.linux-foundation.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: 答复: [PATCH] iommu/vt-d: Don't reject nvme host due to scope mismatch
Date: Mon, 23 Dec 2019 07:59:11 +0000	[thread overview]
Message-ID: <606767b54ad4410abbdd9d053552074a@baidu.com> (raw)
In-Reply-To: <20191220092327.do34gtk3lcafzr6q@cantor>

> -----邮件原件-----
> 发件人: Jerry Snitselaar [mailto:jsnitsel@redhat.com]
> 发送时间: 2019年12月20日 17:23
> 收件人: Jim,Yan <jimyan@baidu.com>
> 抄送: joro@8bytes.org; iommu@lists.linux-foundation.org;
> linux-kernel@vger.kernel.org
> 主题: Re: [PATCH] iommu/vt-d: Don't reject nvme host due to scope mismatch
> 
> On Fri Dec 20 19, jimyan wrote:
> >On a system with an Intel PCIe port configured as a nvme host device,
> >iommu initialization fails with
> >
> >    DMAR: Device scope type does not match for 0000:80:00.0
> >
> >This is because the DMAR table reports this device as having scope 2
> >(ACPI_DMAR_SCOPE_TYPE_BRIDGE):
> >
> 
> Isn't that a problem to be fixed in the DMAR table then?
> 
> >but the device has a type 0 PCI header:
> >80:00.0 Class 0600: Device 8086:2020 (rev 06)
> >00: 86 80 20 20 47 05 10 00 06 00 00 06 10 00 00 00
> >10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> >20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 00 00
> >30: 00 00 00 00 90 00 00 00 00 00 00 00 00 01 00 00
> >
> >VT-d works perfectly on this system, so there's no reason to bail out
> >on initialization due to this apparent scope mismatch. Add the class
> >0x600 ("PCI_CLASS_BRIDGE_HOST") as a heuristic for allowing DMAR
> >initialization for non-bridge PCI devices listed with scope bridge.
> >
> >Signed-off-by: jimyan <jimyan@baidu.com>
> >---
> > drivers/iommu/dmar.c | 1 +
> > 1 file changed, 1 insertion(+)
> >
> >diff --git a/drivers/iommu/dmar.c b/drivers/iommu/dmar.c index
> >eecd6a421667..9faf2f0e0237 100644
> >--- a/drivers/iommu/dmar.c
> >+++ b/drivers/iommu/dmar.c
> >@@ -244,6 +244,7 @@ int dmar_insert_dev_scope(struct
> dmar_pci_notify_info *info,
> > 		     info->dev->hdr_type != PCI_HEADER_TYPE_NORMAL) ||
> > 		    (scope->entry_type == ACPI_DMAR_SCOPE_TYPE_BRIDGE &&
> > 		     (info->dev->hdr_type == PCI_HEADER_TYPE_NORMAL &&
> >+			  info->dev->class >> 8 != PCI_CLASS_BRIDGE_HOST &&
> > 		      info->dev->class >> 8 != PCI_CLASS_BRIDGE_OTHER))) {
> > 			pr_warn("Device scope type does not match for %s\n",
> > 				pci_name(info->dev));
> >--
> >2.11.0
> >
> >_______________________________________________
> >iommu mailing list
> >iommu@lists.linux-foundation.org
> >https://lists.linuxfoundation.org/mailman/listinfo/iommu
> >
Actually this patch is similar to the commit: ffb2d1eb88c3("iommu/vt-d: Don't reject NTB devices due to scope mismatch"). Besides, modifying DMAR table need OEM update BIOS. It is hard to implement.

Jim

WARNING: multiple messages have this Message-ID (diff)
From: "Jim,Yan" <jimyan@baidu.com>
To: Jerry Snitselaar <jsnitsel@redhat.com>
Cc: "iommu@lists.linux-foundation.org"
	<iommu@lists.linux-foundation.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: 答复: [PATCH] iommu/vt-d: Don't reject nvme host due to scope mismatch
Date: Mon, 23 Dec 2019 07:59:11 +0000	[thread overview]
Message-ID: <606767b54ad4410abbdd9d053552074a@baidu.com> (raw)
In-Reply-To: <20191220092327.do34gtk3lcafzr6q@cantor>

> -----邮件原件-----
> 发件人: Jerry Snitselaar [mailto:jsnitsel@redhat.com]
> 发送时间: 2019年12月20日 17:23
> 收件人: Jim,Yan <jimyan@baidu.com>
> 抄送: joro@8bytes.org; iommu@lists.linux-foundation.org;
> linux-kernel@vger.kernel.org
> 主题: Re: [PATCH] iommu/vt-d: Don't reject nvme host due to scope mismatch
> 
> On Fri Dec 20 19, jimyan wrote:
> >On a system with an Intel PCIe port configured as a nvme host device,
> >iommu initialization fails with
> >
> >    DMAR: Device scope type does not match for 0000:80:00.0
> >
> >This is because the DMAR table reports this device as having scope 2
> >(ACPI_DMAR_SCOPE_TYPE_BRIDGE):
> >
> 
> Isn't that a problem to be fixed in the DMAR table then?
> 
> >but the device has a type 0 PCI header:
> >80:00.0 Class 0600: Device 8086:2020 (rev 06)
> >00: 86 80 20 20 47 05 10 00 06 00 00 06 10 00 00 00
> >10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> >20: 00 00 00 00 00 00 00 00 00 00 00 00 86 80 00 00
> >30: 00 00 00 00 90 00 00 00 00 00 00 00 00 01 00 00
> >
> >VT-d works perfectly on this system, so there's no reason to bail out
> >on initialization due to this apparent scope mismatch. Add the class
> >0x600 ("PCI_CLASS_BRIDGE_HOST") as a heuristic for allowing DMAR
> >initialization for non-bridge PCI devices listed with scope bridge.
> >
> >Signed-off-by: jimyan <jimyan@baidu.com>
> >---
> > drivers/iommu/dmar.c | 1 +
> > 1 file changed, 1 insertion(+)
> >
> >diff --git a/drivers/iommu/dmar.c b/drivers/iommu/dmar.c index
> >eecd6a421667..9faf2f0e0237 100644
> >--- a/drivers/iommu/dmar.c
> >+++ b/drivers/iommu/dmar.c
> >@@ -244,6 +244,7 @@ int dmar_insert_dev_scope(struct
> dmar_pci_notify_info *info,
> > 		     info->dev->hdr_type != PCI_HEADER_TYPE_NORMAL) ||
> > 		    (scope->entry_type == ACPI_DMAR_SCOPE_TYPE_BRIDGE &&
> > 		     (info->dev->hdr_type == PCI_HEADER_TYPE_NORMAL &&
> >+			  info->dev->class >> 8 != PCI_CLASS_BRIDGE_HOST &&
> > 		      info->dev->class >> 8 != PCI_CLASS_BRIDGE_OTHER))) {
> > 			pr_warn("Device scope type does not match for %s\n",
> > 				pci_name(info->dev));
> >--
> >2.11.0
> >
> >_______________________________________________
> >iommu mailing list
> >iommu@lists.linux-foundation.org
> >https://lists.linuxfoundation.org/mailman/listinfo/iommu
> >
Actually this patch is similar to the commit: ffb2d1eb88c3("iommu/vt-d: Don't reject NTB devices due to scope mismatch"). Besides, modifying DMAR table need OEM update BIOS. It is hard to implement.

Jim
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

  parent reply	other threads:[~2019-12-23  7:59 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-20  7:07 [PATCH] iommu/vt-d: Don't reject nvme host due to scope mismatch jimyan
2019-12-20  7:07 ` jimyan
2019-12-20  9:23 ` Jerry Snitselaar
2019-12-20  9:23   ` Jerry Snitselaar
2019-12-23  3:26   ` 答复: " Jim,Yan
2019-12-23  7:59   ` Jim,Yan [this message]
2019-12-23  7:59     ` Jim,Yan
2019-12-23 13:05     ` Lu Baolu
2019-12-23 13:05       ` Lu Baolu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=606767b54ad4410abbdd9d053552074a@baidu.com \
    --to=jimyan@baidu.com \
    --cc=iommu@lists.linux-foundation.org \
    --cc=joro@8bytes.org \
    --cc=jsnitsel@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.