4 ms·
> there's no desire to either maintain a fork of their drivers or spend time hacking their driver to work on the buggy PCIe bus on the Pi That seems like the r
by rustybolt 3y ago
> there's no desire to either maintain a fork of their drivers or spend time hacking their driver to work on the buggy PCIe bus on the Pi
That seems like the right choice. Specs exist for a reason. If you don't follow them, there is no reason your device should work. To adapt the world to work around your mistakes is insanity.
- ChuckMcM 3y agoImplicit assumption that the Pi's PCIe doesn't follow the spec? There is a lot of room between "it works in our target market" and "it follows the spec". I only mention that because I have come across a number of situations where the specifications related to "downsizing" the interface when insufficient resources are detected are often ignored when the target platform is invested in providing only the maximum amount of resources. Think USB2.0 high speed devices failing to down throttle in a USB 1.1 port and still work as an example. That said, there are often latent bugs in these situations that this sort of research/experimentation can uncover. Manufacturers would do well to invest the time in understanding why it doesn't work because those reasons can often lead to problems that are hard to catch when it is working.
- manv1 3y agoFTA there seem to be at least 2 problems: "the Pi has problems with cache coherency on the PCI Express bus beyond 32-bits. And many (well, all nowadays) of the drivers expect that to function." Yeah, that's a problem. "there were issues with the BAR (Base Address Register) space allocated on the Pi's OS." From the GitHub link: # The default BAR address space available on the CM4 may be too small to allow # some devices to initialize correctly. To avoid 'failed to assign memory' These don't look like implementation quirks, they are just flat-out errors.
- simcop2387 3y agoI believe from previous articles/videos from Jeff that the BAR one is at least addressable via a custom kernel or device tree that sets up a large enough BAR space for those devices. That said I would be surprised if there's a way to easily fix the first problem in software aside from forcing constant cache flushes when dealing with MMIO registers which would be a huge undertaking and probably tank performance in ways that nobody would want since this should be handled by the controller on an as needed basis instead.
- rustybolt 3y agoI would think "buggy" implies "has bugs" as in "does not follow specifications".
- ChuckMcM 3y agoI also refers to "doesn't interpret the meaning of the specification in the same way."
- cesarb 3y agoSearch for "quirk" on the Linux kernel sources, and you'll see plenty of working around other's mistakes. One could even argue that being tolerant of shitty hardware is one of the reasons that allowed Linux to become popular; it could run on the hardware people had, instead of on the hardware people wished they had.
- joshspankit 3y agoAnd widely known as one of the reasons Windows is so ubiquitous
- ungamedplayer 3y agoIf you think windows runs on more hardware variations then Linux, you have a shortsighted view on the world.
- joshspankit 3y agoNonono. Back in the day, maybe. But more importantly it ran on far more than Mac OS/OSX.
- ungamedplayer 3y agoYou would still be wrong. No sparc for windows, no sh4. No Hitachi CPUs. Linux has more busses isa in 2023 for example. Where are you getting your data?
- joshspankit 3y agoI think we're talking about different markets and possibly different timeframes. I didn't mean to say anything against Linux nor imply that current Windows supports more hardware than current Linux. I'm saying that one of the reasons Windows is so ubiquitous (on desktops) today is that in the 80s and 90s (during the "desktop wars") Windows computers supported a much wider range of hardware. Especially more than Mac OS who was their main competitor. Users could plug in ISA cards, PCI cards, serial printers, and a bunch of other things and most of the time it would work. The majority of users chose the OS that supported the expensive hardware they already had, and the rest is history. Similarly: I agree with the statement "One could even argue that being tolerant of shitty hardware is one of the reasons that allowed Linux to become popular" and think it puts Linux in a position to continue to move forward in to the same sort of success that Windows had in the "desktop wars".