mirror of
https://github.com/torvalds/linux.git
synced 2026-06-09 23:23:53 +02:00
iommu/amd: Fix hotplug with iommu=pt
commit 2c9195e990 upstream.
This did not work because devices are not put into the
pt_domain. Fix this.
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
e6c1b59aaa
commit
06e619c507
|
|
@ -2254,6 +2254,18 @@ static int device_change_notifier(struct notifier_block *nb,
|
|||
|
||||
iommu_init_device(dev);
|
||||
|
||||
/*
|
||||
* dev_data is still NULL and
|
||||
* got initialized in iommu_init_device
|
||||
*/
|
||||
dev_data = get_dev_data(dev);
|
||||
|
||||
if (iommu_pass_through || dev_data->iommu_v2) {
|
||||
dev_data->passthrough = true;
|
||||
attach_device(dev, pt_domain);
|
||||
break;
|
||||
}
|
||||
|
||||
domain = domain_for_device(dev);
|
||||
|
||||
/* allocate a protection domain if a device is added */
|
||||
|
|
@ -2271,10 +2283,7 @@ static int device_change_notifier(struct notifier_block *nb,
|
|||
|
||||
dev_data = get_dev_data(dev);
|
||||
|
||||
if (!dev_data->passthrough)
|
||||
dev->archdata.dma_ops = &amd_iommu_dma_ops;
|
||||
else
|
||||
dev->archdata.dma_ops = &nommu_dma_ops;
|
||||
dev->archdata.dma_ops = &amd_iommu_dma_ops;
|
||||
|
||||
break;
|
||||
case BUS_NOTIFY_DEL_DEVICE:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user