** Description changed: + [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.
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to 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) To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux-raspi2/+bug/1852510/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs