[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v5 7/7] VT-d: Fix vt-d Device-TLB flush timeout issue.
> On February 17, 2016 10:41pm, <JBeulich@xxxxxxxx> wrote: > >>> On 05.02.16 at 11:18, <quan.xu@xxxxxxxxx> wrote: > > --- a/xen/drivers/passthrough/vtd/qinval.c > > +++ b/xen/drivers/passthrough/vtd/qinval.c > > + if ( pci_hide_device(bus, devfn) ) > > But now I'm _really_ puzzled: You acquire the exact lock that > pci_hide_device() acquires. Hence, unless I've overlooked an earlier change, I > can't see this as other than an unconditional dead lock. Did you test this > code > path at all? Sorry, I didn't test this code path. I did test the follows: 1) Create domain with ATS device. 2) Attach / Detach ATS device. I think I could add a variation of pci_hide_device(), without "spin_lock(&pcidevs_lock) / spin_unlock(&pcidevs_lock)" Or "__init". But it is sure that different lock state is possible for different call trees when to flush an ATS device. I verify it as follows: 1.print pcidevs_lock status in flush_iotlb_qi() flush_iotlb_qi() { ... + printk("__ pcidevs_lock : %d *__\n", spin_is_locked(&pcidevs_lock)); ... } 2. attach ATS device $xl pci-attach TestDom 0000:81:00.0 #The print is "(XEN) __ pcidevs_lock : 1 *__" 3. reset memory of domain $ xl mem-set TestDom 2047m #the print is "(XEN) __ pcidevs_lock : 0 *__" Quan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |