abhinandh
Proud to be Linux
A very bright guy named Ryan (aka TheAlmightyCthulhu over at the Ubuntu Forums) has disassembled the BIOS on his Foxconn motherboard and found a very peculiar behaviour. Long story short, he found several tables written for almost all Microsoft OS’es and only one badly written table for Linux. The Linux table does not correspond to the board’s ACPI implementation. Causing weird kernel errors, strange system freezing, no suspend or hibernate, and other problems. What’s interesting is that ACPI is an open industry standard, and has nothing to do with Microsoft or any other proprietary standards. So all these errors and problems should not exist.
Ryan has found a way to salvage this, down to just crashing on the next reboot after suspend. However the only way to fully rectify this is to buy a Vista CD. According to Ryan, it’s very hard to believe that this is just a simple mistake or a bug, it’s way too calculated:
Emails between ryan and foxconn
source
and now in plain english....
They detect Linux, give it a bad DSDT table, one that looks ok at a glance, but broken in subtle ways so that some of it works, but not correctly.
You call them to ask why their board won't run Linux.
They tell you to buy Vista.
Ryan has found a way to salvage this, down to just crashing on the next reboot after suspend. However the only way to fully rectify this is to buy a Vista CD. According to Ryan, it’s very hard to believe that this is just a simple mistake or a bug, it’s way too calculated:
After looking through the disassembled BIOS for the last several hours, rebooting it, and tweaking it more, I’d say this is very intentional, I’ve found redundant checks to make sure it’s really running on Windows, regardless what the OS tells it it is, and then of course fatal errors that will kernel panic FreeBSD or Linux, scattered all over the place, even in the table path for Windows 9x, NT, 2000, XP, and Vista, and had to correct them (Well, at least divert them off into a segment of RAM I hope to god I’m sure about)
No, this looks extremely calculated, it’s like they knew someone would probably go tearing it apart eventually and so tried to scatter landmines out so as to where you’d probably hit one eventually.
So if it is a mistake, or incompetence, then it’s the most meticulous, targeted, and dare I say, anal retentive incompetence I’ve seen.
Emails between ryan and foxconn
ubuntu forums threadFoxconn:
Dear Ryan:
Do you get the same beep codes if you were to remove all RAM out and then turn the system ON again?
Me:
No, because then I wouldn't be able to boot into Linux, suspend to RAM, to get the ACPI failure, have syslogd pollute my /var/log/messages file with it, or read about it in my system log.
In particular, the number of quirks that the kernel has to use, and this invalid checksum are what has me nervous.
If you need me to attach the full contents of /var/log/messages, I can do so.
Foxconn:
Dear Ryan:
This board was never certified for Linux. It is only certified for Vista. See URL below. So please test under Vista. Does this issue also occured under Vista or Winxp?
*www.foxconnchannel.com/produc...ification.aspx
Me:
Well, this is a replacement for a dead Intel board (a 945g that fully supported ACPI), Vista was never really up for consideration, and I'm not about to go buy a copy to find out.
The ACPI specs are there for a reason, and broken BIOS's like what is in this motherboard are the reason standard ACPI does not work, I've taken the liberty of filing the report in kernel.org, Red Hat, and Canonical's Ubuntu bug tracking systems, and posting the contents of my kernel error log on my blog, which is in the first several results if you Google search "Foxconn G33M" or "Foxconn G33M-s", "Foxconn Linux", etc, as well as prominently in other search formats, so hopefully this will save other people from a bad purchase, and hopefully kernel.org can work around your broken BIOS in 2.6.26, as I understand that kernel is more forgiving of poorly written BIOSes built for Windows.
I've already gotten several dozen hits on those pages, so you guys are only hurting yourselves in the long run, by using bad BIOS ROMs, as people like me are quite vocal when dealing with a bad product.
Foxconn:
Dear Ryan,
Making idle treats is not going to solve anything.
As already stated this model has not been certified under Linux nor supported.
As you are unhappy with the product- using a non-support operating system nor certified, please contact your reseller for a refund.
Me:
Yeah, well, I allege that you guys thoroughly suck.
Learn how to write a BIOS before you go selling hardware with falsified specs.
Me:
I've been debugging your AMI BIOS, and the ACPI support on it is far from within compliance with the standards, I've dumped out the debugging data into Canonical's Launchpad bug tracking system so that we may be able to support some sort of a workaround for the bad ACPI tables in your BIOS, I would hope that you will be part of the solution instead of the problem, alienating customers and telling them to go buy a copy of Windows Vista is not service, your product claims to be ACPI compliant and is not, therefore you are falsely advertising it with features it isn't capable of.
I would ask that you issue an update that doesn't make it dependent upon Windows Hardware Error Architecture, but that decision is up to you.
Please find all relevant data here:
Bug #251338 in Ubuntu: “Bad ACPI support on Foxconn G33M/G33M-S motherboards with AMI BIOS”
*bugs.launchpad.net/ubuntu/+s...ux/+bug/251338
I appreciate your consideration in this matter.
-Ryan
Foxconn:
Dear Ryan,
You are incorrect in that the motherboard is not ACPI complaint. If it were not, then it would not have received Microsoft Certification for WHQL.
Refer to:
*winqual.microsoft.com/HCL/Pro...33M-S&oid=3179
As already stated, this model has not been certified under Linux nor supported.
It has been marketed as a Microsoft Certified Motherboard for their operating systems.
Me:
I've found separate DSDT tables that the BIOS hands to Linux specifically, changing it to point to the DSDT tables Vista gets fixes all Linux issues with this board.
So while I accept that you've gotten some kind of Microsoft Certification (doesn't surprise me), that does not make your board ACPI capable, just that Windows is better at coping with glitches custom tailored to it, for this purpose.
Foxconn:
Dear Ryan,
Stop sending us these!!!
Me:
Your BIOS is actually pretty shoddy, I've taken the liberty of posting everything that's wrong with the DSDT lookup tables and how to fix some of it so the community that has already purchased your filth can make do with it, also, it's now pretty much impossible to google Foxconn and Linux in the same sentence without getting hit by the truth, that your boards aren't good enough to handle it.
Have a very nice day.
Foxconn:
Dear Ryan,
Surely this is the way to ask for us to attempt to fix something that is not supported in the first place.
Me:
Would it be so difficult? I mean really? I suppose you've never heard of building a happy customer base vs. just angering everyone that deals with your products to the point they make sure others don't make the mistake of buying them.
You know, I have several computers, and they all support any OS I want to put there, as well they should, if you can't fix the damaged BIOS you put there intentionally, can you at least put a big thing on the site that says no LInux support so people won't make the mistake of buying your stuff?
Your DSDT table looks like it was written by a first year computer science student, it is scary, I will not just shut up and go away until I feel like I've been done right, this can end up on Digg, Slashdot, filed with the FTC that you are passing bad ACPI data on to Linux specifically.
I saw you targeting Linux with an intentionally broken ACPI table, you also have one for NT and ME, a separate one for newer NT variants like 2000, XP, Vista, and 2003/2008 Server, I'm sure that if you actually wrote to Intel ACPI specs instead of whatever quirks you can get away with for 8 versions of Windows and then go to the trouble of giving a botched table to Linux (How much *is* Microsoft paying you?) it would end up working a lot better, but I have this idea you don't want it to.
source
and now in plain english....
They detect Linux, give it a bad DSDT table, one that looks ok at a glance, but broken in subtle ways so that some of it works, but not correctly.
You call them to ask why their board won't run Linux.
They tell you to buy Vista.