You didn’t have any issues until someone changed the buffer size . . . or the page size.
Btw, you have ensured that in this build stty is disabled, correct? Something in the back of my mind remembers the stty login daemon having a 32 byte limit.
Honestly, I believe DMA to be a Red Herring.
I really hate Stack Overflow given all of the bad information on it, but the answer with 6 votes on how to check the buffer sizes is where you need to start.
Build that little test snippet into a stand alone program. Run it on under both the BSP that worked and the new one with the 32 byte problem. If you get the exact same numbers back for both, DMA is not going to fix your problem. The new BSP has stty or some other daemon running on the serial port you are trying to use. It could also be the default flow control has changed and your program simply never set it because the default “just worked.”
Sorry if my calling it stty was confusing. On a lot of platforms it has had a lot of names. I guess getty is the current name here. We aren’t running Arch, but their Wiki has a pretty good write-up.
https://wiki.archlinux.org/title/getty
Actually, I skimmed through the Toradex discussion link on removing getty. It’s pretty good. Admittedly, I’m typing this answer lying awake in bed unable to get back to sleep, not fully caffeinated in my office hitting on all developer cylinders, but you need to write a stand alone program to run on both BSP verifying buffer sizes . . . then you need to kill getty.