Bug 215740 - kernel warning: DMA-API: xhci_hcd: cacheline tracking EEXIST, overlapping mappings aren't supported
Summary: kernel warning: DMA-API: xhci_hcd: cacheline tracking EEXIST, overlapping map...
Status: NEW
Alias: None
Product: Drivers
Classification: Unclassified
Component: USB (show other bugs)
Hardware: All Linux
: P1 normal
Assignee: Default virtual assignee for Drivers/USB
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-03-24 15:18 UTC by Andrew
Modified: 2022-05-04 10:17 UTC (History)
4 users (show)

See Also:
Kernel Version: 5.17
Subsystem:
Regression: No
Bisected commit-id:


Attachments
full dmesg log with the warning (167.77 KB, text/plain)
2022-03-24 15:18 UTC, Andrew
Details

Description Andrew 2022-03-24 15:18:12 UTC
Created attachment 300612 [details]
full dmesg log with the warning

I have this kernel trace often while PC booting:

    DMA-API: xhci_hcd 0000:09:00.3: cacheline tracking EEXIST, overlapping mappings aren't supported
    WARNING: CPU: 4 PID: 69 at kernel/dma/debug.c:570 add_dma_entry+0x1c7/0x250
    Modules linked in: bpf_preload
    CPU: 4 PID: 69 Comm: kworker/4:1 Not tainted 5.17.0 #1
    Hardware name: ASUS System Product Name/TUF GAMING B550M-PLUS, BIOS 2423 08/10/2021
    Workqueue: usb_hub_wq hub_event
    RIP: 0010:add_dma_entry+0x1c7/0x250
    Code: ff 0f 84 97 00 00 00 48 8b 5f 50 48 85 db 75 03 48 8b 1f e8 4b 53 80 00 48 89 c6 48 89 da 48 c7 c7 58 b3 84 94 e8 27 21 ca 00 <0f> 0b 48 85 ed 0f 85 69 d2 ca 00 8b 05 88 a0 30 02 85 c0 0f 85 f4
    RSP: 0018:ffff9cadc0c9ba88 EFLAGS: 00010292
    RAX: 0000000000000060 RBX: ffff9173d2c49ea0 RCX: 0000000000000000
    RDX: 0000000000000001 RSI: 00000000ffffdfff RDI: 00000000ffffffff
    RBP: ffff9173d11a5e80 R08: 0000000000000000 R09: ffff9cadc0c9b8c0
    R10: ffff9cadc0c9b8b8 R11: ffffffff95165128 R12: 0000000000000000
    R13: 0000000000000001 R14: 0000000000000206 R15: 00000000046882ee
    FS:  0000000000000000(0000) GS:ffff9182a8200000(0000) knlGS:0000000000000000
    CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    CR2: 00007fce5d52a130 CR3: 0000000119b28000 CR4: 0000000000350ee0
    Call Trace:
    <TASK>
    dma_map_page_attrs+0x82/0x250
    ? _raw_spin_unlock_irqrestore+0x30/0x60
    usb_hcd_map_urb_for_dma+0x3eb/0x4f0
    usb_hcd_submit_urb+0x9b/0xb90
    ? lockdep_init_map_type+0x62/0x260
    usb_start_wait_urb+0x55/0x130
    usb_control_msg+0xc9/0x110
    hub_ext_port_status+0x89/0x110
    hub_event+0x1e4/0x1920
    ? lock_acquire+0xe0/0x2d0
    ? lock_is_held_type+0xea/0x140
    process_one_work+0x29b/0x5f0
    worker_thread+0x4f/0x390
    ? process_one_work+0x5f0/0x5f0
    kthread+0xf5/0x120
    ? kthread_complete_and_exit+0x20/0x20
    ret_from_fork+0x22/0x30
    </TASK>

My usb devices:

