Gigabyte motherboards, Linux and IOMMU
Posted by Howard Richardson (comments: 3)
This is the story of my spending two whole afternoons trying to fix a software problem which never really existed.
After some Windows issues on PC, I reset my BIOS settings to "Optimised Defaults" and had to reinstall my Linux partition again (Opensuse Leap 42). Booting into my fresh Linux system I then found USB and onboard ethernet were both not working, churning out to the console hundreds of nonsense errors like "device descriptor read/64, error -32" and "device not accepting address".
After trying every possible combination of usbcore module options, plugging things in and out and into different ports and playing with all the USB options mentioned in the BIOS, I stumbled across the answer totally by chance the next day... Gigabyte motherboards have a mysterious BIOS option called IOMMU, which is disabled by default. Without it switched on Windows will work fine with USB and ethernet, but Linux will churn out all those strange errors and refuse to even give you a mouse pointer or network connection with which to fix things. One simple BIOS setting changed and everything magically starts working again.
God only knows what IOMMU actually is, but I'm putting this down in writing here so I remember in future to make sure it's on. Hope maybe this helps some others solve this problem too. It seems to just exist on Gigabyte boards.