** Changed in: linux-raspi2 (Ubuntu Eoan)
Status: In Progress => Fix Committed
--
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux-raspi2 in Ubuntu.
https://bugs.launchpad.net/bugs/1852510
Title:
IO errors when writing large amounts of data to USB storage in eoan on
RPI2/3 (armhf kernel)
Status in linux-raspi2 package in Ubuntu:
New
Status in linux-raspi2 source package in Eoan:
Fix Committed
Bug description:
[Impact]
On the RPI2/3 boards with eoan armhf kernel, if we copy large size
files to usb stick, the usb host driver dwc_otg will fail and print
lots of IO errors in the dmesg.
[Fix]
To support rpi4, we enabled the LPAE/HIGHMEM/VMSPLIT_3G in the armhf
kernel, the dwc_otg has some problem with highmem enabled. If the
urb's buffer is in the highmem region, the enqueue function will return
the -EINVALID unconditionally, as a result, it can't handle the urb
which contains the highmem buffer. But the driver itself can handle the
highmem buffer, we just need to do a little change.
[Test Case]
With the patch applied, I tested armhf and arm64 kernel on rpi2/3/4,
all worked well, no regression and the usb driver works well.
[Regression Risk]
Low, the upstream already looked at my patch and agreed with my
change, and I tested the patch on rpi2/3/4 with armhf and arm64
kernels, all worked well.
Kernel tested:
Linux ubuntu 5.3.0-1012-raspi2 #14-Ubuntu SMP Mon Nov 11 10:08:39 UTC 2019
armv7l armv7l armv7l GNU/Linux
I've only been able to reproduce this with the armhf kernel and on the
following devices:
RPI3B+
RPI3B
RPI2
At the moment, it does not appear that arm64 is affected, nor are
RPI3A+ and RPI4 (at least not the 2GB version)
Steps to reproduce:
- Insert and mount a USB storage device
- cp a large file to it (300-600MB recommended - smaller files will sometimes
not trigger it)
- sync
After running the sync, a lot of IO errors will show up in dmesg like:
[ 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
It eventually finishes, and if you unmount/remount the device, the
checksum will be different from the original file.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux-raspi2/+bug/1852510/+subscriptions
--
Mailing list: https://launchpad.net/~kernel-packages
Post to : [email protected]
Unsubscribe : https://launchpad.net/~kernel-packages
More help : https://help.launchpad.net/ListHelp