Slashdot Mirror


How Good is Commercial BIOS Code?

Bitten-by-BIOSbugs asks: "My job involves porting PC BIOS code supplied by one of the Big Names to my employer's products. In my experience, this code seems to be so full of holes you could strain pasta with it. However, the vendor seems not to care when I report bugs, and rarely have fixes been made available. What is the experience of other Slashdot readers regarding the quality of commercial BIOS products?"

21 of 60 comments (clear)

  1. It's a dying concern by Anonymous Coward · · Score: 3, Insightful

    Since so few BIOS functions are actually used once the operating system gets into place, it's becoming less and less of a concern to get things perfect. Unless it causes the computer to explode, fixing a bug doesn't get them any more customers so companies don't bother.

    1. Re:It's a dying concern by tzanger · · Score: 2

      Since so few BIOS functions are actually used once the operating system gets into place, it's becoming less and less of a concern to get things perfect.

      This is mostly true, but one part which every OS needs is correct ACPI information, which many BIOSs do not have.

  2. Another great question. by walt-sjc · · Score: 5, Funny

    I'm sure at least 70% of slashdot readers have worked with commercial PC bios source. All right people, pony up with the great responses already! Here we are finally with a question perfectly appropriate for /. and nobody is responding.... What's the deal????

    :-)

  3. Too many are broken by SpaceLifeForm · · Score: 2, Insightful

    IMO, too many BIOSes are incomplete or are mis-implemented. Most seem to only implement the bare minimum needed for a given motherboard/chipset.

    --
    You are being MICROattacked, from various angles, in a SOFT manner.
  4. Alan Cox's view of (at least one) BIOS programmer by amorsen · · Score: 3, Funny

    ...wouldnt know QA if it hit them on the head with a mallet...

    --
    Finally! A year of moderation! Ready for 2019?
  5. Pasta by ealar+dlanvuli · · Score: 4, Funny

    so full of holes I could strain pasta with it

    At least it's not writen in perl. Then how could you tell it from the pasta your straining?

    --
    I live in a giant bucket.
  6. Re:I Think. by innocent_white_lamb · · Score: 2, Insightful

    You're forgetting about embedded applications using "sort-of-standard" hardware. The more you can pack in to the smaller space, the better in those situations. So if a bios provides "service X" then why should you be expected to write "service X" all over again just so you can have two copies in your romset and occupy more space.

    --
    If you're a zombie and you know it, bite your friend!
  7. Who needs commercial code? by spoonist · · Score: 3, Informative

    I dunno about commercial BIOS code, but the BIOS I use is pretty good... and I can verify it for myself if I want to. :-)

    1. Re:Who needs commercial code? by sjames · · Score: 2

      While I agree that it only supports a small percentage of all MBs out there, I think you're overstating the situation a bit.

      I use it all the time on a SiS630 based board that's actually quite good for general purpose use.

      A lot more motherboards would be supported except that it seems many hardware vendors would rather die a horrible screaming death than document their chipset outside of an NDA.

      It takes time to figure out an undocumented motherboard with a somewhat (or not) documented chipset. More developers can solve that problem.

      All things considered, LinuxBIOS has come a long way in a short time.

      I only wish I could devote a greater portion of my time to advancing the LinuxBIOS cause.

  8. Are there still BIOSs in new PCs? by Animats · · Score: 4, Interesting
    Is there still a BIOS, the "basic input-output system" that's the low-level part of DOS, in current boot ROMs? You need a boot loader and a hardware initializer, but is there any remaining need for a basic input-output system in ROM at all? No current production OS uses it. It's 16-bit x86 code. Win95/98/ME might still need it in some modes, but for machines that come with XP or NT preloaded, why bother?

    Is it time for the BIOS to go the way of the BASIC interpreter provided in the original PC ROMS?

    1. Re:Are there still BIOSs in new PCs? by amorsen · · Score: 3, Insightful
      Is it time for the BIOS to go the way of the BASIC interpreter provided in the original PC ROMS?
      The trend is in the opposite direction. Things like ACPI have made the BIOS code vastly larger and more complex. This is especially troubling for Linux, since the testing of a BIOS seems to be "Does it boot Windows?" "Most of the time" "Ship it!". Other vendors have taken to putting switches in the BIOS setup where the users pick a BIOS that is suited for the particular OS they intend to use.

      There has been long debates on the linux-kernel list of whether ACPI should be used by Linux. Using it the way it was intended means calling into BIOS code quite often. Since it seems no vendor has managed to produce an ACPI-implementation that is both reasonably bug-free and reasonably complete, there are worries stability and security. Imagine a backdoor in an ACPI BIOS... The shipping Linux kernel uses ACPI as little as possible, but it is not clear that it can be avoided forever.

      The only thing about the BIOS that might go away is the name. It isn't really basic or about I/O anymore.

      --
      Finally! A year of moderation! Ready for 2019?
  9. BIOS developers are generally bad programmers by LordNimon · · Score: 5, Informative
    I used to work as a BIOS developer for one of the major OEMs. I quit after about two years because I couldn't take it any more. The developers just were awful programmers.

    The reason why is that they've been working with assembly language for most of their careers, while everyone else was learning advanced techniques like object-oriented design and development, and working on multiple languages (C++, Java, C#, etc). There were a dozen BIOS developers in my department, and I was the only one who lnew object-oriented programming. The only one!

    Now, you might be saying, what does OO have to do with BIOS? True, you're not supposed to write OO assembly code, but you are at least supposed to understand the concept, so that you can apply them in some way. The Linux kernel is written like this - the kernel developers know OO concepts, but they use them only where necessary, and the code is still written in C.

    I firmly believe that the only reason why these people worked there was because no one could write this code. Writing BIOS is hard, and it's almost impossible to find someone who knows BIOS and modern programming techniques. I remember this one guy who consumed caffeine all day long and was completely wired. He wrote code really fast, but it was all very poorly designed, and none of it was documented. Every time a new feature was added, the guy had to hack it in somehow, because the original code was always written to just what it was supposed to do, no more.

    Another reason why they were so bad is that BIOS developers are highly resistant to change. Most of them spend all their time updating the code to support new motherboards, but they would never rewrite anything to improve its design. The majority of code was written back in the 80's, and no one wants to touch it. So this code just sits there, from one version to the next.

    What made it more pathetic was that these people were actually better than most BIOS programmers. We would have conference calls with some of these other developers (the company doesn't write the BIOS for all motherboards they sell), and we would ask them technical questions, and they couldn't answer half of them!

    The real solution is to rewrite the entire BIOS from scratch, using proper OO techniques, and writing as much code as possible in C. But today's BIOS programmers aren't qualified for that job.

    --
    And the men who hold high places must be the ones who start
    To mold a new reality... closer to the heart
    1. Re:BIOS developers are generally bad programmers by connorbd · · Score: 3, Informative

      That's a little depressing, if you think about it -- after you get past all the cruft and compromises that make the PC design, things like ACPI and ugly hacks to emulate ISA slots that don't exist eny more, you still have to rely on ancient firmware to get yourself running, and it's like using a gravel driveway as an onramp to a superhighway...

      Mobo makers might be wise to make their specs public. Even just the simple improvement of a 32-bit BIOS would be a good idea (as in start as 16 and switch to 32 first thing on a particular setting).

      /Brian

    2. Re:BIOS developers are generally bad programmers by Tet · · Score: 2
      The developers just were awful programmers. The reason why is that they've been working with assembly language for most of their careers, while everyone else was learning advanced techniques like object-oriented design and development, and working on multiple languages (C++, Java, C#, etc).

      Working with assembly all your life does not a bad programmer make. In fact, quite the opposite. Given the choice between a developer with assembly experience, and one without, I'll take the former, all other things being equal. Of course, an assembly background doesn't automatically make you a good programmer, either, but I think it certainly helps. From observation, I'd be more inclined to say that exposure to C++ and Java makes you a bad programmer, but I doubt that's really true either. I suspect it's just that they're the new sexy languages, and so they're the ones to which newbie and unskilled programmers are drawn, in the hopes of making money...

      --
      "The invisible and the non-existent look very much alike." -- Delos B. McKown
  10. Haven't seen source, BUT... by Ashurbanipal · · Score: 3, Funny

    It's not hard to figure out that BIOS programmers are pretty unprofessional. Just go get a half dozen different motherboards, boot into CMOS config, and select one of the cryptic little configuration options nobody ever messes with, say, "Chronosynclastic Infandibulum". Now, press the "help" key and read the incredibly useful help message: "This option selects Chronosynclastic Infandibulum".

    I'd fire any programmer who did that, but it's de rigeur for BIOSes.

    1. Re:Haven't seen source, BUT... by clovis · · Score: 2, Funny

      It didn't understand you because you misspelled "infundibulum"

    2. Re:Haven't seen source, BUT... by Ashurbanipal · · Score: 2, Funny
      It didn't understand you because you misspelled "infundibulum"
      No, no, that's my whole point, they spelled it wrong in the BIOS!

      They typically can't spell interociter either. Talentless hacks.

  11. Now so far out there by 0x0d0a · · Score: 2

    There's an open source group doing it.

  12. From my experience, fairly good... by Spoing · · Score: 2
    ...though it's been about 8 years and the BIOSes I debugged were for IBM PS/2. IBM rarely updated thier BIOS code and they were justified in doing so.

    That said, as a meer admin and user I take it as a rule of thumb that if a new system is acting flaky for no obvious reason, firmware upgrades are on the short list of things to check into along with RAM and video drivers.

    --
    A firewall can not protect you from yourself. Turn off what you do not need. Do not use the firewall to do your work.
  13. Re:Can you hack the BIOS your self? by Pfhreakaz0id · · Score: 2

    I've seen some custom bios'es for various mobos on some of the overclocking boards' floating around, so obviously poeople have done it. I'd poke around in the OC boards/newsgroups.

  14. OOP is not the same as OOL by fm6 · · Score: 2

    A very, very insightful post, but I have to pick one nit: equating OO programming with programming in an OO language. In point of fact, you can do OOP in assembler -- there are even assemblers that support it, though I guess they're not very popular. You probably know all this and were just speaking loosely. But it's a sin to encourage well-meaning nitwits who learn a little C++ and tell themselves they are now doing Objects. Which is, of course, the big problem with MFC!