• Jiang Liu's avatar
    iommu/vt-d: fix bug in matching PCI devices with DRHD/RMRR descriptors · 5ae0566a
    Jiang Liu authored
    Commit "59ce0515 iommu/vt-d: Update DRHD/RMRR/ATSR device scope
    caches when PCI hotplug happens" introduces a bug, which fails to
    match PCI devices with DMAR device scope entries if PCI path array
    in the entry has more than one level.
    
    For example, it fails to handle
    [1D2h 0466   1]      Device Scope Entry Type : 01
    [1D3h 0467   1]                 Entry Length : 0A
    [1D4h 0468   2]                     Reserved : 0000
    [1D6h 0470   1]               Enumeration ID : 00
    [1D7h 0471   1]               PCI Bus Number : 00
    [1D8h 0472   2]                     PCI Path : 1C,04
    [1DAh 0474   2]                     PCI Path : 00,02
    
    And cause DMA failure on HP DL980 as:
    DMAR:[fault reason 02] Present bit in context entry is clear
    dmar: DRHD: handling fault status reg 602
    dmar: DMAR:[DMA Read] Request device [02:00.2] fault addr 7f61e000
    Reported-and-tested-by: default avatarDavidlohr Bueso <davidlohr@hp.com>
    Signed-off-by: default avatarJiang Liu <jiang.liu@linux.intel.com>
    Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
    5ae0566a
dmar.c 40.7 KB