Re: [PATCH v2] Enhance dmar to support device hotplug

From: Yijing Wang
Date: Thu Dec 12 2013 - 06:48:04 EST


On 2013/12/11 1:03, Don Dutile wrote:
> On 11/21/2013 03:21 AM, Yijing Wang wrote:
>> This is the v2 patch, the v1 link: http://marc.info/?l=linux-pci&m=138364004628824&w=2
>>
>> v1->v2: keep (pci_dev *) pointer array in dmar_drhd_uni, only use pci device id
>> to update pci_dev * pointer info during device hotplug in intel iommu
>> driver notifier.
>>
>> Currently, DMAR driver save target pci devices pointers for drhd/rmrr/atsr
>> in (pci_dev *) array, but never update these info after initialization.
>> It's not safe, because pci devices maybe hot added or removed during
>> system running. They will have new pci_dev * pointer. So if there have
>> two IOMMUs or more in system, these devices will find a wrong drhd during
>> DMA mapping. And DMAR faults will occur. This patch save pci device id
>> as well as (pci_dev *) to fix this issue. Pci device id will be used to update
>> pci_dev * poninter during device hotplug in intel iommu driver notifier.
>> Other, here use list to manage target devices for IOMMU,
>> we can easily use list helper.
>>
>> Yijing Wang (1):
>> IOMMU: enhance dmar to support device hotplug
>>
>> drivers/iommu/dmar.c | 82 +++++++++++-----------
>> drivers/iommu/intel-iommu.c | 161 +++++++++++++++++++++++++++++-------------
>> include/linux/dmar.h | 24 ++++--
>> 3 files changed, 167 insertions(+), 100 deletions(-)
>>
>>
>> _______________________________________________
>> iommu mailing list
>> iommu@xxxxxxxxxxxxxxxxxxxxxxxxxx
>> https://lists.linuxfoundation.org/mailman/listinfo/iommu
>>
>
> Can this bug & fix be demonstrated by configuring & de-configuring VFs
> on an SRIOV device, since that effectively looks like a hot-add & hot-remove ?

Hi Don,
It seems can not be demonstrated by configuring & de-configuring VFs, because
if we only hotplug VFs, the device scope info saved in drhd->devices array will not
become stale. In my platform, the target device scope devices are root port, so only
we remove and rescan root port, we can trigger this problem.

Thanks!
Yijing.

>
>
>
> .
>


--
Thanks!
Yijing

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/