Skip to content

dwc_otg: armv7l kernel: rpi2/3: the dwc_otg will report i/o errors when copying a large-size file (300M~600M) #3332

@jason77-wang

Description

@jason77-wang

Is this the right place for my bug report?
Yes

Describe the bug
build an arm32 kernel with the default config (arch/arm/configs/bcm2711_defconfig), then booting this kernel on rpi2/3 with 1G physical memory, and plug a usb stick to the usb port, copy a large size file (300M-600M) to usb stick, the usb host driver dwc_otg will print I/O errors.

Please refer to: https://bugs.launchpad.net/ubuntu/+source/linux-raspi2/+bug/1852510

To reproduce
follow the steps as above

Expected behaviour
usb stick can work correctly on rpi2/3 under armv7l kernel with HIGHMEM and VMSPLIT_3G enabled.

Actual behaviour
usb stick can't work on rpi2/3 under the armv7l kernel with HIGHMEM and VMSPLIT_3G.

System
RPI2/3 boards with 1G physical ram

Logs
[ 176.129299] sd 0:0:0:0: [sda] tag#0 FAILED Result: hostbyte=DID_ERROR driverbyte=DRIVER_OK
[ 176.129326] sd 0:0:0:0: [sda] tag#0 CDB: Write(10) 2a 00 00 2e 24 b0 00 00 f0 00
[ 176.129349] blk_update_request: I/O error, dev sda, sector 3024048 op 0x1:(WRITE) flags 0x4000 phys_seg 15 prio class 0
[ 176.883968] usb 1-1.1.2: reset high-speed USB device number 8 using dwc_otg
[ 177.079960] usb 1-1.1.2: reset high-speed USB device number 8 using dwc_otg

Additional context
I found with the arm32 kernel, if we enable the HIGHMEM and VMSPLIT_3G (like arch/arm/configs/bcm2711_defconfig) in the kernel, some memory will map to highmem region on rpi2/3 with 1G physical memory, and the dwc_otg will not work anymore when copying a large-size file to usb stick.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions