Matthew Garrett ([personal profile] mjg59) wrote2013-08-10 12:23 am
Entry tags:

When to add a platform-specific quirk to a Linux driver

If you're tempted to add a platform-specific quirk to a Linux driver, pause and do the following:

  1. Check whether the platform works correctly with the generic Windows driver for the hardware in question. If it requires a platform-specific driver rather than the generic one, adding a quirk is probably ok.
  2. If the generic Windows driver works, check whether there's any evidence of platform-specific code in the Windows driver. This will typically be in the .inf file, but occasionally you'll want to run strings against the Windows driver and see whether any functions or strings match the platform in question. If there's evidence of special-casing in the generic Windows driver, adding a quirk is probably ok
  3. If the generic Windows driver works and doesn't appear to have any platform-specific special casing, don't add a quirk. You'll plausibly fix the machine you care about, but you won't fix any others that have the same behaviour. Even worse, if someone does eventually fix the problem properly, there's a risk that your special-casing will now break your system.

The moral to this story is: if you think adding a quirk is the right solution, you're almost certainly wrong.

Sad state of affairs

(Anonymous) 2013-08-15 10:58 am (UTC)(link)
It's a bit of a sad state of affairs when its 2013 and our primary source for "how do i figure out this thing that's going on that doesn't make any sense" is still "how does windows / the windows drivers" handle it.

Re: Sad state of affairs

(Anonymous) 2013-08-15 01:38 pm (UTC)(link)
You're certainly dead right, but when the hardware vendors are writing drivers for MS-Windows and nothing else - not even useable documentation - that's the state of affairs we end up with.