[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH for-4.10] passthrough/vtd: Don't DMA to the stack in queue_invalidate_wait()
>>> On 19.10.17 at 14:54, <andrew.cooper3@xxxxxxxxxx> wrote: > On 19/10/17 13:11, Jan Beulich wrote: >>>>> On 19.10.17 at 13:26, <andrew.cooper3@xxxxxxxxxx> wrote: >>> --- a/xen/drivers/passthrough/vtd/qinval.c >>> +++ b/xen/drivers/passthrough/vtd/qinval.c >>> @@ -147,7 +147,8 @@ static int __must_check queue_invalidate_wait(struct >>> iommu *iommu, >>> u8 iflag, u8 sw, u8 fn, >>> bool_t flush_dev_iotlb) >>> { >>> - volatile u32 poll_slot = QINVAL_STAT_INIT; >> You've lost the initializer. > > Deliberately so. I don't understand: By never writing QINVAL_STAT_INIT, how can multiple waits work? Afaict you'll find the variable set to QINVAL_STAT_DONE the 2nd time you come here, and hence you won't wait at all. >>> + static DEFINE_PER_CPU(u32, poll_slot); >> volatile u32 > > You've clipped out the bit declaring the pointer as volatile, which > suffices to retain the previous properties. Still the variable itself would better also be declared volatile. >> Or alternatively isn't it high time for the >> interrupt approach to be made work (perhaps not by you, but rather >> by Intel folks)? > > I'm not going to pretend that the current implementation is great, but I > really don't have time to address the other remaining swamps here. Right, hence my hint at this really being something the maintainer(s) should look after. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |