Linux Might Need To Claim Only ACPI 2.0 Support For BIOS
jones_supa writes Some of us remember the story of why Linux kernel responds "False" when ACPI BIOS asks if the operating system is Linux. We have found yet another case where mimicking the Windows behavior instead of writing to the spec is the right choice if you just want your machine to work properly. The ACPI spec defines the _REV object as evaluating to the revision of the ACPI specification that the OS implements. Linux returns 5 for this, because Linux actually tries to implement ACPI 5.0, but Windows returns 2 (ACPI 2.0), possibly due to legacy reasons. Linux kernel expert Matthew Garrett discovered that still a fair amount of brokenness appears when 5 is returned as the revision, including a Dell machine which left the sound hardware in a misconfigured state. He is proposing a kernel patch which simply reports _REV as 2 on all x86 hardware.
MS had a large portion of the market so big players trying to launch products on a tight schedule or low budget will quickly ignore specs they don't believe will be required for the launch. In this case Windows forces a lower spec. The problem with that is you'll rarely see companies go back and address the issue until there's a fire burning under their behind.
Sounds like a bios issue not a kernel issue. If linux is trying to do it correctly screw what windows does. Maybe what could be done is a flag to send from the bootloader to fix his one off issue. ACPI=2 something like that.
2 might be the right default, but shouldn't we at least allow acpi_version= on the kernel cmdline for people who want to take advantage of the feature spread between 2 and 5?
Not everybody has broken Dell crap, right?
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
How about reporting yes to Linux and keeping the correct 5 as a response.
Then return all that dont deliver a working computer as broken.
Because whats the use of having those questions if everybody delivers the same answer ?
Just saying it like it are.
Please, please continue to run Windows. No seriously! We greatly value your self sacrifice in being a honeypot for every bit of malware out there. It makes life so much better for all the rest of us.
What, he said. And everyone should just drive a Volkswagen or Ford Pinto (or model T) and they should be all the same color because you having a choice is not a concern.
But it appears this problem, if the author of the story is correct, is not in effort making linux like windows, it's in making linux act like windows in order to avoid deliberate sabotage from the firmware. So if we wanted to make your statement a little more correct with the actual situation, it shoudl go something like this.
append fake_ACPI=2 to wherever your kernel command-line hides. At least this is easily done and more importantly, people can know it might help.
Whether Linus will accept another switch is a totally different question -- Does his famous "The kernel will not cater for broken hardware" extend to BIOS firmware?
Be calm. This is just pragmatism. These kinds of kludges have been common since forever to work around the lemmings who cling to the old convicted monopolist platform. This too shall pass.
According to MSDN, Window 8 and 8.1 support ACPI 5.0 which I guess adds support for low powered mobile computers based on the system on a chip (SoC) platform. If Linux just reports support for ACPI 2.0, will it be able to run on devices with SoC? Maybe the kernel should have some smarts and report to the bios what kind of hardware its running on and report the ACPI version accordingly.
To be fair, it's not clear that there is deliberate sabotage. The more likely reason is that the hardware was only tested under MSWind.
I think we've pushed this "anyone can grow up to be president" thing too far.
The problem is, if reporting 5 instead of 2 doesn't work, because of a defect in BIOS/Firmware, it isn't the fault of LINUX, it is a fault of defective by design hardware.
IF Dell doesn't support 5 properly, then it is defective. PERIOD. Buy the product, and return it defective to the place of purchase. Either that, or find a computer that actually works at 5, and post it on a hardware compatibility list somewhere, along with naming and shaming DELL for having defective hardware.
Agent K: A *person* is smart. People are dumb, stupid, panicky animals, and you know it.
You are replying to an insane person. You are wasting your time.
Watch this Heartland Institute video
Shouldn't systemd handle this?
who runs sound on their servers?
Who runs linux on their desktop?
Windows 10. Resistance is futile.
Your brain sounds broken. I don't even know what else to say to this post, aside from that you're off-topic, and that rants against one of the two horrendous major political parties in the United States don't do anyone any good (especially when delivered with such irrationality). Take your meds find somewhere more appropriate to rant against political ideology. Thank you, and have a nice day!
Would that come in conflict with his other mantra of "don't break user space"?
This isn't really at the driver level yet. It's at the bios level where the OS can configure the devices to some degrees. The ACPI (Advanced Configuration and Power Interface ) level dictates the revision to be used in allowing the kernel to change settings and the level of control. It's basically why you do not have to go into the bios and change settings to resolve IRQ or DMA conflicts or worse, crap open the case and flip jumpers anymore.
If the spec level is implemented properly, the bios will default to a non-conflicting configuration and all most drivers will need to do is query that configuration and use it. In some cases, such as workarounds for sound cards, the IRQ and DMA will need to be changed and the APCI level will dictate how and what can be changed. As stated by the article, in Dell machines the sound hardware is left in a misconfiguration state which would require the driver to explicitly use the APCI spec to make it useful to the user under linux.
But it's way more useful then that. The brightness of a monitor for instance is controlled via the ACPI interface so you don't have to set it in the bios. In the article, the author claims that HP machines report fewer brightness levels for the back light of the LCD screen.
However, the author thinks this is by design and intended to sabotage the linux installs. I'm thinking it may be more likely that they just do not put enough effort into the levels that are not commonly used and allow bugs to persist. Of course it could be a malicious firmware author who is upset over having to make this stuff for linux and sabotaging it. It's hard to tell at this point.
No, don't be an ass. Some of us like to be able to run Linux on whatever hardware is handy, not just the box we specifically bought for Linux. I do wonder if handling this with a compatability list in the driver would be better than a global change though...
He was also one of the two scumbags who were arguing for signed kernels ("deepthroating Microsoft", as Torvalds put it) a while ago, if I remember correctly.
And I'm lying.
I had a Toshiba laptop where none of the built-in devices like sound or network worked if you booted with ACPI on. It turned out the fix was to fool the bios into thinking it was running Windows by editing the DSDT code. The firmware on this machine actually shut off all the peripherals if it thought it was running some version of Linux.
I've always been mystified as to why Toshiba's engineers did this. And even having that capability in ACPI seems architecturally suspect. I can't see any legitimate reason for the machine's firmware to second guess what to do based on which OS is running on it.
Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
Linux already lies with his source control system. He created a command called rebase that lets you change history. Lies are the way of his kind as they are for the vast majority of Western Europeans. They're just liars. It's their way.
Burma Shave.
I now wonder if it's a good idea to add ACPI to the ARM architecture. The device tree have the advantage to be far simpler and more robust since it can't change depending on the operating system loaded.
The lunacy around here gets stronger every day.
Watch this Heartland Institute video
Yes, I have a 386 handy, and I want to run a modern version of GNOME on it!
Don't YOU be an ass. Expecting hardware to perform outside of its capability is stupid. You know it isn't going to work, so quit your bitching. Expecting a Dell that runs only at 2 properly to run at 5 is expecting too much. A Dell saying it runs at 5 properly, that doesn't, means it is defective, and you have a choice to run it at 2, or return it as defective.
It would be much easier to find a system that does run 5 correctly.
Agent K: A *person* is smart. People are dumb, stupid, panicky animals, and you know it.
From: Bill Gates
Sent: Sunday, January 24, 1999 8:41 AM
To: Jeff Westorinen; Ben Fathi
Cc: Carl Stork (Exchange); Nathan Myhrvold; Eric Rudder
Subject: ACPI extensions
"One thing I find myself wondering about is whether we shouldn't try and make the "ACPI" extensions somehow Windows specific.
It seems unfortunate if we do this work and get our partners to do the work and the results is that Linux works great without having to do the work.
Maybe there is no way to avoid this problem but it does bother me.
Maybe we could define the APIs so that they work well with NT and not the others even if they are open.
Or maybe we could patent something related to this."
-------
A possible bug in Foxconn boards BIOS affects Linux ACPI
Foxconn Does Hate Linux Support
doesn't stink!!! We know otherwise.
I got to the chocolate box before you, that's why the hard ones have teeth marks.
I propose a new rule similar to Godwin's rule about the first to mention the word "Nazi" loses the argument.
Uh, there's no such thing. Godwin's Law just says that, in any discussion that goes on long enough, someone will call another poster a Nazi.
Your supposed 'Godwin's Law' would be absurd:
'I think we should murder all the Jews'
'Hitler, you're a Naz!'
'Ha-ha! Godwin's Law! You lose!'
Wrong way round. it should default with a configuration what will work everywhere (ACPI=2) and use kernel command-line options for the relatively rare hardware that actually supports higher spec.
He has a habit of deferring to power, and a worldview seemingly composed of extreme sadism and fear-driven policy. This can be seen in e.g. the Secure Boot advocacy he engaged in on the LKML a few years ago.
(not to mention the radical-feminist personal attacks he engaged in against tytso a few years earlier still. not a guy you want calling the shots. interestingly the FSF has him on board as the token male feminist.)
Sometimes you have to make do with the hardware you have.
Now, you might be correct, if Hitler was posting on Usenet.
Since Godwin's law specifically refers to Usenet, and only to Usenet if we're going to use the narrow definition, and even though Usenet is really really old, Hitler was long dead before the UUCP feeds were even a glimmer in anybody's eye, it's sorta irrelevant.
I suppose you meant 'crack' open the case and not 'crap' it open, but from now on, 'crap' is the word that I will use to discuss opening a computer case.
Partly because it's a stupid solution. The problem is that hardware manufacturers making commodity parts do the minimum work available, essentially ignoring the standard altogether. The true de-facto standard is to do only what Windows expects and nothing more or less. Especially if you're getting parts intended for the consumer market.
This is also a PC thing. PCs are just horribly designed, mostly because they are a result of a decades long process of feature creep rather than any thoughtful design process. A collection of hacks put together to ensure the earlier hacks still work. Whenever someone actually tries to get a design and standard for some component it inevitably gets corrupted over time as it gets cloned by cheap vendors.
Never attribute to malice that which is adequately explained by stupidity. The firmware developers probably never finished the "5" case in the "level" switch, and were still fine to ship the laptop with Windows. They were not obligated to do anything else to bring this to the market in any practical way.
I've seen developers write the minimum amount of code that will "make it just work", and ignore what will make it "actually right". This is not only Linux's issue. Even Windows had to do crazy things, like Win 95 had to use Win 3.1 memory manager if Sim City was running (http://www.joelonsoftware.com/articles/APIWar.html). That is software, not hardware, but the core concept is the same. Somebody does a crappy product that works with a certain OS, and all the others have to mimic that in order to get that product working.
So you say SJWs are as bad as Hitler? I'd say... not as bad, just more annoying. But then, with further levels such as Mao or Stalin, there's plenty of space for them to grow.
The creatures outside looked from Alt-Right to Antifa; but already it was impossible to say which was which.
It's half moon here so the lunatics can go either way. Or perhaps it's just somebody from the east who have picked a newspaper in a European hotel. The alternative reality shock wave is just too much to bear.
It's the same thing as having to spoof another browser's user-agent string to get a broken site to render properly.
No he meant "crap". If you regularly opened a computer case, you'd know exactly how many times you screamed CRAP! and it's variants :D
I love the way that SJW stings you because it's accurate. Thus you try to get rid of it by equating it to Godwin's Law and thus out of bounds for discussion. That's so SJW it hurts.
There's also the delicious irony that you compared SJWs to Nazis without consciously meaning to do so. I think the term for that is "psychological projection".
Shutting down free speech with violence isn't fighting fascism. It IS fascism!
Testing what should be generic hardware under a single OS is pretty close to sabotage.
"The likes of Facebook and WhatsApp are free to those whose privacy is of zero value."
It's hard to argue that it's a bug when you find an if block that specifically tests for a value only used by Linux, and sets special restrictions that aren't there with the value reported by Windows. And this has happened before, back then it was a check for if(OS == LINUX), which was worked around by having Linux report WINDOWS as its OS string.
Remove the entire block, and Linux gets the same code that Windows uses - the code that does get tested.
Bugs don't just creep in by themselves, they are always in code that were deliberately put there, but which doesn't work exactly as intended.
I am no expert but it seems ACPI was created for power management and managing "thermal zones".
Why not simply have a standard PCI device that does this!?!?!?
There is the AHCI spec for interfacing to hard drives. The AHCI controller is a standard PCI (or PCI express) device.
Surely a similar standard could of been invented for power management / thermal management?
A PCI device is much more robust than ACPI/AML. ACPI and AML are so badly designed that LInus Torvalds rightly suggested the authors should kill themselves.
Does anyone have any good reason why a PCI device (or devices) would not be able to provide the necessary functionality that ACPI badly provides today?
Lack of testing does not produce an if block that explicitly does different when Linux is detected. That block should not have been there in the first place, someone decided to add it to the BIOS code.
Hi, I'm a UEFI BIOS/Firmware engineer that is very well plugged in to the heart of the PC industry and I can tell you that the reasons behind this are not malicious at all. I am fortunate because I am one of the engineers that write code that is broadly applicable to many different motherboard designs. Me and my colleagues have reasonable release schedules similar to other software projects of similar complexity. We have the time and the dedicated QA engineers to really polish our code, eliminate bugs, and test it under a wide variety of OS and platform configurations.
Most UEFI BIOS engineers don't do the work that I do. They take the code from my group and make motherboard specific customizations. My group does all our testing and development on reference boards. The typical BIOS engineer working for a large OEM/ODM/IBV is generally given about 2 weeks to develop and test the customizations for a new motherboard design, and is generally expected to do so without any help from his/her peers. The reason for this is most large OEMs release about 50-100 new designs every 6 months, so per board development time needs to be as minimal as possible. With so many boards to support the OEM's engineering BIOS department ends up being a bunch of individuals all working on separate boards in parallel with little cross communication.
With only 2 weeks to develop and test the BIOS, pretty much the only thing that ends up getting tested is whatever version of Windows the OEM is planning on shipping with that system. So you end up with this mixed bag of well written code from me and my colleagues combined with rushed, poorly tested motherboard specific customizations. Net result is bugs like what this kernel developer noticed happen.
There are exceptions to this rule. Anything with an Apple logo, or anything that the OEM considers to be a "flagship product" that's going to get a lot of media attention is going to get a ton of development resources thrown on it. Products like the Surface, XPS 13, Yoga 3 Pro, Thinkpad T & X series, etc.
With regard to the kernel dev's observation about _REV, he is spot on. Microsoft has done a great job making it absolutely worthless. We pretty much exclusively rely on _OSI checks for certain Windows versions. Its unfortunate but MS has pretty much forced us in to doing it this way since the ACPI requirements for Win7/8/8.1/10 are vastly different and the only way to make all of them boot on the same system without blue screens (and have connected standby work) is a ton of _OSI checks.
Whenever I have to open a computer case I dress in nothing but a large overcoat.
Then when the case is opened I yank the coat open and "flash" the BIOS !
Unicode killed the ASCII-art *
>essentially ignoring the standard altogether.
Let me regale you my favorite version of this. It must have been 12 or 13 years ago now, I was maintaining an educational linux distribution called OpenLab (we did some awesome stuff - look it up) when one of our big customers bought a large consignment of P3 machines to use as thin-client class-room servers.
The things just wouldn't work... they would start booting the live CD and halfway through the bootup just reboot again, over and over and over.
So they sent us one to figure out what was going wrong. I spent ages trying to figure out what on earth could be causing it, eventually resorting to disabling drivers one by one until it booted up to track down the issue.
It turns out it was a watchdog card driver causing the problem. Which is odd because the machines did not HAVE watchdog cards. Now having a starting point I dug further. It turns out the cheap motherboard manufacturers had added an onboard sound card, but hadn't bothered to get a unique PCI-ID for it, they just used one from an intel watchdog card assuming nobody would install one. Running windows this would not be a major issue since nobody would load the driver for one.
On Linux though the plugnplay layer picked up the device ID and loaded the watchdog card driver thinking there is one. The driver fires up, waits for the scheduled watchdog ping - and when it didn't get one (because the card wasn't really there) after 60 seconds (Back then booting up in 90seconds got us lots of praise, below one minute was unheard of) it would reboot the machine -exactly as it's supposed to.
Never underestimate the level of stupid that hardware companies can come up with. I had to build a hotpatch version of the distribution which would disable the watchdog card driver if it detected that motherboard (which by the way is not that simple to do in very early-boot init scripts that have to run before drivers start loading).
Unicode killed the ASCII-art *
So put your complaint to them, that the ACPI standard is being deliberately broken by Microsoft.
Oh, and since all Windows versions call themselves ACPI2.0 compliant, if it doesn't say that, there's no need to do the checks. REMEMBER: if the board won't work with Windows 12 when it DID work with Windows 7,8,9,10 and 11, then it will be considered an error with Win12, not your board BIOS. So only bother with the OSI tests if it claims ACPI2.0 compliance.
The economics of time valuation are dependent upon the individual doing the calculating.
No. It also adds that after Nazis have been brought up, any chance of having a reasonable discussion - as opposed to a shouting match - disappears. Which seems to fit the way the word "SJW" is usually used.
But that's not absurd. If Hitler proposes genocide, he should be denounced on the grounds that genocide is kinda bad, not because he happens to remind you of some other Hitler. The person who brought up Nazis did "lose" the argument, since he derailed the argument from whether Second Holocaust would be kosher into whether Adolf II has the fuhrer-stache or just an ordinary mustache.
Forget magic. Any technology distinguishable from divine power is insufficiently advanced.
So, Microsoft is still Microsoft. Good to know.
A successful API design takes a mixture of software design and pedagogy.
It sounds like we need FOSS (Free and Open Source Software) hardware testing tools to ensure boards, bios/uefi, drivers, etc. are built according the specifications of the standard.
Does anyone know the status of such tools? Do they exist? Do they lack features? Are they just not being used? Would a Windows version of them help? etc.
You think the board manufacturers have ANY leverage whatsoever against Microsoft? OEMs would instantly stop doing business with anybody whose board doesn't work with every version of windows. You would have to get every single motherboard company on board to pull that off and thats a two prisoners dilemma but played with dozens of people who its in their best interest to be the one not playing nice.
Companies don't really care on high end hardware either. Grab a high end workstation or server, pop in a hackintosh CD and see how fast everything dies due to improperly done ACPI stuff.
My daily workstation was a $22,000 machine from HP when it was made, back in 2008 (same price as my car >.
Running Linux, its ACPI tables are broken beyond belief, the board panics if a USB 2 drive is plugged in and doesn't respond quickly enough, killing ALL usb ports, even USB 1 ports for the keyboard/mouse, requiring unplugging it from the wall for 10 minutes to get them to come back online. Replaced the motherboard, new one has exactly the same behavior so I can only assume this nonsense was by design.
Speed-step won't function, requiring it to be disabled to keep from throttling the CPUs to 1.2 ghz all the time, several other problems that i had to work around that I can't remember. Basically, anything from Dell, HP, or the like is crap no matter how high end it is.
A lot of these problems show up in Windows 8 or 8.1 too, the thing only runs right in Vista or Windows 7, at which point it *appears* flawless.
Microsoft have to do this for the same reason Linux does, because some ACPI implementations are just broken and responding with anything other than a revision of 2 causes weird failures.
From a user's perspective, if a device doesn't work with Linux, the OS is broken, but if a device doesn't work with Windows, then the device is broken. It's not fair, but that's the reality we operate in.
Most human behaviour can be explained in terms of identity.
After reading in to the problem, I can see it's due to sloppiness on Windows' part. At some point we need to just do the right thing, and do it whether Microsoft is on board or not. The fact that Microsoft, a software company, can still influence the hardware market is mind boggling. The reason is probably high market share, which is not the most ideal situation.