$ lsusb -t
    /:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 10000M
        |__ Port 4: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M
            |__ Port 4: Dev 3, If 0, Class=Hub, Driver=hub/4p, 5000M
                |__ Port 2: Dev 4, If 0, Class=Mass Storage, Driver=uas, 5000M
                |__ Port 4: Dev 5, If 0, Class=Hub, Driver=hub/4p, 5000M
                    |__ Port 4: Dev 6, If 0, Class=Hub, Driver=hub/4p, 5000M
    /:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M
        |__ Port 2: Dev 2, If 3, Class=Application Specific Interface, Driver=, 12M
        |__ Port 2: Dev 2, If 1, Class=Vendor Specific Class, Driver=btusb, 12M
        |__ Port 2: Dev 2, If 2, Class=Vendor Specific Class, Driver=btusb, 12M
        |__ Port 2: Dev 2, If 0, Class=Vendor Specific Class, Driver=btusb, 12M
        |__ Port 4: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M
            |__ Port 1: Dev 12, If 0, Class=Communications, Driver=cdc_ether, 480M
            |__ Port 1: Dev 12, If 1, Class=CDC Data, Driver=cdc_ether, 480M
            |__ Port 4: Dev 4, If 0, Class=Hub, Driver=hub/4p, 480M
                |__ Port 4: Dev 5, If 0, Class=Hub, Driver=hub/4p, 480M
                    |__ Port 3: Dev 6, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M
                    |__ Port 3: Dev 6, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M
                    |__ Port 4: Dev 7, If 0, Class=Hub, Driver=hub/4p, 480M
                        |__ Port 2: Dev 8, If 0, Class=Human Interface Device, Driver=usbfs, 1.5M
                        |__ Port 3: Dev 9, If 0, Class=Vendor Specific Class, Driver=, 480M
                        |__ Port 4: Dev 10, If 0, Class=Imaging, Driver=, 480M
    /:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 10000M
    /:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/10p, 480M
        |__ Port 6: Dev 2, If 2, Class=Human Interface Device, Driver=usbhid, 12M
        |__ Port 6: Dev 2, If 0, Class=Vendor Specific Class, Driver=, 12M
        |__ Port 7: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M

$ lsusb
    Bus 004 Device 006: ID 2109:0812 VIA Labs, Inc. VL812 Hub
    Bus 004 Device 005: ID 2109:0812 VIA Labs, Inc. VL812 Hub
    Bus 004 Device 004: ID 0578:0578 Intrinsix Corp. KingSpec
    Bus 004 Device 003: ID 2109:0812 VIA Labs, Inc. VL812 Hub
    Bus 004 Device 002: ID 2109:0812 VIA Labs, Inc. VL812 Hub
    Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
    Bus 003 Device 010: ID 1004:633e LG Electronics, Inc. LM-X420xxx/G2/G3 Android Phone (MTP/download mode)
    Bus 003 Device 009: ID 0bda:8812 Realtek Semiconductor Corp. RTL8812AU 802.11a/b/g/n/ac 2T2R DB WLAN Adapter
    Bus 003 Device 008: ID 0463:ffff MGE UPS Systems UPS
    Bus 003 Device 007: ID 2109:2812 VIA Labs, Inc. VL812 Hub
    Bus 003 Device 006: ID 046d:c30e Logitech, Inc. UltraX Keyboard (Y-BL49)
    Bus 003 Device 005: ID 2109:2812 VIA Labs, Inc. VL812 Hub
    Bus 003 Device 004: ID 2109:2812 VIA Labs, Inc. VL812 Hub
    Bus 003 Device 012: ID 0525:a4a2 Netchip Technology, Inc. Linux-USB Ethernet/RNDIS Gadget
    Bus 003 Device 003: ID 2109:2812 VIA Labs, Inc. VL812 Hub
    Bus 003 Device 002: ID 0b05:17cb ASUSTek Computer, Inc. Broadcom BCM20702A0 Bluetooth
    Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
    Bus 001 Device 003: ID 05e3:0610 Genesys Logic, Inc. Hub
    Bus 001 Device 002: ID 0b05:1939 ASUSTek Computer, Inc. AURA LED Controller
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Kernel is built from https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
at v5.17 tag (f443e374ae131c168a065ea1748feac6b2e76613)

