qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] usb: Fix (another) bug in usb_packet_map() for


From: Gerd Hoffmann
Subject: Re: [Qemu-devel] [PATCH] usb: Fix (another) bug in usb_packet_map() for IOMMU handling
Date: Wed, 14 Nov 2012 09:33:31 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.10) Gecko/20121026 Thunderbird/10.0.10

On 11/14/12 06:23, David Gibson wrote:
> Elements in qemu SGLists can cross IOMMU page boundaries.  So, in commit
> 39c138c8420f51a7da7b35233a8d7400a0b589ac "usb: Fix usb_packet_map() in the
> presence of IOMMUs", I changed usb_packet_map() to split up each SGList
> element on IOMMU page boundaries and each resulting piece of qemu's memory
> space separately to the iovec the usb code uses internally.
> 
> That was correct in concept, but the patch has a bug.  The 'base' variable
> correctly steps through the dma address of each piece, but then we call
> the dma_memory_map() function on the base address of the whole SGList
> element every time.
> 
> This patch fixes at least one problem using XHCI on the pseries guest
> machine.  It didn't affect OHCI because that doesn't use usb_packet_map().
> In theory it also affects EHCI, but we haven't observed that in practice.
> I think the transfers were small enough on EHCI that they never crossed an
> IOMMU page boundary in practice.

Patch added to usb patch queue.

thanks,
  Gerd



reply via email to

[Prev in Thread] Current Thread [Next in Thread]