Re: GFP_DMA flag in xhci_segment_alloc

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

 



Hi,

On 05/05/2017 10:39 AM, Mathias Nyman wrote:
> Hi
> 
> On 04.05.2017 22:13, Matthias Lange wrote:
>> Hi,
>>
>> I am wondering what the reason for the GFP_DMA flag in
>> xhci_segment_alloc() (drivers/usb/host/xhci-mem.c:59) is.
>>
>> It is causing me problems in a virtualization setup with enabled IOMMU
>> (x86_64). The result is that USB is not working in the VM.
>>
>> Could someone please shed some light on this?
>>
> 
> You refer to this line, right:
> seg->bounce_buf = kzalloc(max_packet, flags | GFP_DMA);

Yes.

> GFP_DMA was set as to make sure seg->bounce_buf is within
> the dma_mask as it is used as the *cpu_addr in dma_map_single() later.
> 
> But looks like this is complete overkill and it will make sure it is
> within the first 16MB ISA DMA addresses instead.

Exactly that came to my mind. Thanks for pointing it out.

> DMA-API.txt states for dma_map_single that:
> 
> "To ensure that the memory allocated by kmalloc is within the dma_mask,
> the driver may specify various platform-dependent flags to restrict
> the DMA address range of the allocation (e.g., on x86, GFP_DMA
> guarantees to be within the first 16MB of available DMA addresses,
> as required by ISA devices)."
> 
> So I don't think there is any reason it couldn't be just GFP_KERNEL instead

I will send a patch.

Best,
Matthias.
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux