iommu/vt-d: fix bug in handling multiple RMRRs for the same PCI device
PATCH 1/1 iommu/vt-d: fix bug in handling multiple RMRRs for the same PCI device
Function dmar_iommu_notify_scope_dev() makes a wrong assumption that there's one RMRR for each PCI device at most, which causes DMA failure on some HP platforms. So enhance dmar_iommu_notify_scope_dev() to handle multiple RMRRs for the same PCI device.
Fixbug: https://bugzilla.novell.com/show_bug.cgi?id=879482
Cc <[email protected]> # 3.15
Reported-by Tom Mingarelli <[email protected]>
Tested-by Linda Knippers <[email protected]>
Signed-off-by Jiang Liu <[email protected]>
--- drivers/iommu/intel-iommu.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-)
drivers/iommu/intel-iommu.c +3 -6
@@ -3816,14 +3816,11 @@ int dmar_iommu_notify_scope_dev(struct dmar_pci_notify_info *info) ((void *)rmrr) + rmrr->header.length, rmrr->segment, rmrru->devices, rmrru->devices_cnt); -if (ret >0 ) -break ; -else if (ret <0 ) +if (ret <0 )return ret; }else if (info->event ==BUS_NOTIFY_DEL_DEVICE ) { -if (dmar_remove_dev_scope (info, rmrr->segment, - rmrru->devices, rmrru->devices_cnt)) -break ; +dmar_remove_dev_scope (info, rmrr->segment, + rmrru->devices, rmrru->devices_cnt); } }
Signature · 1 line
1.7.10.4
Quoted 11 lines · Jiang Liu
Function
dmar_iommu_notify_scope_dev()makes a wrong assumption that there's one RMRR for each PCI device at most, which causes DMA failure on some HP platforms. So enhancedmar_iommu_notify_scope_dev()to handle multiple RMRRs for the same PCI device.Fixbug: https://bugzilla.novell.com/show_bug.cgi?id‡9482
Cc <[email protected]> # 3.15Reported-by Tom Mingarelli <[email protected]>Tested-by Linda Knippers <[email protected]>Signed-off-by Jiang Liu <[email protected]>
Applied to iommu/fixes, thans Jiang.