Message ID | 20220606113636.588955-1-mathias.nyman@linux.intel.com (mailing list archive) |
---|---|
State | Accepted |
Commit | c42e65664390be7c1ef3838cd84956d3a2739d60 |
Headers | show |
Series | Input: bcm5974 - Set missing URB_NO_TRANSFER_DMA_MAP urb flag | expand |
On 06.06.22 13:36, Mathias Nyman wrote: > The bcm5974 driver does the allocation and dma mapping of the usb urb > data buffer, but driver does not set the URB_NO_TRANSFER_DMA_MAP flag > to let usb core know the buffer is already mapped. > > usb core tries to map the already mapped buffer, causing a warning: > "xhci_hcd 0000:00:14.0: rejecting DMA map of vmalloc memory" > > Fix this by setting the URB_NO_TRANSFER_DMA_MAP, letting usb core > know buffer is already mapped by bcm5974 driver BTW @reviewers & @maintainers: this is fixing a regression, hence please prioritize this. For details see "Prioritize work on fixing regressions" in Documentation/process/handling-regressions.rst or docs.kernel.org/process/handling-regressions.html . > Cc: stable@vger.kernel.org > Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com> If you need to respin this for one reason or another, could you please add proper 'Link:' tags pointing to all reports about this issue? e.g. like this: Link: https://bugzilla.kernel.org/show_bug.cgi?id=215890 These tags are important, as they allow others to look into the backstory now and years from now. That is why they should be placed in cases like this, as Documentation/process/submitting-patches.rst and Documentation/process/5.Posting.rst explain in more detail. Additionally, my regression tracking bot ‘regzbot’ relies on these tags to automatically connect reports with patches that are posted or committed to fix the reported issue. > [...] Ciao, Thorsten
diff --git a/drivers/input/mouse/bcm5974.c b/drivers/input/mouse/bcm5974.c index 59a14505b9cd..ca150618d32f 100644 --- a/drivers/input/mouse/bcm5974.c +++ b/drivers/input/mouse/bcm5974.c @@ -942,17 +942,22 @@ static int bcm5974_probe(struct usb_interface *iface, if (!dev->tp_data) goto err_free_bt_buffer; - if (dev->bt_urb) + if (dev->bt_urb) { usb_fill_int_urb(dev->bt_urb, udev, usb_rcvintpipe(udev, cfg->bt_ep), dev->bt_data, dev->cfg.bt_datalen, bcm5974_irq_button, dev, 1); + dev->bt_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; + } + usb_fill_int_urb(dev->tp_urb, udev, usb_rcvintpipe(udev, cfg->tp_ep), dev->tp_data, dev->cfg.tp_datalen, bcm5974_irq_trackpad, dev, 1); + dev->tp_urb->transfer_flags |= URB_NO_TRANSFER_DMA_MAP; + /* create bcm5974 device */ usb_make_path(udev, dev->phys, sizeof(dev->phys)); strlcat(dev->phys, "/input0", sizeof(dev->phys));
The bcm5974 driver does the allocation and dma mapping of the usb urb data buffer, but driver does not set the URB_NO_TRANSFER_DMA_MAP flag to let usb core know the buffer is already mapped. usb core tries to map the already mapped buffer, causing a warning: "xhci_hcd 0000:00:14.0: rejecting DMA map of vmalloc memory" Fix this by setting the URB_NO_TRANSFER_DMA_MAP, letting usb core know buffer is already mapped by bcm5974 driver Cc: stable@vger.kernel.org Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com> --- drivers/input/mouse/bcm5974.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)