lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Fri, 20 Dec 2019 02:23:27 -0700
From:   Jerry Snitselaar <jsnitsel@...hat.com>
To:     jimyan <jimyan@...du.com>
Cc:     joro@...tes.org, iommu@...ts.linux-foundation.org,
        linux-kernel@...r.kernel.org
Subject: 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@...du.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@...ts.linux-foundation.org
>https://lists.linuxfoundation.org/mailman/listinfo/iommu
>

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