Also reproduces for my distro kernel: https://bugzilla.redhat.com/show_bug.cgi?id=2021242
Comment 1 The Linux kernel's regression tracker (Thorsten Leemhuis) 2022-03-31 06:52:50 UTC
Am I right in assuming this didn't happen on earlier Linux versions like 5.16?
Comment 2 The Linux kernel's regression tracker (Thorsten Leemhuis) 2022-03-31 06:54:12 UTC
(In reply to The Linux kernel's regression tracker (Thorsten Leemhuis) from comment #1)
> Am I right in assuming this didn't happen on earlier Linux versions like
> 5.16?
Forget that, should have looked in the redhat ticket before posting this, there you state that 5.13 seems to not be affected.
Comment 3 The Linux kernel's regression tracker (Thorsten Leemhuis) 2022-03-31 07:41:32 UTC
Hey Christoph, Marek, Greg!

Below warning was reported to bugzilla.kernel.org more than a week ago;
to quote the important parts here:

> https://bugzilla.kernel.org/show_bug.cgi?id=215740
>
>     DMA-API: xhci_hcd 0000:09:00.3: cacheline tracking EEXIST, overlapping
>     mappings aren't supported
>     WARNING: CPU: 4 PID: 69 at kernel/dma/debug.c:570
>     add_dma_entry+0x1c7/0x250
> [...]
>     Call Trace:
>     <TASK>
>     dma_map_page_attrs+0x82/0x250
>     ? _raw_spin_unlock_irqrestore+0x30/0x60
>     usb_hcd_map_urb_for_dma+0x3eb/0x4f0
>     usb_hcd_submit_urb+0x9b/0xb90
>     ? lockdep_init_map_type+0x62/0x260
>     usb_start_wait_urb+0x55/0x130
>     usb_control_msg+0xc9/0x110
>     hub_ext_port_status+0x89/0x110
>     hub_event+0x1e4/0x1920

See the full quote below for details.

According to a bugzilla.redhat.com ticket linked in the report this
started to happen with 5.14. A second user there also confirmed the
problem that still seems to happen with recent 5.17 pre-releases.
Searching on lore revealed that others have hit this warning as well in
the past few months:

https://lore.kernel.org/all/65271fd1-1c1c-f2ad-9b0f-60174e791eaa@linux.intel.com/
https://lore.kernel.org/all/5cd6fc87-0f8d-0b9b-42be-8180540a94e7@gmail.com/
https://lore.kernel.org/all/CABXGCsP-JJAUh-SV0u1ALu5+awxcWT3BsQ=FzKrqb+9HOk2EUA@mail.gmail.com/

Does anyone have a idea what might be wrong here? If not, I guess we
should ask one of the reporters to bisect this.

Anyway, to ensure the issue doesn't fall through the cracks unnoticed,
I'm adding it to regzbot, my Linux kernel regression tracking bot:

#regzbot ^introduced v5.13..v5.14
#regzbot title dma or usb: warning "DMA-API: xhci_hcd ... cacheline
tracking EEXIST, overlapping mappings aren't supported"
#regzbot from: Andrew  <travneff@gmail.com>
#regzbot link: https://bugzilla.kernel.org/show_bug.cgi?id=215740
#regzbot https://bugzilla.redhat.com/show_bug.cgi?id=2021242
#regzbot ignore-activity

Ciao, Thorsten (wearing his 'the Linux kernel's regression tracker' hat)

P.S.: As the Linux kernel's regression tracker I'm getting a lot of
reports on my table. I can only look briefly into most of them and lack
knowledge about most of the areas they concern. I thus unfortunately
will sometimes get things wrong or miss something important. I hope
that's not the case here; if you think it is, don't hesitate to tell me
in a public reply, it's in everyone's interest to set the public record
straight.

On 24.03.22 16:18, bugzilla-daemon@kernel.org wrote:
> https://bugzilla.kernel.org/show_bug.cgi?id=215740
> 
>             Bug ID: 215740
>            Summary: kernel warning: DMA-API: xhci_hcd: cacheline tracking
>                     EEXIST, overlapping mappings aren't supported
>            Product: Drivers
>            Version: 2.5
>     Kernel Version: 5.17
>           Hardware: All
>                 OS: Linux
>               Tree: Mainline
>             Status: NEW
>           Severity: normal
>           Priority: P1
>          Component: USB
>           Assignee: drivers_usb@kernel-bugs.kernel.org
>           Reporter: travneff@gmail.com
>         Regression: No
> 
> Created attachment 300612 [details]
>   --> https://bugzilla.kernel.org/attachment.cgi?id=300612&action=edit
> full dmesg log with the warning
> 
> I have this kernel trace often while PC booting:
> 
>     DMA-API: xhci_hcd 0000:09:00.3: cacheline tracking EEXIST, overlapping
> mappings aren't supported
>     WARNING: CPU: 4 PID: 69 at kernel/dma/debug.c:570
>     add_dma_entry+0x1c7/0x250
>     Modules linked in: bpf_preload
>     CPU: 4 PID: 69 Comm: kworker/4:1 Not tainted 5.17.0 #1
>     Hardware name: ASUS System Product Name/TUF GAMING B550M-PLUS, BIOS 2423
> 08/10/2021
>     Workqueue: usb_hub_wq hub_event
>     RIP: 0010:add_dma_entry+0x1c7/0x250
>     Code: ff 0f 84 97 00 00 00 48 8b 5f 50 48 85 db 75 03 48 8b 1f e8 4b 53
>     80
> 00 48 89 c6 48 89 da 48 c7 c7 58 b3 84 94 e8 27 21 ca 00 <0f> 0b 48 85 ed 0f
> 85
> 69 d2 ca 00 8b 05 88 a0 30 02 85 c0 0f 85 f4
>     RSP: 0018:ffff9cadc0c9ba88 EFLAGS: 00010292
>     RAX: 0000000000000060 RBX: ffff9173d2c49ea0 RCX: 0000000000000000
>     RDX: 0000000000000001 RSI: 00000000ffffdfff RDI: 00000000ffffffff
>     RBP: ffff9173d11a5e80 R08: 0000000000000000 R09: ffff9cadc0c9b8c0
>     R10: ffff9cadc0c9b8b8 R11: ffffffff95165128 R12: 0000000000000000
>     R13: 0000000000000001 R14: 0000000000000206 R15: 00000000046882ee
>     FS:  0000000000000000(0000) GS:ffff9182a8200000(0000)
> knlGS:0000000000000000
>     CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
>     CR2: 00007fce5d52a130 CR3: 0000000119b28000 CR4: 0000000000350ee0
>     Call Trace:
>     <TASK>
>     dma_map_page_attrs+0x82/0x250
>     ? _raw_spin_unlock_irqrestore+0x30/0x60
>     usb_hcd_map_urb_for_dma+0x3eb/0x4f0
>     usb_hcd_submit_urb+0x9b/0xb90
>     ? lockdep_init_map_type+0x62/0x260
>     usb_start_wait_urb+0x55/0x130
>     usb_control_msg+0xc9/0x110
>     hub_ext_port_status+0x89/0x110
>     hub_event+0x1e4/0x1920
>     ? lock_acquire+0xe0/0x2d0
>     ? lock_is_held_type+0xea/0x140
>     process_one_work+0x29b/0x5f0
>     worker_thread+0x4f/0x390
>     ? process_one_work+0x5f0/0x5f0
>     kthread+0xf5/0x120
>     ? kthread_complete_and_exit+0x20/0x20
>     ret_from_fork+0x22/0x30
>     </TASK>
> 
> My usb devices:
> 
> $ lsusb -t
>     /:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 10000M
>         |__ Port 4: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M
>             |__ Port 4: Dev 3, If 0, Class=Hub, Driver=hub/4p, 5000M
>                 |__ Port 2: Dev 4, If 0, Class=Mass Storage, Driver=uas,
>                 5000M
>                 |__ Port 4: Dev 5, If 0, Class=Hub, Driver=hub/4p, 5000M
>                     |__ Port 4: Dev 6, If 0, Class=Hub, Driver=hub/4p, 5000M
>     /:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 480M
>         |__ Port 2: Dev 2, If 3, Class=Application Specific Interface,
>         Driver=,
> 12M
>         |__ Port 2: Dev 2, If 1, Class=Vendor Specific Class, Driver=btusb,
>         12M
>         |__ Port 2: Dev 2, If 2, Class=Vendor Specific Class, Driver=btusb,
>         12M
>         |__ Port 2: Dev 2, If 0, Class=Vendor Specific Class, Driver=btusb,
>         12M
>         |__ Port 4: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M
>             |__ Port 1: Dev 12, If 0, Class=Communications, Driver=cdc_ether,
> 480M
>             |__ Port 1: Dev 12, If 1, Class=CDC Data, Driver=cdc_ether, 480M
>             |__ Port 4: Dev 4, If 0, Class=Hub, Driver=hub/4p, 480M
>                 |__ Port 4: Dev 5, If 0, Class=Hub, Driver=hub/4p, 480M
>                     |__ Port 3: Dev 6, If 1, Class=Human Interface Device,
> Driver=usbhid, 1.5M
>                     |__ Port 3: Dev 6, If 0, Class=Human Interface Device,
> Driver=usbhid, 1.5M
>                     |__ Port 4: Dev 7, If 0, Class=Hub, Driver=hub/4p, 480M
>                         |__ Port 2: Dev 8, If 0, Class=Human Interface
>                         Device,
> Driver=usbfs, 1.5M
>                         |__ Port 3: Dev 9, If 0, Class=Vendor Specific Class,
> Driver=, 480M
>                         |__ Port 4: Dev 10, If 0, Class=Imaging, Driver=,
>                         480M
>     /:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/4p, 10000M
>     /:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/10p, 480M
>         |__ Port 6: Dev 2, If 2, Class=Human Interface Device, Driver=usbhid,
> 12M
>         |__ Port 6: Dev 2, If 0, Class=Vendor Specific Class, Driver=, 12M
>         |__ Port 7: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M
> 
> $ lsusb
>     Bus 004 Device 006: ID 2109:0812 VIA Labs, Inc. VL812 Hub
>     Bus 004 Device 005: ID 2109:0812 VIA Labs, Inc. VL812 Hub
>     Bus 004 Device 004: ID 0578:0578 Intrinsix Corp. KingSpec
>     Bus 004 Device 003: ID 2109:0812 VIA Labs, Inc. VL812 Hub
>     Bus 004 Device 002: ID 2109:0812 VIA Labs, Inc. VL812 Hub
>     Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
>     Bus 003 Device 010: ID 1004:633e LG Electronics, Inc. LM-X420xxx/G2/G3
> Android Phone (MTP/download mode)
>     Bus 003 Device 009: ID 0bda:8812 Realtek Semiconductor Corp. RTL8812AU
> 802.11a/b/g/n/ac 2T2R DB WLAN Adapter
>     Bus 003 Device 008: ID 0463:ffff MGE UPS Systems UPS
>     Bus 003 Device 007: ID 2109:2812 VIA Labs, Inc. VL812 Hub
>     Bus 003 Device 006: ID 046d:c30e Logitech, Inc. UltraX Keyboard (Y-BL49)
>     Bus 003 Device 005: ID 2109:2812 VIA Labs, Inc. VL812 Hub
>     Bus 003 Device 004: ID 2109:2812 VIA Labs, Inc. VL812 Hub
>     Bus 003 Device 012: ID 0525:a4a2 Netchip Technology, Inc. Linux-USB
> Ethernet/RNDIS Gadget
>     Bus 003 Device 003: ID 2109:2812 VIA Labs, Inc. VL812 Hub
>     Bus 003 Device 002: ID 0b05:17cb ASUSTek Computer, Inc. Broadcom
>     BCM20702A0
> Bluetooth
>     Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
>     Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
>     Bus 001 Device 003: ID 05e3:0610 Genesys Logic, Inc. Hub
>     Bus 001 Device 002: ID 0b05:1939 ASUSTek Computer, Inc. AURA LED
>     Controller
>     Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
> 
> Kernel is built from
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
> at v5.17 tag (f443e374ae131c168a065ea1748feac6b2e76613)
> 
> Also reproduces for my distro kernel:
> https://bugzilla.redhat.com/show_bug.cgi?id=2021242
>
Comment 4 Mathias Nyman 2022-03-31 07:54:27 UTC
That warning was added in v5.14:
2b4bbc6231d7 dma-debug: report -EEXIST errors in add_dma_entry

Actual issue on usb side could be a lot older.
Comment 5 Christoph Hellwig 2022-04-05 05:19:25 UTC
On Thu, Mar 31, 2022 at 09:41:25AM +0200, Thorsten Leemhuis wrote:
> Hey Christoph, Marek, Greg!
> 
> Below warning was reported to bugzilla.kernel.org more than a week ago;
> to quote the important parts here:

The warning is from a new debug check added in 5.14 under a debug
config option.  So while the USB maintainers should look into fixing it
I don't think it is a regression in that traditional sense of the word.
Comment 6 Lukas Wunner 2022-05-04 08:10:05 UTC
Ferry Toth reports that the warning only occurs when connecting a LAN9514 USB Ethernet (drivers/net/usb/smsc95xx.c). Other USB devices (memory sticks, WiFi, Bluetooth) do not trigger the warning:

https://lore.kernel.org/netdev/2a436486-a54d-a9b3-d839-232a38653af3@gmail.com/

Curiously, the above-linked other reports seem to indicate that the warning occurs when connecting USB hubs. It's unclear what those have in common with the LAN9514.
Comment 7 Ferry Toth 2022-05-04 10:17:29 UTC
In my case it is EVM9514, a 4p USB hub + 10/100 ethernet:
https://www.microchip.com/en-us/development-tool/EVB9514

So, indeed it seems like to warning originates from hub code shared between at least VL812 and LAN9514.

Note You need to log in before you can comment on or make changes to this bug.