[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 14:25, Jan Beulich wrote:
>>>> 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.

Oh yes - you are quite correct.

My test box, which does end up doing frequent queued invalidations,
doesn't appear to suffer any bad side effects from this
quite-clearly-wrong code.

~Andrew

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.