diff mbox series

Input: bcm5974 - Set missing URB_NO_TRANSFER_DMA_MAP urb flag

Message ID 20220606113636.588955-1-mathias.nyman@linux.intel.com
State Accepted
Commit c42e65664390be7c1ef3838cd84956d3a2739d60
Headers show
Series Input: bcm5974 - Set missing URB_NO_TRANSFER_DMA_MAP urb flag | expand

Commit Message

Mathias Nyman June 6, 2022, 11:36 a.m. UTC
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(-)

Comments

Linux regression tracking (Thorsten Leemhuis) June 7, 2022, 9:21 a.m. UTC | #1
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 mbox series

Patch

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));