> Date: Sat, 3 Sep 2022 09:31:39 +0200 > From: Marcus Glocker <mar...@nazgul.ch> > > On Tue, Aug 30, 2022 at 07:17:19AM +0200, Marcus Glocker wrote: > > > Periodic transfers on dwctwo(4) work very unreliable today. If I want > > to use my RPI3B+ as a workstation, the keyboard is working so > > unreliable, I can't hardly log-in to X. Playing USB audio isn't fun > > either. > > > > After circulating this diff internally for a while, and merging back the > > received feedback, I'm sending it out here. This is version seven of > > the diff. It includes another change, which is to run dwctwo(4) on > > IPL_VM instead of IPL_USB, like NetBSD does it already, and as briefly > > discussed with kettenis@. It enhances the reliability of the periodic > > transfers further by prioritizing them against IPL_BIO interrupts, as > > i.e. coming from bcmsdhost(4). > > > > The other majority of the diff contains the merging with the > > Linux driver, which did a large rework on the periodic scheduling > > to overcome similar issues we are seeing currently. Also being > > in sync with the Linux driver will make future adaption of improvements > > much more easy. Today we are so much out of sync, we can hardly adapt > > patches from there. > > > > With this diff following tasks can run in parallel on my RPI3B+: > > > > * Reliable keyboard. > > * USB audio streaming. > > * USB video streaming. > > * Disk operations. > > > > Still on high system interrupts, audio will crackle a bit, and the > > keyboard will sometimes miss or repeat keystrokes. I have some ideas > > on how to further improve that once the diff should make it in, like > > scheduling continuous transfers for isoc and interrupt pipes. See my > > recent diff about 'Continuous USB transfers'. > > > > I have tested it for quite a while on arm64 and regression tested on > > octeon. As a summary; It's still not perfect, but it's better than > > before, and I think it's the way forward to get still better :-) > > > > Further testing, comments, and OKs welcome. > > In the meantime I also have tested the uaudio(4) recording on the > RPI3B+; While with a snapshot kernel there is consistent noise in > the recording, the recording with the synced driver is clear.
go for it