All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] iommu/vt-d: Don't reject nvme host due to scope mismatch
@ 2019-12-20  7:07 ` jimyan
  0 siblings, 0 replies; 9+ messages in thread
From: jimyan @ 2019-12-20  7:07 UTC (permalink / raw)
  To: joro; +Cc: iommu, linux-kernel, jimyan

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):

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


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [PATCH] iommu/vt-d: Don't reject nvme host due to scope mismatch
@ 2019-12-20  7:07 ` jimyan
  0 siblings, 0 replies; 9+ messages in thread
From: jimyan @ 2019-12-20  7:07 UTC (permalink / raw)
  To: joro; +Cc: jimyan, iommu, linux-kernel

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):

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

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] iommu/vt-d: Don't reject nvme host due to scope mismatch
  2019-12-20  7:07 ` jimyan
@ 2019-12-20  9:23   ` Jerry Snitselaar
  -1 siblings, 0 replies; 9+ messages in thread
From: Jerry Snitselaar @ 2019-12-20  9:23 UTC (permalink / raw)
  To: jimyan; +Cc: joro, iommu, linux-kernel

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
>


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] iommu/vt-d: Don't reject nvme host due to scope mismatch
@ 2019-12-20  9:23   ` Jerry Snitselaar
  0 siblings, 0 replies; 9+ messages in thread
From: Jerry Snitselaar @ 2019-12-20  9:23 UTC (permalink / raw)
  To: jimyan; +Cc: iommu, linux-kernel

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
>

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

^ permalink raw reply	[flat|nested] 9+ messages in thread

* 答复: [PATCH] iommu/vt-d: Don't reject nvme host due to scope mismatch
  2019-12-20  9:23   ` Jerry Snitselaar
  (?)
@ 2019-12-23  3:26   ` Jim,Yan
  -1 siblings, 0 replies; 9+ messages in thread
From: Jim,Yan @ 2019-12-23  3:26 UTC (permalink / raw)
  To: Jerry Snitselaar; +Cc: joro, iommu, linux-kernel

> -----邮件原件-----
>发件人: 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

^ permalink raw reply	[flat|nested] 9+ messages in thread

* 答复: [PATCH] iommu/vt-d: Don't reject nvme host due to scope mismatch
  2019-12-20  9:23   ` Jerry Snitselaar
@ 2019-12-23  7:59     ` Jim,Yan
  -1 siblings, 0 replies; 9+ messages in thread
From: Jim,Yan @ 2019-12-23  7:59 UTC (permalink / raw)
  To: Jerry Snitselaar; +Cc: joro, iommu, linux-kernel

> -----邮件原件-----
> 发件人: 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

^ permalink raw reply	[flat|nested] 9+ messages in thread

* 答复: [PATCH] iommu/vt-d: Don't reject nvme host due to scope mismatch
@ 2019-12-23  7:59     ` Jim,Yan
  0 siblings, 0 replies; 9+ messages in thread
From: Jim,Yan @ 2019-12-23  7:59 UTC (permalink / raw)
  To: Jerry Snitselaar; +Cc: iommu, linux-kernel

> -----邮件原件-----
> 发件人: 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

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: 答复: [PATCH] iommu/vt-d: Don't reject nvme host due to scope mismatch
  2019-12-23  7:59     ` Jim,Yan
@ 2019-12-23 13:05       ` Lu Baolu
  -1 siblings, 0 replies; 9+ messages in thread
From: Lu Baolu @ 2019-12-23 13:05 UTC (permalink / raw)
  To: Jim,Yan, Jerry Snitselaar; +Cc: iommu, linux-kernel

Hi,

On 2019/12/23 15:59, Jim,Yan wrote:
>> -----邮件原件-----
>> 发件人: 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.
>

For both cases, a quirk flag seems to be more reasonable, so that
unrelated devices will not be impacted.

Best regards,
baolu

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: 答复: [PATCH] iommu/vt-d: Don't reject nvme host due to scope mismatch
@ 2019-12-23 13:05       ` Lu Baolu
  0 siblings, 0 replies; 9+ messages in thread
From: Lu Baolu @ 2019-12-23 13:05 UTC (permalink / raw)
  To: Jim,Yan, Jerry Snitselaar; +Cc: iommu, linux-kernel

Hi,

On 2019/12/23 15:59, Jim,Yan wrote:
>> -----邮件原件-----
>> 发件人: 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.
>

For both cases, a quirk flag seems to be more reasonable, so that
unrelated devices will not be impacted.

Best regards,
baolu
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2019-12-23 13:05 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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
2019-12-23  7:59     ` Jim,Yan
2019-12-23 13:05     ` Lu Baolu
2019-12-23 13:05       ` Lu Baolu

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.