|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v9 3/3] VT-d: Fix vt-d Device-TLB flush timeout issue
>>> On 01.04.16 at 16:47, <quan.xu@xxxxxxxxx> wrote:
> If Device-TLB flush timed out, we would hide the target ATS
Please re-consider the use of the word "would" in all your patch
descriptions.
> --- a/xen/drivers/passthrough/vtd/qinval.c
> +++ b/xen/drivers/passthrough/vtd/qinval.c
> @@ -217,6 +217,58 @@ static int invalidate_sync(struct iommu *iommu)
> return 0;
> }
>
> +static void dev_invalidate_iotlb_timeout(struct iommu *iommu, u16 did,
> + u16 seg, u8 bus, u8 devfn)
> +{
> + struct domain *d = NULL;
> + struct pci_dev *pdev;
> +
> + if ( test_bit(did, iommu->domid_bitmap) )
> + d = rcu_lock_domain_by_id(iommu->domid_map[did]);
> +
> + if ( d == NULL )
> + return;
This should be accompanied by a comment explaining why
returning here without indicating any error is okay.
> + pcidevs_lock();
> +
> + for_each_pdev(d, pdev)
> + {
> + if ( ( pdev->seg == seg ) &&
> + ( pdev->bus == bus ) &&
> + ( pdev->devfn == devfn ) )
Stray blanks.
> + {
> + ASSERT(pdev->domain);
> + list_del(&pdev->domain_list);
> + pdev->domain = NULL;
> + pci_hide_existing_device(pdev);
> + break;
> + }
> + }
> +
> + pcidevs_unlock();
> +
> + if ( !is_hardware_domain(d) )
> + domain_crash(d);
else printk();
> @@ -251,11 +303,13 @@ int qinval_device_iotlb(struct iommu *iommu,
> }
>
> int qinval_device_iotlb_sync(struct iommu *iommu,
> - u32 max_invs_pend, u16 sid, u16 size, u64 addr)
> + u32 max_invs_pend, u16 did, u16 seg, u8 bus, u8 devfn, u16 size, u64
> addr)
> {
> + u16 sid = PCI_BDF2(bus, devfn);
Pointless local variable (but being a matter of taste, the VT-d
maintainers will have the final say).
> --- a/xen/include/xen/pci.h
> +++ b/xen/include/xen/pci.h
> @@ -116,6 +116,7 @@ const unsigned long *pci_get_ro_map(u16 seg);
> int pci_add_device(u16 seg, u8 bus, u8 devfn,
> const struct pci_dev_info *, nodeid_t node);
> int pci_remove_device(u16 seg, u8 bus, u8 devfn);
> +void pci_hide_existing_device(struct pci_dev *pdev);
> int pci_ro_device(int seg, int bus, int devfn);
> int pci_hide_device(int bus, int devfn);
Please move the addition here.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |