I reproduced this problem on the rpi3B+ and rpi2Bv1.1 with armhf kernel.

This problem is introduced by enabling two kernel configs for arm32
kernel, they are HIGHMEM and VMSPLIT_3G.

We need to use a single arm32 kernel to support rpi2/3/4, while rpi4 has
1G/2G/4G ram, to support 2G and 4G ram, we have to enable HIGHMEM and
VMSPLIT_3G, otherwise we can't get 2G/4G memory in the system.

The upstream kernel of https://github.com/raspberrypi/linux.git also has
this issue.


some explanation:
These two configs are specific to 32bit kernel, so we can't reproduce this 
issue on arm64 kernel.
The usb ports on rpi4 are routed to xhci host controller instead of dwc_otg 
host controller, so we can't reproduce this issue on rpi4 even with armhf 
kernel.
On rpi3A+ board, there are only 512M physical memory, there is no ram to map to 
highmemory region, so we can't reproduce this problem on rpi3A+.

I guess the problem is in the dwc_otg usb host driver, it depends on dma
to work, but dma gets a highmem buffer then it can't work normally
anymore. I will report this issue to rpi community and try a find a fix
asap.

so far, the workaround is to set total_mem=512 in the config.txt for
rpi2/3 working with 32bit kernel , then there is no memory mapped to
highmem region.

-- 
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
  RPI

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

Reply via email to