From yasteve at gmail.com Sat Dec 1 00:29:47 2007 From: yasteve at gmail.com (Steve Isaacs) Date: Fri, 30 Nov 2007 15:29:47 -0800 Subject: [LinuxBIOS] Infamous __stack_chk_fail problem. Message-ID: <1196465387.16328.21.camel@biosbreath> When attempting to use buildrom I'm seeing the " undefined reference to `__stack_chk_fail'" message. I see that this was a topic of discussion back in January but haven't found anything to say how or if this was resolved. At the risk of scratching an old itch I have to ask if this was resolved or if a solution to the problem is still needed. I'm building on Ubuntu 6.10 which installs a gcc configured for stack checking. I know about the -fno-stack-protector option when compiling and have used this as a work-around but I'm thinking that if this was/is a problem then other host distro dependent issues perhaps will or still be lurking to catch someone. Is it a viable solution to have buildrom build a cross-tool chain? Imho: This would be best in order to have repeatable results. Having config options to control the gcc and binutils versions cross-host build repeatability would be improved. Steve From jordan.crouse at amd.com Sat Dec 1 00:57:52 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Fri, 30 Nov 2007 16:57:52 -0700 Subject: [LinuxBIOS] Infamous __stack_chk_fail problem. In-Reply-To: <1196465387.16328.21.camel@biosbreath> References: <1196465387.16328.21.camel@biosbreath> Message-ID: <20071130235752.GA9493@cosmic.amd.com> On 30/11/07 15:29 -0800, Steve Isaacs wrote: > Is it a viable solution to have buildrom build a cross-tool chain? Imho: > This would be best in order to have repeatable results. Having config > options to control the gcc and binutils versions cross-host build > repeatability would be improved. This is exactly the direction I want to avoid going in. We really don't want to be in the business of building a complete development environment. Its just too much complexity for what we will gain from it. We have to reasonably expect that LinuxBIOS and the payloads will correctly compile with any give x86 development environment. The purpose of buildrom is just to make that process easier - 1 step instead of 2 or 6. Its a tool, not a requirement. If we create our own development environment, then it becomes a requirement, and instead of fixing compiler problems that we _should_ be fixing, we'll be relying more on hacking on the buildrom development environment, and we lose. Jordan -- Jordan Crouse Systems Software Development Engineer Advanced Micro Devices, Inc. From peter at stuge.se Sat Dec 1 02:53:44 2007 From: peter at stuge.se (Peter Stuge) Date: Sat, 1 Dec 2007 02:53:44 +0100 Subject: [LinuxBIOS] Qemu compile for LinuxBIOSV2 In-Reply-To: <47506A1F.8070104@sun.com> References: <47506A1F.8070104@sun.com> Message-ID: <20071201015344.8504.qmail@stuge.se> On Fri, Nov 30, 2007 at 02:53:03PM -0500, Marc Karasek wrote: > When I try to compile v2 with a filo.elf payload I get the : > > collect2: ld terminated with signal 11 [Segmentation fault] The linker plain crashes. Try vanilla upstream gcc and binutils packages. //Peter From c-d.hailfinger.devel.2006 at gmx.net Sat Dec 1 05:19:20 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Sat, 01 Dec 2007 05:19:20 +0100 Subject: [LinuxBIOS] Calling non-PIC code from PIC code Message-ID: <4750E0C8.9080709@gmx.net> Hi Segher, thanks for looking into this! As per your request on IRC, attached are the files which comprise the XIP code we are having problems with. *.85.* has the non-extern variant of initram_printktest.c and does abort with a linker error (duplicate symbols), *.86.* has the extern variant and links fine. Short list of files with explanations: build/stage0-prefixed.85.o build/stage0-prefixed.86.o Object we link against with --just-symbols. It contains the non-PIC code we want to call. build/mainboard/emulation/qemu-x86/initram_xip.85.o build/mainboard/emulation/qemu-x86/initram_xip.86.o PIC object with "ret (*func)(args) = stage0_##func;" sequence, contains main(), which calls printk() and printktest(). build/mainboard/emulation/qemu-x86/initram_printktest_xip.85.o PIC object with "ret (*func)(args) = stage0_##func;" sequence, contains printktest(), which calls printk(). build/mainboard/emulation/qemu-x86/initram_printktest_xip.86.o PIC object with "extern ret (*func)(args);" sequence, contains printktest(), which calls printk(). initram_printktest.85.i initram_printktest.85.s initram_printktest.86.i initram_printktest.86.s Preprocessed output of the above. initram.85.i initram.85.s initram.86.i initram.86.s Assembler output of the above. shortlog.85.txt shortlog.86.txt gcc/ld commands used. build/linuxbios.initram.86.o Final linked object. build/linuxbios.initram.85.o did not link. Call sequence is as follows: initram.c:main() ->printk()->stage0_printk() ->printk()->stage0_printk() ->printktest1() ->printk()->stage0_printk() ->printk()->stage0_printk() ->initram_printktest.c:printktest() ->printk()->stage0_printk() -----dies here The generated code for printktest() is what we have problems with. Regards, Carl-Daniel -------------- next part -------------- A non-text attachment was scrubbed... Name: call-nonPIC-from-PIC.tar.gz Type: application/x-gzip Size: 13744 bytes Desc: not available URL: From rminnich at gmail.com Sat Dec 1 06:32:43 2007 From: rminnich at gmail.com (ron minnich) Date: Sat, 1 Dec 2007 00:32:43 -0500 Subject: [LinuxBIOS] SPI flash In-Reply-To: <47507625.8060107@gmx.net> References: <4653B2EF.50606@verizon.net> <474B6552.2070604@gmail.com> <20071127181849.GL9347@greenwood> <200711281339.33397.a1426z@gawab.com> <474D677B.7020601@gmail.com> <20071128205534.GA11856@greenwood> <474E0450.4080208@gmail.com> <20071130124239.6553.qmail@stuge.se> <47507625.8060107@gmx.net> Message-ID: <13426df10711302132y3219294ci473bb60562f09b8d@mail.gmail.com> On Nov 30, 2007 3:44 PM, Carl-Daniel Hailfinger wrote: > With the IT8716F SPI translation feature, the best possible result is: > (freq/8/2) Byte/s > That is roughly 2 MByte/s, way too slow to try to boot from it. it's actually pretty tolerable if you're just sucking in an initrd. I've done this sort of thing. ron From c-d.hailfinger.devel.2006 at gmx.net Sat Dec 1 08:12:49 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Sat, 01 Dec 2007 08:12:49 +0100 Subject: [LinuxBIOS] [PATCH] v3: Crash with a descriptive message in case of compiler bugs In-Reply-To: <475049D4.1020705@gmx.net> References: <475049D4.1020705@gmx.net> Message-ID: <47510971.7080500@gmx.net> On 30.11.2007 18:35, Carl-Daniel Hailfinger wrote: > Ron mentioned he had strange hangs in pll_reset on various targets. This > may be due to miscompilation of XIP objects which do not have > _MAINBOBJECT defined. This issue was impossible to see on qemu because > no such object existed. Introduce initram_printktest.c in the Qemu > target, which will test for miscompilation and crash with a descriptive > error message. > > This has been build tested and runtime tested on Qemu, and with my > compiler/linker combination it indeed crashes. > gcc (GCC) 4.2.1 (SUSE Linux) > GNU ld (GNU Binutils) 2.17.50.20070726-14 (SUSE Linux) > > Trying with gcc-4.1 (GCC) 4.1.3 20070724 (prerelease) (SUSE Linux) and > the linker above had exactly the same results. > > Unless we manage to fix the bug uncovered by this patch, leaving the > Qemu target in crashing state is the best thing we can do because this > behaviour mirrors the state of all other targets. > > Signed-off-by: Carl-Daniel Hailfinger > > (don't forget "svn add mainboard/emulation/qemu-x86/initram_printktest.c" > if you commit) > Ack anyone? I have another patch which fixes the bug revealed by this patch, but I want to commit them in separate steps to make it more obvious that one patch points out the problem, and one is a possible solution. Regards, Carl-Daniel From andi.mundt at web.de Sat Dec 1 10:11:36 2007 From: andi.mundt at web.de (Andreas B. Mundt) Date: Sat, 1 Dec 2007 10:11:36 +0100 Subject: [LinuxBIOS] flashrom fails on GA-M57SLI with 1MB ROM In-Reply-To: <474B64D1.1070904@gmx.net> References: <20071121220727.GA4405@flashgordon> <200711212319.02068.harald.gutmann@gmx.net> <20071121224253.GA3489@flashgordon> <200711220102.29902.duwe@lst.de> <20071122072446.GA20729@flashgordon> <474777D4.30300@gmx.net> <20071125085413.GA3488@flashgordon> <474AB535.3030001@gmx.net> <20071126190059.GA4477@flashgordon> <474B64D1.1070904@gmx.net> Message-ID: <20071201091136.GA4277@flashgordon> Hi, building a LAB-image with buildrom (I had to do this on an other 32-bit machine) flashing now works for me, too. I tried to find out why, but so far without success. Some configuration might differ? What can go wrong switching to 1024kB? Ideas? Thanks, Andi Below my LinuxBIOSv2/targets/gigabyte/m57sli/Config.lb: $grep -Ev '^(#|$)' Config.lb target m57sli mainboard gigabyte/m57sli option ROM_SIZE=0x100000 romimage "normal" option USE_FAILOVER_IMAGE=0 option USE_FALLBACK_IMAGE=0 option ROM_IMAGE_SIZE=0x20000 option XIP_ROM_SIZE=0x40000 option LINUXBIOS_EXTRA_VERSION="$(shell cat ../../VERSION)_Normal" payload ../../../../../../filo-0.5/filo.elf option DEFAULT_CONSOLE_LOGLEVEL=8 option MAXIMUM_CONSOLE_LOGLEVEL=8 end romimage "fallback" option USE_FAILOVER_IMAGE=0 option USE_FALLBACK_IMAGE=1 option ROM_IMAGE_SIZE=0x20000 option XIP_ROM_SIZE=0x40000 option LINUXBIOS_EXTRA_VERSION="$(shell cat ../../VERSION)_Fallback" payload ../../../../../../filo-0.5/filo.elf option DEFAULT_CONSOLE_LOGLEVEL=8 option MAXIMUM_CONSOLE_LOGLEVEL=8 end romimage "failover" option USE_FAILOVER_IMAGE=1 option USE_FALLBACK_IMAGE=0 option ROM_IMAGE_SIZE=FAILOVER_SIZE option XIP_ROM_SIZE=FAILOVER_SIZE option LINUXBIOS_EXTRA_VERSION="$(shell cat ../../VERSION)_Failover" end buildrom ./linuxbios.rom ROM_SIZE "normal" "fallback" "failover" From stepan at coresystems.de Sat Dec 1 13:10:04 2007 From: stepan at coresystems.de (Stefan Reinauer) Date: Sat, 01 Dec 2007 13:10:04 +0100 Subject: [LinuxBIOS] [PATCH] v3: Crash with a descriptive message in case of compiler bugs In-Reply-To: <47510971.7080500@gmx.net> References: <475049D4.1020705@gmx.net> <47510971.7080500@gmx.net> Message-ID: <47514F1C.1070802@coresystems.de> Carl-Daniel Hailfinger wrote: > On 30.11.2007 18:35, Carl-Daniel Hailfinger wrote: > >> Ron mentioned he had strange hangs in pll_reset on various targets. This >> may be due to miscompilation of XIP objects which do not have >> _MAINBOBJECT defined. This issue was impossible to see on qemu because >> no such object existed. Introduce initram_printktest.c in the Qemu >> target, which will test for miscompilation and crash with a descriptive >> error message. >> >> This has been build tested and runtime tested on Qemu, and with my >> compiler/linker combination it indeed crashes. >> gcc (GCC) 4.2.1 (SUSE Linux) >> GNU ld (GNU Binutils) 2.17.50.20070726-14 (SUSE Linux) >> >> Trying with gcc-4.1 (GCC) 4.1.3 20070724 (prerelease) (SUSE Linux) and >> the linker above had exactly the same results. >> >> Unless we manage to fix the bug uncovered by this patch, leaving the >> Qemu target in crashing state is the best thing we can do because this >> behaviour mirrors the state of all other targets. >> >> Signed-off-by: Carl-Daniel Hailfinger >> >> (don't forget "svn add mainboard/emulation/qemu-x86/initram_printktest.c" >> if you commit) >> >> > > Ack anyone? I have another patch which fixes the bug revealed by this > patch, but I want to commit them in separate steps to make it more > obvious that one patch points out the problem, and one is a possible > solution. > > > Regards, > Carl-Daniel > > I think this is rather an experiment and should not be committed in this way. It's not a functionality of LinuxBIOS. Do we really need this? Stefan -- coresystems GmbH ? Brahmsstr. 16 ? D-79104 Freiburg i. Br. Tel.: +49 761 7668825 ? Fax: +49 761 7664613 Email: info at coresystems.de ? http://www.coresystems.de/ Registergericht: Amtsgericht Freiburg ? HRB 7656 Gesch?ftsf?hrer: Stefan Reinauer ? Ust-IdNr.: DE245674866 -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 249 bytes Desc: OpenPGP digital signature URL: From smithbone at gmail.com Sat Dec 1 14:13:37 2007 From: smithbone at gmail.com (Richard Smith) Date: Sat, 01 Dec 2007 08:13:37 -0500 Subject: [LinuxBIOS] USB booting in LinuxBIOS In-Reply-To: <20071130224629.GB6198@greenwood> References: <20071130023305.GD18468@greenwood> <20071130030011.GB10967@cosmic.amd.com> <20071130224629.GB6198@greenwood> Message-ID: <47515E01.1090302@gmail.com> Uwe Hermann wrote: > Sure, but how is the "boot from USB" functionality implemented? Forth > code? C code? Can we port it to LinuxBIOS/FILO/GRUB somehow? Its all forth. There are some forth/C hackers on the list. They could certainly look at the code and how its done. The setup is starting to mature. USB mostly just "works" now. Devices that don't work are better off just discarded rather than messing with. There are only a few troublesome keys left floating around at 1cc and I quarantine them when they get brought to me. USB is a ton of work and seemingly a bottomless pit with respect to "my xxx device won't boot" reports. -- Richard A. Smith smithbone at gmail.com From c-d.hailfinger.devel.2006 at gmx.net Sat Dec 1 14:43:28 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Sat, 01 Dec 2007 14:43:28 +0100 Subject: [LinuxBIOS] [PATCH] v3: Crash with a descriptive message in case of compiler bugs In-Reply-To: <47514F1C.1070802@coresystems.de> References: <475049D4.1020705@gmx.net> <47510971.7080500@gmx.net> <47514F1C.1070802@coresystems.de> Message-ID: <47516500.2030901@gmx.net> On 01.12.2007 13:10, Stefan Reinauer wrote: > Carl-Daniel Hailfinger wrote: > >> On 30.11.2007 18:35, Carl-Daniel Hailfinger wrote: >> >> >>> Ron mentioned he had strange hangs in pll_reset on various targets. This >>> may be due to miscompilation of XIP objects which do not have >>> _MAINBOBJECT defined. This issue was impossible to see on qemu because >>> no such object existed. Introduce initram_printktest.c in the Qemu >>> target, which will test for miscompilation and crash with a descriptive >>> error message. >>> >>> This has been build tested and runtime tested on Qemu, and with my >>> compiler/linker combination it indeed crashes. >>> gcc (GCC) 4.2.1 (SUSE Linux) >>> GNU ld (GNU Binutils) 2.17.50.20070726-14 (SUSE Linux) >>> >>> Trying with gcc-4.1 (GCC) 4.1.3 20070724 (prerelease) (SUSE Linux) and >>> the linker above had exactly the same results. >>> >>> Unless we manage to fix the bug uncovered by this patch, leaving the >>> Qemu target in crashing state is the best thing we can do because this >>> behaviour mirrors the state of all other targets. >>> >>> Signed-off-by: Carl-Daniel Hailfinger >>> >>> (don't forget "svn add mainboard/emulation/qemu-x86/initram_printktest.c" >>> if you commit) >>> >>> >>> >> Ack anyone? I have another patch which fixes the bug revealed by this >> patch, but I want to commit them in separate steps to make it more >> obvious that one patch points out the problem, and one is a possible >> solution. >> >> >> Regards, >> Carl-Daniel >> >> >> > I think this is rather an experiment and should not be committed in this > way. It's not a functionality of LinuxBIOS. Do we really need this? > If you want to boot v3 on any hardware target, yes. The reason Ron is seeing crashes in pll_reset is exactly the same reason why this patch causes a crash as well. Basically, we not only use the wrong compiler options for initram, we also use the wrong linker options for initram. Both happen to work by accident in combination, but only for the Qemu target. Once the patch is applied, Qemu behaviour mirrors hardware target behaviour. Oh, and btw, the gcc behaviour we depend on is undocumented and partially undefined and may change with the moon phase. The patch actually gives us a chance to verify later that gcc did what we wanted. And yes, i have code for that as well. But committing just the "fix" without the Qemu target modifications leaves those testing with real hardware with heavy problems once the "fix" is no enough anymore to invoke moon-phase-dependent behaviour of gcc. Regards, Carl-Daniel From rminnich at gmail.com Sat Dec 1 18:24:51 2007 From: rminnich at gmail.com (ron minnich) Date: Sat, 1 Dec 2007 12:24:51 -0500 Subject: [LinuxBIOS] [PATCH] v3: Crash with a descriptive message in case of compiler bugs In-Reply-To: <475049D4.1020705@gmx.net> References: <475049D4.1020705@gmx.net> Message-ID: <13426df10712010924j496dbcb2o5f315e272b968c01@mail.gmail.com> I am comfortable with this. If hardware is broken, qemu should be broken. I avidly wait the fix :-) Acked-by: Ronald G. Minnich From uwe at hermann-uwe.de Sat Dec 1 21:30:27 2007 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Sat, 1 Dec 2007 21:30:27 +0100 Subject: [LinuxBIOS] Booting Windows with QEMU+LinuxBIOS In-Reply-To: References: Message-ID: <20071201203027.GA10429@greenwood> On Thu, Nov 29, 2007 at 06:37:10PM +0900, Jun Koi wrote: > Hmm... I managed to do like this: > > - Compile ADLO separately, then I have a file named "payload" > - In LinuxBIOSv3, I run "make menuconfig", then specify the path of > payload option to the above "payload". > - Save options, quit and compile. > > As a result, I have build/bios.bin, and I overwrites this file onto > the original bios.bin of my QEMU. No need to overwrite. Just use the '-L build' command line option for QEMU and it will use the bios.bin in the build/ directory instead of the normal one. > Then, I run QEMU with my Linux image. It works, and I can login to my > Linux QEMU. > > Now, the problem is that I am not sure if my Linux on QEMU really uses > LinuxBIOS. How can I confirm that? "dmesg" doesnt seem to return > anything special to me. Use the '-serial stdio' command line option with QEMU, that will print a "LinuxBIOS starting..." or similar message if it's really LinuxBIOS. Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org From andi.mundt at web.de Sun Dec 2 00:34:01 2007 From: andi.mundt at web.de (Andreas B. Mundt) Date: Sun, 2 Dec 2007 00:34:01 +0100 Subject: [LinuxBIOS] flashrom fails on GA-M57SLI with 1MB ROM In-Reply-To: <20071201091136.GA4277@flashgordon> References: <200711212319.02068.harald.gutmann@gmx.net> <20071121224253.GA3489@flashgordon> <200711220102.29902.duwe@lst.de> <20071122072446.GA20729@flashgordon> <474777D4.30300@gmx.net> <20071125085413.GA3488@flashgordon> <474AB535.3030001@gmx.net> <20071126190059.GA4477@flashgordon> <474B64D1.1070904@gmx.net> <20071201091136.GA4277@flashgordon> Message-ID: <20071201233401.GA4260@flashgordon> On Sat, Dec 01, 2007 at 10:11:36AM +0100, Andreas B. Mundt wrote: > Hi, > > building a LAB-image with buildrom (I had to do this on an other > 32-bit machine) flashing now works for me, too. I tried to find out > why, but so far without success. Some configuration might differ? Hey, I found the difference in the builds: =================================================================== --- src/mainboard/gigabyte/m57sli/Config.lb (revision 2994) +++ src/mainboard/gigabyte/m57sli/Config.lb (working copy) @@ -310,7 +310,7 @@ # SIO pin set 1 input mode #irq 0xc8 = 0x0 # SIO pin set 2 mixed input/output mode - irq 0xc9 = 0x40 + irq 0xc9 = 0x0 # SIO pin set 4 input mode #irq 0xcb = 0x0 # Generate SMI# on EC IRQ This has been changed in rev 2972. Buildrom has still the 'old' version. Flashing works fine for me if irq 0xc9 = 0x0 is set. With irq 0xc9 = 0x40 it fails. Could somebody check if flashing really works for some m57sli-boards (LPC) with the latest revision (irq 0xc9 = 0x40)? Thanks, Andi From stepan at coresystems.de Sun Dec 2 01:27:08 2007 From: stepan at coresystems.de (Stefan Reinauer) Date: Sun, 02 Dec 2007 01:27:08 +0100 Subject: [LinuxBIOS] [PATCH] v3: Crash with a descriptive message in case of compiler bugs In-Reply-To: <47516500.2030901@gmx.net> References: <475049D4.1020705@gmx.net> <47510971.7080500@gmx.net> <47514F1C.1070802@coresystems.de> <47516500.2030901@gmx.net> Message-ID: <4751FBDC.2070209@coresystems.de> Carl-Daniel Hailfinger wrote: > > > If you want to boot v3 on any hardware target, yes. The reason Ron is > seeing crashes in pll_reset is exactly the same reason why this patch > causes a crash as well. Basically, we not only use the wrong compiler > options for initram, we also use the wrong linker options for initram. > Both happen to work by accident in combination, but only for the Qemu > target. Once the patch is applied, Qemu behaviour mirrors hardware > target behaviour. > Why do you say the linker and compiler options are wrong? Sounds like magic. Mind to share an explanation or a fix for the less enlighted ;-)) > Oh, and btw, the gcc behaviour we depend on is undocumented and > partially undefined and may change with the moon phase. Oh sure. But its not the moon phase, people probably sit there and have good ideas and valid reasons for their changes. As we had when choosing that set of compiler options. We just have a little communication problem here. As I mentioned since the time this was first discussed: The clean way of solving the inter-stage function calls is with a function pointer array at a fixed position in the bootblock, defining a fixed API. > The patch > actually gives us a chance to verify later that gcc did what we wanted. > How is that? In what cases do we have to do that verification? Maybe we can build that test into the build system, namely xcompile? Maybe a stripped down test that can automatically be analyzed? Then we could warn about "broken" toolchains. We will be facing problems with tool chains until we grow old and gray. These compilers are just not made for writing firmware. Nor did anyone writing them ever have firmware in mind. In fact, they tend to be wonderful for writing Linux userspace applications. Most of the time. For what we do, those tools are usually too smart. They don't just compile and link but take estimates on our intentions. We need to learn to talk our problems to the gcc community and have their input. Or we change our architecture so that such problems just don't appear. All the best, Stefan -- coresystems GmbH ? Brahmsstr. 16 ? D-79104 Freiburg i. Br. Tel.: +49 761 7668825 ? Fax: +49 761 7664613 Email: info at coresystems.de ? http://www.coresystems.de/ Registergericht: Amtsgericht Freiburg ? HRB 7656 Gesch?ftsf?hrer: Stefan Reinauer ? Ust-IdNr.: DE245674866 -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 249 bytes Desc: OpenPGP digital signature URL: From smithbone at gmail.com Sun Dec 2 01:46:14 2007 From: smithbone at gmail.com (Richard Smith) Date: Sat, 01 Dec 2007 19:46:14 -0500 Subject: [LinuxBIOS] different versions of the GA-M57SLI-S4 (PLCC vs SPI) In-Reply-To: <1190646761.46f7d3e9e66c3@imp.free.fr> References: <46D6AB93.9080607@stockwith.co.uk> <20070830120920.GB10696@localdomain> <20070901175718.1761.qmail@stuge.se> <46D9BDEE.9010402@gmx.net> <20070901195035.21050.qmail@stuge.se> <46D9C7E1.7080801@gmx.net> <20070901210818.1799.qmail@stuge.se> <20070902141108.GA9106@localdomain> <20070902173522.27942.qmail@stuge.se> <1188776607.46db4a9fdab03@imp.free.fr> <20070903004317.2682.qmail@stuge.se> <1188810299.46dbce3b1a227@imp.free.fr> <46F660FF.9040808@gmx.net> <1190582170.46f6d79acb2a2@imp.free.fr> <46F7C74C.9010102@gmx.net> <1190646761.46f7d3e9e66c3@imp.free.fr> Message-ID: <47520056.7060508@gmail.com> echelon at free.fr wrote: > Carl-Daniel, I didn't say our datasheetd differ.. What I have said is that I > did physical measurements on my motherboard and what I have measured didn't > match at all the pin-out into the datasheet!! (see my previous posts..) > Maybe this is only a minor hardware issue and it doesn't impact the software at > all, but I prefered to signal it as an odd thing!.. > Maybe someone with a v2.0 revision of m57sli could confirm my statements.. > Wow. I'm glad I found this thread. It helped me keep my sanity. My M57SLI-S4 V2.0 board(s) arrived Friday and I spent most of today studying the laout of the I want to install LinuxBIOS on. I was hoping to figure out how to enable the 2nd SPI chip that they have pads for. I've verified what Florentin sees is true. The physical pinout of the IT8716F on the board does NOT match the public datasheet. I've also made a discovery. The die inside the part is rotated. So the relative pinout _is_ the same only shifted. Take the pinout of the datasheet and do a +31 on the pin numbers wrapping at pins that are > 128. So Pin 1 of the datasheet is actually pin 32 on the board. Then it all lines up nicely. The key was the floppy signals. I noticed that the relative order matched the datasheet but only in the wrong location. So then I started checking pins next to the floppy signals and it all began to make sense. But I still don't yet know how to make the 2nd SPI part go using the signals routed on the board. CS# from the IT8716F is routed up to R509 which is a zero ohm resistor. If this resistor is in place then CS is hardwired to CS# on U5 which is the SPI chip that's loaded. If you pull R509 then the CS# to both chips are free to be selected by (unloaded) Q2,Q43,Q4, and Q5 + resistors but I don't have the configuration mapped out. It does not look like there is any easy way to re-enable switching between the SPI chips since you have to load several missing parts. I'll probably just end up soldering on a 2nd chip and then wiring the CS# pins up to a switch like the other mods did. -- Richard A. Smith smithbone at gmail.com From peter at stuge.se Sun Dec 2 05:48:23 2007 From: peter at stuge.se (Peter Stuge) Date: Sun, 2 Dec 2007 05:48:23 +0100 Subject: [LinuxBIOS] different versions of the GA-M57SLI-S4 (PLCC vs SPI) In-Reply-To: <47520056.7060508@gmail.com> References: <20070902141108.GA9106@localdomain> <20070902173522.27942.qmail@stuge.se> <1188776607.46db4a9fdab03@imp.free.fr> <20070903004317.2682.qmail@stuge.se> <1188810299.46dbce3b1a227@imp.free.fr> <46F660FF.9040808@gmx.net> <1190582170.46f6d79acb2a2@imp.free.fr> <46F7C74C.9010102@gmx.net> <1190646761.46f7d3e9e66c3@imp.free.fr> <47520056.7060508@gmail.com> Message-ID: <20071202044824.3246.qmail@stuge.se> On Sat, Dec 01, 2007 at 07:46:14PM -0500, Richard Smith wrote: > CS# from the IT8716F is routed up to R509 which is a zero ohm > resistor. > If this resistor is in place then CS is hardwired to CS# on U5 > which is the SPI chip that's loaded. If you pull R509 then the CS# > to both chips are free to be selected by (unloaded) Q2,Q43,Q4, and > Q5 + resistors but I don't have the configuration mapped out. They would be part of Gigabyte's patented hardware BIOS failover technology I suppose. Q4-3 and Q5-3 are both connected to the superio side of R509, so the emitter if using PNP transistors. Traces from Q4-1 and Q5-1 both run toward the flash chips so they would be the collector. Q4-2 and Q5-2 the base, with R91 before Q4 and R90 before Q5. The other side of R91 goes to R389 which then goes to Q43-2. The other side of R90 goes to R86 which then goes to Q2-2. There are some vias on the traces between R{90,91} and Q{4,5} so they are connected to something else as well. (But what?) There are also vias on traces between R{86,389} and Q{2,43}. Q43 and Q4 are driven at the same time, through R389 and R91 respectively. I wonder what the purpose of Q43 and Q2 is. The pinout does indeed match e.g. a BC847 PNP transistor in SOT23 package. R89 is between Q4-1 (U5-CS#?) and a power net, so would be the pull-up for when Q4 is not driven to select U5. There is certainly a corresponding resistor for Q5-1 but there's only a via from the Q5-1 trace so it would have to be tested. My guess is R130 (directly south of R129) since it's other end goes to U9-CS#. > It does not look like there is any easy way to re-enable switching > between the SPI chips since you have to load several missing parts. The switch mod can be simplified to use existing pads and no pins have to be lifted from the flash chips anymore. 1. Remove R509. 2. Populate R89 and R130 with 10k or 100k pull-up 0402 resistors. 3. Solder the switch common to Q4-3 and switch between Q4-1 and Q5-1. Of course this assumes that soldering 0402 resistors is considered simple, which isn't likely true unless you're good at SMT soldering. > I'll probably just end up soldering on a 2nd chip and then wiring > the CS# pins up to a switch like the other mods did. Of course there could be some timer thingy to do failover, but I think manual control is best. I think the spring-loaded switch is as useful as any mechanism in this case. //Peter From echelon at free.fr Sun Dec 2 16:08:12 2007 From: echelon at free.fr (echelon at free.fr) Date: Sun, 02 Dec 2007 16:08:12 +0100 Subject: [LinuxBIOS] different versions of the GA-M57SLI-S4 (PLCC vs SPI) In-Reply-To: <47520056.7060508@gmail.com> References: <46D6AB93.9080607@stockwith.co.uk> <20070830120920.GB10696@localdomain> <20070901175718.1761.qmail@stuge.se> <46D9BDEE.9010402@gmx.net> <20070901195035.21050.qmail@stuge.se> <46D9C7E1.7080801@gmx.net> <20070901210818.1799.qmail@stuge.se> <20070902141108.GA9106@localdomain> <20070902173522.27942.qmail@stuge.se> <1188776607.46db4a9fdab03@imp.free.fr> <20070903004317.2682.qmail@stuge.se> <1188810299.46dbce3b1a227@imp.free.fr> <46F660FF.9040808@gmx.net> <1190582170.46f6d79acb2a2@imp.free.fr> <46F7C74C.9010102@gmx.net> <1190646761.46f7d3e9e66c3@imp.free.fr> <47520056.7060508@gmail.com> Message-ID: <1196608092.4752ca5c1cbfb@imp.free.fr> Great work Richard! In fact what you have found, confirms the theory of one of my cow-workers that sometimes MB manufacturers ask chip makers to issue "custom" revisions for some types of components used in new series of a MB. (Of course the specs of these revisions remain strictly confidential naturally.. why they do this one can simply wonder.. after all business is business so what?!..) Btw what are the issues that remain unsolved on this board? (I know, I know, I have to check the wiki..). What is the priority for this board? Florentin Quoting Richard Smith : > echelon at free.fr wrote: > > > Carl-Daniel, I didn't say our datasheetd differ.. What I have said is that > I > > did physical measurements on my motherboard and what I have measured didn't > > match at all the pin-out into the datasheet!! (see my previous posts..) > > Maybe this is only a minor hardware issue and it doesn't impact the > software at > > all, but I prefered to signal it as an odd thing!.. > > Maybe someone with a v2.0 revision of m57sli could confirm my statements.. > > > > Wow. I'm glad I found this thread. It helped me keep my sanity. > > My M57SLI-S4 V2.0 board(s) arrived Friday and I spent most of today > studying the laout of the I want to install LinuxBIOS on. I was hoping > to figure out how to enable the 2nd SPI chip that they have pads for. > > I've verified what Florentin sees is true. The physical pinout of the > IT8716F on the board does NOT match the public datasheet. I've also > made a discovery. The die inside the part is rotated. So the relative > pinout _is_ the same only shifted. > > Take the pinout of the datasheet and do a +31 on the pin numbers > wrapping at pins that are > 128. So Pin 1 of the datasheet is actually > pin 32 on the board. Then it all lines up nicely. > > The key was the floppy signals. I noticed that the relative order > matched the datasheet but only in the wrong location. So then I started > checking pins next to the floppy signals and it all began to make sense. > > But I still don't yet know how to make the 2nd SPI part go using the > signals routed on the board. > > CS# from the IT8716F is routed up to R509 which is a zero ohm resistor. > If this resistor is in place then CS is hardwired to CS# on U5 which > is the SPI chip that's loaded. If you pull R509 then the CS# to both > chips are free to be selected by (unloaded) Q2,Q43,Q4, and Q5 + > resistors but I don't have the configuration mapped out. > > It does not look like there is any easy way to re-enable switching > between the SPI chips since you have to load several missing parts. > > I'll probably just end up soldering on a 2nd chip and then wiring the > CS# pins up to a switch like the other mods did. > > -- > Richard A. Smith > smithbone at gmail.com > > From uwe at hermann-uwe.de Sun Dec 2 19:19:59 2007 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Sun, 2 Dec 2007 19:19:59 +0100 Subject: [LinuxBIOS] [PATCH] v3: Refactoring, northbridgelib.c In-Reply-To: <20071127010851.GG9347@greenwood> References: <20071127010851.GG9347@greenwood> Message-ID: <20071202181959.GA14577@greenwood> On Tue, Nov 27, 2007 at 02:08:52AM +0100, Uwe Hermann wrote: > See patch. > > Factor out common code. In v2 98% of all northbridges do exactly the > same thing (in these functions), thus refactor. It's easy to override > the common functions if a northbridge needs slightly different ones > (I think K8 will, for example). ping? Thi? is a pretty obvious refactoring which removes lots of duplicated code (now, and for many future northbridges we'll add). Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org From rminnich at gmail.com Sun Dec 2 19:58:31 2007 From: rminnich at gmail.com (ron minnich) Date: Sun, 2 Dec 2007 10:58:31 -0800 Subject: [LinuxBIOS] [PATCH] v3: Refactoring, northbridgelib.c In-Reply-To: <20071127010851.GG9347@greenwood> References: <20071127010851.GG9347@greenwood> Message-ID: <13426df10712021058o5fa0e2d5wb83820aa289e0a2b@mail.gmail.com> beautiful Acked-by: Ronald G. Minnich From svn at openbios.org Sun Dec 2 20:03:23 2007 From: svn at openbios.org (svn at openbios.org) Date: Sun, 2 Dec 2007 20:03:23 +0100 Subject: [LinuxBIOS] r2995 - trunk/util/flashrom Message-ID: Author: uwe Date: 2007-12-02 20:03:23 +0100 (Sun, 02 Dec 2007) New Revision: 2995 Modified: trunk/util/flashrom/README trunk/util/flashrom/board_enable.c Log: Add board-enable for Acorp 6A815EPD. Signed-off-by: Jonathan A. Kollasch Acked-by: Ronald G. Minnich Acked-by: Uwe Hermann Modified: trunk/util/flashrom/README =================================================================== --- trunk/util/flashrom/README 2007-11-30 02:08:26 UTC (rev 2994) +++ trunk/util/flashrom/README 2007-12-02 19:03:23 UTC (rev 2995) @@ -58,6 +58,7 @@ * GIGABYTE GA-M57SLI-S4 v2.0: use -m gigabyte:m57sli * GIGABYTE GA-M61P-S3: use -m gigabyte:m61p * MSI K8N Neo3: use -m msi:k8n-neo3 +* Acorp 6A815EPD: use -m acorp:6a815epd ROM Layout Support Modified: trunk/util/flashrom/board_enable.c =================================================================== --- trunk/util/flashrom/board_enable.c 2007-11-30 02:08:26 UTC (rev 2994) +++ trunk/util/flashrom/board_enable.c 2007-12-02 19:03:23 UTC (rev 2995) @@ -323,6 +323,32 @@ } /** + * Suited for Acorp 6A815EPD + */ +static int board_acorp_6a815epd(const char *name) +{ + struct pci_dev *dev; + uint16_t port; + uint8_t val; + + dev = pci_dev_find(0x8086, 0x2440); /* Intel ICH2 LPC */ + if (!dev) { + fprintf(stderr, "\nERROR: ICH2 LPC bridge not found.\n"); + return -1; + } + + /* Use GPIOBASE register to find where the GPIO is mapped. */ + port = (pci_read_word(dev, 0x58) & 0xFF80) + 0xE; + + val = inb(port); + val |= 0x80; /* Top Block Lock -- pin 8 of PLCC32 */ + val |= 0x40; /* Lower Blocks Lock -- pin 7 of PLCC32 */ + outb(val, port); + + return 0; +} + +/** * We use 2 sets of IDs here, you're free to choose which is which. This * is to provide a very high degree of certainty when matching a board on * the basis of subsystem/card IDs. As not every vendor handles @@ -376,6 +402,8 @@ "ibm", "x3455", "IBM x3455", board_ibm_x3455}, {0x8086, 0x7110, 0x0000, 0x0000, 0x8086, 0x7190, 0x0000, 0x0000, "epox", "ep-bx3", "EPoX EP-BX3", board_epox_ep_bx3}, + {0x8086, 0x1130, 0x0000, 0x0000, 0x105a, 0x0d30, 0x105a, 0x4d33, + "acorp", "6a815epd", "Acorp 6A815EPD", board_acorp_6a815epd}, {0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL} /* Keep this */ }; From uwe at hermann-uwe.de Sun Dec 2 20:05:09 2007 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Sun, 2 Dec 2007 20:05:09 +0100 Subject: [LinuxBIOS] [PATCH] flashrom: Acorp 6A815EPD board-enable In-Reply-To: <20071126232425.GO2629@kirkkit.kollasch.net> References: <20071126232425.GO2629@kirkkit.kollasch.net> Message-ID: <20071202190509.GB14577@greenwood> On Mon, Nov 26, 2007 at 05:24:25PM -0600, jakllsch at kollasch.net wrote: > Add board-enable for Acorp 6A815EPD. > > Signed-off-by: Jonathan A. Kollasch Thanks, committed in r2995. > + dev = pci_dev_find(0x8086, 0x2440); /* Intel ICH2 LPC */ > + if (!dev) { > + fprintf(stderr, "\nERROR: ICH2 LPC bridge not found.\n"); > + return -1; > + } > + > + /* use GPIOBASE register to find where the GPIO is mapped */ > + port = (pci_read_word(dev, 0x58) & 0xFF80) + 0xE; Maybe I have a thinko, but shouldn't this be 0xffc0 instead of 0xff80? > + > + val = inb(port); > + val |= 0x80; /* Top Block Lock -- pin 8 of PLCC32 */ > + val |= 0x40; /* Lower Blocks Lock -- pin 7 of PLCC32 */ This is board-specific I assume? Did you trace the connections going to the ROM to find the specific lines? Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org From harald.gutmann at gmx.net Sun Dec 2 21:05:23 2007 From: harald.gutmann at gmx.net (Harald Gutmann) Date: Sun, 2 Dec 2007 21:05:23 +0100 Subject: [LinuxBIOS] Gigabyte M57SLI rev2.0 - PCI-Express Message-ID: <200712022105.23963.harald.gutmann@gmx.net> Hello! As i know the PCI-Express port on that board should work with lb but i've troubles on using an nvidia-grapic card with the propritary nvidia driver and lb. i used the revison 2994 for this test with lb-v2. Or is it nessacary to use a patch to get the PCI-Express working with lb? here are some informations on my system: dmesg shows the following output according to the nvidia module: nvidia: module license 'NVIDIA' taints kernel. NVRM: loading NVIDIA UNIX x86_64 Kernel Module 100.14.19 Wed Sep 12 14:08:38 PDT 2007 NVRM: RmInitAdapter failed! (0x12:0x2b:1557) NVRM: rm_init_adapter(0) failed the xorg logfile contains the following error: (EE) NVIDIA(0): The NVIDIA kernel module does not appear to be receiving (EE) NVIDIA(0): interrupts generated by the NVIDIA graphics device (EE) NVIDIA(0): PCI:7:0:0. Please see Chapter 8: Common Problems in the (EE) NVIDIA(0): README for additional information. (EE) NVIDIA(0): Failed to initialize the NVIDIA graphics device! (EE) Screen(s) found, but none have a usable configuration. where the last two lines (beginning with NVRM) in the dmesg appear when i try to start the xserver with the nvidia grapics driver. attached is the superio output from lb, and from the propritary bios. -------------- next part -------------- superiotool r2992 Found ITE IT8716F (id=0x8716, rev=0x0) at 0x2e Register dump: idx 07 20 21 22 23 24 2b val 0a 87 16 00 11 1a 00 def NA 87 16 01 00 00 00 LDN 0x00 idx 30 60 61 70 74 f0 f1 val 00 03 f0 06 02 00 00 def 00 03 f0 06 02 00 00 LDN 0x01 idx 30 60 61 70 f0 f1 f2 f3 val 01 03 f8 04 00 50 00 7f def 00 03 f8 04 00 50 00 7f LDN 0x02 idx 30 60 61 70 f0 f1 f2 f3 val 00 02 f8 03 00 50 00 7f def 00 02 f8 03 00 50 00 7f LDN 0x03 idx 30 60 61 62 63 70 74 f0 val 00 03 78 07 78 07 04 03 def 00 03 78 07 78 07 03 03 LDN 0x04 idx 30 60 61 62 63 70 f0 f1 f2 f3 f4 f5 f6 val 01 02 90 02 30 09 80 00 0a 00 81 00 1d def 00 02 90 02 30 09 00 00 00 00 00 NA NA LDN 0x05 idx 30 60 61 62 63 70 71 f0 val 01 00 60 00 64 01 02 48 def 01 00 60 00 64 01 02 00 LDN 0x06 idx 30 70 71 f0 val 01 0c 02 00 def 00 0c 02 00 LDN 0x07 idx 25 26 27 28 29 2a 2c 60 61 62 63 64 65 70 71 72 73 74 b0 b1 b2 b3 b4 b5 b8 b9 ba bb bc bd c0 c1 c2 c3 c4 c8 c9 ca cb cc e0 e1 e2 e3 e4 f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd val 00 43 20 00 81 00 1f 00 00 08 00 08 20 00 00 00 38 00 00 00 00 00 00 00 00 00 00 00 01 00 00 43 20 00 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 00 00 32 00 def 01 00 00 40 00 00 00 00 00 00 00 00 00 00 00 20 38 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 40 00 01 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 NA 00 LDN 0x08 idx 30 60 61 70 f0 val 00 03 00 0a 00 def 00 03 00 0a 00 LDN 0x09 idx 30 60 61 val 00 02 01 def 00 02 01 LDN 0x0a idx 30 60 61 70 f0 val 00 03 10 0b 06 def 00 03 10 0b 00 -------------- next part -------------- superiotool r2992 Found ITE IT8716F (id=0x8716, rev=0x0) at 0x2e Register dump: idx 07 20 21 22 23 24 2b val 07 87 16 00 11 1a 00 def NA 87 16 01 00 00 00 LDN 0x00 idx 30 60 61 70 74 f0 f1 val 01 03 f0 06 02 00 80 def 00 03 f0 06 02 00 00 LDN 0x01 idx 30 60 61 70 f0 f1 f2 f3 val 01 03 f8 04 00 50 00 7f def 00 03 f8 04 00 50 00 7f LDN 0x02 idx 30 60 61 70 f0 f1 f2 f3 val 00 00 00 00 00 50 00 7f def 00 02 f8 03 00 50 00 7f LDN 0x03 idx 30 60 61 62 63 70 74 f0 val 01 03 78 00 00 07 04 08 def 00 03 78 07 78 07 03 03 LDN 0x04 idx 30 60 61 62 63 70 f0 f1 f2 f3 f4 f5 f6 val 01 02 90 00 00 00 80 00 0a 00 81 00 1d def 00 02 90 02 30 09 00 00 00 00 00 NA NA LDN 0x05 idx 30 60 61 62 63 70 71 f0 val 01 00 60 00 64 01 02 68 def 01 00 60 00 64 01 02 00 LDN 0x06 idx 30 70 71 f0 val 00 00 02 00 def 00 0c 02 00 LDN 0x07 idx 25 26 27 28 29 2a 2c 60 61 62 63 64 65 70 71 72 73 74 b0 b1 b2 b3 b4 b5 b8 b9 ba bb bc bd c0 c1 c2 c3 c4 c8 c9 ca cb cc e0 e1 e2 e3 e4 f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd val 00 43 20 00 81 00 1f 00 00 08 00 08 20 00 00 00 38 00 00 00 00 00 00 00 00 00 00 00 01 00 00 43 20 00 00 00 40 00 00 00 00 00 00 00 00 10 40 00 00 00 00 28 00 00 00 00 00 32 00 def 01 00 00 40 00 00 00 00 00 00 00 00 00 00 00 20 38 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 40 00 01 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 NA 00 LDN 0x08 idx 30 60 61 70 f0 val 00 03 00 0a 00 def 00 03 00 0a 00 LDN 0x09 idx 30 60 61 val 00 02 01 def 00 02 01 LDN 0x0a idx 30 60 61 70 f0 val 00 03 10 0b 06 def 00 03 10 0b 00 From jakllsch at kollasch.net Sun Dec 2 21:53:08 2007 From: jakllsch at kollasch.net (jakllsch at kollasch.net) Date: Sun, 2 Dec 2007 14:53:08 -0600 Subject: [LinuxBIOS] [PATCH] flashrom: Acorp 6A815EPD board-enable In-Reply-To: <20071202190509.GB14577@greenwood> References: <20071126232425.GO2629@kirkkit.kollasch.net> <20071202190509.GB14577@greenwood> Message-ID: <20071202205308.GS2629@kirkkit.kollasch.net> On Sun, Dec 02, 2007 at 08:05:09PM +0100, Uwe Hermann wrote: > On Mon, Nov 26, 2007 at 05:24:25PM -0600, jakllsch at kollasch.net wrote: > > Add board-enable for Acorp 6A815EPD. > > > > Signed-off-by: Jonathan A. Kollasch > > Thanks, committed in r2995. > > > > + dev = pci_dev_find(0x8086, 0x2440); /* Intel ICH2 LPC */ > > + if (!dev) { > > + fprintf(stderr, "\nERROR: ICH2 LPC bridge not found.\n"); > > + return -1; > > + } > > + > > + /* use GPIOBASE register to find where the GPIO is mapped */ > > + port = (pci_read_word(dev, 0x58) & 0xFF80) + 0xE; > > Maybe I have a thinko, but shouldn't this be 0xffc0 instead of 0xff80? You are correct ... feel free to fix that. Apparently this patch needed *a bit* more work. :P > > > > + > > + val = inb(port); > > + val |= 0x80; /* Top Block Lock -- pin 8 of PLCC32 */ > > + val |= 0x40; /* Lower Blocks Lock -- pin 7 of PLCC32 */ > > This is board-specific I assume? Did you trace the connections going to > the ROM to find the specific lines? Yes. I traced them across and through the board to under the southgate. After I got some hints from the 'AWDFLASH' page provided by the stock BIOS, I poked at the I/O port, measured the voltage at those pins ... Jonathan Kollasch -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: not available URL: From jakllsch at kollasch.net Mon Dec 3 07:33:28 2007 From: jakllsch at kollasch.net (jakllsch at kollasch.net) Date: Mon, 3 Dec 2007 00:33:28 -0600 Subject: [LinuxBIOS] CK804 interrupt mapping for MSI MS-7135 Message-ID: <20071203063327.GT2629@kirkkit.kollasch.net> Hi, In the mptable.c for various CK804 boards, some settings are written into the LPC bridge's PCI configuration space. The comment just before this voodoo leads me to believe that these registers have something to do with interrupt mapping. I've tried the values from the Asus A8N-E, they work better than the values I extracted from the stock bios on the MS-7135. (I think I'm making decent progress on this board.) Anyway, I have an interrupt storm issue, and I have no idea how to debug it, short of trying all 79.2 octillion combinations that could be put in these three registers. That or, of course, a holiday miracle of nvidia releasing chipset documentation. But, somewhere between those two extremes may lie a feasible method. Or at least I can hope. Any advice on what these registers should be programmed to? (Thinking next time he'll insist on a documented chipset ...) Jonathan Kollasch -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: not available URL: From mcvd at argentina.com Mon Dec 3 13:26:06 2007 From: mcvd at argentina.com (Michiel van Dijk) Date: Mon, 3 Dec 2007 09:26:06 -0300 Subject: [LinuxBIOS] LinuxBIOS on Compaq ProLiant 1850R? Message-ID: Hi, I was wondering if LinuxBIOS would work on my Compaq ProLiant 1850R server. The current Compaq BIOS lacks a lot of options. I identified the following chips on the mainboard: Super I/O: NSC PC87317 Northbridge: Intel FW82443BX Southbridge: Intel FW82371EB SCSI: Symbios LSI 53C876 (on-board) Video: ATI Rage IIc (on-board) Best regards, Michiel. From corey.osgood at gmail.com Mon Dec 3 16:45:01 2007 From: corey.osgood at gmail.com (Corey Osgood) Date: Mon, 03 Dec 2007 10:45:01 -0500 Subject: [LinuxBIOS] LinuxBIOS on Compaq ProLiant 1850R? In-Reply-To: References: Message-ID: <4754247D.8080107@gmail.com> Michiel van Dijk wrote: > Hi, > > I was wondering if LinuxBIOS would work on my Compaq ProLiant 1850R server. The current Compaq BIOS lacks a lot of options. > The system itself is not supported yet, but all the components are. It wouldn't be very hard to port it. > I identified the following chips on the mainboard: > > Super I/O: NSC PC87317 > Northbridge: Intel FW82443BX > Southbridge: Intel FW82371EB > > SCSI: Symbios LSI 53C876 (on-board) > You'd have to extract the original option rom from the bios for this, then prepend it to linuxbios. Explore around the wiki a bit, there's a build guide for another board with a SCSI option rom, or else it's the same process as for a VGA rom. > Video: ATI Rage IIc (on-board) > There's a driver in LB for the rage, I don't know if it'll work with this particular one or not, but it can't hurt to try. This would mean no need to use the vendor BIOS. There's a tyan board that uses this, but I don't know which one(s) off the top of my head. > Best regards, > Michiel. -Corey From jordan.crouse at amd.com Mon Dec 3 17:15:37 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Mon, 3 Dec 2007 09:15:37 -0700 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <20071130212954.GA4945@localdomain> References: <20071129184112.GE28736@cosmic.amd.com> <20071130212954.GA4945@localdomain> Message-ID: <20071203161537.GD9493@cosmic.amd.com> On 30/11/07 16:29 -0500, Ward Vandewege wrote: > There's some other stuff that would be nice: > > - aborting the build nicely when the generated image is too large > - support for different rom chip sizes (in kconfig) > - do something about the patching of LinuxBIOS Config files > > We talked about some of this before on IRC; I seem to recall Jordan's feeling > was that the last 2 points would be easier under v3. Should we focus our > efforts there for these improvements? There just isn't any good way to change v2 config files without lots of pain - especially for specifying values on the fly (like rom chip sizes). We currently get away with simple things like payloads and enabling lzma by patching the code, but that is only one Config.lb change away from not applying. Also, the patches scale exponentially. A patch for lzma, a patch for the lab payload, a patch for the lab payload with lzma, and so forth. So other then patching, our only real option for v2 would be to develop configuration files on the fly with scripts, which is every bit as evil as it sounds. Not that we really have a great story for v3 either, but we have the opportunity to change that. I think that at a minimum, we will need the ability to override configuration opens with environment variables - ROM size and compression control come to mind as good candidates, but really a generic way to override config without editing text files would be the most ideal. Jordan -- Jordan Crouse Systems Software Development Engineer Advanced Micro Devices, Inc. From yasteve at gmail.com Mon Dec 3 17:34:00 2007 From: yasteve at gmail.com (Steve Isaacs) Date: Mon, 03 Dec 2007 08:34:00 -0800 Subject: [LinuxBIOS] Infamous __stack_chk_fail problem. In-Reply-To: <20071130235752.GA9493@cosmic.amd.com> References: <1196465387.16328.21.camel@biosbreath> <20071130235752.GA9493@cosmic.amd.com> Message-ID: <1196699640.7645.65.camel@biosbreath> On Fri, 2007-11-30 at 16:57 -0700, Jordan Crouse wrote: > On 30/11/07 15:29 -0800, Steve Isaacs wrote: > > > Is it a viable solution to have buildrom build a cross-tool chain? Imho: > > This would be best in order to have repeatable results. Having config > > options to control the gcc and binutils versions cross-host build > > repeatability would be improved. > > This is exactly the direction I want to avoid going in. We really don't > want to be in the business of building a complete development environment. > Its just too much complexity for what we will gain from it. > I understand your sentiment and if I try to look at things from your perspective I can agree. However, I've seen it mentioned that it is the desire of the LinuxBIOS project to get more board manufacturer's involved. For that to happen LinuxBIOS cannot be a moving target. Look at it from a manufacturer's perspective. The environments in which I have worked require a stringent qualification, test and release process in order to better understand what is being released. Once released, products can be in maintenance for years and service contracts typically determine who gets an update and when. During this time build servers can be replaced and tools typically move through several revisions. Parts we place on our boards go through a strict qualification process and once on the board are not changed unless a severe problem is discovered (reduced risk because of test process), the part is no longer available (low risk because of the qualification process) or the board itself is end-of-life. The same needs to be true for software. Willy-nilly use of a compiler because it happens to be the latest version introduces variables into the code that increases the test problem. Without rigorous qualification of the new compiler flaws can be introduced into the software that can find their way to the field in tens, hundreds or, for some manufacturer's, thousands of copies. Deployment on these scales cost money, the qualification process costs money. Redeployment can cost even more if one considers the disruption of other projects. In order to protect the bottom line manufacturer's typically avoid these costs unless absolutely necessary. And this does not consider the effect such things can have on the manufacturer's reputation in a competitive world. The key to keeping these costs low is repeatability. A repeatable process is needed in order to reliably run repeatable tests so that when the results do not repeat, a flaw has been discovered (regression testing). This does not mean that a product needs to be perfect, none are. What I'm trying to convey is that known flaws are easier to deal with than unknown flaws. Workarounds are acceptable in most cases. Workarounds are necessary because of not being able to spend the funds to qualify a new tool or restart a full test cycle. Moving targets break workarounds. Repeatability helps maintain the viability of workarounds. Back to my point. It boils down to cost and risk is a factor that effects cost. In order for LinuxBIOS to be used instead of a proprietary BIOS it must be shown that LinuxBIOS is a lower risk since direct cost is nearly non-existent. Without a repeatable build process risk remains high. Therefore, I believe that like it or not if you want LinuxBIOS to be widely accepted it must be able to demonstrate repeatability. Proprietary providers recognize this and this is why they tout support and controlled releases and get paid for it. imho: Without this for most LinuxBIOS will remain a hobby. So, if LinuxBIOS does not want to be in the business of building tools then I suggest a project be found that will provide the tools into which LinuxBIOS can be integrated or visa versa. This way LinuxBIOS can also avoid being in the business of beta testing new tools and focus even more on the business of producing a reliable and repeatable BIOS. Steve From peter at stuge.se Mon Dec 3 17:57:27 2007 From: peter at stuge.se (Peter Stuge) Date: Mon, 3 Dec 2007 17:57:27 +0100 Subject: [LinuxBIOS] LinuxBIOS on Compaq ProLiant 1850R? In-Reply-To: <4754247D.8080107@gmail.com> References: <4754247D.8080107@gmail.com> Message-ID: <20071203165727.4330.qmail@stuge.se> On Mon, Dec 03, 2007 at 10:45:01AM -0500, Corey Osgood wrote: > > SCSI: Symbios LSI 53C876 (on-board) > > You'd have to extract the original option rom from the bios for > this, then prepend it to linuxbios. Explore around the wiki a bit, > there's a build guide for another board with a SCSI option rom, or > else it's the same process as for a VGA rom. The option rom on it's own won't do much good. LB itself doesn't care about it and can't use the INT 13h hooks that the option rom installs. (Plus they are only installed in the emulator, so payloads can't use them either.) Depending on the payload, you may not need to care about the option rom however. Ideally the Linux driver does not require the option rom to have run to drive the controller. Anyway, to boot a system on a SCSI disk you will need room for a Linux kernel in flash. (This is called LAB, suggest to use the LB companion buildrom to create the rom image.) //Peter From peter at stuge.se Mon Dec 3 18:00:24 2007 From: peter at stuge.se (Peter Stuge) Date: Mon, 3 Dec 2007 18:00:24 +0100 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <20071203161537.GD9493@cosmic.amd.com> References: <20071129184112.GE28736@cosmic.amd.com> <20071130212954.GA4945@localdomain> <20071203161537.GD9493@cosmic.amd.com> Message-ID: <20071203170024.4989.qmail@stuge.se> On Mon, Dec 03, 2007 at 09:15:37AM -0700, Jordan Crouse wrote: > There just isn't any good way to change v2 config files without > lots of pain > Not that we really have a great story for v3 either, .. > really a generic way to override config without editing text files > would be the most ideal. How about one environment variable that points to another file with options? This could probably be added pretty easily to the v2 config python thing, as well as v3. //Peter From peter at stuge.se Mon Dec 3 18:08:32 2007 From: peter at stuge.se (Peter Stuge) Date: Mon, 3 Dec 2007 18:08:32 +0100 Subject: [LinuxBIOS] Infamous __stack_chk_fail problem. In-Reply-To: <1196699640.7645.65.camel@biosbreath> References: <1196465387.16328.21.camel@biosbreath> <20071130235752.GA9493@cosmic.amd.com> <1196699640.7645.65.camel@biosbreath> Message-ID: <20071203170832.6847.qmail@stuge.se> On Mon, Dec 03, 2007 at 08:34:00AM -0800, Steve Isaacs wrote: > I believe that like it or not if you want LinuxBIOS to be widely > accepted it must be able to demonstrate repeatability. Excellent point! I agree with you completely. We should definately look at automating the build process and even build environment, because it is a sensitive component in the build process, and we should make LB smart enough to build with a build environment other than the one that starts with /usr/bin/gcc. However - I want it to remain optional rather than a requirement, so that the entry level stays as low as possible for as many as possible. But one does not, and should not, exclude the other! :) //Peter From myles at pel.cs.byu.edu Mon Dec 3 18:23:48 2007 From: myles at pel.cs.byu.edu (Myles Watson) Date: Mon, 3 Dec 2007 10:23:48 -0700 Subject: [LinuxBIOS] Broken build for kexec-boot-loader in buildrom x86_64? In-Reply-To: <20071129194704.GA24976@flashgordon> References: <20071129194704.GA24976@flashgordon> Message-ID: <016301c835d1$444d9030$480110ac@chimp> > buildrom gives me still an error when building kexec-boot-loader > (x86_64) for the m57sli: > > gcc --32 -c -o kexec/x86-setup-32.o kexec/x86-setup-32.S > cc1: error: unrecognized command line option "-f32" > > This has been reported for the tyan_s2891 before: > > http://www.linuxbios.org/pipermail/linuxbios/2007-November/026649.html > > Did I something wrong? You didn't do anything wrong. Jordan's response to my email was: "It looks like it got the ASFLAGS when it wanted the CFLAGS." I haven't looked at it more, but I hope that helps. > Regards > > Andi > From jordan.crouse at amd.com Mon Dec 3 18:40:11 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Mon, 3 Dec 2007 10:40:11 -0700 Subject: [LinuxBIOS] Infamous __stack_chk_fail problem. In-Reply-To: <1196699640.7645.65.camel@biosbreath> References: <1196465387.16328.21.camel@biosbreath> <20071130235752.GA9493@cosmic.amd.com> <1196699640.7645.65.camel@biosbreath> Message-ID: <20071203174011.GH9493@cosmic.amd.com> On 03/12/07 08:34 -0800, Steve Isaacs wrote: > > On Fri, 2007-11-30 at 16:57 -0700, Jordan Crouse wrote: > > On 30/11/07 15:29 -0800, Steve Isaacs wrote: > > > > > Is it a viable solution to have buildrom build a cross-tool chain? Imho: > > > This would be best in order to have repeatable results. Having config > > > options to control the gcc and binutils versions cross-host build > > > repeatability would be improved. > > > > This is exactly the direction I want to avoid going in. We really don't > > want to be in the business of building a complete development environment. > > Its just too much complexity for what we will gain from it. > > > > I understand your sentiment and if I try to look at things from your > perspective I can agree. However, I've seen it mentioned that it is the > desire of the LinuxBIOS project to get more board manufacturer's > involved. For that to happen LinuxBIOS cannot be a moving target. > Look at it from a manufacturer's perspective. The environments in which > I have worked require a stringent qualification, test and release > process in order to better understand what is being released. Once > released, products can be in maintenance for years and service contracts > typically determine who gets an update and when. During this time build > servers can be replaced and tools typically move through several > revisions. You don't have to worry - as you can infer from the e-mail address, I am keenly aware of the challenges that we have to face for commercial adoption. It is one of my primary goals to ensure that LinuxBIOS becomes and stays a viable option for commercial vendors. That said, you have to understand that LinuxBIOS and Linux and indeed all of open source will continue to constantly be a moving target. Every day the open source environment presents us with a slightly different view of the world as it twists and turns and evolves. When I write code, I imagine that every open source project is a train, constantly rolling toward an unknown destination. At every stop, new people are introduced to the project and get on board. They may have heard about the project at a conference, or on a slashdot posting, or just stumbled across it on freshmeat. However they got here, something compelled them to board the train. Whats more, they are going to bring some sort of baggage with them - different distributions (or even operating systems), different languages, and different experiences. Our job is to make sure that every new person that boards the train is immediately satisfied; because their first perceptions of the code are what determines if they stay or if they immediately get off the train. This is why we need to make sure that LinuxBIOS works right out of the box with as many different pieces of "baggage" as possible. Buildrom is an excellent tool to help accomplish that, but it can not and should not be essential for all those new passengers to get satisfaction from their first LinuxBIOS experience. Commercial vendors and manufacturers are no exception - every commercial project has to jump on the train at some point. The code is evaluated and a snapshot of all the current versions, behaviors and bugs in the code is constructed. Once the code has been qualified, it is always wise to freeze the code where it stands, anybody who disagrees obviously hasn't been in the trenches when trying to bring up a new platform. I have numerous projects sitting on my desk right now, not a single one of them that is running kernel version 2.6.24-rcX (heck, none of them are even running 2.6.23). But this doesn't mean that the train doesn't keep on going without us - the code continues to evolve and prepare itself for the next new passenger. This is why we (the project) doesn't want to start dictating terms like compiler versions and the like. Once we do that, we start to lose new users and contributors, as the price for admission starts to go up (especially as we start ignoring new features and flaws in newer compilers). Instead, we need to focus our energies on making sure that LinuxBIOS continues to work for every new passenger that gets on our train, and that regardless of what point our commercial vendors and friends decide to freeze, that they'll get the best possible experience from the compilers and applications that they have chosen. All that said, I think its probably time that we fix this problem once and for all. Ron and Stefan - you are the remaining "experts" on the v2 configuration system - how can we sneak in the $(try-option) calls from buildrom (which were in turned borrowed from the kernel) into LinuxBIOS to put this thing to bed once and for all? Jordan -- Jordan Crouse Systems Software Development Engineer Advanced Micro Devices, Inc. From jordan.crouse at amd.com Mon Dec 3 18:41:11 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Mon, 3 Dec 2007 10:41:11 -0700 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <20071203170024.4989.qmail@stuge.se> References: <20071129184112.GE28736@cosmic.amd.com> <20071130212954.GA4945@localdomain> <20071203161537.GD9493@cosmic.amd.com> <20071203170024.4989.qmail@stuge.se> Message-ID: <20071203174111.GI9493@cosmic.amd.com> On 03/12/07 18:00 +0100, Peter Stuge wrote: > On Mon, Dec 03, 2007 at 09:15:37AM -0700, Jordan Crouse wrote: > > There just isn't any good way to change v2 config files without > > lots of pain > > > Not that we really have a great story for v3 either, > .. > > really a generic way to override config without editing text files > > would be the most ideal. > > How about one environment variable that points to another file with > options? > > This could probably be added pretty easily to the v2 config python > thing, as well as v3. Oh, I like it. Lets make this happen. Jordan -- Jordan Crouse Systems Software Development Engineer Advanced Micro Devices, Inc. From peter at stuge.se Mon Dec 3 18:54:01 2007 From: peter at stuge.se (Peter Stuge) Date: Mon, 3 Dec 2007 18:54:01 +0100 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <20071203174111.GI9493@cosmic.amd.com> References: <20071129184112.GE28736@cosmic.amd.com> <20071130212954.GA4945@localdomain> <20071203161537.GD9493@cosmic.amd.com> <20071203170024.4989.qmail@stuge.se> <20071203174111.GI9493@cosmic.amd.com> Message-ID: <20071203175402.17394.qmail@stuge.se> On Mon, Dec 03, 2007 at 10:41:11AM -0700, Jordan Crouse wrote: > > How about one environment variable that points to another file > > with options? > > Oh, I like it. Lets make this happen. See mainboard() at line 1333 in util/newconfig/config.g. Does buildrom want to replace/amend Options.lb as well, or is it just Config.lb? Are we simply looking for a second call to doconfigfile() if a particular environment variable has been set? //Peter From tokyo246 at gmail.com Mon Dec 3 18:58:25 2007 From: tokyo246 at gmail.com (Kenji Noguchi) Date: Mon, 3 Dec 2007 09:58:25 -0800 Subject: [LinuxBIOS] [PATCH] TeleVideo TC7020 support In-Reply-To: <2ba587f0711291934l1981a3aic1ec6dc99bb95d61@mail.gmail.com> References: <2ba587f0711291934l1981a3aic1ec6dc99bb95d61@mail.gmail.com> Message-ID: <2ba587f0712030958r28d1efa5x2fea83e3f5ff772d@mail.gmail.com> Would someone review my patch? http://www.linuxbios.org/pipermail/linuxbios/attachments/20071129/c76bd0ef/attachment-0001.dll By the way why the URL for attachments got .dll in extension? It triggers antivirus softwares... Thanks, Kenji 2007/11/29, Kenji Noguchi : > Hi > > Attached is a patch for TeleVideo TC7020 support. > It should work fine with r2993. Please kindly review. > > Large part of the patch is just a duplicate of BCOM Winnet100 patch > hence many files retain copyright holder as Juergen Beisert. > > My TC7020 runs Debian's unmodified kernel 2.6.18, and mount > /var /home /root and /tmp on /dev/shm/{var,home,root,tmp} so that > the Compact Flash drive remains read-only. No worries of wear and tear, > and clean shutdown. > > I will see how MythTV performs on this box. DirectFB already runs nicely. > Does anyone know if GX1 MPEG decoder is supported by video4linux? > > Regards, > Kenji Noguchi > > p.s. Sorry Uwe that I missed your email asking for the status. > > From eswierk at arastra.com Mon Dec 3 18:58:40 2007 From: eswierk at arastra.com (Ed Swierk) Date: Mon, 3 Dec 2007 09:58:40 -0800 Subject: [LinuxBIOS] Qemu compile for LinuxBIOSV2 In-Reply-To: <47506A1F.8070104@sun.com> References: <47506A1F.8070104@sun.com> Message-ID: On 11/30/07, Marc Karasek wrote: > When I try to compile v2 with a filo.elf payload I get the : > > collect2: ld terminated with signal 11 [Segmentation fault] > > Error The attached patch works around a crash from GNU ld version 2.17.50.0.18-1 20070731. --Ed -------------- next part -------------- A non-text attachment was scrubbed... Name: linuxbios-ld-build-id.patch Type: application/octet-stream Size: 546 bytes Desc: not available URL: From Marc.Karasek at Sun.COM Mon Dec 3 19:04:53 2007 From: Marc.Karasek at Sun.COM (Marc Karasek) Date: Mon, 03 Dec 2007 13:04:53 -0500 Subject: [LinuxBIOS] Qemu compile for LinuxBIOSV2 In-Reply-To: References: <47506A1F.8070104@sun.com> Message-ID: <47544545.7060904@sun.com> Thanks for the patch. Tried it and it still crashes, but at least now it gives more info. I will look into this from this end and see what is happening. BTW: Is this patch associated with the thread about qemu and the compilers? Thanks again.... cp linuxbios_ram.nrv2b linuxbios_ram.rom echo '/*ldoptions*/' > ldscript.ld; cat ldoptions >> ldscript.ld ; for file in /home/mk216460/src/LinuxBIOSv2-2988/src/arch/i386/init/ldscript.lb /home/mk216460/src/LinuxBIOSv2-2988/src//cpu/x86/16bit/entry16.lds /home/mk216460/src/LinuxBIOSv2-2988/src//cpu/x86/32bit/entry32.lds /home/mk216460/src/LinuxBIOSv2-2988/src//cpu/x86/16bit/reset16.lds /home/mk216460/src/LinuxBIOSv2-2988/src//arch/i386/lib/id.lds ; do echo /\* $file \*/ >> ldscript.ld; cat $file >> ldscript.ld ; done gcc -m32 -nostdlib -nostartfiles -static -o linuxbios -T ldscript.ld crt0.o /usr/bin/ld: linuxbios: section `.id' can't be allocated in segment 2 /usr/bin/ld: final link failed: Bad value collect2: ld returned 1 exit status /********************* Marc Karasek MTS Sun Microsystems mailto:marc.karasek at sun.com ph:770.360.6415 *********************/ Ed Swierk wrote: > On 11/30/07, Marc Karasek wrote: > >> When I try to compile v2 with a filo.elf payload I get the : >> >> collect2: ld terminated with signal 11 [Segmentation fault] >> >> Error >> > > The attached patch works around a crash from GNU ld version > 2.17.50.0.18-1 20070731. > > --Ed > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jordan.crouse at amd.com Mon Dec 3 19:13:20 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Mon, 3 Dec 2007 11:13:20 -0700 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <20071203175402.17394.qmail@stuge.se> References: <20071129184112.GE28736@cosmic.amd.com> <20071130212954.GA4945@localdomain> <20071203161537.GD9493@cosmic.amd.com> <20071203170024.4989.qmail@stuge.se> <20071203174111.GI9493@cosmic.amd.com> <20071203175402.17394.qmail@stuge.se> Message-ID: <20071203181320.GJ9493@cosmic.amd.com> On 03/12/07 18:54 +0100, Peter Stuge wrote: > On Mon, Dec 03, 2007 at 10:41:11AM -0700, Jordan Crouse wrote: > > > How about one environment variable that points to another file > > > with options? > > > > Oh, I like it. Lets make this happen. > > See mainboard() at line 1333 in util/newconfig/config.g. > > Does buildrom want to replace/amend Options.lb as well, or is it just > Config.lb? I would think that any configuration variable would be eligible to be overriden. Presumably illegal combinations would be rejected? > Are we simply looking for a second call to doconfigfile() if a > particular environment variable has been set? I'm thinking so - the most important thing is that the override file is the final word on the settings. Jordan -- Jordan Crouse Systems Software Development Engineer Advanced Micro Devices, Inc. From eswierk at arastra.com Mon Dec 3 19:09:50 2007 From: eswierk at arastra.com (Ed Swierk) Date: Mon, 3 Dec 2007 10:09:50 -0800 Subject: [LinuxBIOS] Qemu compile for LinuxBIOSV2 In-Reply-To: <47544545.7060904@sun.com> References: <47506A1F.8070104@sun.com> <47544545.7060904@sun.com> Message-ID: On 12/3/07, Marc Karasek wrote: > Thanks for the patch. > > Tried it and it still crashes, but at least now it gives more info. I will > look into this from this end and see what is happening. I'm stuck on the same problem here (on Fedora 8), so please share any discoveries. > BTW: Is this patch associated with the thread about qemu and the compilers? Not sure; I posted the same patch about a week ago but there was only one response. --Ed From jordan.crouse at amd.com Mon Dec 3 19:15:17 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Mon, 3 Dec 2007 11:15:17 -0700 Subject: [LinuxBIOS] Qemu compile for LinuxBIOSV2 In-Reply-To: References: <47506A1F.8070104@sun.com> Message-ID: <20071203181517.GK9493@cosmic.amd.com> On 03/12/07 09:58 -0800, Ed Swierk wrote: > On 11/30/07, Marc Karasek wrote: > > When I try to compile v2 with a filo.elf payload I get the : > > > > collect2: ld terminated with signal 11 [Segmentation fault] > > > > Error > > The attached patch works around a crash from GNU ld version > 2.17.50.0.18-1 20070731. Can we get a Signed-off-by: line for this patch? It seems sane enough to me. Jordan -- Jordan Crouse Systems Software Development Engineer Advanced Micro Devices, Inc. From myles at pel.cs.byu.edu Mon Dec 3 19:12:05 2007 From: myles at pel.cs.byu.edu (Myles Watson) Date: Mon, 3 Dec 2007 11:12:05 -0700 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <20071203170024.4989.qmail@stuge.se> References: <20071129184112.GE28736@cosmic.amd.com><20071130212954.GA4945@localdomain><20071203161537.GD9493@cosmic.amd.com> <20071203170024.4989.qmail@stuge.se> Message-ID: <017601c835d8$02a2a240$480110ac@chimp> > > There just isn't any good way to change v2 config files without > > lots of pain > > > Not that we really have a great story for v3 either, > .. > > really a generic way to override config without editing text files > > would be the most ideal. > > How about one environment variable that points to another file with > options? The unfortunate thing is that either this adds lots more Config.lb files (one for each payload combination or ROM size), or forces you to patch the buildrom-specific file you just introduced. I think it's more important to figure out how we really want to configure LinuxBIOS (it seems to be a large hurdle for newbies), not buildrom. Once it's easy to configure LinuxBIOS it will be easy to do it with buildrom. Myles From eswierk at arastra.com Mon Dec 3 19:15:00 2007 From: eswierk at arastra.com (Ed Swierk) Date: Mon, 3 Dec 2007 10:15:00 -0800 Subject: [LinuxBIOS] Qemu compile for LinuxBIOSV2 In-Reply-To: <20071203181517.GK9493@cosmic.amd.com> References: <47506A1F.8070104@sun.com> <20071203181517.GK9493@cosmic.amd.com> Message-ID: On 12/3/07, Jordan Crouse wrote: > Can we get a Signed-off-by: line for this patch? It seems sane enough to > me. Signed-off-by: Ed Swierk -------------- next part -------------- A non-text attachment was scrubbed... Name: linuxbios-ld-build-id.patch Type: application/octet-stream Size: 662 bytes Desc: not available URL: From Marc.Karasek at Sun.COM Mon Dec 3 19:15:33 2007 From: Marc.Karasek at Sun.COM (Marc Karasek) Date: Mon, 03 Dec 2007 13:15:33 -0500 Subject: [LinuxBIOS] Qemu compile for LinuxBIOSV2 In-Reply-To: <20071203181517.GK9493@cosmic.amd.com> References: <47506A1F.8070104@sun.com> <20071203181517.GK9493@cosmic.amd.com> Message-ID: <475447C5.7020406@sun.com> Unfortunately, it is still broken under Fedora 8. V3 works, it is just V2 that is having these linking problems. This patch makes things better, and it at least gives us a more descriptive error than just a segmentation fault. This at least gives me a good starting point to debug from .. I think as soon as we get a stable version that should be the patch.. /********************* Marc Karasek MTS Sun Microsystems mailto:marc.karasek at sun.com ph:770.360.6415 *********************/ Jordan Crouse wrote: > On 03/12/07 09:58 -0800, Ed Swierk wrote: > >> On 11/30/07, Marc Karasek wrote: >> >>> When I try to compile v2 with a filo.elf payload I get the : >>> >>> collect2: ld terminated with signal 11 [Segmentation fault] >>> >>> Error >>> >> The attached patch works around a crash from GNU ld version >> 2.17.50.0.18-1 20070731. >> > > Can we get a Signed-off-by: line for this patch? It seems sane enough to > me. > > Jordan > > -------------- next part -------------- An HTML attachment was scrubbed... URL: From jordan.crouse at amd.com Mon Dec 3 19:23:25 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Mon, 3 Dec 2007 11:23:25 -0700 Subject: [LinuxBIOS] Qemu compile for LinuxBIOSV2 In-Reply-To: References: <47506A1F.8070104@sun.com> <20071203181517.GK9493@cosmic.amd.com> Message-ID: <20071203182325.GA23382@cosmic.amd.com> On 03/12/07 10:15 -0800, Ed Swierk wrote: > On 12/3/07, Jordan Crouse wrote: > > Can we get a Signed-off-by: line for this patch? It seems sane enough to > > me. > > Signed-off-by: Ed Swierk Acked-by: Jordan Crouse -- Jordan Crouse Systems Software Development Engineer Advanced Micro Devices, Inc. From jordan.crouse at amd.com Mon Dec 3 19:30:08 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Mon, 3 Dec 2007 11:30:08 -0700 Subject: [LinuxBIOS] Qemu compile for LinuxBIOSV2 In-Reply-To: <475447C5.7020406@sun.com> References: <47506A1F.8070104@sun.com> <20071203181517.GK9493@cosmic.amd.com> <475447C5.7020406@sun.com> Message-ID: <20071203183008.GC23382@cosmic.amd.com> On 03/12/07 13:15 -0500, Marc Karasek wrote: > Unfortunately, it is still broken under Fedora 8. > > V3 works, it is just V2 that is having these linking problems. This patch > makes things better, and it at least gives us a more descriptive error than > just a segmentation fault. > > This at least gives me a good starting point to debug from .. I think as > soon as we get a stable version that should be the patch.. Fair enough - we can wait. I do agree that avoiding segfaults is good. :) Jordan From jordan.crouse at amd.com Mon Dec 3 19:29:27 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Mon, 3 Dec 2007 11:29:27 -0700 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <017601c835d8$02a2a240$480110ac@chimp> References: <20071203170024.4989.qmail@stuge.se> <017601c835d8$02a2a240$480110ac@chimp> Message-ID: <20071203182927.GB23382@cosmic.amd.com> On 03/12/07 11:12 -0700, Myles Watson wrote: > > > > > There just isn't any good way to change v2 config files without > > > lots of pain > > > > > Not that we really have a great story for v3 either, > > .. > > > really a generic way to override config without editing text files > > > would be the most ideal. > > > > How about one environment variable that points to another file with > > options? > > The unfortunate thing is that either this adds lots more Config.lb files > (one for each payload combination or ROM size), or forces you to patch the > buildrom-specific file you just introduced. What scared me about changing the configs on the fly was the extreme amount of sed magic we would have to do to get it right. In this case, that fear isn't there since we're not actually modifying any existing files, so we can easily add the config options we want with echo >: ifeq ($(CONFIG_LZMA),y) echo "NEEDLZMAPLEASE=1" >> $(LBOVERRIDE) endif That will be pretty generic for most cases - if there is something really special for a particular platform, we can specify a static override file to start and then modify it as above, but that will be the exception, not the rule. > I think it's more important to figure out how we really want to configure > LinuxBIOS (it seems to be a large hurdle for newbies), not buildrom. Agreed - being able to do these things easily with v3 is a priority. We have to think about what we would want to control externally, and then make those knobs easy to turn. Jordan -- Jordan Crouse Systems Software Development Engineer Advanced Micro Devices, Inc. From yasteve at gmail.com Mon Dec 3 19:32:22 2007 From: yasteve at gmail.com (Steve Isaacs) Date: Mon, 03 Dec 2007 10:32:22 -0800 Subject: [LinuxBIOS] Infamous __stack_chk_fail problem. In-Reply-To: <20071203170832.6847.qmail@stuge.se> References: <1196465387.16328.21.camel@biosbreath> <20071130235752.GA9493@cosmic.amd.com> <1196699640.7645.65.camel@biosbreath> <20071203170832.6847.qmail@stuge.se> Message-ID: <1196706742.14496.11.camel@biosbreath> On Mon, 2007-12-03 at 18:08 +0100, Peter Stuge wrote: > However - I want it to remain optional rather than a requirement, > so that the entry level stays as low as possible for as many as > possible. > I agree. A fully native build should be supported for when it's appropriate and to keep the startup checklist shorter. Actually, entry level for me jumped rather high because of my use of of a distro that installs a compiler configured for using stack checking as a default. I was faced with either installing my own toolchain or modifying the build for LinuxBIOS or switching distros. Note that's a distro issue, not a toolchain issue. With the toolchain builder already integrated I'd have changed my config and moved on rather than potentially accumulating overtime dealing with this issue. For me, distro variations -- not compiler bugs -- have been the biggest problem. I'll toss this on the table as a possible approach to a solution: - Buildrom be enhanced to --optionally-- download and install in a user's sandbox a toolchain builder. - Problems found in the toolchain builder be fed back to the toolchain builder project thus satisfying Jordan's point of having a responsibility to fix the toolset when broken. Crosstool builders often employ target specific patches when necessary. - Configuration options be added to buildrom to select whether or not to build native or use cross tools (yes, this is a cross tool environment since I'm building on a host for a target of a different architecture). - Additional options be added to control the cross-tool version to build (both for buildrom and the cross-tool builder itself). - The cross tool builder config utility be used for control of toolchain versions and other options. The obvious question is which toolchain builder? I might suggest using crosstool (by Dan Kegel) which has been widely used in the embedded world. This has more recently been revised into crosstool-NG which adds a menuconfig style interface. I like this because it would be visually and functionally consistent with buildrom. I'm unsure as to the status of either of these but they look promising for this purpose. Comments? Other distro and embedded build systems exist (and several use crosstool) but I would not recommend integrating LinuxBIOS into any of them for obvious reasons. I'm sure others would agree that it is not in the best interest of LinuxBIOS to have it driven by the requirements of another project. Steve From myles at pel.cs.byu.edu Mon Dec 3 19:43:48 2007 From: myles at pel.cs.byu.edu (Myles Watson) Date: Mon, 3 Dec 2007 11:43:48 -0700 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <20071203182927.GB23382@cosmic.amd.com> References: <20071203170024.4989.qmail@stuge.se> <017601c835d8$02a2a240$480110ac@chimp> <20071203182927.GB23382@cosmic.amd.com> Message-ID: <018801c835dc$71122170$480110ac@chimp> > > > > There just isn't any good way to change v2 config files without > > > > lots of pain > > > > > > > Not that we really have a great story for v3 either, > > > .. > > > > really a generic way to override config without editing text files > > > > would be the most ideal. > > > > > > How about one environment variable that points to another file with > > > options? > > > > The unfortunate thing is that either this adds lots more Config.lb files > > (one for each payload combination or ROM size), or forces you to patch > the > > buildrom-specific file you just introduced. > > What scared me about changing the configs on the fly was the extreme > amount > of sed magic we would have to do to get it right. In this case, that fear > isn't there since we're not actually modifying any existing files, so we > can > easily add the config options we want with echo >: > > ifeq ($(CONFIG_LZMA),y) > echo "NEEDLZMAPLEASE=1" >> $(LBOVERRIDE) > endif > All right. At least it will document what the Config.lb variables mean if they "need" to be tweaked. Myles > That will be pretty generic for most cases - if there is something really > special for a particular platform, we can specify a static override file > to start and then modify it as above, but that will be the exception, not > the rule. > > > I think it's more important to figure out how we really want to > configure > > LinuxBIOS (it seems to be a large hurdle for newbies), not buildrom. > > Agreed - being able to do these things easily with v3 is a priority. > We have to think about what we would want to control externally, and then > make those knobs easy to turn. > > Jordan > -- > Jordan Crouse > Systems Software Development Engineer > Advanced Micro Devices, Inc. From jordan.crouse at amd.com Mon Dec 3 19:52:23 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Mon, 3 Dec 2007 11:52:23 -0700 Subject: [LinuxBIOS] Infamous __stack_chk_fail problem. In-Reply-To: <1196706742.14496.11.camel@biosbreath> References: <1196465387.16328.21.camel@biosbreath> <20071130235752.GA9493@cosmic.amd.com> <1196699640.7645.65.camel@biosbreath> <20071203170832.6847.qmail@stuge.se> <1196706742.14496.11.camel@biosbreath> Message-ID: <20071203185223.GD23382@cosmic.amd.com> On 03/12/07 10:32 -0800, Steve Isaacs wrote: > On Mon, 2007-12-03 at 18:08 +0100, Peter Stuge wrote: > > > However - I want it to remain optional rather than a requirement, > > so that the entry level stays as low as possible for as many as > > possible. > > > > I agree. A fully native build should be supported for when it's > appropriate and to keep the startup checklist shorter. > > Actually, entry level for me jumped rather high because of my use of of > a distro that installs a compiler configured for using stack checking as > a default. I was faced with either installing my own toolchain or > modifying the build for LinuxBIOS or switching distros. Note that's a > distro issue, not a toolchain issue. With the toolchain builder already > integrated I'd have changed my config and moved on rather than > potentially accumulating overtime dealing with this issue. For me, > distro variations -- not compiler bugs -- have been the biggest problem. I'm already on board with my opinion on a cross compiler, no need to rehash that here. But the thing about _this_ bug is that this can be fixed, and if you use buildrom it _should_ be fixed. This is our fault, and we need to remedy it immediately. What platform are you trying to build for? Jordan From svn at openbios.org Mon Dec 3 20:06:37 2007 From: svn at openbios.org (svn at openbios.org) Date: Mon, 3 Dec 2007 20:06:37 +0100 Subject: [LinuxBIOS] r72 - buildrom-devel/packages/gpxe Message-ID: Author: jcrouse Date: 2007-12-03 20:06:36 +0100 (Mon, 03 Dec 2007) New Revision: 72 Modified: buildrom-devel/packages/gpxe/gpxe.mk Log: For unknown reasons, gpxe.mk had two copies of itself - that made make very angry. Remove the offending lines. Trivial, no code changes. Signed-off-by: Jordan Crouse Modified: buildrom-devel/packages/gpxe/gpxe.mk =================================================================== --- buildrom-devel/packages/gpxe/gpxe.mk 2007-11-30 21:07:38 UTC (rev 71) +++ buildrom-devel/packages/gpxe/gpxe.mk 2007-12-03 19:06:36 UTC (rev 72) @@ -70,75 +70,3 @@ gpxe-distclean: @ rm -rf $(GPXE_DIR)/* -GPXE_URL=git://git.etherboot.org/scm/gpxe.git -GPXE_DIR=$(BUILD_DIR)/gpxe -GPXE_TAG=master -GPXE_SRC_DIR=$(GPXE_DIR)/gpxe-$(GPXE_TAG)/src -GPXE_SOURCE=gpxe-$(GPXE_TAG).tar.bz2 -GPXE_STAMP_DIR=$(GPXE_DIR)/stamps -GPXE_LOG_DIR=$(GPXE_DIR)/logs - -ifeq ($(GPXE_ARCH),) -GPXE_ARCH=i386 -endif - -GPXE_PATCHES = - -# Filter the quotes off the config string -GPXE_DRIVER := $(shell echo $(CONFIG_GPXE_DRIVER) | sed -e s:\"::g) -GPXE_OUTPUT=$(GPXE_SRC_DIR)/bin/$(GPXE_DRIVER).elf - -ifeq ($(CONFIG_VERBOSE),y) -GPXE_FETCH_LOG=/dev/stdout -GPXE_BUILD_LOG=/dev/stdout -GPXE_INSTALL_LOG=/dev/stdout -else -GPXE_FETCH_LOG=$(GPXE_LOG_DIR)/fetch.log -GPXE_BUILD_LOG=$(GPXE_LOG_DIR)/build.log -GPXE_INSTALL_LOG=$(GPXE_LOG_DIR)/install.log -endif - -$(SOURCE_DIR)/$(GPXE_SOURCE): - @ echo "Fetching the GPXE source..." - $(BIN_DIR)/fetchgit.sh $(GPXE_URL) $(SOURCE_DIR)/gpxe \ - $(GPXE_TAG) $(SOURCE_DIR)/$(GPXE_SOURCE) gpxe \ - > $(GPXE_FETCH_LOG) 2>&1 - -$(GPXE_STAMP_DIR)/.unpacked: $(SOURCE_DIR)/$(GPXE_SOURCE) - @ echo "Unpacking GPXE..." - @ tar -C $(GPXE_DIR) -jxf $(SOURCE_DIR)/$(GPXE_SOURCE) - @ touch $@ - -$(GPXE_STAMP_DIR)/.patched: $(GPXE_STAMP_DIR)/.unpacked - @ echo "Patching GPXE..." - @ $(BIN_DIR)/doquilt.sh $(GPXE_SRC_DIR)/.. $(GPXE_PATCHES) - @ touch $@ - -$(GPXE_STAMP_DIR)/.configured: $(GPXE_STAMP_DIR)/.patched - @ cp $(PACKAGE_DIR)/gpxe/conf/Config.main \ - $(GPXE_SRC_DIR)/Config - @ cp $(PACKAGE_DIR)/gpxe/conf/Config.$(GPXE_ARCH) \ - $(GPXE_SRC_DIR)/arch/$(GPXE_ARCH)/Config - @ touch $@ - -$(GPXE_OUTPUT): $(GPXE_STAMP_DIR)/.configured - @ echo "Building GPXE..." - @ ( unset CFLAGS; export EXTRA_CFLAGS="$(CFLAGS)"; \ - unset ASFLAGS; export EXTRA_ASFLAGS="$(ASFLAGS)"; \ - unset LDFLAGS; \ - $(MAKE) -C $(GPXE_SRC_DIR) ARCH=$(GPXE_ARCH) \ - bin/$(GPXE_DRIVER).elf > $(GPXE_BUILD_LOG) 2>&1) - -$(GPXE_STAMP_DIR) $(GPXE_LOG_DIR): - @ mkdir -p $@ - -gpxe: $(GPXE_STAMP_DIR) $(GPXE_LOG_DIR) $(GPXE_OUTPUT) - @ mkdir -p $(OUTPUT_DIR) - @ cp $(GPXE_OUTPUT) $(PAYLOAD_ELF) - -gpxe-clean: - @ echo "Cleaning GPXE..." - @ $(MAKE) -C $(GPXE_SRC_DIR) clean > /dev/null 2>&1 - -gpxe-distclean: - @ rm -rf $(GPXE_DIR)/* From yasteve at gmail.com Mon Dec 3 20:14:45 2007 From: yasteve at gmail.com (Steve Isaacs) Date: Mon, 03 Dec 2007 11:14:45 -0800 Subject: [LinuxBIOS] Infamous __stack_chk_fail problem. In-Reply-To: <20071203174011.GH9493@cosmic.amd.com> References: <1196465387.16328.21.camel@biosbreath> <20071130235752.GA9493@cosmic.amd.com> <1196699640.7645.65.camel@biosbreath> <20071203174011.GH9493@cosmic.amd.com> Message-ID: <1196709285.14496.49.camel@biosbreath> On Mon, 2007-12-03 at 10:40 -0700, Jordan Crouse wrote: > You don't have to worry - as you can infer from the e-mail address, I am > keenly aware of the challenges that we have to face for commercial adoption. > It is one of my primary goals to ensure that LinuxBIOS becomes and stays > a viable option for commercial vendors. > I'm sorry, I didn't mean to imply you are not aware of the issues. I just wanted to change the focus a bit. I did notice your e-mail address and was tempted to use that as a case in point but chose not to. I have a lot of respect for your employer. > That said, you have to understand that LinuxBIOS and Linux and indeed > all of open source will continue to constantly be a moving target. > Every day the open source environment presents us with a slightly different > view of the world as it twists and turns and evolves. Most products, open-source or not, are moving targets in the end. Commercial products are continually repaired and enhanced to satisfy customer requirements. But, for commercial viability, plateaus have to be established and maintained. > When I write code, I imagine that every open source project is a train, > constantly rolling toward an unknown destination. At every stop, new > people are introduced to the project and get on board. They may have > heard about the project at a conference, or on a slashdot posting, or > just stumbled across it on freshmeat. However they got here, something > compelled them to board the train. Whats more, they are going to > bring some sort of baggage with them - different distributions (or even > operating systems), different languages, and different experiences. > I like your analogy. It reflects how the company that pays my salary decided to "board the train" as you put it. As a new passenger here I'll have to defer to your experience. It is not my intent to derail the ideals of an open source project. > Our job is to make sure that every new person that boards the train is > immediately satisfied; because their first perceptions of the code > are what determines if they stay or if they immediately get off the train. > Please remember that it is --my-- job to satisfy customer requirements on or before the deadline. These obviously are conflicting perspectives. A solution everyone can enjoy requires time coupled with a willingness to wander. This may not always be conducive to meeting a deadline which requires focus and limited time. I'm hoping I can suggest a means to mitigate both. > This is why we (the project) doesn't want to start dictating terms like > compiler versions and the like. I would never suggest dictating terms. If that were the case I would not be a "passenger" now. I was simply trying to suggest a means for reducing risk by increasing confidence through having repeatable releases. Nothing more. Steve btw: the opinions I expressed here are my own. From yasteve at gmail.com Mon Dec 3 20:29:36 2007 From: yasteve at gmail.com (Steve Isaacs) Date: Mon, 03 Dec 2007 11:29:36 -0800 Subject: [LinuxBIOS] Infamous __stack_chk_fail problem. In-Reply-To: <20071203185223.GD23382@cosmic.amd.com> References: <1196465387.16328.21.camel@biosbreath> <20071130235752.GA9493@cosmic.amd.com> <1196699640.7645.65.camel@biosbreath> <20071203170832.6847.qmail@stuge.se> <1196706742.14496.11.camel@biosbreath> <20071203185223.GD23382@cosmic.amd.com> Message-ID: <1196710176.14496.63.camel@biosbreath> On Mon, 2007-12-03 at 11:52 -0700, Jordan Crouse wrote: > I'm already on board with my opinion on a cross compiler, no need to rehash > that here. > > But the thing about _this_ bug is that this can be fixed, and if you use > buildrom it _should_ be fixed. This is our fault, and we need to remedy it > immediately. What platform are you trying to build for? > I'm working on an adaptation for a board of our design using a chipset not currently supported by LinuxBIOS. I say "currently" because one reason I'm participating in this forum is so the work I do can be submitted back to the project meaning the chips I add can one day become part of the LinuxBIOS source set. Steve From c-d.hailfinger.devel.2006 at gmx.net Mon Dec 3 20:57:03 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Mon, 03 Dec 2007 20:57:03 +0100 Subject: [LinuxBIOS] Qemu compile for LinuxBIOSV2 In-Reply-To: <475447C5.7020406@sun.com> References: <47506A1F.8070104@sun.com> <20071203181517.GK9493@cosmic.amd.com> <475447C5.7020406@sun.com> Message-ID: <47545F8F.5090003@gmx.net> On 03.12.2007 19:15, Marc Karasek wrote: > Unfortunately, it is still broken under Fedora 8. > > V3 works, it is just V2 that is having these linking problems. This > patch makes things better, and it at least gives us a more descriptive > error than just a segmentation fault. > > This at least gives me a good starting point to debug from .. I think > as soon as we get a stable version that should be the patch.. Please file a bug with the binutils guys. If they don't know ld is broken, they can't fix it. Regards, Carl-Daniel From jordan.crouse at amd.com Mon Dec 3 21:19:30 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Mon, 3 Dec 2007 13:19:30 -0700 Subject: [LinuxBIOS] Infamous __stack_chk_fail problem. In-Reply-To: <1196710176.14496.63.camel@biosbreath> References: <1196465387.16328.21.camel@biosbreath> <20071130235752.GA9493@cosmic.amd.com> <1196699640.7645.65.camel@biosbreath> <20071203170832.6847.qmail@stuge.se> <1196706742.14496.11.camel@biosbreath> <20071203185223.GD23382@cosmic.amd.com> <1196710176.14496.63.camel@biosbreath> Message-ID: <20071203201930.GE23382@cosmic.amd.com> On 03/12/07 11:29 -0800, Steve Isaacs wrote: > On Mon, 2007-12-03 at 11:52 -0700, Jordan Crouse wrote: > > > I'm already on board with my opinion on a cross compiler, no need to rehash > > that here. > > > > But the thing about _this_ bug is that this can be fixed, and if you use > > buildrom it _should_ be fixed. This is our fault, and we need to remedy it > > immediately. What platform are you trying to build for? > > > > I'm working on an adaptation for a board of our design using a chipset > not currently supported by LinuxBIOS. I say "currently" because one > reason I'm participating in this forum is so the work I do can be > submitted back to the project meaning the chips I add can one day become > part of the LinuxBIOS source set. Depending on which Config.lb you based your code on, you might be happy or sad. In buildrom, we "fix" the stack problem by passing in -fno-stack-protector through the CPU_OPT environment variable, which then gets included in the make rules. But we have found that on some platforms. CPU_OPT isn't used by every rule, and we've been trying to fix those as they happen. The problem is that LinuxBIOS compiler arguments are pretty long, and its a pain to go through them all to figure out which files don't have -fno-stack-protector attached to them. The best way to do it is to figure out which files are the offenders (either through the linker logs or by running nm on all the .o files and looking for the stack protector symbol) and find the rules and fix them. Jordan -- Jordan Crouse Systems Software Development Engineer Advanced Micro Devices, Inc. From yasteve at gmail.com Mon Dec 3 21:19:05 2007 From: yasteve at gmail.com (Steve Isaacs) Date: Mon, 03 Dec 2007 12:19:05 -0800 Subject: [LinuxBIOS] Infamous __stack_chk_fail problem. In-Reply-To: <20071203201930.GE23382@cosmic.amd.com> References: <1196465387.16328.21.camel@biosbreath> <20071130235752.GA9493@cosmic.amd.com> <1196699640.7645.65.camel@biosbreath> <20071203170832.6847.qmail@stuge.se> <1196706742.14496.11.camel@biosbreath> <20071203185223.GD23382@cosmic.amd.com> <1196710176.14496.63.camel@biosbreath> <20071203201930.GE23382@cosmic.amd.com> Message-ID: <1196713145.14496.76.camel@biosbreath> On Mon, 2007-12-03 at 13:19 -0700, Jordan Crouse wrote: > they happen. The problem is that LinuxBIOS compiler arguments are pretty > long, and its a pain to go through them all to figure out which files > don't have -fno-stack-protector attached to them. The best way to do it > is to figure out which files are the offenders (either through the linker > logs or by running nm on all the .o files and looking for the stack > protector symbol) and find the rules and fix them. > I'll do that. That should get me past the problem quickest. Thanks, Steve From Marc.Karasek at Sun.COM Mon Dec 3 21:18:08 2007 From: Marc.Karasek at Sun.COM (Marc Karasek) Date: Mon, 03 Dec 2007 15:18:08 -0500 Subject: [LinuxBIOS] Qemu compile for LinuxBIOSV2 In-Reply-To: <47545F8F.5090003@gmx.net> References: <47506A1F.8070104@sun.com> <20071203181517.GK9493@cosmic.amd.com> <475447C5.7020406@sun.com> <47545F8F.5090003@gmx.net> Message-ID: <47546480.5070509@sun.com> I think I have found the problem. It is related to the patch Ed sent. The new LD looks like it automagically turns on the --build-id option. I have not found out how turn it off. When this option is used it generates the .note.gnu.build-id section. When this section was discarded in the first ld pass (linuxbios_rom.ram creation) it was causing the segmentation fault crash. It looks like this same option is being called again when crt0.o is linked to create linuxbios. I have added the .note.gnu.build-id section to the .id section in the ldscript.ld file. SECTIONS { . = (_ROMBASE + ROM_IMAGE_SIZE - 0x10) - (__id_end - __id_start); .id (.) : { *(.id) *(.note.gnu.build-id) } This has gotten me past the second crash but now linuxbios.strip is crashing. nm -n linuxbios | sort > linuxbios.map objcopy --gap-fill 0xff -O binary linuxbios linuxbios.strip objcopy: linuxbios.strip: Bad value objcopy: linuxbios.strip: Bad value make[1]: *** [linuxbios.strip] Error 1 So this does not look like a ld problem, but an added feature to ld is causing us grief. If anyone can figure out how to turn this option off, that may fix all of this without any patches... :-) /********************* Marc Karasek MTS Sun Microsystems mailto:marc.karasek at sun.com ph:770.360.6415 *********************/ Carl-Daniel Hailfinger wrote: > On 03.12.2007 19:15, Marc Karasek wrote: > >> Unfortunately, it is still broken under Fedora 8. >> >> V3 works, it is just V2 that is having these linking problems. This >> patch makes things better, and it at least gives us a more descriptive >> error than just a segmentation fault. >> >> This at least gives me a good starting point to debug from .. I think >> as soon as we get a stable version that should be the patch.. >> > > Please file a bug with the binutils guys. If they don't know ld is > broken, they can't fix it. > > > Regards, > Carl-Daniel > -------------- next part -------------- An HTML attachment was scrubbed... URL: From eswierk at arastra.com Mon Dec 3 21:27:29 2007 From: eswierk at arastra.com (Ed Swierk) Date: Mon, 3 Dec 2007 12:27:29 -0800 Subject: [LinuxBIOS] Qemu compile for LinuxBIOSV2 In-Reply-To: <47546480.5070509@sun.com> References: <47506A1F.8070104@sun.com> <20071203181517.GK9493@cosmic.amd.com> <475447C5.7020406@sun.com> <47545F8F.5090003@gmx.net> <47546480.5070509@sun.com> Message-ID: On 12/3/07, Marc Karasek wrote: > So this does not look like a ld problem, but an added feature to ld is > causing us grief. If anyone can figure out how to turn this option off, > that may fix all of this without any patches... :-) Passing -Wl,--build-id=none to gcc turns off that ld feature. I haven't yet tracked down all the gcc invocations where it's needed. --Ed From c-d.hailfinger.devel.2006 at gmx.net Mon Dec 3 21:32:23 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Mon, 03 Dec 2007 21:32:23 +0100 Subject: [LinuxBIOS] Qemu compile for LinuxBIOSV2 In-Reply-To: <47546480.5070509@sun.com> References: <47506A1F.8070104@sun.com> <20071203181517.GK9493@cosmic.amd.com> <475447C5.7020406@sun.com> <47545F8F.5090003@gmx.net> <47546480.5070509@sun.com> Message-ID: <475467D7.9010504@gmx.net> On 03.12.2007 21:18, Marc Karasek wrote: > I think I have found the problem. It is related to the patch Ed sent. > The new LD looks like it automagically turns on the --build-id > option. I have not found out how turn it off. > When this option is used it generates the .note.gnu.build-id > section. When this section was discarded in the first ld pass > (linuxbios_rom.ram creation) it was causing the segmentation fault crash. > It looks like this same option is being called again when crt0.o is > linked to create linuxbios. I have added the .note.gnu.build-id > section to the .id section in the ldscript.ld file. > SECTIONS { > . = (_ROMBASE + ROM_IMAGE_SIZE - 0x10) - (__id_end - __id_start); > .id (.) : { > *(.id) > *(.note.gnu.build-id) > } > > > This has gotten me past the second crash but now linuxbios.strip is > crashing. Well done. > nm -n linuxbios | sort > linuxbios.map > objcopy --gap-fill 0xff -O binary linuxbios linuxbios.strip > objcopy: linuxbios.strip: Bad value > objcopy: linuxbios.strip: Bad value > make[1]: *** [linuxbios.strip] Error 1 > > So this does not look like a ld problem, but an added feature to ld is > causing us grief. If anyone can figure out how to turn this option > off, that may fix all of this without any patches... :-) Still, it would be a nice gesture to the binutils guys to report it as a bug. Maybe there's some bug deeper down which triggers this. Regards, Carl-Daniel From svn at openbios.org Mon Dec 3 21:32:53 2007 From: svn at openbios.org (svn at openbios.org) Date: Mon, 3 Dec 2007 21:32:53 +0100 Subject: [LinuxBIOS] r534 - in LinuxBIOSv3: arch/x86 include lib northbridge/amd/geodelx northbridge/intel/i440bxemulation Message-ID: Author: uwe Date: 2007-12-03 21:32:53 +0100 (Mon, 03 Dec 2007) New Revision: 534 Added: LinuxBIOSv3/include/northbridgelib.h LinuxBIOSv3/lib/northbridgelib.c Modified: LinuxBIOSv3/arch/x86/Makefile LinuxBIOSv3/northbridge/amd/geodelx/geodelx.c LinuxBIOSv3/northbridge/intel/i440bxemulation/i440bx.c Log: Factor out common functions which almost all northbridges share into lib/northbridgelib.c. Signed-off-by: Uwe Hermann Acked-by: Ronald G. Minnich Modified: LinuxBIOSv3/arch/x86/Makefile =================================================================== --- LinuxBIOSv3/arch/x86/Makefile 2007-11-30 22:43:42 UTC (rev 533) +++ LinuxBIOSv3/arch/x86/Makefile 2007-12-03 20:32:53 UTC (rev 534) @@ -172,7 +172,7 @@ # STAGE2_LIB_OBJ = stage2.o clog2.o mem.o tables.o delay.o \ - compute_ip_checksum.o string.o + compute_ip_checksum.o string.o northbridgelib.o STAGE2_ARCH_X86_OBJ = archtables.o linuxbios_table.o udelay_io.o STAGE2_ARCH_X86_OBJ += pci_ops_auto.o pci_ops_conf1.o pci_ops_conf2.o Added: LinuxBIOSv3/include/northbridgelib.h =================================================================== --- LinuxBIOSv3/include/northbridgelib.h (rev 0) +++ LinuxBIOSv3/include/northbridgelib.h 2007-12-03 20:32:53 UTC (rev 534) @@ -0,0 +1,26 @@ +/* + * This file is part of the LinuxBIOS project. + * + * Copyright (C) 2007 Advanced Micro Devices, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include + +void pci_domain_read_resources(struct device *dev); +void ram_resource(struct device *dev, unsigned long index, + unsigned long basek, unsigned long sizek); +unsigned int pci_domain_scan_bus(struct device *dev, unsigned int max); Added: LinuxBIOSv3/lib/northbridgelib.c =================================================================== --- LinuxBIOSv3/lib/northbridgelib.c (rev 0) +++ LinuxBIOSv3/lib/northbridgelib.c 2007-12-03 20:32:53 UTC (rev 534) @@ -0,0 +1,92 @@ +/* + * This file is part of the LinuxBIOS project. + * + * Copyright (C) 2007 Advanced Micro Devices, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include +#include +#include + +/** + * Set resources for the PCI domain. + * + * A PCI domain contains the I/O and memory resource address space below it. + * Set up basic global ranges for I/O and memory. Allocation of sub-resources + * draws on these top-level resources in the usual hierarchical manner. + * + * @param dev The northbridge device. + */ +void pci_domain_read_resources(struct device *dev) +{ + struct resource *res; + + /* Initialize the system-wide I/O space constraints. */ + res = new_resource(dev, IOINDEX_SUBTRACTIVE(0, 0)); + res->limit = 0xffffUL; + res->flags = + IORESOURCE_IO | IORESOURCE_SUBTRACTIVE | IORESOURCE_ASSIGNED; + + /* Initialize the system-wide memory resources constraints. */ + res = new_resource(dev, IOINDEX_SUBTRACTIVE(1, 0)); + res->limit = 0xffffffffULL; + res->flags = + IORESOURCE_MEM | IORESOURCE_SUBTRACTIVE | IORESOURCE_ASSIGNED; +} + +/** + * Create a RAM resource, by taking the passed-in size and creating + * a resource record. + * + * @param dev The device. + * @param index A resource index. + * @param basek Base memory address in KB. + * @param sizek Size of memory in KB. + */ +void ram_resource(struct device *dev, unsigned long index, + unsigned long basek, unsigned long sizek) +{ + struct resource *res; + + if (!sizek) + return; + + res = new_resource(dev, index); + res->base = ((resource_t) basek) << 10; /* Convert to bytes. */ + res->size = ((resource_t) sizek) << 10; /* Convert to bytes. */ + res->flags = IORESOURCE_MEM | IORESOURCE_CACHEABLE | + IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED; + + printk(BIOS_SPEW, "Adding RAM resource (%lld bytes)\n", res->size); +} + +/** + * Support for scan bus from the "tippy top" -- i.e. the PCI domain, + * not the 0:0.0 device. + * + * This function works for almost all chipsets (AMD K8 is the exception). + * + * @param dev The PCI domain device. + * @param max Maximum number of devices to scan. + * @return TODO + */ +unsigned int pci_domain_scan_bus(struct device *dev, unsigned int max) +{ + /* There is only one link on this device, and it is always link 0. */ + return pci_scan_bus(&dev->link[0], PCI_DEVFN(0, 0), 0xff, max); +} Modified: LinuxBIOSv3/northbridge/amd/geodelx/geodelx.c =================================================================== --- LinuxBIOSv3/northbridge/amd/geodelx/geodelx.c 2007-11-30 22:43:42 UTC (rev 533) +++ LinuxBIOSv3/northbridge/amd/geodelx/geodelx.c 2007-12-03 20:32:53 UTC (rev 534) @@ -25,6 +25,7 @@ #include #include #include +#include /* Function prototypes */ extern void chipsetinit(void); @@ -270,58 +271,6 @@ } /** - * Set resources for the PCI domain. - * - * Just set up basic global ranges for I/O and memory. Allocation of - * sub-resources draws on these top-level resources in the usual - * hierarchical manner. - * - * @param dev The nortbridge device. - */ -static void geodelx_pci_domain_read_resources(struct device *dev) -{ - struct resource *resource; - - printk(BIOS_SPEW, ">> Entering northbridge.c: %s\n", __FUNCTION__); - - /* Initialize the system wide I/O space constraints. */ - resource = new_resource(dev, IOINDEX_SUBTRACTIVE(0, 0)); - resource->limit = 0xffffUL; - resource->flags = - IORESOURCE_IO | IORESOURCE_SUBTRACTIVE | IORESOURCE_ASSIGNED; - - /* Initialize the system wide memory resources constraints. */ - resource = new_resource(dev, IOINDEX_SUBTRACTIVE(1, 0)); - resource->limit = 0xffffffffULL; - resource->flags = - IORESOURCE_MEM | IORESOURCE_SUBTRACTIVE | IORESOURCE_ASSIGNED; -} - -/** - * Create a RAM resource, by taking the passed-in size and creating - * a resource record. - * - * @param dev The device. - * @param index A resource index. - * @param basek Base memory address in KB. - * @param sizek Size of memory in KB. - */ -static void ram_resource(struct device *dev, unsigned long index, - unsigned long basek, unsigned long sizek) -{ - struct resource *resource; - - if (!sizek) - return; - - resource = new_resource(dev, index); - resource->base = ((resource_t) basek) << 10; - resource->size = ((resource_t) sizek) << 10; - resource->flags = IORESOURCE_MEM | IORESOURCE_CACHEABLE | - IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED; -} - -/** * Set resources in the PCI domain. * * Also, as a side effect, create a RAM resource in the child which, @@ -386,21 +335,6 @@ } /** - * Support for scan bus from the "tippy top" -- i.e. the PCI domain, - * not the 0:0.0 device. - * - * @param dev The PCI domain device. - * @param max Maximum number of devices to scan. - * @return TODO - */ -static unsigned int geodelx_pci_domain_scan_bus(struct device *dev, - unsigned int max) -{ - printk(BIOS_SPEW, ">> Entering northbridge.c: %s\n", __FUNCTION__); - return pci_scan_bus(&dev->link[0], PCI_DEVFN(0, 0), 0xff, max); -} - -/** * Support for APIC cluster init. * * TODO: Should we do this in phase 2? It is now done in phase 6. @@ -426,8 +360,8 @@ static struct device_operations geodelx_pcidomain_ops = { .constructor = default_device_constructor, .phase2_setup_scan_bus = geodelx_pci_domain_phase2, - .phase3_scan = geodelx_pci_domain_scan_bus, - .phase4_read_resources = geodelx_pci_domain_read_resources, + .phase3_scan = pci_domain_scan_bus, + .phase4_read_resources = pci_domain_read_resources, .phase4_set_resources = geodelx_pci_domain_set_resources, .phase5_enable_resources = enable_childrens_resources, .phase6_init = 0, @@ -448,8 +382,8 @@ /** Operations for when the northbridge is running a PCI device. */ static struct device_operations geodelx_pci_ops = { .constructor = default_device_constructor, - .phase3_scan = geodelx_pci_domain_scan_bus, - .phase4_read_resources = geodelx_pci_domain_read_resources, + .phase3_scan = pci_domain_scan_bus, + .phase4_read_resources = pci_domain_read_resources, .phase4_set_resources = geodelx_northbridge_set_resources, .phase5_enable_resources = enable_childrens_resources, .phase6_init = geodelx_northbridge_init, Modified: LinuxBIOSv3/northbridge/intel/i440bxemulation/i440bx.c =================================================================== --- LinuxBIOSv3/northbridge/intel/i440bxemulation/i440bx.c 2007-11-30 22:43:42 UTC (rev 533) +++ LinuxBIOSv3/northbridge/intel/i440bxemulation/i440bx.c 2007-12-03 20:32:53 UTC (rev 534) @@ -43,46 +43,12 @@ #include #include #include +#include #include "i440bx.h" #include "statictree.h" /* Here are the ops for 440BX as a PCI domain. */ -/* A PCI domain contains the I/O and memory resource address space below it. */ -static void pci_domain_read_resources(struct device *dev) -{ - struct resource *resource; - - /* Initialize the system wide I/O space constraints. */ - resource = new_resource(dev, IOINDEX_SUBTRACTIVE(0, 0)); - resource->limit = 0xffffUL; - resource->flags = - IORESOURCE_IO | IORESOURCE_SUBTRACTIVE | IORESOURCE_ASSIGNED; - - /* Initialize the system wide memory resources constraints. */ - resource = new_resource(dev, IOINDEX_SUBTRACTIVE(1, 0)); - resource->limit = 0xffffffffULL; - resource->flags = - IORESOURCE_MEM | IORESOURCE_SUBTRACTIVE | IORESOURCE_ASSIGNED; -} - -static void ram_resource(struct device *dev, unsigned long index, - unsigned long basek, unsigned long sizek) -{ - struct resource *resource; - - if (!sizek) { - return; - } - resource = new_resource(dev, index); - resource->base = ((resource_t) basek) << 10; - resource->size = ((resource_t) sizek) << 10; - resource->flags = IORESOURCE_MEM | IORESOURCE_CACHEABLE | - IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED; - printk(BIOS_DEBUG, "%s: add ram resource %lld bytes\n", __func__, - resource->size); -} - static void pci_domain_set_resources(struct device *dev) { struct device *mc_dev; @@ -99,13 +65,6 @@ phase4_assign_resources(&dev->link[0]); } -static unsigned int pci_domain_scan_bus(struct device *dev, unsigned int max) -{ - /* There is only one link on this device, and it is always link 0. */ - max = pci_scan_bus(&dev->link[0], PCI_DEVFN(0, 0), 0xff, max); - return max; -} - /* Here are the operations for when the northbridge is running a PCI domain. */ /* See mainboard/emulation/qemu-x86 for an example of how these are used. */ struct device_operations i440bxemulation_pcidomainops = { From uwe at hermann-uwe.de Mon Dec 3 21:33:13 2007 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Mon, 3 Dec 2007 21:33:13 +0100 Subject: [LinuxBIOS] [PATCH] v3: Refactoring, northbridgelib.c In-Reply-To: <13426df10712021058o5fa0e2d5wb83820aa289e0a2b@mail.gmail.com> References: <20071127010851.GG9347@greenwood> <13426df10712021058o5fa0e2d5wb83820aa289e0a2b@mail.gmail.com> Message-ID: <20071203203313.GA20788@greenwood> On Sun, Dec 02, 2007 at 10:58:31AM -0800, ron minnich wrote: > Acked-by: Ronald G. Minnich Thanks, r534. Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org From svn at openbios.org Mon Dec 3 21:41:02 2007 From: svn at openbios.org (svn at openbios.org) Date: Mon, 3 Dec 2007 21:41:02 +0100 Subject: [LinuxBIOS] r535 - LinuxBIOSv3/mainboard/emulation/qemu-x86 Message-ID: Author: hailfinger Date: 2007-12-03 21:41:02 +0100 (Mon, 03 Dec 2007) New Revision: 535 Added: LinuxBIOSv3/mainboard/emulation/qemu-x86/initram_printktest.c Modified: LinuxBIOSv3/mainboard/emulation/qemu-x86/Makefile LinuxBIOSv3/mainboard/emulation/qemu-x86/initram.c Log: Ron mentioned he had strange hangs in pll_reset on various targets. This may be due to miscompilation of XIP objects which do not have _MAINBOBJECT defined. This issue was impossible to see on qemu because no such object existed. Introduce initram_printktest.c in the Qemu target, which will test for miscompilation and crash with a descriptive error message. This has been build tested and runtime tested on Qemu, and with my compiler/linker combination it indeed crashes. gcc (GCC) 4.2.1 (SUSE Linux) GNU ld (GNU Binutils) 2.17.50.20070726-14 (SUSE Linux) Trying with gcc-4.1 (GCC) 4.1.3 20070724 (prerelease) (SUSE Linux) and the linker above had exactly the same results. Unless we manage to fix the bug uncovered by this patch, leaving the Qemu target in crashing state is the best thing we can do because this behaviour mirrors the state of all other targets. Ron says: I am comfortable with this. If hardware is broken, qemu should be broken. I avidly wait the fix :-) Signed-off-by: Carl-Daniel Hailfinger Acked-by: Ronald G. Minnich Modified: LinuxBIOSv3/mainboard/emulation/qemu-x86/Makefile =================================================================== --- LinuxBIOSv3/mainboard/emulation/qemu-x86/Makefile 2007-12-03 20:32:53 UTC (rev 534) +++ LinuxBIOSv3/mainboard/emulation/qemu-x86/Makefile 2007-12-03 20:41:02 UTC (rev 535) @@ -28,7 +28,8 @@ # directory and is built from what was auto.c in v2. # -INITRAM_OBJ = $(obj)/mainboard/$(MAINBOARDDIR)/initram.o +INITRAM_OBJ = $(obj)/mainboard/$(MAINBOARDDIR)/initram.o \ + $(obj)/mainboard/$(MAINBOARDDIR)/initram_printktest.o STAGE2_MAINBOARD_OBJ = vga.o Modified: LinuxBIOSv3/mainboard/emulation/qemu-x86/initram.c =================================================================== --- LinuxBIOSv3/mainboard/emulation/qemu-x86/initram.c 2007-12-03 20:32:53 UTC (rev 534) +++ LinuxBIOSv3/mainboard/emulation/qemu-x86/initram.c 2007-12-03 20:41:02 UTC (rev 535) @@ -2,6 +2,7 @@ * This file is part of the LinuxBIOS project. * * Copyright (C) 2007 Stefan Reinauer + * Copyright (C) 2007 Carl-Daniel Hailfinger * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,6 +22,8 @@ #include +int printktest(void); + /* printktest1() is here to increase the likelihood of main() not ending up at * the beginning of the file, so we can check whether the entry point at main() * was honored. @@ -39,6 +42,9 @@ printk(BIOS_INFO, "RAM init code started.\n"); printk(BIOS_INFO, "Nothing to do.\n"); printktest1(); + printk(BIOS_INFO, "Trying absolute call from non-_MAINOBJECT XIP code.\n"); + printktest(); + printk(BIOS_INFO, "Done.\n"); return 0; } Added: LinuxBIOSv3/mainboard/emulation/qemu-x86/initram_printktest.c =================================================================== --- LinuxBIOSv3/mainboard/emulation/qemu-x86/initram_printktest.c (rev 0) +++ LinuxBIOSv3/mainboard/emulation/qemu-x86/initram_printktest.c 2007-12-03 20:41:02 UTC (rev 535) @@ -0,0 +1,31 @@ +/* + * This file is part of the LinuxBIOS project. + * + * Copyright (C) 2007 Carl-Daniel Hailfinger + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include + +int printktest(void) +{ + /* If printk succeeds, it will print the message below. This is not a + * success message after a test, but a success message used as test. + * In case of compiler/linker bugs the printk call is likely to crash. + */ + printk(BIOS_INFO, "Absolute call successful.\n"); + + return 0; +} From c-d.hailfinger.devel.2006 at gmx.net Mon Dec 3 21:43:38 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Mon, 03 Dec 2007 21:43:38 +0100 Subject: [LinuxBIOS] [PATCH] v3: Crash with a descriptive message in case of compiler bugs In-Reply-To: <13426df10712010924j496dbcb2o5f315e272b968c01@mail.gmail.com> References: <475049D4.1020705@gmx.net> <13426df10712010924j496dbcb2o5f315e272b968c01@mail.gmail.com> Message-ID: <47546A7A.9050502@gmx.net> On 01.12.2007 18:24, ron minnich wrote: > I am comfortable with this. If hardware is broken, qemu should be > broken. I avidly wait the fix :-) > > Acked-by: Ronald G. Minnich > Thanks, r535. Regards, Carl-Daniel From Marc.Karasek at Sun.COM Mon Dec 3 21:40:59 2007 From: Marc.Karasek at Sun.COM (Marc Karasek) Date: Mon, 03 Dec 2007 15:40:59 -0500 Subject: [LinuxBIOS] Qemu compile for LinuxBIOSV2 In-Reply-To: References: <47506A1F.8070104@sun.com> <20071203181517.GK9493@cosmic.amd.com> <475447C5.7020406@sun.com> <47545F8F.5090003@gmx.net> <47546480.5070509@sun.com> Message-ID: <475469DB.5030806@sun.com> Will -none really turn it off or just not do a crypto on the ld? /********************* Marc Karasek MTS Sun Microsystems mailto:marc.karasek at sun.com ph:770.360.6415 *********************/ Ed Swierk wrote: > On 12/3/07, Marc Karasek wrote: > >> So this does not look like a ld problem, but an added feature to ld is >> causing us grief. If anyone can figure out how to turn this option off, >> that may fix all of this without any patches... :-) >> > > Passing -Wl,--build-id=none to gcc turns off that ld feature. I > haven't yet tracked down all the gcc invocations where it's needed. > > --Ed > From Marc.Karasek at Sun.COM Mon Dec 3 21:49:27 2007 From: Marc.Karasek at Sun.COM (Marc Karasek) Date: Mon, 03 Dec 2007 15:49:27 -0500 Subject: [LinuxBIOS] Qemu compile for LinuxBIOSV2 In-Reply-To: References: <47506A1F.8070104@sun.com> <20071203181517.GK9493@cosmic.amd.com> <475447C5.7020406@sun.com> <47545F8F.5090003@gmx.net> <47546480.5070509@sun.com> Message-ID: <47546BD7.70002@sun.com> I did a man on ld and it says this about the build-id option --build-id --build-id=style Request creation of ".note.gnu.build-id" ELF note section. The contents of the note are unique bits identifying this linked file. style can be "uuid" to use 128 random bits, "sha1" to use a 160-bit SHA1 hash on the normative parts of the output contents, "md5" to use a 128-bit MD5 hash on the normative parts of the output contents, or "0xhexstring" to use a chosen bit string specified as an even number of hexadecimal dig- its ("-" and ":" characters between digit pairs are ignored). If style is omitted, "sha1" is used. The "md5" and "sha1" styles produces an identifier that is always the same in an identi- cal output file, but will be unique among all nonidentical output files. It is not intended to be compared as a checksum for the file?s contents. A linked file may be changed later by other tools, but the build ID bit string identifying the original linked file does not change. Passing "none" for style disables the setting from any "--build-id" options earlier on the command line. Looks to me like the none option does not turn it off but only clears any prior options set on the command line. Maybe this is a bug in ld in terms of it always being on and you not having to explicitly setting it to turn it on. /********************* Marc Karasek MTS Sun Microsystems mailto:marc.karasek at sun.com ph:770.360.6415 *********************/ Ed Swierk wrote: > On 12/3/07, Marc Karasek wrote: > >> So this does not look like a ld problem, but an added feature to ld is >> causing us grief. If anyone can figure out how to turn this option off, >> that may fix all of this without any patches... :-) >> > > Passing -Wl,--build-id=none to gcc turns off that ld feature. I > haven't yet tracked down all the gcc invocations where it's needed. > > --Ed > From stepan at coresystems.de Mon Dec 3 21:53:21 2007 From: stepan at coresystems.de (Stefan Reinauer) Date: Mon, 3 Dec 2007 21:53:21 +0100 Subject: [LinuxBIOS] Infamous __stack_chk_fail problem. In-Reply-To: <20071203170832.6847.qmail@stuge.se> References: <1196465387.16328.21.camel@biosbreath> <20071130235752.GA9493@cosmic.amd.com> <1196699640.7645.65.camel@biosbreath> <20071203170832.6847.qmail@stuge.se> Message-ID: <20071203205321.GA16781@coresystems.de> * Peter Stuge [071203 18:08]: > On Mon, Dec 03, 2007 at 08:34:00AM -0800, Steve Isaacs wrote: > > I believe that like it or not if you want LinuxBIOS to be widely > > accepted it must be able to demonstrate repeatability. > > Excellent point! I agree with you completely. > > We should definately look at automating the build process and even > build environment, because it is a sensitive component in the build > process, and we should make LB smart enough to build with a build > environment other than the one that starts with /usr/bin/gcc. We already have all this: That's why I developed the LinuxBIOS test system that started producing binary images at a central point: http://qa.linuxbios.org/log_test.php?timestamp=20061109-173426&device=epia-m&vendor=via&manual=true Of course everyone is free to use the same tool chain for all their builds. But for sure, the result can not be good if we try to build every software development and testing process out there into linuxbios. At some point there will always be a special restriction that a commercial vendor will have to make. Like running on certain svn revisions, basically forking, rather than staying on HEAD all the time. > However - I want it to remain optional rather than a requirement, > so that the entry level stays as low as possible for as many as > possible. If someone feels the need for a cross development environment -- there's crosstool. You can easily build RPMs for all kinds of cross compiler versions for all kinds of platforms. It is an interesting project, and we recommend everyone using LinuxBIOS in a commercial environment to use it. But that belongs into the corporate software development process, and not into linuxbios. Just change your target config.lb to your known good tool chain and you're fine. In addition, as a side note: I have not seen any miscompilations with any toolchain of (Open)SUSE Linux since 2003 whereas Redhat/Fedora was troublesome with every second toolchain release. It seems RH/F is quite a bit more "progressive" when it comes down to toolchains. So if you want a stable system, you should also take into consideration that choosing a distribution as experimental as FC8, you will run into such problems. Stefan -- coresystems GmbH ? Brahmsstr. 16 ? D-79104 Freiburg i. Br. Tel.: +49 761 7668825 ? Fax: +49 761 7664613 Email: info at coresystems.de ? http://www.coresystems.de/ Registergericht: Amtsgericht Freiburg ? HRB 7656 Gesch?ftsf?hrer: Stefan Reinauer ? Ust-IdNr.: DE245674866 From eswierk at arastra.com Mon Dec 3 21:55:34 2007 From: eswierk at arastra.com (Ed Swierk) Date: Mon, 3 Dec 2007 12:55:34 -0800 Subject: [LinuxBIOS] Qemu compile for LinuxBIOSV2 In-Reply-To: <47546BD7.70002@sun.com> References: <47506A1F.8070104@sun.com> <20071203181517.GK9493@cosmic.amd.com> <475447C5.7020406@sun.com> <47545F8F.5090003@gmx.net> <47546480.5070509@sun.com> <47546BD7.70002@sun.com> Message-ID: On 12/3/07, Marc Karasek wrote: > Looks to me like the none option does not turn it off but only clears > any prior options set on the command line. If you look at the ld command line (by adding -v to the gcc command line) you will see that gcc adds the --build-id option. So --build-id=none turns it off. --Ed From jakllsch at kollasch.net Mon Dec 3 22:00:23 2007 From: jakllsch at kollasch.net (jakllsch at kollasch.net) Date: Mon, 3 Dec 2007 15:00:23 -0600 Subject: [LinuxBIOS] CK804 interrupt mapping for MSI MS-7135 In-Reply-To: <20071203063327.GT2629@kirkkit.kollasch.net> References: <20071203063327.GT2629@kirkkit.kollasch.net> Message-ID: <20071203210023.GU2629@kirkkit.kollasch.net> On Mon, Dec 03, 2007 at 12:33:28AM -0600, jakllsch at kollasch.net wrote: > Hi, > > > In the mptable.c for various CK804 boards, some settings > are written into the LPC bridge's PCI configuration space. > The comment just before this voodoo leads me to believe > that these registers have something to do with > interrupt mapping. > > I've tried the values from the Asus A8N-E, they work > better than the values I extracted from the stock > bios on the MS-7135. (I think I'm making decent > progress on this board.) > > Anyway, I have an interrupt storm issue, and I have > no idea how to debug it, short of trying all > 79.2 octillion combinations that could > be put in these three registers. > > That or, of course, a holiday miracle of nvidia releasing > chipset documentation. > > But, somewhere between those two extremes may > lie a feasible method. Or at least I can hope. > > Any advice on what these registers should be programmed to? Well, apparently the stock values ... but you have to make sure other things also match stock values. Sorry, for the rant. Jonathan Kollasch -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: not available URL: From stepan at coresystems.de Mon Dec 3 22:02:56 2007 From: stepan at coresystems.de (Stefan Reinauer) Date: Mon, 3 Dec 2007 22:02:56 +0100 Subject: [LinuxBIOS] Infamous __stack_chk_fail problem. In-Reply-To: <1196706742.14496.11.camel@biosbreath> References: <1196465387.16328.21.camel@biosbreath> <20071130235752.GA9493@cosmic.amd.com> <1196699640.7645.65.camel@biosbreath> <20071203170832.6847.qmail@stuge.se> <1196706742.14496.11.camel@biosbreath> Message-ID: <20071203210256.GB16781@coresystems.de> * Steve Isaacs [071203 19:32]: > - Buildrom be enhanced to --optionally-- download and install in a > user's sandbox a toolchain builder. I don't think buildrom is the place for this. It's pretty much out of the scope for the project. Next time a distribution ships a broken glibc, we start adding that, too. If you use a distribution with a broken toolchain, you should visit http://kegel.com/crosstool/ and build a new toolchain _once_. I agree we should have an FAQ entry to point people to crosstool though. > - Problems found in the toolchain builder be fed back to the toolchain > builder project thus satisfying Jordan's point of having a > responsibility to fix the toolset when broken. Crosstool builders often > employ target specific patches when necessary. We also need feedback on our own bugs and issues before or while we start looking in other directions. We have a fully working test system that nobody is using anymore: http://www.linuxbios.org/Distributed_and_Automated_Testsystem If you have supported nodes, that you do not need anymore, please contact me for putting them into the test system. Also, we should try to merge autobuild and buildrom. I never understood why a new tool was build instead of enhancing an already existing one. qa.linuxbios.org is fully using abuild. We drop a couple of potential problems if we start using one solution for building linuxbios. -- coresystems GmbH ? Brahmsstr. 16 ? D-79104 Freiburg i. Br. Tel.: +49 761 7668825 ? Fax: +49 761 7664613 Email: info at coresystems.de ? http://www.coresystems.de/ Registergericht: Amtsgericht Freiburg ? HRB 7656 Gesch?ftsf?hrer: Stefan Reinauer ? Ust-IdNr.: DE245674866 From stepan at coresystems.de Mon Dec 3 22:08:36 2007 From: stepan at coresystems.de (Stefan Reinauer) Date: Mon, 3 Dec 2007 22:08:36 +0100 Subject: [LinuxBIOS] r534 - in LinuxBIOSv3: arch/x86 include lib northbridge/amd/geodelx northbridge/intel/i440bxemulation Message-ID: <20071203210836.GA26515@coresystems.de> * svn at openbios.org [071203 21:32]: > Author: uwe > Date: 2007-12-03 21:32:53 +0100 (Mon, 03 Dec 2007) > New Revision: 534 > > Added: > LinuxBIOSv3/include/northbridgelib.h > LinuxBIOSv3/lib/northbridgelib.c Reading the code this seems to belong to device/pci_device.c and device/device_util.c rather than in lib/? Stefan -- coresystems GmbH ? Brahmsstr. 16 ? D-79104 Freiburg i. Br. Tel.: +49 761 7668825 ? Fax: +49 761 7664613 Email: info at coresystems.de ? http://www.coresystems.de/ Registergericht: Amtsgericht Freiburg ? HRB 7656 Gesch?ftsf?hrer: Stefan Reinauer ? Ust-IdNr.: DE245674866 From uwe at hermann-uwe.de Mon Dec 3 22:10:52 2007 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Mon, 3 Dec 2007 22:10:52 +0100 Subject: [LinuxBIOS] [PATCH] TeleVideo TC7020 support In-Reply-To: <2ba587f0711291934l1981a3aic1ec6dc99bb95d61@mail.gmail.com> References: <2ba587f0711291934l1981a3aic1ec6dc99bb95d61@mail.gmail.com> Message-ID: <20071203211052.GB20788@greenwood> On Thu, Nov 29, 2007 at 07:34:32PM -0800, Kenji Noguchi wrote: > Attached is a patch for TeleVideo TC7020 support. > It should work fine with r2993. Please kindly review. Thanks, see quick review below: > I will see how MythTV performs on this box. DirectFB already runs nicely. Can you document this in the wiki (kernel command line options etc). > Does anyone know if GX1 MPEG decoder is supported by video4linux? Dunno, sorry. Juergen? Oh, if you can, please check the Wake-on-LAN functionality on this board (with vendor BIOS and LinuxBIOS). On the BCOM Winnet100 we're lucky, it works out of the box! Seems to be implemented completely in hardware on that board, so no LinuxBIOS code needed... > Add support for TeleVideo TC7020. > Signed-off-by: Kenji Noguchi > > Index: src/mainboard/televideo/tc7020/Config.lb > =================================================================== > --- src/mainboard/televideo/tc7020/Config.lb (revision 0) > +++ src/mainboard/televideo/tc7020/Config.lb (revision 0) > @@ -0,0 +1,137 @@ > +## > +## This file is part of the LinuxBIOS project. > +## > +## Copyright (C) 2007 Juergen Beisert > +## > +## This program is free software; you can redistribute it and/or modify > +## it under the terms of the GNU General Public License as published by > +## the Free Software Foundation; either version 2 of the License, or > +## (at your option) any later version. > +## > +## This program is distributed in the hope that it will be useful, > +## but WITHOUT ANY WARRANTY; without even the implied warranty of > +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +## GNU General Public License for more details. > +## > +## You should have received a copy of the GNU General Public License > +## along with this program; if not, write to the Free Software > +## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA > +## > + > +if USE_FALLBACK_IMAGE > + default ROM_SECTION_SIZE = FALLBACK_SIZE > + default ROM_SECTION_OFFSET = (ROM_SIZE - FALLBACK_SIZE) > +else > + default ROM_SECTION_SIZE = (ROM_SIZE - FALLBACK_SIZE) > + default ROM_SECTION_OFFSET = 0 > +end > +default CONFIG_ROM_PAYLOAD_START = (0xffffffff - ROM_SIZE + ROM_SECTION_OFFSET + 1) > +default PAYLOAD_SIZE = (ROM_SECTION_SIZE - ROM_IMAGE_SIZE) > +default _ROMBASE = (CONFIG_ROM_PAYLOAD_START + PAYLOAD_SIZE) > +default XIP_ROM_SIZE = 64 * 1024 > +default XIP_ROM_BASE = (_ROMBASE + ROM_IMAGE_SIZE - XIP_ROM_SIZE) > +arch i386 end > +driver mainboard.o > +if HAVE_PIRQ_TABLE > + object irq_tables.o > +end > +makerule ./failover.E > + depends "$(MAINBOARD)/../../../arch/i386/lib/failover.c ./romcc" > + action "./romcc -E -O --label-prefix=failover -I$(TOP)/src -I. $(CPPFLAGS) $(MAINBOARD)/../../../arch/i386/lib/failover.c -o $@" > +end > +makerule ./failover.inc > + depends "$(MAINBOARD)/../../../arch/i386/lib/failover.c ./romcc" > + action "./romcc -O --label-prefix=failover -I$(TOP)/src -I. $(CPPFLAGS) $(MAINBOARD)/../../../arch/i386/lib/failover.c -o $@" > +end > +makerule ./auto.E > + # depends "$(MAINBOARD)/auto.c option_table.h ./romcc" > + depends "$(MAINBOARD)/auto.c ./romcc" > + action "./romcc -E -O -I$(TOP)/src -I. $(CPPFLAGS) $(MAINBOARD)/auto.c -o $@" > +end > +makerule ./auto.inc > + # depends "$(MAINBOARD)/auto.c option_table.h ./romcc" > + depends "$(MAINBOARD)/auto.c ./romcc" > + action "./romcc -O -I$(TOP)/src -I. $(CPPFLAGS) $(MAINBOARD)/auto.c -o $@" > +end > +mainboardinit cpu/x86/16bit/entry16.inc > +mainboardinit cpu/x86/32bit/entry32.inc > +ldscript /cpu/x86/16bit/entry16.lds > +ldscript /cpu/x86/32bit/entry32.lds > +if USE_FALLBACK_IMAGE > + mainboardinit cpu/x86/16bit/reset16.inc > + ldscript /cpu/x86/16bit/reset16.lds > +else > + mainboardinit cpu/x86/32bit/reset32.inc > + ldscript /cpu/x86/32bit/reset32.lds > +end > +mainboardinit arch/i386/lib/cpu_reset.inc > +mainboardinit arch/i386/lib/id.inc > +ldscript /arch/i386/lib/id.lds > +if USE_FALLBACK_IMAGE > + ldscript /arch/i386/lib/failover.lds > + mainboardinit ./failover.inc > +end > +mainboardinit cpu/x86/fpu/enable_fpu.inc > +mainboardinit cpu/amd/model_gx1/cpu_setup.inc > +mainboardinit cpu/amd/model_gx1/gx_setup.inc > +mainboardinit ./auto.inc > + > +dir /pc80 > +config chip.h > + The section below may need smaller updates for your board later, please check what parts of the hardware work or don't work with the current code. (Do you have a wiki account to create a status page? Contact Stefan for an account otherwise). > +chip northbridge/amd/gx1 # Northbridge > + device pci_domain 0 on # PCI domain > + device pci 0.0 on end # Host bridge > + chip southbridge/amd/cs5530 # Southbridge > + device pci 0f.0 on end # Ethernet (onboard) I think this is wrong, here's the lspci you posted a while ago: tv:~# lspci -tvnn -[0000:00]-+-00.0 Cyrix Corporation PCI Master [1078:0001] +-12.0 Cyrix Corporation 5530 Legacy [Kahlua] [1078:0100] +-12.1 Cyrix Corporation 5530 SMI [Kahlua] [1078:0101] +-12.2 Cyrix Corporation 5530 IDE [Kahlua] [1078:0102] +-12.3 Cyrix Corporation 5530 Audio [Kahlua] [1078:0103] +-12.4 Cyrix Corporation 5530 Video [Kahlua] [1078:0104] +-13.0 Compaq Computer Corporation ZFMicro Chipset USB [0e11:a0f8] \-15.0 National Semiconductor Corporation DP83815 (MacPhyter) Ethernet Controller [100b:0020] The 0f.0 line should be removed here. > + device pci 12.0 on # ISA bridge > + chip superio/nsc/pc97317 # Super I/O Can you run the latest version of 'superiotool -dV' on the board (with the vendor BIOS)? I this really a PC97317 on your board, too? > + device pnp 2e.0 on # PS/2 keyboard > + io 0x60 = 0x60 > + io 0x62 = 0x64 > + irq 0x70 = 1 > + end > + device pnp 2e.1 on # PS/2 mouse > + irq 0x70 = 12 > + end > + device pnp 2e.2 on # RTC, Advanced power control (APC) > + io 0x60 = 0x70 > + irq 0x70 = 8 > + end > + device pnp 2e.3 off # Floppy (N/A on this board) Does your board have a floppy connector? > + io 0x60 = 0x3f0 > + irq 0x70 = 6 > + drq 0x74 = 2 > + end > + device pnp 2e.4 on # Parallel port > + io 0x60 = 0x378 > + irq 0x70 = 7 > + end > + device pnp 2e.5 on # COM2 (used for smartcard reader) COM2 doesn't seem to be connected to a smartcard reader on your board, looks like a normal serial port (from the manual). Correct? > + io 0x60 = 0x2f8 > + irq 0x70 = 3 > + end > + device pnp 2e.6 on # COM1 > + io 0x60 = 0x3f8 > + irq 0x70 = 4 > + end > + device pnp 2e.7 on # GPIO > + io 0x60 = 0xe0 > + end > + device pnp 2e.8 on # Power management > + io 0x60 = 0xe8 > + end > + end > + end > + device pci 12.1 off end # SMI > + device pci 12.2 on end # IDE > + device pci 12.3 on end # Audio > + device pci 12.4 on end # VGA (onboard) > + device pci 13.0 on end # USB Maybe add this here: device pci 15.0 on end # Ethernet (onboard) Can you confirm that this device is an onboard NIC? > + register "ide0_enable" = "1" > + register "ide1_enable" = "0" # Not available/needed on this board I assume there's one IDE connector on the board, correct? If you have two (or none?) you could change these values here. > + end > + end > + chip cpu/amd/model_gx1 # CPU > + end > +end > Index: src/mainboard/televideo/tc7020/irq_tables.c > =================================================================== > --- src/mainboard/televideo/tc7020/irq_tables.c (revision 0) > +++ src/mainboard/televideo/tc7020/irq_tables.c (revision 0) > @@ -0,0 +1,49 @@ > +/* > + * This file is part of the LinuxBIOS project. > + * > + * Copyright (C) 2007 Kenji Noguchi > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License as published by > + * the Free Software Foundation; either version 2 of the License, or > + * (at your option) any later version. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, write to the Free Software > + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA > + */ > + > +#include > + > +const struct irq_routing_table intel_irq_routing_table = { > + PIRQ_SIGNATURE, /* u32 signature */ > + PIRQ_VERSION, /* u16 version */ > + 32+16*IRQ_SLOT_COUNT, /* There can be total 3 devices on the bus */ > + 0x00, /* Where the interrupt router lies (bus) */ > + (0x1f<<3)|0x0, /* Where the interrupt router lies (dev) */ This looks incorrect, according to your lspci this should probably be (0x12<<3)|0x0, Did you verify that the PIRQ table works fine etc? > + 0, /* IRQs devoted exclusively to PCI usage */ > + 0x1078, /* Vendor */ > + 0x0001, /* Device */ > + 0, /* Crap (miniport) */ > + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, /* u8 rfu[11] */ > + 0xf, /* u8 checksum. This has to be set to some > + value that would give 0 after the sum of all > + bytes for this structure (including checksum) */ > + { > + /* bus, dev|fn, {link, bitmap}, {link, bitmap}, {link, bitmap}, {link, bitmap}, slot, rfu */ > + {0x00,(0x13<<3)|0x0, {{0x01, 0x0e00}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x00000}}, 0x0, 0x0}, > + {0x00,(0x15<<3)|0x0, {{0x02, 0x0e00}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x00000}}, 0x0, 0x0}, > + {0x00,(0x14<<3)|0x0, {{0x03, 0x0e00}, {0x00, 0x0000}, {0x00, 0x0000}, {0x00, 0x00000}}, 0x0, 0x0}, You don't have a 14.0 PCI device in your lspci, are you sure this last line should be here? You posted a slightly different irq_tables.c in a mail with subject 'Re: [LinuxBIOS] VGA support for Geode GX1/CS5530' a while ago; which one is correct? > + } > +}; > + > +unsigned long write_pirq_routing_table(unsigned long addr) > +{ > + return copy_pirq_routing_table(addr); > +} > + > Index: src/mainboard/televideo/tc7020/Options.lb > =================================================================== > --- src/mainboard/televideo/tc7020/Options.lb (revision 0) > +++ src/mainboard/televideo/tc7020/Options.lb (revision 0) > @@ -0,0 +1,104 @@ > +## > +## This file is part of the LinuxBIOS project. > +## > +## Copyright (C) 2007 Juergen Beisert > +## Copyright (C) 2007 Kenji Noguchi > +## > +## This program is free software; you can redistribute it and/or modify > +## it under the terms of the GNU General Public License as published by > +## the Free Software Foundation; either version 2 of the License, or > +## (at your option) any later version. > +## > +## This program is distributed in the hope that it will be useful, > +## but WITHOUT ANY WARRANTY; without even the implied warranty of > +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +## GNU General Public License for more details. > +## > +## You should have received a copy of the GNU General Public License > +## along with this program; if not, write to the Free Software > +## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA > +## > + > +uses HAVE_MP_TABLE > +uses HAVE_PIRQ_TABLE > +uses USE_FALLBACK_IMAGE > +uses HAVE_FALLBACK_BOOT > +uses HAVE_HARD_RESET > +uses HAVE_OPTION_TABLE > +uses USE_OPTION_TABLE > +uses CONFIG_ROM_PAYLOAD > +uses IRQ_SLOT_COUNT > +uses MAINBOARD > +uses MAINBOARD_VENDOR > +uses MAINBOARD_PART_NUMBER > +uses LINUXBIOS_EXTRA_VERSION > +uses ARCH > +uses FALLBACK_SIZE > +uses STACK_SIZE > +uses HEAP_SIZE > +uses ROM_SIZE > +uses ROM_SECTION_SIZE > +uses ROM_IMAGE_SIZE > +uses ROM_SECTION_SIZE > +uses ROM_SECTION_OFFSET > +uses CONFIG_ROM_PAYLOAD_START > +uses PAYLOAD_SIZE > +uses _ROMBASE > +uses _RAMBASE > +uses XIP_ROM_SIZE > +uses XIP_ROM_BASE > +uses CROSS_COMPILE > +uses CC > +uses HOSTCC > +uses OBJCOPY > +uses DEFAULT_CONSOLE_LOGLEVEL > +uses MAXIMUM_CONSOLE_LOGLEVEL > +uses CONFIG_CONSOLE_SERIAL8250 > +uses TTYS0_BAUD > +uses TTYS0_BASE > +uses TTYS0_LCS > +uses CONFIG_COMPRESSED_PAYLOAD_LZMA > +uses CONFIG_UDELAY_TSC > +uses CONFIG_TSC_X86RDTSC_CALIBRATE_WITH_TIMER2 > +uses CONFIG_VIDEO_MB > +uses CONFIG_SPLASH_GRAPHIC > +uses CONFIG_GX1_VIDEO > +uses CONFIG_GX1_VIDEOMODE > + > +## Enable VGA with a splash screen (only 640x480 to run on most monitors). > +## We want to support up to 1024x768 at 16 so we need 2MiB video memory. > +## Note: Higher resolutions might need faster SDRAM speed. > +default CONFIG_GX1_VIDEO = 1 > +default CONFIG_GX1_VIDEOMODE = 0 > +default CONFIG_SPLASH_GRAPHIC = 1 > +default CONFIG_VIDEO_MB = 2 > + > +default ROM_SIZE = 256 * 1024 > +default MAINBOARD_VENDOR = "TeleVideo" > +default MAINBOARD_PART_NUMBER = "TC7020" > +default HAVE_FALLBACK_BOOT = 1 > +default HAVE_MP_TABLE = 0 > +default HAVE_HARD_RESET = 0 > +default CONFIG_UDELAY_TSC = 1 > +default CONFIG_TSC_X86RDTSC_CALIBRATE_WITH_TIMER2 = 1 > +default HAVE_PIRQ_TABLE = 1 > +default IRQ_SLOT_COUNT = 3 # Soldered NIC, internal USB, mini PCI slot This needs an update if irq_tables.c is changed. > +default HAVE_OPTION_TABLE = 0 > +default ROM_IMAGE_SIZE = 64 * 1024 > +default FALLBACK_SIZE = 128 * 1024 > +default STACK_SIZE = 8 * 1024 > +default HEAP_SIZE = 16 * 1024 > +default USE_OPTION_TABLE = 0 > +default _RAMBASE = 0x00004000 > +default CONFIG_ROM_PAYLOAD = 1 > +default CROSS_COMPILE = "" > +default CC = "$(CROSS_COMPILE)gcc " > +default HOSTCC = "gcc" > +default CONFIG_CONSOLE_SERIAL8250 = 1 > +default TTYS0_BAUD = 115200 > +default TTYS0_BASE = 0x3f8 > +default TTYS0_LCS = 0x3 # 8n1 > +default DEFAULT_CONSOLE_LOGLEVEL = 6 > +default MAXIMUM_CONSOLE_LOGLEVEL = 6 > + > +end > Index: src/mainboard/televideo/tc7020/chip.h > =================================================================== > --- src/mainboard/televideo/tc7020/chip.h (revision 0) > +++ src/mainboard/televideo/tc7020/chip.h (revision 0) > @@ -0,0 +1,26 @@ > +/* > + * This file is part of the LinuxBIOS project. > + * > + * Copyright (C) 2007 Juergen Beisert > + * Copyright (C) 2007 Kenji Noguchi > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License as published by > + * the Free Software Foundation; either version 2 of the License, or > + * (at your option) any later version. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, write to the Free Software > + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA > + */ > + > +extern struct chip_operations mainboard_televideo_tc7020_ops; > + > +struct mainboard_televideo_tc7020_config { > + int nothing; > +}; > Index: src/mainboard/televideo/tc7020/auto.c > =================================================================== > --- src/mainboard/televideo/tc7020/auto.c (revision 0) > +++ src/mainboard/televideo/tc7020/auto.c (revision 0) > @@ -0,0 +1,53 @@ > +/* > + * This file is part of the LinuxBIOS project. > + * > + * Copyright (C) 2007 Juergen Beisert > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License as published by > + * the Free Software Foundation; either version 2 of the License, or > + * (at your option) any later version. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, write to the Free Software > + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA > + */ > + > +#define ASSEMBLY 1 > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include "pc80/serial.c" > +#include "arch/i386/lib/console.c" > +#include "ram/ramtest.c" > +#include "northbridge/amd/gx1/raminit.c" > +#include "superio/nsc/pc97317/pc97317_early_serial.c" > +#include "cpu/x86/bist.h" > + > +#define SERIAL_DEV PNP_DEV(0x2e, PC97317_SP1) > + > +static void main(unsigned long bist) > +{ > + /* Initialize the serial console. */ > + pc97317_enable_serial(SERIAL_DEV, TTYS0_BASE); > + uart_init(); > + console_init(); > + > + /* Halt if there was a built in self test failure. */ > + report_bist_failure(bist); > + > + /* Initialize RAM. */ > + sdram_init(); > + > + /* Check whether RAM works. */ > + /* ram_check(0, 640 * 1024); */ > +} > Index: src/mainboard/televideo/tc7020/mainboard.c > =================================================================== > --- src/mainboard/televideo/tc7020/mainboard.c (revision 0) > +++ src/mainboard/televideo/tc7020/mainboard.c (revision 0) > @@ -0,0 +1,73 @@ > +/* > + * This file is part of the LinuxBIOS project. > + * > + * Copyright (C) 2007 Kenji Noguchi > + * > + * This program is free software; you can redistribute it and/or modify > + * it under the terms of the GNU General Public License as published by > + * the Free Software Foundation; either version 2 of the License, or > + * (at your option) any later version. > + * > + * This program is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with this program; if not, write to the Free Software > + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA > + */ > + > +/* > + * TeleVideo TC7020 specific IRQ wiring > + * USB 00:13.0 -> PINTA -> IRQ 11 > + * NIC 00:15.0 -> PINTB -> IRQ 10 > + * MiniPCI slot 00:14.0 -> PINTC -> IRQ 09 > + */ > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include "chip.h" > + > +/* devices/pci_device.c doesn't have this in a header file */ > +void pci_assign_irqs(unsigned bus, unsigned slot, > + const unsigned char pIntAtoD[4]); > + > +static const unsigned char usb_irq[4] = {11,0,0,0}; > +static const unsigned char nic_irq[4] = {10,0,0,0}; > +static const unsigned char minipci_irq[4] = {9,0,0,0}; > + > +static void pci_routing_fixup(struct device *dev) > +{ > + device_t pdev; > + if (!dev) > + return; > + > + // CS5530A legacy bridge IRQ sterring registers > + pdev = dev_find_slot(0, (0x12 << 3) + 0); > + pci_write_config8(pdev, 0x5c, 0xab); > + pci_write_config8(pdev, 0x5d, 0x09); > + > + pci_assign_irqs(0, 0x13, usb_irq); > + pci_assign_irqs(0, 0x15, nic_irq); > + pci_assign_irqs(0, 0x14, minipci_irq); > +} > + > +static void init(struct device *dev) { > + pci_routing_fixup(dev); > +} Not sure about this part, please check the patch with subject '[LinuxBIOS] [PATH] irq routing on cs5530a/cs5536' which probably does similar things. I haven't yet had the time to review it. Can you confirm that dropping the above code and using that patch works fine? I think we should apply the patch, but this needs a bit of testing as it effects all GX1 boards. After the patch is in svn, all PIRQ stuff should be in irq_tables.c only IMO. > + > +static void enable_dev(struct device *dev) > +{ > + dev->ops->init = init; > +} > + > +struct chip_operations mainboard_televideo_tc7020_ops = { > + CHIP_NAME("TeleVideo TC7020 Mainboard WBTG_Rev1.1") The "WBTG_Rev1.1" is not required here, we don't do that for other boards. Feel free to add it to the wiki page, though. > + .enable_dev = enable_dev, > +}; > + > Index: targets/televideo/tc7020/Config.lb > =================================================================== > --- targets/televideo/tc7020/Config.lb (revision 0) > +++ targets/televideo/tc7020/Config.lb (revision 0) > @@ -0,0 +1,52 @@ > +## > +## This file is part of the LinuxBIOS project. > +## > +## Copyright (C) 2007 Juergen Beisert > +## Copyright (C) 2007 Kenji Noguchi > +## > +## This program is free software; you can redistribute it and/or modify > +## it under the terms of the GNU General Public License as published by > +## the Free Software Foundation; either version 2 of the License, or > +## (at your option) any later version. > +## > +## This program is distributed in the hope that it will be useful, > +## but WITHOUT ANY WARRANTY; without even the implied warranty of > +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +## GNU General Public License for more details. > +## > +## You should have received a copy of the GNU General Public License > +## along with this program; if not, write to the Free Software > +## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA > +## > + > +target tc7020 > +mainboard televideo/tc7020 > + > +option ROM_SIZE = 256 * 1024 > + > +## Enable VGA with a splash screen (only 640x480 to run on most monitors). > +## We want to support up to 1024x768 at 16 so we need 2MiB video memory. > +## Note: Higher resolutions might need faster SDRAM speed. > +option CONFIG_GX1_VIDEO = 1 > +option CONFIG_GX1_VIDEOMODE = 0 > +option CONFIG_SPLASH_GRAPHIC = 1 > +option CONFIG_VIDEO_MB = 2 > + > +option DEFAULT_CONSOLE_LOGLEVEL = 6 > +option MAXIMUM_CONSOLE_LOGLEVEL = 6 > + > +romimage "normal" > + option USE_FALLBACK_IMAGE = 0 > + option ROM_IMAGE_SIZE = 64 * 1024 > + option LINUXBIOS_EXTRA_VERSION = ".0Normal" > + payload /var/tmp/images/filo.elf > +end > + > +romimage "fallback" > + option USE_FALLBACK_IMAGE = 1 > + option ROM_IMAGE_SIZE = 64 * 1024 > + option LINUXBIOS_EXTRA_VERSION = ".0Fallback" > + payload /var/tmp/images/filo.elf > +end > + > +buildrom ./linuxbios.rom ROM_SIZE "normal" "fallback" Looks nice otherwise. As soon as the PIRQ issue is cleared up we can commit. Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org From yasteve at gmail.com Mon Dec 3 22:19:05 2007 From: yasteve at gmail.com (Steve Isaacs) Date: Mon, 03 Dec 2007 13:19:05 -0800 Subject: [LinuxBIOS] Infamous __stack_chk_fail problem. In-Reply-To: <20071203205321.GA16781@coresystems.de> References: <1196465387.16328.21.camel@biosbreath> <20071130235752.GA9493@cosmic.amd.com> <1196699640.7645.65.camel@biosbreath> <20071203170832.6847.qmail@stuge.se> <20071203205321.GA16781@coresystems.de> Message-ID: <1196716745.14496.93.camel@biosbreath> On Mon, 2007-12-03 at 21:53 +0100, Stefan Reinauer wrote: > We already have all this: That's why I developed the LinuxBIOS test > system that started producing binary images at a central point: > > http://qa.linuxbios.org/log_test.php?timestamp=20061109-173426&device=epia-m&vendor=via&manual=true > Did I miss something? Is this something that others can use? btw: the URL didn't point to anything other than a test report. > If someone feels the need for a cross development environment -- there's > crosstool. You can easily build RPMs for all kinds of cross compiler > versions for all kinds of platforms. > > It is an interesting project, and we recommend everyone using LinuxBIOS > in a commercial environment to use it. But that belongs into the > corporate software development process, and not into linuxbios. > I agree, I've used crosstool before on different embedded projects. I suppose my suggestion to integrate crosstool into buildrom doesn't fly. I'll accept that. Give me some time to get a feel for what is LinuxBIOS responsibility and what isn't. > Just change your target config.lb to your known good tool chain and > you're fine. > I did some digging in the Config.lb files and couldn't find an example. Do you have one? Is there any doc on how to control things like CC, CFLAGS and the like? I didn't realize things could be shunted this way. Steve From uwe at hermann-uwe.de Mon Dec 3 22:23:37 2007 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Mon, 3 Dec 2007 22:23:37 +0100 Subject: [LinuxBIOS] LinuxBIOS on Compaq ProLiant 1850R? In-Reply-To: <4754247D.8080107@gmail.com> References: <4754247D.8080107@gmail.com> Message-ID: <20071203212337.GC20788@greenwood> On Mon, Dec 03, 2007 at 10:45:01AM -0500, Corey Osgood wrote: > > I was wondering if LinuxBIOS would work on my Compaq ProLiant 1850R server. The current Compaq BIOS lacks a lot of options. > > > > The system itself is not supported yet, but all the components are. It > wouldn't be very hard to port it. Yep, let's do it. Does the board have a socketed BIOS so you can hot-swap it to have a backup chip stored away safely? > > I identified the following chips on the mainboard: > > > > Super I/O: NSC PC87317 > > Northbridge: Intel FW82443BX > > Southbridge: Intel FW82371EB Looks good, we can support that easily. Please send the output of 'lspci -tvnn' and 'superiotool -dV' from your board (run it as root). Also, please run the 'getpir' tool and send us the irq_tables.c file which is generated by the tool. We can make a patch with that information then, if you're willing to test it on your hardware. > > SCSI: Symbios LSI 53C876 (on-board) > > > > You'd have to extract the original option rom from the bios for this, > then prepend it to linuxbios. Explore around the wiki a bit, there's a > build guide for another board with a SCSI option rom, or else it's the > same process as for a VGA rom. Do you absolutely need the SCSI? See also Peter's post, I'm not sure if/how it may work, but you should be able to boot off of IDE just fine with LinuxBIOS if that helps. > > Video: ATI Rage IIc (on-board) > > > > There's a driver in LB for the rage, I don't know if it'll work with > this particular one or not, but it can't hurt to try. This would mean no Yeah, that would be very interesting to know. > need to use the vendor BIOS. There's a tyan board that uses this, but I > don't know which one(s) off the top of my head. Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org From jordan.crouse at amd.com Mon Dec 3 22:33:48 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Mon, 3 Dec 2007 14:33:48 -0700 Subject: [LinuxBIOS] Infamous __stack_chk_fail problem. In-Reply-To: <20071203210256.GB16781@coresystems.de> References: <1196465387.16328.21.camel@biosbreath> <20071130235752.GA9493@cosmic.amd.com> <1196699640.7645.65.camel@biosbreath> <20071203170832.6847.qmail@stuge.se> <1196706742.14496.11.camel@biosbreath> <20071203210256.GB16781@coresystems.de> Message-ID: <20071203213348.GF23382@cosmic.amd.com> On 03/12/07 22:02 +0100, Stefan Reinauer wrote: > > - Problems found in the toolchain builder be fed back to the toolchain > > builder project thus satisfying Jordan's point of having a > > responsibility to fix the toolset when broken. Crosstool builders often > > employ target specific patches when necessary. > > We also need feedback on our own bugs and issues before or while we > start looking in other directions. We have a fully working test system > that nobody is using anymore: > http://www.linuxbios.org/Distributed_and_Automated_Testsystem > If you have supported nodes, that you do not need anymore, please > contact me for putting them into the test system. Testing isn't the problem here. Nobody has mentioned that this is a problem with LinuxBIOS - buildrom isn't about LinuxBIOS and neither is the Ubuntu stack problem. No amount of automated testing could help this problem, unless you happen to be building on the distribution in question, and its the correct version and everything else. Its great that we have all these tools, but they don't help with this particular problem, and never will. > Also, we should try to merge autobuild and buildrom. I never understood > why a new tool was build instead of enhancing an already existing one. > qa.linuxbios.org is fully using abuild. We drop a couple of potential > problems if we start using one solution for building linuxbios. Let me say this one more time - and I'll put it in capital letters. BUILDROM IS A TOOL. The only way that the LinuxBIOS team supports building LinuxBIOS is from the command line. *THAT* is the solution for building LinuxBIOS. Everything else is an tool for performing some custom task. abuild has its place. buidrom has its place. LBDistro has its place. The responsibilities and functionality of these tools are on the creators and maintainers of those tools, not the LinuxBIOS community as a whole. The only deliverable that this group needs to care about is making LinuxBIOS work. Jordan --- Jordan Crouse Systems Software Development Engineer Advanced Micro Devices, Inc. From stepan at coresystems.de Mon Dec 3 22:36:51 2007 From: stepan at coresystems.de (Stefan Reinauer) Date: Mon, 3 Dec 2007 22:36:51 +0100 Subject: [LinuxBIOS] Infamous __stack_chk_fail problem. In-Reply-To: <1196716745.14496.93.camel@biosbreath> References: <1196465387.16328.21.camel@biosbreath> <20071130235752.GA9493@cosmic.amd.com> <1196699640.7645.65.camel@biosbreath> <20071203170832.6847.qmail@stuge.se> <20071203205321.GA16781@coresystems.de> <1196716745.14496.93.camel@biosbreath> Message-ID: <20071203213651.GA5506@coresystems.de> * Steve Isaacs [071203 22:19]: > Did I miss something? Is this something that others can use? btw: the > URL didn't point to anything other than a test report. In theory, yes. Anyone can hook up a mainboard into the test system. And anyone else can then submit bios images to be tested to those distributed machines. Also, the bios images built with every svn commit are sent to all connected machines, making sure there are no regressions. Unfortunately the system is currently unused when I quickly needed that one bios savior for 39SF020 parts in another project. > I agree, I've used crosstool before on different embedded projects. I > suppose my suggestion to integrate crosstool into buildrom doesn't fly. > I'll accept that. Give me some time to get a feel for what is LinuxBIOS > responsibility and what isn't. Sorry if I sounded bitchy. I don't want to be. Though I think we should try to follow the rules that all good things are simple. > I did some digging in the Config.lb files and couldn't find an example. > Do you have one? Is there any doc on how to control things like CC, > CFLAGS and the like? I didn't realize things could be shunted this way. You can add the following lines to your target///Config.lb: option CC="i386-elf-gcc" # this one is CFLAGS. option CPU_OPT="-O2 -Wl,..." option HOSTCC="gcc" Stefan -- coresystems GmbH ? Brahmsstr. 16 ? D-79104 Freiburg i. Br. Tel.: +49 761 7668825 ? Fax: +49 761 7664613 Email: info at coresystems.de ? http://www.coresystems.de/ Registergericht: Amtsgericht Freiburg ? HRB 7656 Gesch?ftsf?hrer: Stefan Reinauer ? Ust-IdNr.: DE245674866 From uwe at hermann-uwe.de Mon Dec 3 22:39:34 2007 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Mon, 3 Dec 2007 22:39:34 +0100 Subject: [LinuxBIOS] [PATCH] Improved Intel 82371EB (and others) support In-Reply-To: <200711300401.17734.zigamlinar@gmail.com> References: <20071130013925.GA18468@greenwood> <200711300401.17734.zigamlinar@gmail.com> Message-ID: <20071203213934.GD20788@greenwood> On Fri, Nov 30, 2007 at 04:01:16AM +0100, ?iga Mlinar wrote: > > This is required to make all 440BX based boards in v2 almost fully > > supported. Without the patch at least the Super I/O init is never > > performed, thus lots of stuff is broken. > > Works here on Azza/PT-6IBD. With this patch ps2 mouse and ps2 keyboard work. > They didn't before. Great, thanks! Wiki is updated now. Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org From uwe at hermann-uwe.de Mon Dec 3 22:45:36 2007 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Mon, 3 Dec 2007 22:45:36 +0100 Subject: [LinuxBIOS] Infamous __stack_chk_fail problem. In-Reply-To: <20071203213651.GA5506@coresystems.de> References: <1196465387.16328.21.camel@biosbreath> <20071130235752.GA9493@cosmic.amd.com> <1196699640.7645.65.camel@biosbreath> <20071203170832.6847.qmail@stuge.se> <20071203205321.GA16781@coresystems.de> <1196716745.14496.93.camel@biosbreath> <20071203213651.GA5506@coresystems.de> Message-ID: <20071203214536.GE20788@greenwood> On Mon, Dec 03, 2007 at 10:36:51PM +0100, Stefan Reinauer wrote: > You can add the following lines to your > target///Config.lb: > > option CC="i386-elf-gcc" > # this one is CFLAGS. > option CPU_OPT="-O2 -Wl,..." > option HOSTCC="gcc" Yep, this should be in the wiki (FAQ?) if it's not already there. Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org From tw3k.net at gmail.com Mon Dec 3 23:08:57 2007 From: tw3k.net at gmail.com (Forest Dean Feighner) Date: Mon, 03 Dec 2007 17:08:57 -0500 Subject: [LinuxBIOS] OT: Motherboard Message-ID: <47547E79.7090401@gmail.com> Off topic for the list yet apropos. Can anyone recommend an entry level motherboard that has a bios socket rather than one wired to the board? From yasteve at gmail.com Mon Dec 3 23:11:50 2007 From: yasteve at gmail.com (Steve Isaacs) Date: Mon, 03 Dec 2007 14:11:50 -0800 Subject: [LinuxBIOS] Infamous __stack_chk_fail problem. In-Reply-To: <20071203214536.GE20788@greenwood> References: <1196465387.16328.21.camel@biosbreath> <20071130235752.GA9493@cosmic.amd.com> <1196699640.7645.65.camel@biosbreath> <20071203170832.6847.qmail@stuge.se> <20071203205321.GA16781@coresystems.de> <1196716745.14496.93.camel@biosbreath> <20071203213651.GA5506@coresystems.de> <20071203214536.GE20788@greenwood> Message-ID: <1196719910.14496.114.camel@biosbreath> On Mon, 2007-12-03 at 22:45 +0100, Uwe Hermann wrote: > On Mon, Dec 03, 2007 at 10:36:51PM +0100, Stefan Reinauer wrote: > > You can add the following lines to your > > target///Config.lb: > > > > option CC="i386-elf-gcc" > > # this one is CFLAGS. > > option CPU_OPT="-O2 -Wl,..." > > option HOSTCC="gcc" > > Yep, this should be in the wiki (FAQ?) if it's not already there. > > > Uwe. I just now looked and didn't see anything. Of course, being relatively new here, this looks like a forest full of trees to me. I need time for my eyes to adjust. So, I summarize. If I need a consistent and repeatable build I use the toolchain of my choice and use the above to point the LinuxBIOS build to that toolchain. Also, as I suspected -- crosstool is a good choice. btw: this is the info I needed -- just didn't know it. Thanks, Steve From myles at pel.cs.byu.edu Mon Dec 3 23:19:52 2007 From: myles at pel.cs.byu.edu (Myles Watson) Date: Mon, 3 Dec 2007 15:19:52 -0700 Subject: [LinuxBIOS] buildrom patch Message-ID: <2831fecf0712031419p5040a580id2b2f8b67a0f0830@mail.gmail.com> I forgot one more file: packages/busybox/conf/defconfig-serengeti_cheetah-x86_64 There are two options: 1. apply defconfig-busybox.patch, which adds the file 2. apply defconfig-busybox2.patch, which removes the dependency and lets serengeti_cheetah have the same busybox as everyone else The difference is that I'd added tab completion, command editing, and a history of 15 commands to make it easier to mount drives, etc. --- packages/busybox/conf/defconfig 2007-12-03 14:59:55.000000000 -0700 +++ packages/busybox/conf/defconfig-serengeti_cheetah-x86_64 2007-12-03 15:19:50.000000000 -0700 @@ -576,11 +576,11 @@ # CONFIG_FEATURE_SH_EXTRA_QUIET=y CONFIG_FEATURE_SH_STANDALONE_SHELL=y -# CONFIG_FEATURE_COMMAND_EDITING is not set +CONFIG_FEATURE_COMMAND_EDITING=y # CONFIG_FEATURE_COMMAND_EDITING_VI is not set -CONFIG_FEATURE_COMMAND_HISTORY=0 +CONFIG_FEATURE_COMMAND_HISTORY=15 # CONFIG_FEATURE_COMMAND_SAVEHISTORY is not set -# CONFIG_FEATURE_COMMAND_TAB_COMPLETION is not set +CONFIG_FEATURE_COMMAND_TAB_COMPLETION=y # CONFIG_FEATURE_COMMAND_USERNAME_COMPLETION is not set # CONFIG_FEATURE_SH_FANCY_PROMPT is not set Put another way, the difference is about 5K in the ROM Either way is fine with me. Myles Signed-off-by: Myles Watson PS I've since learned to use svn stat, so I'll hopefully forget fewer files in future diffs -------------- next part -------------- A non-text attachment was scrubbed... Name: defconfig-busybox.patch Type: application/octet-stream Size: 17293 bytes Desc: not available URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: defconfig-busybox2.patch Type: application/octet-stream Size: 573 bytes Desc: not available URL: From uwe at hermann-uwe.de Mon Dec 3 23:26:11 2007 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Mon, 3 Dec 2007 23:26:11 +0100 Subject: [LinuxBIOS] OT: Motherboard In-Reply-To: <47547E79.7090401@gmail.com> References: <47547E79.7090401@gmail.com> Message-ID: <20071203222611.GF20788@greenwood> On Mon, Dec 03, 2007 at 05:08:57PM -0500, Forest Dean Feighner wrote: > Off topic for the list yet apropos. > > Can anyone recommend an entry level motherboard that has a bios socket > rather than one wired to the board? Too generic. There are tons of boards with socketed BIOS. Do you want a shiny new boards or something older from the Pentium II/III era etc? http://linuxbios.org/Supported_Motherboards Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org From uwe at hermann-uwe.de Mon Dec 3 23:29:21 2007 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Mon, 3 Dec 2007 23:29:21 +0100 Subject: [LinuxBIOS] Infamous __stack_chk_fail problem. In-Reply-To: <1196719910.14496.114.camel@biosbreath> References: <1196465387.16328.21.camel@biosbreath> <20071130235752.GA9493@cosmic.amd.com> <1196699640.7645.65.camel@biosbreath> <20071203170832.6847.qmail@stuge.se> <20071203205321.GA16781@coresystems.de> <1196716745.14496.93.camel@biosbreath> <20071203213651.GA5506@coresystems.de> <20071203214536.GE20788@greenwood> <1196719910.14496.114.camel@biosbreath> Message-ID: <20071203222921.GG20788@greenwood> On Mon, Dec 03, 2007 at 02:11:50PM -0800, Steve Isaacs wrote: > So, I summarize. If I need a consistent and repeatable build I use the > toolchain of my choice and use the above to point the LinuxBIOS build to > that toolchain. Yep, pretty much. For a product you probably also want to stick with a certain tested svn version of LinuxBIOS (not trunk, which is a moving target). (This doesn't mean trunk is unstable. Any breakage is considered a no-no and is a bug; all commits should keep trunk in a building/working state. But using a specific svn version is still a bit safer) HTH, Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org From tw3k.net at gmail.com Mon Dec 3 23:43:17 2007 From: tw3k.net at gmail.com (Forest Dean Feighner) Date: Mon, 03 Dec 2007 17:43:17 -0500 Subject: [LinuxBIOS] OT: Motherboard In-Reply-To: <20071203222611.GF20788@greenwood> References: <47547E79.7090401@gmail.com> <20071203222611.GF20788@greenwood> Message-ID: <47548685.7070909@gmail.com> Uwe Hermann wrote: > On Mon, Dec 03, 2007 at 05:08:57PM -0500, Forest Dean Feighner wrote: > >> Off topic for the list yet apropos. >> >> Can anyone recommend an entry level motherboard that has a bios socket >> rather than one wired to the board? >> > > Too generic. There are tons of boards with socketed BIOS. > > Do you want a shiny new boards or something older from the > Pentium II/III era etc? > > http://linuxbios.org/Supported_Motherboards > > > Uwe. > Shiny and new but entry level. The link helps I should have looked there first, thanks. From list at Cofundos.org Tue Dec 4 02:09:57 2007 From: list at Cofundos.org (Cofundos.org) Date: Tue, 4 Dec 2007 02:09:57 +0100 (CET) Subject: [LinuxBIOS] Boot Windows Vista with LinuxBIOS on real hardware Message-ID: <20071204010957.7686CDB1106@akswprod0.informatik.uni-leipzig.de> Hi all, The following LinuxBIOS related project was created on Cofundos.org (a platform for describing open-source project ideas and pooling resources for their implementation): *Boot Windows Vista with LinuxBIOS on real hardware* by coresystems Tags: linux LinuxBIOS Windows_Vista Boot BIOS http://Cofundos.org/project.php?id=45 Project description: Installation and booting of Windows Vista on real hardware,.. It has been done in an emulator (Qemu) but never tried on real hardware so far. See http://linuxbios.org/index.php/Booting_Windows_using_LinuxBIOS More info at: http://Cofundos.org/project.php?id=45 You can support this project by commenting it or bidding for its impementation! -- 241 Cofundos users were placing 133 bids (amounting Euro 6185) on 67 projects. *Please help making open-source even more successful* Spread the word about http://Cofundos.org From svn at openbios.org Tue Dec 4 02:15:29 2007 From: svn at openbios.org (svn at openbios.org) Date: Tue, 4 Dec 2007 02:15:29 +0100 Subject: [LinuxBIOS] r2996 - trunk/LinuxBIOSv2/src/mainboard/supermicro/h8dmr Message-ID: Author: ward Date: 2007-12-04 02:15:29 +0100 (Tue, 04 Dec 2007) New Revision: 2996 Modified: trunk/LinuxBIOSv2/src/mainboard/supermicro/h8dmr/Config.lb Log: Enable vga option rom support for 1MB rom chip, which is what the h8dmr ships with (trivial). Signed-off-by: Ward Vandewege Acked-by: Ward Vandewege Modified: trunk/LinuxBIOSv2/src/mainboard/supermicro/h8dmr/Config.lb =================================================================== --- trunk/LinuxBIOSv2/src/mainboard/supermicro/h8dmr/Config.lb 2007-12-02 19:03:23 UTC (rev 2995) +++ trunk/LinuxBIOSv2/src/mainboard/supermicro/h8dmr/Config.lb 2007-12-04 01:15:29 UTC (rev 2996) @@ -339,11 +339,11 @@ device pci 5.1 on end # SATA 1 device pci 5.2 on end # SATA 2 device pci 6.0 on # PCI -# chip drivers/pci/onboard -# device pci 6.0 on end + chip drivers/pci/onboard + device pci 6.0 on end + register "rom_address" = "0xfff00000" #for 1M # register "rom_address" = "0xfff80000" #for 512K - # register "rom_address" = "0xfff00000" #for 1M - # end + end end device pci 6.1 on end # AZA device pci 8.0 on end # NIC From c-d.hailfinger.devel.2006 at gmx.net Tue Dec 4 03:39:58 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Tue, 04 Dec 2007 03:39:58 +0100 Subject: [LinuxBIOS] [PATCH] v3: fix absolute calls from initram Message-ID: <4754BDFE.6060203@gmx.net> Absolute calls from initram were only working from the file which had _MAINOBJECT #defined. Calls from all other files ended up in nirvana because the compiler was not able to calculate the address of the wrapper for the absolute call. The linker tried, but failed miserably. Use the -combine flag and compile all of initram at once. This enables GCC to calculate the address of the abscall wrapper, resulting in working code. Segher Boessenkool thinks the patched code works only by accident because GCC has no way to specify generation of XIP code. According to him, future GCC versions or other circumstances may break the code. While this patch makes code work for now, it does NOT check whether the generated code tries to write to memory outside the stack (general writable data). That will of course fail, but I hope porters are smart enough to avoid that. Signed-off-by: Carl-Daniel Hailfinger Index: LinuxBIOSv3-xiptest-working/mainboard/adl/msm800sev/Makefile =================================================================== --- LinuxBIOSv3-xiptest-working/mainboard/adl/msm800sev/Makefile (revision 535) +++ LinuxBIOSv3-xiptest-working/mainboard/adl/msm800sev/Makefile (working copy) @@ -21,10 +21,10 @@ STAGE0_MAINBOARD_OBJ := $(obj)/mainboard/$(MAINBOARDDIR)/stage1.o -INITRAM_OBJ = $(obj)/mainboard/$(MAINBOARDDIR)/initram.o \ - $(obj)/northbridge/amd/geodelx/raminit.o \ - $(obj)/southbridge/amd/cs5536/smbus_initram.o \ - $(obj)/arch/x86/geodelx/geodelx.o +INITRAM_OBJ = $(src)/mainboard/$(MAINBOARDDIR)/initram.c \ + $(src)/northbridge/amd/geodelx/raminit.c \ + $(src)/southbridge/amd/cs5536/smbus_initram.c \ + $(src)/arch/x86/geodelx/geodelx.c STAGE2_MAINBOARD_OBJ = Index: LinuxBIOSv3-xiptest-working/mainboard/amd/norwich/Makefile =================================================================== --- LinuxBIOSv3-xiptest-working/mainboard/amd/norwich/Makefile (revision 535) +++ LinuxBIOSv3-xiptest-working/mainboard/amd/norwich/Makefile (working copy) @@ -21,10 +21,10 @@ STAGE0_MAINBOARD_OBJ := $(obj)/mainboard/$(MAINBOARDDIR)/stage1.o -INITRAM_OBJ = $(obj)/mainboard/$(MAINBOARDDIR)/initram.o \ - $(obj)/northbridge/amd/geodelx/raminit.o \ - $(obj)/southbridge/amd/cs5536/smbus_initram.o \ - $(obj)/arch/x86/geodelx/geodelx.o +INITRAM_OBJ = $(src)/mainboard/$(MAINBOARDDIR)/initram.c \ + $(src)/northbridge/amd/geodelx/raminit.c \ + $(src)/southbridge/amd/cs5536/smbus_initram.c \ + $(src)/arch/x86/geodelx/geodelx.c STAGE2_MAINBOARD_OBJ = Index: LinuxBIOSv3-xiptest-working/mainboard/artecgroup/dbe61/Makefile =================================================================== --- LinuxBIOSv3-xiptest-working/mainboard/artecgroup/dbe61/Makefile (revision 535) +++ LinuxBIOSv3-xiptest-working/mainboard/artecgroup/dbe61/Makefile (working copy) @@ -21,8 +21,8 @@ STAGE0_MAINBOARD_OBJ := $(obj)/mainboard/$(MAINBOARDDIR)/stage1.o -INITRAM_OBJ = $(obj)/mainboard/$(MAINBOARDDIR)/initram.o \ - $(obj)/arch/x86/geodelx/geodelx.o +INITRAM_OBJ = $(src)/mainboard/$(MAINBOARDDIR)/initram.c \ + $(src)/arch/x86/geodelx/geodelx.c STAGE2_MAINBOARD_OBJ = Index: LinuxBIOSv3-xiptest-working/mainboard/pcengines/alix1c/Makefile =================================================================== --- LinuxBIOSv3-xiptest-working/mainboard/pcengines/alix1c/Makefile (revision 535) +++ LinuxBIOSv3-xiptest-working/mainboard/pcengines/alix1c/Makefile (working copy) @@ -21,9 +21,9 @@ STAGE0_MAINBOARD_OBJ := $(obj)/mainboard/$(MAINBOARDDIR)/stage1.o -INITRAM_OBJ = $(obj)/mainboard/$(MAINBOARDDIR)/initram.o \ - $(obj)/northbridge/amd/geodelx/raminit.o \ - $(obj)/arch/x86/geodelx/geodelx.o +INITRAM_OBJ = $(src)/mainboard/$(MAINBOARDDIR)/initram.c \ + $(src)/northbridge/amd/geodelx/raminit.c \ + $(src)/arch/x86/geodelx/geodelx.c STAGE2_MAINBOARD_OBJ = Index: LinuxBIOSv3-xiptest-working/mainboard/emulation/qemu-x86/Makefile =================================================================== --- LinuxBIOSv3-xiptest-working/mainboard/emulation/qemu-x86/Makefile (revision 535) +++ LinuxBIOSv3-xiptest-working/mainboard/emulation/qemu-x86/Makefile (working copy) @@ -28,8 +28,8 @@ # directory and is built from what was auto.c in v2. # -INITRAM_OBJ = $(obj)/mainboard/$(MAINBOARDDIR)/initram.o \ - $(obj)/mainboard/$(MAINBOARDDIR)/initram_printktest.o +INITRAM_OBJ = $(src)/mainboard/$(MAINBOARDDIR)/initram.c \ + $(src)/mainboard/$(MAINBOARDDIR)/initram_printktest.c STAGE2_MAINBOARD_OBJ = vga.o Index: LinuxBIOSv3-xiptest-working/Rules.make =================================================================== --- LinuxBIOSv3-xiptest-working/Rules.make (revision 535) +++ LinuxBIOSv3-xiptest-working/Rules.make (working copy) @@ -78,13 +78,3 @@ $(Q)printf " CC $(subst $(shell pwd)/,,$(@))\n" $(Q)$(CC) $(INITCFLAGS) -c $< -o $@ -# -# RAM initialization code can not be linked at a specific address, -# hence it has to be executed in place (XIP) position independently. -# - -$(obj)/%_xip.o: $(src)/%.c - $(Q)mkdir -p $(dir $@) - $(Q)printf " CC $(subst $(shell pwd)/,,$(@)) (XIP)\n" - $(Q)$(CC) $(INITCFLAGS) -D_SHARED -fPIE -c $< -o $@ - Index: LinuxBIOSv3-xiptest-working/arch/x86/stage1.c =================================================================== --- LinuxBIOSv3-xiptest-working/arch/x86/stage1.c (revision 535) +++ LinuxBIOSv3-xiptest-working/arch/x86/stage1.c (working copy) @@ -137,17 +137,17 @@ // find first initram if (check_normal_boot_flag()) { printk(BIOS_DEBUG, "Choosing normal boot.\n"); - ret = execute_in_place(&archive, "normal/initram.o/segment0"); + ret = execute_in_place(&archive, "normal/initram/segment0"); } else { printk(BIOS_DEBUG, "Choosing fallback boot.\n"); - ret = execute_in_place(&archive, "fallback/initram.o/segment0"); + ret = execute_in_place(&archive, "fallback/initram/segment0"); /* Try a normal boot if fallback doesn't exist in the lar. * TODO: There are other ways to do this. * It could be ifdef or the boot flag could be forced. */ if (ret) { printk(BIOS_DEBUG, "Fallback failed. Try normal boot\n"); - ret = execute_in_place(&archive, "normal/initram.o/segment0"); + ret = execute_in_place(&archive, "normal/initram/segment0"); } } Index: LinuxBIOSv3-xiptest-working/arch/x86/Makefile =================================================================== --- LinuxBIOSv3-xiptest-working/arch/x86/Makefile (revision 535) +++ LinuxBIOSv3-xiptest-working/arch/x86/Makefile (working copy) @@ -36,7 +36,7 @@ ROM_SIZE := $(shell expr $(CONFIG_LINUXBIOS_ROMSIZE_KB) \* 1024) -LARFILES := nocompress:normal/initram.o normal/stage2.o nocompress:normal/option_table +LARFILES := nocompress:normal/initram normal/stage2.o nocompress:normal/option_table ifneq ($(CONFIG_PAYLOAD_NONE),y) LARFILES += normal/payload endif @@ -57,11 +57,11 @@ COMPRESSFLAG := -C nrv2b endif -$(obj)/linuxbios.rom $(obj)/linuxbios.map: $(obj)/linuxbios.bootblock $(obj)/util/lar/lar lzma nrv2b $(obj)/linuxbios.initram.o $(obj)/linuxbios.stage2.o $(obj)/option_table +$(obj)/linuxbios.rom $(obj)/linuxbios.map: $(obj)/linuxbios.bootblock $(obj)/util/lar/lar lzma nrv2b $(obj)/linuxbios.initram $(obj)/linuxbios.stage2.o $(obj)/option_table $(Q)rm -rf $(obj)/lar.tmp $(Q)mkdir $(obj)/lar.tmp $(Q)mkdir $(obj)/lar.tmp/normal - $(Q)cp $(obj)/linuxbios.initram.o $(obj)/lar.tmp/normal/initram.o + $(Q)cp $(obj)/linuxbios.initram $(obj)/lar.tmp/normal/initram $(Q)cp $(obj)/linuxbios.stage2.o $(obj)/lar.tmp/normal/stage2.o $(Q)cp $(obj)/option_table $(obj)/lar.tmp/normal/option_table ifeq ($(CONFIG_PAYLOAD_NONE),y) @@ -232,12 +232,14 @@ $(Q)printf " AS $(subst $(shell pwd)/,,$(@))\n" $(Q)$(AS) $(obj)/arch/x86/stage0_asm.s -o $@ -$(obj)/linuxbios.initram.o $(obj)/linuxbios.initram.map: $(obj)/stage0.init $(obj)/stage0-prefixed.o $(patsubst %.o,%_xip.o,$(INITRAM_OBJ)) +$(obj)/linuxbios.initram $(obj)/linuxbios.initram.map: $(obj)/stage0.init $(obj)/stage0-prefixed.o $(INITRAM_OBJ) + $(Q)printf " CC $(subst $(shell pwd)/,,$(@)) (XIP)\n" + $(Q)$(CC) $(INITCFLAGS) -D_SHARED -fPIE -c -combine $(INITRAM_OBJ) -o $(obj)/linuxbios.initram_partiallylinked.o $(Q)# initram links against stage0 $(Q)printf " LD $(subst $(shell pwd)/,,$(@))\n" $(Q)$(LD) -Ttext 0 --entry main -N -R $(obj)/stage0-prefixed.o \ - $(patsubst %.o,%_xip.o,$(INITRAM_OBJ)) -o $(obj)/linuxbios.initram.o + $(obj)/linuxbios.initram_partiallylinked.o -o $(obj)/linuxbios.initram $(Q)printf " NM $(subst $(shell pwd)/,,$(@))\n" - $(Q)$(NM) $(obj)/linuxbios.initram.o | sort -u > $(obj)/linuxbios.initram.map + $(Q)$(NM) $(obj)/linuxbios.initram | sort -u > $(obj)/linuxbios.initram.map endif From c-d.hailfinger.devel.2006 at gmx.net Tue Dec 4 03:42:19 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Tue, 04 Dec 2007 03:42:19 +0100 Subject: [LinuxBIOS] [PATCH] v3: reorder rules in mainboard/*/*/Makefile In-Reply-To: <20071129102340.GB6355@coresystems.de> References: <474CB45A.6040007@gmx.net> <20071129102340.GB6355@coresystems.de> Message-ID: <4754BE8B.30409@gmx.net> On 29.11.2007 11:23, Stefan Reinauer wrote: > * Carl-Daniel Hailfinger [071128 01:20]: > >> Reorder the rules in mainboard/*/*/Makefile so their order is identical >> across all of these makefiles. The rules are now in order of execution >> during boot, that is: >> STAGE0_MAINBOARD_OBJ >> INITRAM_OBJ >> STAGE2_MAINBOARD_OBJ >> As added benefit, mainboard makefiles are now almost identical. >> >> Signed-off-by: Carl-Daniel Hailfinger >> > > While you are at it, could you also change the _OBJ collections to > gather source files instead? > > In case of initram, the filenames in INITRAM_OBJ are changed on the fly, > so that's misleading. Generating a list of source files looks clearer, > and can accordingly replaced when being used > $(patsubst %.c,$(obj)/%_xip.o,$(INITRAM_SOURCE)) > Something similar was necessary anyway in the patch that fixes absolute calls from initram. Regards, Carl-Daniel From peter at stuge.se Tue Dec 4 03:44:46 2007 From: peter at stuge.se (Peter Stuge) Date: Tue, 4 Dec 2007 03:44:46 +0100 Subject: [LinuxBIOS] Qemu compile for LinuxBIOSV2 In-Reply-To: <47544545.7060904@sun.com> References: <47506A1F.8070104@sun.com> <47544545.7060904@sun.com> Message-ID: <20071204024446.8642.qmail@stuge.se> On Mon, Dec 03, 2007 at 01:04:53PM -0500, Marc Karasek wrote: > BTW: Is this patch associated with the thread about qemu and the > compilers? No, that thread is all about v3 growing pains. //Peter From peter at stuge.se Tue Dec 4 04:03:09 2007 From: peter at stuge.se (Peter Stuge) Date: Tue, 4 Dec 2007 04:03:09 +0100 Subject: [LinuxBIOS] [PATCH] v3: fix absolute calls from initram In-Reply-To: <4754BDFE.6060203@gmx.net> References: <4754BDFE.6060203@gmx.net> Message-ID: <20071204030309.12105.qmail@stuge.se> On Tue, Dec 04, 2007 at 03:39:58AM +0100, Carl-Daniel Hailfinger wrote: > - ret = execute_in_place(&archive, "normal/initram.o/segment0"); > + ret = execute_in_place(&archive, "normal/initram/segment0"); This seems to have snuck in from another patch? //Peter From c-d.hailfinger.devel.2006 at gmx.net Tue Dec 4 04:12:39 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Tue, 04 Dec 2007 04:12:39 +0100 Subject: [LinuxBIOS] [PATCH] v3: fix absolute calls from initram In-Reply-To: <20071204030309.12105.qmail@stuge.se> References: <4754BDFE.6060203@gmx.net> <20071204030309.12105.qmail@stuge.se> Message-ID: <4754C5A7.101@gmx.net> On 04.12.2007 04:03, Peter Stuge wrote: > On Tue, Dec 04, 2007 at 03:39:58AM +0100, Carl-Daniel Hailfinger wrote: > >> - ret = execute_in_place(&archive, "normal/initram.o/segment0"); >> + ret = execute_in_place(&archive, "normal/initram/segment0"); >> > > This seems to have snuck in from another patch? > Yes and no. I sent another patch which changes these lines in the same way, but this change made changing names necessary anyway, so I decided to incorporate that change. Btw, the "remove .o suffix during lar parsing" patch is still pending, but I feel that it may not be entirely correct from a conceptual standpoint (code-wise it is fine, though), and removing the .o suffix here is just the natural way of handling the changed compilation. It's not an object anyway. Regards, Carl-Daniel From corey.osgood at gmail.com Tue Dec 4 05:16:37 2007 From: corey.osgood at gmail.com (Corey Osgood) Date: Mon, 03 Dec 2007 23:16:37 -0500 Subject: [LinuxBIOS] [PATCH] v3: fix absolute calls from initram In-Reply-To: <4754BDFE.6060203@gmx.net> References: <4754BDFE.6060203@gmx.net> Message-ID: <4754D4A5.3030800@gmail.com> Carl-Daniel Hailfinger wrote: > Absolute calls from initram were only working from the file which had > _MAINOBJECT #defined. Calls from all other files ended up in nirvana > because the compiler was not able to calculate the address of the > wrapper for the absolute call. The linker tried, but failed miserably. > Use the -combine flag and compile all of initram at once. This enables > GCC to calculate the address of the abscall wrapper, resulting in > working code. > > Segher Boessenkool thinks the patched code works only by accident > because GCC has no way to specify generation of XIP code. According to > him, future GCC versions or other circumstances may break the code. > > While this patch makes code work for now, it does NOT check whether the > generated code tries to write to memory outside the stack (general > writable data). That will of course fail, but I hope porters are smart > enough to avoid that. > Great work tracking this down! This is okay for now, but we need to look for a better solution in the future. Counting on porters who may or may not remember this discussion to avoid something isn't good future-proofing. > Signed-off-by: Carl-Daniel Hailfinger I've attached a QEMU bootlog, it seems to make the calls to the right places, but still won't boot FILO. Per IRC, I won't ack at the moment until more people can test, but it does look good to me :) -Corey -------------- next part -------------- A non-text attachment was scrubbed... Name: qemu-lb.log Type: text/x-log Size: 32609 bytes Desc: not available URL: From uwe at hermann-uwe.de Tue Dec 4 06:28:04 2007 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Tue, 4 Dec 2007 06:28:04 +0100 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <20071203182927.GB23382@cosmic.amd.com> References: <20071203170024.4989.qmail@stuge.se> <017601c835d8$02a2a240$480110ac@chimp> <20071203182927.GB23382@cosmic.amd.com> Message-ID: <20071204052804.GH20788@greenwood> On Mon, Dec 03, 2007 at 11:29:27AM -0700, Jordan Crouse wrote: > > I think it's more important to figure out how we really want to configure > > LinuxBIOS (it seems to be a large hurdle for newbies), not buildrom. > > Agreed - being able to do these things easily with v3 is a priority. > We have to think about what we would want to control externally, and then > make those knobs easy to turn. Isn't that easy in v3 already? You just use / modify defconfig files as with the kernel. Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org From dawnlight at lavabit.com Tue Dec 4 11:12:27 2007 From: dawnlight at lavabit.com (Dawn Light) Date: Tue, 4 Dec 2007 10:12:27 +0000 Subject: [LinuxBIOS] Abit KN9 Ultra - output of 'lspci -tvnn', 'superiotool -dV' and 'flashrom -V' In-Reply-To: <20071111222416.GG10268@greenwood> References: <200711112122.36578.dawnlight@lavabit.com> <20071111222416.GG10268@greenwood> Message-ID: <200712041012.27558.dawnlight@lavabit.com> box0:/home/dawn/bios# flashrom -wvV backup-original.bin Calibrating delay loop... 742M loops per second. OK. No LinuxBIOS table found. Found chipset "NVIDIA MCP55", enabling flash write... OK. Probing for Am29F040B, 512 KB probe_29f040b: id1 0x49, id2 0x4d Probing for Am29LV040B, 512 KB probe_29f040b: id1 0x49, id2 0x4d Probing for Am29F016D, 2048 KB probe_29f040b: id1 0xff, id2 0xff Probing for AE49F2008, 256 KB probe_jedec: id1 0x9d, id2 0x6e Probing for At29C040A, 512 KB probe_jedec: id1 0x9d, id2 0x6e Probing for At29C020, 256 KB probe_jedec: id1 0x9d, id2 0x6e Probing for MBM29F400TC, 512 KB probe_m29f400bt: id1 0x49, id2 0x44 Probing for MX29F002, 256 KB probe_29f002: id1 0x9d, id2 0x6e Probing for MX25L4005, 512 KB generic_spi_command called, but no SPI chipset detected Probing for SST29EE020A, 256 KB probe_jedec: id1 0x9d, id2 0x6e Probing for SST28SF040A, 512 KB probe_28sf040: id1 0x49, id2 0x4d Probing for SST39SF010A, 128 KB probe_jedec: id1 0x9d, id2 0x6e Probing for SST39SF020A, 256 KB probe_jedec: id1 0x9d, id2 0x6e Probing for SST39SF040, 512 KB probe_jedec: id1 0x9d, id2 0x6e Probing for SST39VF020, 256 KB probe_jedec: id1 0x9d, id2 0x6e Probing for SST49LF040B, 512 KB probe_jedec: id1 0x9d, id2 0x6e Probing for SST49LF040, 512 KB probe_jedec: id1 0x9d, id2 0x6e Probing for SST49LF020A, 256 KB probe_jedec: id1 0x9d, id2 0x6e Probing for SST49LF080A, 1024 KB probe_jedec: id1 0xff, id2 0xff Probing for SST49LF002A/B, 256 KB probe_jedec: id1 0x9d, id2 0x6e Probing for SST49LF003A/B, 384 KB probe_jedec: id1 0x9d, id2 0x6e Probing for SST49LF004A/B, 512 KB probe_jedec: id1 0x9d, id2 0x6e Probing for SST49LF008A, 1024 KB probe_jedec: id1 0xff, id2 0xff Probing for SST49LF004C, 512 KB probe_49lfxxxc: id1 0x49, id2 0x4d Probing for SST49LF008C, 1024 KB probe_49lfxxxc: id1 0xff, id2 0xff Probing for SST49LF016C, 2048 KB probe_49lfxxxc: id1 0xff, id2 0xff Probing for SST49LF160C, 2048 KB probe_49lfxxxc: id1 0xff, id2 0xff Probing for Pm49FL002, 256 KB probe_jedec: id1 0x9d, id2 0x6e Probing for Pm49FL004, 512 KB probe_jedec: id1 0x9d, id2 0x6e Pm49FL004 found at physical address 0xfff80000. Flash part is Pm49FL004 (512 KB). Flash image seems to be a legacy BIOS. Disabling checks. Programming page: 0007 at address: 0x00070000 Verifying flash... address: 0x00000004 FAILED! box0:/home/dawn/bios# On Sunday 11 November 2007 22:24, Uwe Hermann wrote: > Hi, > > Looks good, please try attached patch for a first run as soon as you > have a verified backup ROM chip stored away safely, and a null-modem > cable to get the serial debugging output from LinuxBIOS. > > After applying the patch with > > patch -p0 < *.patch > > in the LinuxBIOSv2 directory, you can build a LinuxBIOS image like this: > > cd targets && ./buildtarget msi/ms7260 && cd msi/ms7260/ms7260 && make > > (Before doing that, build a FILO payload, see http://linuxbios.org/FILO, > and place it in /tmp/filo.elf) > > The resulting image is called linuxbios.rom and can be flashed with > flashrom like this: > > $ flashrom -wv linuxbios.rom > > (WARNING: This will OVERWRITE your current BIOS! Make sure you have backups!) > > > Please post the full boot log (LinuxBIOS and Linux) here. You can > capture is via minicom, for example. > > http://linuxbios.org/FAQ#How_do_I_use_a_null-modem_cable_to_get_LinuxBIOS_debugging_output_over_a_serial_port.3F > > > Uwe. -- Dawn Light ??? ??? 050-7966664 From uwe at hermann-uwe.de Tue Dec 4 12:10:07 2007 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Tue, 4 Dec 2007 12:10:07 +0100 Subject: [LinuxBIOS] r534 - in LinuxBIOSv3: arch/x86 include lib northbridge/amd/geodelx northbridge/intel/i440bxemulation In-Reply-To: <20071203210836.GA26515@coresystems.de> References: <20071203210836.GA26515@coresystems.de> Message-ID: <20071204111006.GA10762@greenwood> On Mon, Dec 03, 2007 at 10:08:36PM +0100, Stefan Reinauer wrote: > * svn at openbios.org [071203 21:32]: > > Author: uwe > > Date: 2007-12-03 21:32:53 +0100 (Mon, 03 Dec 2007) > > New Revision: 534 > > > > Added: > > LinuxBIOSv3/include/northbridgelib.h > > LinuxBIOSv3/lib/northbridgelib.c > > Reading the code this seems to belong to device/pci_device.c and > device/device_util.c rather than in lib/? Good point. Patch sent with other subject. Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org From uwe at hermann-uwe.de Tue Dec 4 12:11:28 2007 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Tue, 4 Dec 2007 12:11:28 +0100 Subject: [LinuxBIOS] [PATCH] Move northbridgelib.c code to pci_device.c Message-ID: <20071204111128.GB10762@greenwood> See patch. Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org -------------- next part -------------- A non-text attachment was scrubbed... Name: v2_move_northbridgelib_code.patch Type: text/x-diff Size: 9542 bytes Desc: not available URL: From stepan at coresystems.de Tue Dec 4 12:23:04 2007 From: stepan at coresystems.de (Stefan Reinauer) Date: Tue, 4 Dec 2007 12:23:04 +0100 Subject: [LinuxBIOS] [PATCH] Move northbridgelib.c code to pci_device.c In-Reply-To: <20071204111128.GB10762@greenwood> References: <20071204111128.GB10762@greenwood> Message-ID: <20071204112304.GA9165@coresystems.de> * Uwe Hermann [071204 12:11]: > Move the code from northbridgelib.c to pci_device.c. lovely! > Signed-off-by: Uwe Hermann Acked-by: Stefan Reinauer -- coresystems GmbH ? Brahmsstr. 16 ? D-79104 Freiburg i. Br. Tel.: +49 761 7668825 ? Fax: +49 761 7664613 Email: info at coresystems.de ? http://www.coresystems.de/ Registergericht: Amtsgericht Freiburg ? HRB 7656 Gesch?ftsf?hrer: Stefan Reinauer ? Ust-IdNr.: DE245674866 From yasteve at gmail.com Tue Dec 4 17:33:24 2007 From: yasteve at gmail.com (Steve Isaacs) Date: Tue, 04 Dec 2007 08:33:24 -0800 Subject: [LinuxBIOS] Help with meaning of config options. Message-ID: <1196786004.32101.3.camel@biosbreath> When I look at the options passed to the compiler on the command line I see the following: -DCONFIG_MAX_CPUS='4' -DCONFIG_MAX_PHYSICAL_CPUS='2' -DCONFIG_LOGICAL_CPUS='1' Can someone help me understand what the difference between these is? I'm working with two dual core opterons and this doesn't seem right to me. Steve From heino.goldenstein at t-online.de Tue Dec 4 18:00:48 2007 From: heino.goldenstein at t-online.de (Heino Goldenstein) Date: Tue, 4 Dec 2007 18:00:48 +0100 Subject: [LinuxBIOS] flashrom on ASUS P3B-F with M29F002 or 39SF020A Message-ID: <200712041800.48581.heino.goldenstein@t-online.de> Hello, I like to play with an ASUS P3B-F lingering around. Neither the original (M29F002) nor an replacement Flashchip (39SF020A) is recognized. According the documentation this should be supported. The flashrom from flashrom-0-0.5.20071118svn2967.fc8.i386.rpm provides this output: Calibrating delay loop... OK. No LinuxBIOS table found. Found chipset "PIIX4/PIIX4E/PIIX4M", enabling flash write... OK. No EEPROM/flash device found. A recompile from LinuxBIOSv2-2994.tar.bz2 reveals the same. The result of probe_jedec seems flaky. Either I do something wrong or there is a bug. Is there any advise how to resolve this? Tjuess Heino # lspci 00:00.0 Host bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 03) 00:01.0 PCI bridge: Intel Corporation 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03) 00:04.0 ISA bridge: Intel Corporation 82371AB/EB/MB PIIX4 ISA (rev 02) 00:04.1 IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01) 00:04.2 USB Controller: Intel Corporation 82371AB/EB/MB PIIX4 USB (rev 01) 00:04.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 02) # lspci -n 00:00.0 0600: 8086:7190 (rev 03) 00:01.0 0604: 8086:7191 (rev 03) 00:04.0 0601: 8086:7110 (rev 02) 00:04.1 0101: 8086:7111 (rev 01) 00:04.2 0c03: 8086:7112 (rev 01) 00:04.3 0680: 8086:7113 (rev 02) # flashrom -V Calibrating delay loop... 153M loops per second. OK. No LinuxBIOS table found. Found chipset "PIIX4/PIIX4E/PIIX4M", enabling flash write... OK. Probing for Am29F040B, 512 KB probe_29f040b: id1 0x24, id2 0x2a ... Probing for MX25L4005, 512 KB generic_spi_command called, but no SPI chipset detected ... Probing for SST39SF020A, 256 KB probe_jedec: id1 0x24, id2 0x2a ... Probing for M29F002T/NT, 256 KB probe_jedec: id1 0x24, id2 0x2a ... Probing for S29C31004T, 512 KB probe_jedec: id1 0x24, id2 0x2a No EEPROM/flash device found. # flashrom -V | grep probe_jedec probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x25, id2 0x2e probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x25, id2 0x2e probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x25, id2 0x2e probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0xff, id2 0xff probe_jedec: id1 0xff, id2 0xff probe_jedec: id1 0x25, id2 0x2e probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x25, id2 0x2e probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a probe_jedec: id1 0x24, id2 0x2a From marc.jones at amd.com Tue Dec 4 18:18:09 2007 From: marc.jones at amd.com (Marc Jones) Date: Tue, 04 Dec 2007 10:18:09 -0700 Subject: [LinuxBIOS] Help with meaning of config options. In-Reply-To: <1196786004.32101.3.camel@biosbreath> References: <1196786004.32101.3.camel@biosbreath> Message-ID: <47558BD1.5050001@amd.com> Steve Isaacs wrote: > When I look at the options passed to the compiler on the command line I > see the following: > > -DCONFIG_MAX_CPUS='4' -DCONFIG_MAX_PHYSICAL_CPUS='2' > -DCONFIG_LOGICAL_CPUS='1' > > Can someone help me understand what the difference between these is? I'm > working with two dual core opterons and this doesn't seem right to me. > > Steve > > > CONFIG_MAX_CPUS : Saves space in the ACPI tables and additional stack space for maximum possible number of cores in the system. Might be better named as CONFIG_MAX_CPUs_CORES (AMD only) CONFIG_MAX_PHYSICAL_CPUS: Used to set memory SPD addresses and in coherent HyperTransport initialization (AMD only) CONFIG_LOGICAL_CPUS : This is the flag to build in multi-core support. Similar to CONFIG_MAX_CPUS but only set to 0 or 1. (Used by AMD and Intel code) Your setup: CONFIG_MAX_CPUS : 4 - 4 cores CONFIG_MAX_PHYSICAL_CPUS: 2 - 2 CPUs CONFIG_LOGICAL_CPUS : 1 - build multi core support in. Marc -- Marc Jones Senior Firmware Engineer (970) 226-9684 Office mailto:Marc.Jones at amd.com http://www.amd.com/embeddedprocessors From yasteve at gmail.com Tue Dec 4 18:45:24 2007 From: yasteve at gmail.com (Steve Isaacs) Date: Tue, 04 Dec 2007 09:45:24 -0800 Subject: [LinuxBIOS] Help with meaning of config options. In-Reply-To: <47558BD1.5050001@amd.com> References: <1196786004.32101.3.camel@biosbreath> <47558BD1.5050001@amd.com> Message-ID: <1196790324.32101.11.camel@biosbreath> Thanks. On Tue, 2007-12-04 at 10:18 -0700, Marc Jones wrote: > > CONFIG_MAX_CPUS : Saves space in the ACPI tables and additional stack > space for maximum possible number of cores in the system. Might be > better named as CONFIG_MAX_CPUs_CORES (AMD only) > > CONFIG_MAX_PHYSICAL_CPUS: Used to set memory SPD addresses and in > coherent HyperTransport initialization (AMD only) > > CONFIG_LOGICAL_CPUS : This is the flag to build in multi-core support. > Similar to CONFIG_MAX_CPUS but only set to 0 or 1. (Used by AMD and > Intel code) > > Your setup: > CONFIG_MAX_CPUS : 4 - 4 cores > CONFIG_MAX_PHYSICAL_CPUS: 2 - 2 CPUs > CONFIG_LOGICAL_CPUS : 1 - build multi core support in. > > I'm not suggesting a change. I'm just trying to make sure I understand the semantics. So, would it make sense to think of it as having an option that defines the number of cores per CPU (e.g. CONFIG_CORES_PER_CPU) and let CONFIG_MAX_CPUS equal CONFIG_MAX_PHYSICAL_CPUS * CONFIG_CORES_PER_CPU? Steve From marc.jones at amd.com Tue Dec 4 19:01:37 2007 From: marc.jones at amd.com (Marc Jones) Date: Tue, 04 Dec 2007 11:01:37 -0700 Subject: [LinuxBIOS] Help with meaning of config options. In-Reply-To: <1196790324.32101.11.camel@biosbreath> References: <1196786004.32101.3.camel@biosbreath> <47558BD1.5050001@amd.com> <1196790324.32101.11.camel@biosbreath> Message-ID: <47559601.2050901@amd.com> Steve Isaacs wrote: > Thanks. > > On Tue, 2007-12-04 at 10:18 -0700, Marc Jones wrote: > >> CONFIG_MAX_CPUS : Saves space in the ACPI tables and additional stack >> space for maximum possible number of cores in the system. Might be >> better named as CONFIG_MAX_CPUs_CORES (AMD only) >> >> CONFIG_MAX_PHYSICAL_CPUS: Used to set memory SPD addresses and in >> coherent HyperTransport initialization (AMD only) >> >> CONFIG_LOGICAL_CPUS : This is the flag to build in multi-core support. >> Similar to CONFIG_MAX_CPUS but only set to 0 or 1. (Used by AMD and >> Intel code) >> >> Your setup: >> CONFIG_MAX_CPUS : 4 - 4 cores >> CONFIG_MAX_PHYSICAL_CPUS: 2 - 2 CPUs >> CONFIG_LOGICAL_CPUS : 1 - build multi core support in. >> >> > > I'm not suggesting a change. I'm just trying to make sure I understand > the semantics. > > So, would it make sense to think of it as having an option that defines > the number of cores per CPU (e.g. CONFIG_CORES_PER_CPU) and let > CONFIG_MAX_CPUS equal CONFIG_MAX_PHYSICAL_CPUS * CONFIG_CORES_PER_CPU? > > Steve > > > I would ack that patch. Marc -- Marc Jones Senior Firmware Engineer (970) 226-9684 Office mailto:Marc.Jones at amd.com http://www.amd.com/embeddedprocessors From corey.osgood at gmail.com Tue Dec 4 19:40:59 2007 From: corey.osgood at gmail.com (Corey Osgood) Date: Tue, 04 Dec 2007 13:40:59 -0500 Subject: [LinuxBIOS] [PATCH] v3: fix absolute calls from initram In-Reply-To: <4754BDFE.6060203@gmx.net> References: <4754BDFE.6060203@gmx.net> Message-ID: <47559F3B.1080407@gmail.com> Carl-Daniel Hailfinger wrote: > Absolute calls from initram were only working from the file which had > _MAINOBJECT #defined. Calls from all other files ended up in nirvana > because the compiler was not able to calculate the address of the > wrapper for the absolute call. The linker tried, but failed miserably. > Use the -combine flag and compile all of initram at once. This enables > GCC to calculate the address of the abscall wrapper, resulting in > working code. > > Segher Boessenkool thinks the patched code works only by accident > because GCC has no way to specify generation of XIP code. According to > him, future GCC versions or other circumstances may break the code. > > While this patch makes code work for now, it does NOT check whether the > generated code tries to write to memory outside the stack (general > writable data). That will of course fail, but I hope porters are smart > enough to avoid that. > > Signed-off-by: Carl-Daniel Hailfinger Acked-by: Corey Osgood From yasteve at gmail.com Tue Dec 4 19:59:21 2007 From: yasteve at gmail.com (Steve Isaacs) Date: Tue, 04 Dec 2007 10:59:21 -0800 Subject: [LinuxBIOS] CONFIG_ROM_STREAM verus CONFIG_IDE_STREAM verus CONFIG_FS_STREAM? Message-ID: <1196794761.32101.31.camel@biosbreath> I'm puzzled about the difference between these options. If I want to boot using an IDE device does the following make sense? ## Boot linux from IDE default CONFIG_IDE=1 default CONFIG_FS_STREAM=1 default CONFIG_FS_EXT2=1 default CONFIG_FS_ISO9660=1 default CONFIG_FS_FAT=1 default AUTOBOOT_CMDLINE="hda1:/vmlinuz" I found these in mainboard/momentum/apache and am wondering if I can use them as is for my board. Am I correct in interpreting this as: Use the IDE interface to boot which can contain an EXT2 or ISO9660 (CDROM) or FAT file system? (This is what I want -- simply boot Linux using the ATA drive connected to the IDE interface). I'm currently able to boot this way using a proprietary BIOS and want to do the same using LinuxBIOS. How does CONFIG_IDE_STREAM effect this? Does it control which IDE interface to use with a default of 0? e.g. I have an ATA drive as the master and a CDROM drive as the slave on the IDE interface. If I change CONFIG_IDE_STREAM to be 1 will the boot be from the CDROM drive? I'm not sure how the AUTOBOOT_CMDLINE needs to change if the boot device changes. If CONFIG_ROM_STREAM is equal to 1 does it compliment or override or is it overridden by CONFIG_IDE_STREAM? Or, are they two entirely different things? Do I need a specific payload before any of these will take effect? Thanks, Steve From corey.osgood at gmail.com Tue Dec 4 20:02:53 2007 From: corey.osgood at gmail.com (Corey Osgood) Date: Tue, 04 Dec 2007 14:02:53 -0500 Subject: [LinuxBIOS] CONFIG_ROM_STREAM verus CONFIG_IDE_STREAM verus CONFIG_FS_STREAM? In-Reply-To: <1196794761.32101.31.camel@biosbreath> References: <1196794761.32101.31.camel@biosbreath> Message-ID: <4755A45D.3000901@gmail.com> Steve Isaacs wrote: > I'm puzzled about the difference between these options. If I want to > boot using an IDE device does the following make sense? > > ## Boot linux from IDE > default CONFIG_IDE=1 > default CONFIG_FS_STREAM=1 > default CONFIG_FS_EXT2=1 > default CONFIG_FS_ISO9660=1 > default CONFIG_FS_FAT=1 > default AUTOBOOT_CMDLINE="hda1:/vmlinuz" > > I found these in mainboard/momentum/apache and am wondering if I can use > them as is for my board. > > Am I correct in interpreting this as: Use the IDE interface to boot > which can contain an EXT2 or ISO9660 (CDROM) or FAT file system? (This > is what I want -- simply boot Linux using the ATA drive connected to the > IDE interface). I'm currently able to boot this way using a proprietary > BIOS and want to do the same using LinuxBIOS. > > How does CONFIG_IDE_STREAM effect this? Does it control which IDE > interface to use with a default of 0? e.g. I have an ATA drive as the > master and a CDROM drive as the slave on the IDE interface. If I change > CONFIG_IDE_STREAM to be 1 will the boot be from the CDROM drive? > > I'm not sure how the AUTOBOOT_CMDLINE needs to change if the boot device > changes. > > If CONFIG_ROM_STREAM is equal to 1 does it compliment or override or is > it overridden by CONFIG_IDE_STREAM? Or, are they two entirely different > things? > > Do I need a specific payload before any of these will take effect? > > Thanks, > > Steve > Don't use those, they're for an old FILO 0.42 payload. Get the latest version of FILO (directions in the wiki), and use that. The readme and config file explain pretty much everything. -Corey From svn at openbios.org Tue Dec 4 20:17:07 2007 From: svn at openbios.org (svn at openbios.org) Date: Tue, 4 Dec 2007 20:17:07 +0100 Subject: [LinuxBIOS] r73 - in buildrom-devel: config/platforms packages/filo/conf Message-ID: Author: ward Date: 2007-12-04 20:17:07 +0100 (Tue, 04 Dec 2007) New Revision: 73 Modified: buildrom-devel/config/platforms/supermicro-h8dmr.conf buildrom-devel/packages/filo/conf/supermicro-h8dmr-Config Log: This patch applies to the Supermicro H8DMR board. It upgrades the linuxbios version used to 2996 so that we can use a VGA option rom. It also fixes the devices FILO looks on to find the grub config file to hde1, which is what the first drive is recognized as on an MCP55-based board like this one. This is a trivial patch. Signed-off-by: Ward Vandewege Acked-by: Ward Vandewege Modified: buildrom-devel/config/platforms/supermicro-h8dmr.conf =================================================================== --- buildrom-devel/config/platforms/supermicro-h8dmr.conf 2007-12-03 19:06:36 UTC (rev 72) +++ buildrom-devel/config/platforms/supermicro-h8dmr.conf 2007-12-04 19:17:07 UTC (rev 73) @@ -40,7 +40,7 @@ LINUXBIOS_BOARD=h8dmr LINUXBIOS_CONFIG=Config.lb LINUXBIOS_TDIR=h8dmr -LINUXBIOS_TAG=2994 +LINUXBIOS_TAG=2996 LINUXBIOS_ROM_NAME=linuxbios.rom # FILO configuration Modified: buildrom-devel/packages/filo/conf/supermicro-h8dmr-Config =================================================================== --- buildrom-devel/packages/filo/conf/supermicro-h8dmr-Config 2007-12-03 19:06:36 UTC (rev 72) +++ buildrom-devel/packages/filo/conf/supermicro-h8dmr-Config 2007-12-04 19:17:07 UTC (rev 73) @@ -1,7 +1,7 @@ # Use grub instead of autoboot? USE_GRUB = 1 # Grub menu.lst path -MENULST_FILE = "hda1:/boot/grub/menu.lst" +MENULST_FILE = "hde1:/boot/grub/menu.lst" # Driver for hard disk, CompactFlash, and CD-ROM on IDE bus IDE_DISK = 1 # Add a short delay when polling status registers From Marc.Karasek at Sun.COM Tue Dec 4 20:37:06 2007 From: Marc.Karasek at Sun.COM (Marc Karasek) Date: Tue, 04 Dec 2007 14:37:06 -0500 Subject: [LinuxBIOS] Qemu compile for LinuxBIOSV2 In-Reply-To: References: <47506A1F.8070104@sun.com> <20071203181517.GK9493@cosmic.amd.com> <475447C5.7020406@sun.com> <47545F8F.5090003@gmx.net> <47546480.5070509@sun.com> <47546BD7.70002@sun.com> Message-ID: <4755AC62.7010404@sun.com> I now know what is going on. I do not know how to fix it... :-) I have made the changes to the Makefile to add the -Wl,--build-id=none option to the appropriate places. I am planning on making a patch file for this to cover all the cases. This will mean the patch submitted by Ed will not be needed. The second problem has to do with the .id section and how it is defined in id.inc. Currently it is as follows: .section ".id", "a", @progbits With this in place you cannot place the .id section above the address 0xFFFF_EF00. Doing so will create the error could not allocate in segment 1. If you use the address 0xFFFF_EF00 or below it will compile and the text strings vendor and part are in the final binary image at the address specified. If you change the id.inc file to : .section .id or .section ".id" With this in place you can move the address above 0xFFFF_EF00. The vendor & part strings are in the crt0.o file and are listed in the linuxbios.map file. They are NOT in the final binary however. At this point I am looking for some guidance/help in what to do/look at next. Do you think this is a ld bug or something else? Can we live with moving this block below for right now with large comments as to why? /********************* Marc Karasek MTS Sun Microsystems mailto:marc.karasek at sun.com ph:770.360.6415 *********************/ Ed Swierk wrote: > On 12/3/07, Marc Karasek wrote: > >> Looks to me like the none option does not turn it off but only clears >> any prior options set on the command line. >> > > If you look at the ld command line (by adding -v to the gcc command > line) you will see that gcc adds the --build-id option. So > --build-id=none turns it off. > > --Ed > From svn at openbios.org Tue Dec 4 22:06:52 2007 From: svn at openbios.org (svn at openbios.org) Date: Tue, 4 Dec 2007 22:06:52 +0100 Subject: [LinuxBIOS] r536 - in LinuxBIOSv3: arch/x86 device include include/device lib northbridge/amd/geodelx northbridge/intel/i440bxemulation Message-ID: Author: uwe Date: 2007-12-04 22:06:52 +0100 (Tue, 04 Dec 2007) New Revision: 536 Removed: LinuxBIOSv3/include/northbridgelib.h LinuxBIOSv3/lib/northbridgelib.c Modified: LinuxBIOSv3/arch/x86/Makefile LinuxBIOSv3/device/pci_device.c LinuxBIOSv3/include/device/pci.h LinuxBIOSv3/northbridge/amd/geodelx/geodelx.c LinuxBIOSv3/northbridge/intel/i440bxemulation/i440bx.c Log: Move the code from northbridgelib.c to pci_device.c. Signed-off-by: Uwe Hermann Acked-by: Stefan Reinauer Modified: LinuxBIOSv3/arch/x86/Makefile =================================================================== --- LinuxBIOSv3/arch/x86/Makefile 2007-12-03 20:41:02 UTC (rev 535) +++ LinuxBIOSv3/arch/x86/Makefile 2007-12-04 21:06:52 UTC (rev 536) @@ -172,7 +172,7 @@ # STAGE2_LIB_OBJ = stage2.o clog2.o mem.o tables.o delay.o \ - compute_ip_checksum.o string.o northbridgelib.o + compute_ip_checksum.o string.o STAGE2_ARCH_X86_OBJ = archtables.o linuxbios_table.o udelay_io.o STAGE2_ARCH_X86_OBJ += pci_ops_auto.o pci_ops_conf1.o pci_ops_conf2.o Modified: LinuxBIOSv3/device/pci_device.c =================================================================== --- LinuxBIOSv3/device/pci_device.c 2007-12-03 20:41:02 UTC (rev 535) +++ LinuxBIOSv3/device/pci_device.c 2007-12-04 21:06:52 UTC (rev 536) @@ -449,6 +449,32 @@ pci_get_rom_resource(dev, PCI_ROM_ADDRESS1); } +/** + * Set resources for the PCI domain. + * + * A PCI domain contains the I/O and memory resource address space below it. + * Set up basic global ranges for I/O and memory. Allocation of sub-resources + * draws on these top-level resources in the usual hierarchical manner. + * + * @param dev The northbridge device. + */ +void pci_domain_read_resources(struct device *dev) +{ + struct resource *res; + + /* Initialize the system-wide I/O space constraints. */ + res = new_resource(dev, IOINDEX_SUBTRACTIVE(0, 0)); + res->limit = 0xffffUL; + res->flags = + IORESOURCE_IO | IORESOURCE_SUBTRACTIVE | IORESOURCE_ASSIGNED; + + /* Initialize the system-wide memory resources constraints. */ + res = new_resource(dev, IOINDEX_SUBTRACTIVE(1, 0)); + res->limit = 0xffffffffULL; + res->flags = + IORESOURCE_MEM | IORESOURCE_SUBTRACTIVE | IORESOURCE_ASSIGNED; +} + static void pci_set_resource(struct device *dev, struct resource *resource) { resource_t base, end; @@ -580,6 +606,32 @@ pci_write_config8(dev, PCI_CACHE_LINE_SIZE, 64 >> 2); } +/** + * Create a RAM resource, by taking the passed-in size and creating + * a resource record. + * + * @param dev The device. + * @param index A resource index. + * @param basek Base memory address in KB. + * @param sizek Size of memory in KB. + */ +void ram_resource(struct device *dev, unsigned long index, + unsigned long basek, unsigned long sizek) +{ + struct resource *res; + + if (!sizek) + return; + + res = new_resource(dev, index); + res->base = ((resource_t) basek) << 10; /* Convert to bytes. */ + res->size = ((resource_t) sizek) << 10; /* Convert to bytes. */ + res->flags = IORESOURCE_MEM | IORESOURCE_CACHEABLE | + IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED; + + printk(BIOS_SPEW, "Adding RAM resource (%lld bytes)\n", res->size); +} + void pci_dev_enable_resources(struct device *dev) { const struct pci_operations *ops; @@ -1108,6 +1160,22 @@ } /** + * Support for scan bus from the "tippy top" -- i.e. the PCI domain, + * not the 0:0.0 device. + * + * This function works for almost all chipsets (AMD K8 is the exception). + * + * @param dev The PCI domain device. + * @param max Maximum number of devices to scan. + * @return TODO + */ +unsigned int pci_domain_scan_bus(struct device *dev, unsigned int max) +{ + /* There is only one link on this device, and it is always link 0. */ + return pci_scan_bus(&dev->link[0], PCI_DEVFN(0, 0), 0xff, max); +} + +/** * Scan a PCI bridge and the buses behind the bridge. * * Determine the existence of buses behind the bridge. Set up the bridge Modified: LinuxBIOSv3/include/device/pci.h =================================================================== --- LinuxBIOSv3/include/device/pci.h 2007-12-03 20:41:02 UTC (rev 535) +++ LinuxBIOSv3/include/device/pci.h 2007-12-04 21:06:52 UTC (rev 536) @@ -94,6 +94,12 @@ struct resource *pci_get_resource(struct device *dev, unsigned long index); void pci_dev_set_subsystem(struct device * dev, unsigned vendor, unsigned device); +void pci_domain_read_resources(struct device *dev); +void ram_resource(struct device *dev, unsigned long index, + unsigned long basek, unsigned long sizek); +unsigned int pci_domain_scan_bus(struct device *dev, unsigned int max); + + #define PCI_IO_BRIDGE_ALIGN 4096 #define PCI_MEM_BRIDGE_ALIGN (1024*1024) Deleted: LinuxBIOSv3/include/northbridgelib.h =================================================================== --- LinuxBIOSv3/include/northbridgelib.h 2007-12-03 20:41:02 UTC (rev 535) +++ LinuxBIOSv3/include/northbridgelib.h 2007-12-04 21:06:52 UTC (rev 536) @@ -1,26 +0,0 @@ -/* - * This file is part of the LinuxBIOS project. - * - * Copyright (C) 2007 Advanced Micro Devices, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -void pci_domain_read_resources(struct device *dev); -void ram_resource(struct device *dev, unsigned long index, - unsigned long basek, unsigned long sizek); -unsigned int pci_domain_scan_bus(struct device *dev, unsigned int max); Deleted: LinuxBIOSv3/lib/northbridgelib.c =================================================================== --- LinuxBIOSv3/lib/northbridgelib.c 2007-12-03 20:41:02 UTC (rev 535) +++ LinuxBIOSv3/lib/northbridgelib.c 2007-12-04 21:06:52 UTC (rev 536) @@ -1,92 +0,0 @@ -/* - * This file is part of the LinuxBIOS project. - * - * Copyright (C) 2007 Advanced Micro Devices, Inc. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include -#include -#include -#include - -/** - * Set resources for the PCI domain. - * - * A PCI domain contains the I/O and memory resource address space below it. - * Set up basic global ranges for I/O and memory. Allocation of sub-resources - * draws on these top-level resources in the usual hierarchical manner. - * - * @param dev The northbridge device. - */ -void pci_domain_read_resources(struct device *dev) -{ - struct resource *res; - - /* Initialize the system-wide I/O space constraints. */ - res = new_resource(dev, IOINDEX_SUBTRACTIVE(0, 0)); - res->limit = 0xffffUL; - res->flags = - IORESOURCE_IO | IORESOURCE_SUBTRACTIVE | IORESOURCE_ASSIGNED; - - /* Initialize the system-wide memory resources constraints. */ - res = new_resource(dev, IOINDEX_SUBTRACTIVE(1, 0)); - res->limit = 0xffffffffULL; - res->flags = - IORESOURCE_MEM | IORESOURCE_SUBTRACTIVE | IORESOURCE_ASSIGNED; -} - -/** - * Create a RAM resource, by taking the passed-in size and creating - * a resource record. - * - * @param dev The device. - * @param index A resource index. - * @param basek Base memory address in KB. - * @param sizek Size of memory in KB. - */ -void ram_resource(struct device *dev, unsigned long index, - unsigned long basek, unsigned long sizek) -{ - struct resource *res; - - if (!sizek) - return; - - res = new_resource(dev, index); - res->base = ((resource_t) basek) << 10; /* Convert to bytes. */ - res->size = ((resource_t) sizek) << 10; /* Convert to bytes. */ - res->flags = IORESOURCE_MEM | IORESOURCE_CACHEABLE | - IORESOURCE_FIXED | IORESOURCE_STORED | IORESOURCE_ASSIGNED; - - printk(BIOS_SPEW, "Adding RAM resource (%lld bytes)\n", res->size); -} - -/** - * Support for scan bus from the "tippy top" -- i.e. the PCI domain, - * not the 0:0.0 device. - * - * This function works for almost all chipsets (AMD K8 is the exception). - * - * @param dev The PCI domain device. - * @param max Maximum number of devices to scan. - * @return TODO - */ -unsigned int pci_domain_scan_bus(struct device *dev, unsigned int max) -{ - /* There is only one link on this device, and it is always link 0. */ - return pci_scan_bus(&dev->link[0], PCI_DEVFN(0, 0), 0xff, max); -} Modified: LinuxBIOSv3/northbridge/amd/geodelx/geodelx.c =================================================================== --- LinuxBIOSv3/northbridge/amd/geodelx/geodelx.c 2007-12-03 20:41:02 UTC (rev 535) +++ LinuxBIOSv3/northbridge/amd/geodelx/geodelx.c 2007-12-04 21:06:52 UTC (rev 536) @@ -25,7 +25,6 @@ #include #include #include -#include /* Function prototypes */ extern void chipsetinit(void); Modified: LinuxBIOSv3/northbridge/intel/i440bxemulation/i440bx.c =================================================================== --- LinuxBIOSv3/northbridge/intel/i440bxemulation/i440bx.c 2007-12-03 20:41:02 UTC (rev 535) +++ LinuxBIOSv3/northbridge/intel/i440bxemulation/i440bx.c 2007-12-04 21:06:52 UTC (rev 536) @@ -43,7 +43,6 @@ #include #include #include -#include #include "i440bx.h" #include "statictree.h" From uwe at hermann-uwe.de Tue Dec 4 22:07:27 2007 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Tue, 4 Dec 2007 22:07:27 +0100 Subject: [LinuxBIOS] [PATCH] Move northbridgelib.c code to pci_device.c In-Reply-To: <20071204112304.GA9165@coresystems.de> References: <20071204111128.GB10762@greenwood> <20071204112304.GA9165@coresystems.de> Message-ID: <20071204210727.GC10762@greenwood> On Tue, Dec 04, 2007 at 12:23:04PM +0100, Stefan Reinauer wrote: > Acked-by: Stefan Reinauer Thanks, r536. Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org From myles at pel.cs.byu.edu Tue Dec 4 22:39:04 2007 From: myles at pel.cs.byu.edu (Myles Watson) Date: Tue, 4 Dec 2007 14:39:04 -0700 Subject: [LinuxBIOS] Add support for the AMD SimNow (TM) simulator (try 2) In-Reply-To: <20071128204800.GB24403@cosmic.amd.com> References: <20071128183212.GC22230@cosmic.amd.com> <2831fecf0711281047r2ee61cacqfef0710b5103f2ff@mail.gmail.com> <20071128185525.GD22230@cosmic.amd.com> <13426df10711281231v2c881533m8b065dce7e01f9cc@mail.gmail.com> <20071128204800.GB24403@cosmic.amd.com> Message-ID: <2831fecf0712041339p542f8feby263911ae175108b9@mail.gmail.com> On 11/28/07, Jordan Crouse wrote: > On 28/11/07 12:31 -0800, ron minnich wrote: > > Is there a howto on the web page to show how to use this sim > > environment? This is really cool. > I put up a basic page today that should help someone get started. It's at http://www.linuxbios.org/AMD_SimNow and it's linked to from the homepage, down by QEMU. Feel free to ask questions or clean it up as suits your tastes. Myles From dsedrich at violin-memory.com Tue Dec 4 22:40:03 2007 From: dsedrich at violin-memory.com (David Edrich) Date: Tue, 4 Dec 2007 15:40:03 -0600 Subject: [LinuxBIOS] SLIT Support Message-ID: <017901c836be$3b01a9b0$b104fd10$@com> I've seen SLIT support within Linux does anyone know anything about what platforms/systems have implemented SLIT Table support? Is this does by any standard BIOS vendor? In Linux BIOS? -------------- next part -------------- An HTML attachment was scrubbed... URL: From jordan.crouse at amd.com Tue Dec 4 22:51:18 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Tue, 4 Dec 2007 14:51:18 -0700 Subject: [LinuxBIOS] Add support for the AMD SimNow (TM) simulator (try 2) In-Reply-To: <2831fecf0712041339p542f8feby263911ae175108b9@mail.gmail.com> References: <20071128183212.GC22230@cosmic.amd.com> <2831fecf0711281047r2ee61cacqfef0710b5103f2ff@mail.gmail.com> <20071128185525.GD22230@cosmic.amd.com> <13426df10711281231v2c881533m8b065dce7e01f9cc@mail.gmail.com> <20071128204800.GB24403@cosmic.amd.com> <2831fecf0712041339p542f8feby263911ae175108b9@mail.gmail.com> Message-ID: <20071204215118.GC31339@cosmic.amd.com> On 04/12/07 14:39 -0700, Myles Watson wrote: > On 11/28/07, Jordan Crouse wrote: > > On 28/11/07 12:31 -0800, ron minnich wrote: > > > Is there a howto on the web page to show how to use this sim > > > environment? This is really cool. > > > I put up a basic page today that should help someone get started. > It's at http://www.linuxbios.org/AMD_SimNow and it's linked to from > the homepage, down by QEMU. > > Feel free to ask questions or clean it up as suits your tastes. Awesome! Thanks. Jordan -- Jordan Crouse Systems Software Development Engineer Advanced Micro Devices, Inc. From svn at openbios.org Tue Dec 4 22:49:06 2007 From: svn at openbios.org (svn at openbios.org) Date: Tue, 4 Dec 2007 22:49:06 +0100 Subject: [LinuxBIOS] r2997 - trunk/util/flashrom Message-ID: Author: uwe Date: 2007-12-04 22:49:06 +0100 (Tue, 04 Dec 2007) New Revision: 2997 Modified: trunk/util/flashrom/board_enable.c trunk/util/flashrom/chipset_enable.c trunk/util/flashrom/flash.h Log: Various coding style fixes, constification, fixed typos (trivial). Also, s/0xFF80/0xFFC0/ in the Acorp 6A815EPD board-enable, as per http://www.linuxbios.org/pipermail/linuxbios/2007-December/027750.html Signed-off-by: Uwe Hermann Acked-by: Uwe Hermann Modified: trunk/util/flashrom/board_enable.c =================================================================== --- trunk/util/flashrom/board_enable.c 2007-12-04 01:15:29 UTC (rev 2996) +++ trunk/util/flashrom/board_enable.c 2007-12-04 21:49:06 UTC (rev 2997) @@ -50,13 +50,13 @@ static unsigned char wbsio_read(uint16_t index, uint8_t reg) { outb(reg, index); - return inb(index+1); + return inb(index + 1); } static void wbsio_write(uint16_t index, uint8_t reg, uint8_t data) { outb(reg, index); - outb(data, index+1); + outb(data, index + 1); } static void wbsio_mask(uint16_t index, uint8_t reg, uint8_t data, uint8_t mask) @@ -64,8 +64,8 @@ uint8_t tmp; outb(reg, index); - tmp = inb(index+1) & ~mask; - outb(tmp | (data & mask), index+1); + tmp = inb(index + 1) & ~mask; + outb(tmp | (data & mask), index + 1); } /** @@ -79,8 +79,8 @@ { w836xx_ext_enter(index); - /* Is this the w83627hf? */ - if (wbsio_read(index, 0x20) != 0x52) { /* Super I/O device ID register */ + /* Is this the W83627HF? */ + if (wbsio_read(index, 0x20) != 0x52) { /* Super I/O device ID reg. */ fprintf(stderr, "\nERROR: %s: W83627HF: Wrong ID: 0x%02X.\n", name, wbsio_read(index, 0x20)); w836xx_ext_leave(index); @@ -90,14 +90,12 @@ /* PIN89S: WDTO/GP24 multiplex -> GPIO24 */ wbsio_mask(index, 0x2B, 0x10, 0x10); - wbsio_write(index, 0x07, 0x08); /* Select logical device 8: GPIO port 2 */ + /* Select logical device 8: GPIO port 2 */ + wbsio_write(index, 0x07, 0x08); wbsio_mask(index, 0x30, 0x01, 0x01); /* Activate logical device. */ - wbsio_mask(index, 0xF0, 0x00, 0x10); /* GPIO24 -> output */ - wbsio_mask(index, 0xF2, 0x00, 0x10); /* Clear GPIO24 inversion */ - wbsio_mask(index, 0xF1, 0x10, 0x10); /* Raise GPIO24 */ w836xx_ext_leave(index); @@ -107,6 +105,7 @@ static int w83627hf_gpio24_raise_2e(const char *name) { + /* TODO: Typo? Shouldn't this be 0x2e? */ return w83627hf_gpio24_raise(0x2d, name); } @@ -119,8 +118,9 @@ static int w83627thf_gpio4_4_raise(uint16_t index, const char *name) { w836xx_ext_enter(index); - /* Is this the w83627thf? */ - if (wbsio_read(index, 0x20) != 0x82) { /* Super I/O device ID register */ + + /* Is this the W83627THF? */ + if (wbsio_read(index, 0x20) != 0x82) { /* Super I/O device ID reg. */ fprintf(stderr, "\nERROR: %s: W83627THF: Wrong ID: 0x%02X.\n", name, wbsio_read(index, 0x20)); w836xx_ext_leave(index); @@ -129,16 +129,12 @@ /* PINxxxxS: GPIO4/bit 4 multiplex -> GPIOXXX */ - wbsio_write(index, 0x07, 0x09); /* Select logical device 9: GPIO port 4 */ + wbsio_write(index, 0x07, 0x09); /* Select LDN 9: GPIO port 4 */ + wbsio_mask(index, 0x30, 0x02, 0x02); /* Activate logical device. */ + wbsio_mask(index, 0xF4, 0x00, 0x10); /* GPIO4 bit 4 -> output */ + wbsio_mask(index, 0xF6, 0x00, 0x10); /* Clear GPIO4 bit 4 inversion */ + wbsio_mask(index, 0xF5, 0x10, 0x10); /* Raise GPIO4 bit 4 */ - wbsio_mask(index, 0x30, 0x02, 0x02); /* Activate logical device. */ - - wbsio_mask(index, 0xF4, 0x00, 0x10); /* GPIO4 bit 4 -> output */ - - wbsio_mask(index, 0xF6, 0x00, 0x10); /* Clear GPIO4 bit 4 inversion */ - - wbsio_mask(index, 0xF5, 0x10, 0x10); /* Raise GPIO4 bit 4 */ - w836xx_ext_leave(index); return 0; @@ -146,8 +142,9 @@ static int w83627thf_gpio4_4_raise_4e(const char *name) { - return w83627thf_gpio4_4_raise(0x4E, name); + return w83627thf_gpio4_4_raise(0x4e, name); } + /** * Suited for VIAs EPIA M and MII, and maybe other CLE266 based EPIAs. * @@ -156,7 +153,7 @@ static int board_via_epia_m(const char *name) { struct pci_dev *dev; - unsigned int base; + uint16_t base; uint8_t val; dev = pci_dev_find(0x1106, 0x3177); /* VT8235 ISA bridge */ @@ -173,7 +170,7 @@ /* Get Power Management IO address. */ base = pci_read_word(dev, 0x88) & 0xFF80; - /* enable GPIO15 which is connected to write protect. */ + /* Enable GPIO15 which is connected to write protect. */ val = inb(base + 0x4D); val |= 0x80; outb(val, base + 0x4D); @@ -199,16 +196,16 @@ return -1; } - /* This bit is marked reserved actually */ + /* This bit is marked reserved actually. */ val = pci_read_byte(dev, 0x59); val &= 0x7F; pci_write_byte(dev, 0x59, val); - /* Raise ROM MEMW# line on Winbond w83697 SuperIO */ + /* Raise ROM MEMW# line on Winbond W83697 Super I/O. */ w836xx_ext_enter(0x2E); - if (!(wbsio_read(0x2E, 0x24) & 0x02)) /* flash rom enabled? */ - wbsio_mask(0x2E, 0x24, 0x08, 0x08); /* enable MEMW# */ + if (!(wbsio_read(0x2E, 0x24) & 0x02)) /* Flash ROM enabled? */ + wbsio_mask(0x2E, 0x24, 0x08, 0x08); /* Enable MEMW#. */ w836xx_ext_leave(0x2E); @@ -323,7 +320,7 @@ } /** - * Suited for Acorp 6A815EPD + * Suited for Acorp 6A815EPD. */ static int board_acorp_6a815epd(const char *name) { @@ -338,7 +335,7 @@ } /* Use GPIOBASE register to find where the GPIO is mapped. */ - port = (pci_read_word(dev, 0x58) & 0xFF80) + 0xE; + port = (pci_read_word(dev, 0x58) & 0xFFC0) + 0xE; val = inb(port); val |= 0x80; /* Top Block Lock -- pin 8 of PLCC32 */ @@ -357,25 +354,25 @@ * Keep the second set NULLed if it should be ignored. */ struct board_pciid_enable { - /* Any device, but make it sensible, like the isa bridge. */ + /* Any device, but make it sensible, like the ISA bridge. */ uint16_t first_vendor; uint16_t first_device; uint16_t first_card_vendor; uint16_t first_card_device; /* Any device, but make it sensible, like - * the host bridge. May be NULL + * the host bridge. May be NULL. */ uint16_t second_vendor; uint16_t second_device; uint16_t second_card_vendor; uint16_t second_card_device; - /* From linuxbios table */ - char *lb_vendor; - char *lb_part; + /* The vendor / part name from the LinuxBIOS table. */ + const char *lb_vendor; + const char *lb_part; - char *name; + const char *name; int (*enable) (const char *name); }; @@ -411,8 +408,7 @@ * Match boards on LinuxBIOS table gathered vendor and part name. * Require main PCI IDs to match too as extra safety. */ -static struct board_pciid_enable *board_match_linuxbios_name(char *vendor, - char *part) +static struct board_pciid_enable *board_match_linuxbios_name(const char *vendor, const char *part) { struct board_pciid_enable *board = board_pciid_enables; @@ -431,7 +427,9 @@ continue; return board; } + printf("NOT FOUND %s:%s\n", vendor, part); + return NULL; } @@ -472,7 +470,7 @@ return NULL; } -int board_flash_enable(char *vendor, char *part) +int board_flash_enable(const char *vendor, const char *part) { struct board_pciid_enable *board = NULL; int ret = 0; Modified: trunk/util/flashrom/chipset_enable.c =================================================================== --- trunk/util/flashrom/chipset_enable.c 2007-12-04 01:15:29 UTC (rev 2996) +++ trunk/util/flashrom/chipset_enable.c 2007-12-04 21:49:06 UTC (rev 2997) @@ -34,12 +34,14 @@ #include #include "flash.h" -static int enable_flash_ali_m1533(struct pci_dev *dev, char *name) +static int enable_flash_ali_m1533(struct pci_dev *dev, const char *name) { uint8_t tmp; - /* ROM Write enable, 0xFFFC0000-0xFFFDFFFF and - 0xFFFE0000-0xFFFFFFFF ROM select enable. */ + /* + * ROM Write enable, 0xFFFC0000-0xFFFDFFFF and + * 0xFFFE0000-0xFFFFFFFF ROM select enable. + */ tmp = pci_read_byte(dev, 0x47); tmp |= 0x46; pci_write_byte(dev, 0x47, tmp); @@ -47,24 +49,28 @@ return 0; } -static int enable_flash_sis630(struct pci_dev *dev, char *name) +static int enable_flash_sis630(struct pci_dev *dev, const char *name) { - char b; + uint8_t b; - /* Enable 0xFFF8000~0xFFFF0000 decoding on SiS 540/630 */ + /* Enable 0xFFF8000~0xFFFF0000 decoding on SiS 540/630. */ b = pci_read_byte(dev, 0x40); pci_write_byte(dev, 0x40, b | 0xb); - /* Flash write enable on SiS 540/630 */ + + /* Flash write enable on SiS 540/630. */ b = pci_read_byte(dev, 0x45); pci_write_byte(dev, 0x45, b | 0x40); - /* The same thing on SiS 950 SuperIO side */ + /* The same thing on SiS 950 Super I/O side... */ + + /* First probe for Super I/O on config port 0x2e. */ outb(0x87, 0x2e); outb(0x01, 0x2e); outb(0x55, 0x2e); outb(0x55, 0x2e); if (inb(0x2f) != 0x87) { + /* If that failed, try config port 0x4e. */ outb(0x87, 0x4e); outb(0x01, 0x4e); outb(0x55, 0x4e); @@ -99,7 +105,7 @@ * - PDF: http://www.intel.com/design/intarch/datashts/29056201.pdf * - Order Number: 290562-001 */ -static int enable_flash_piix4(struct pci_dev *dev, char *name) +static int enable_flash_piix4(struct pci_dev *dev, const char *name) { uint16_t old, new; uint16_t xbcs = 0x4e; /* X-Bus Chip Select register. */ @@ -132,23 +138,19 @@ return 0; } -static int enable_flash_ich(struct pci_dev *dev, char *name, int bios_cntl) +/* + * See ie. page 375 of "Intel ICH7 External Design Specification" + * http://download.intel.com/design/chipsets/datashts/30701302.pdf + */ +static int enable_flash_ich(struct pci_dev *dev, const char *name, + int bios_cntl) { - /* register 4e.b gets or'ed with one */ uint8_t old, new; - /* if it fails, it fails. There are so many variations of broken mobos - * that it is hard to argue that we should quit at this point. - */ - - /* Note: the ICH0-ICH5 BIOS_CNTL register is actually 16 bit wide, but + /* + * Note: the ICH0-ICH5 BIOS_CNTL register is actually 16 bit wide, but * just treating it as 8 bit wide seems to work fine in practice. */ - - /* see ie. page 375 of "Intel ICH7 External Design Specification" - * http://download.intel.com/design/chipsets/datashts/30701302.pdf - */ - old = pci_read_byte(dev, bios_cntl); new = old | 1; @@ -166,17 +168,17 @@ return 0; } -static int enable_flash_ich_4e(struct pci_dev *dev, char *name) +static int enable_flash_ich_4e(struct pci_dev *dev, const char *name) { return enable_flash_ich(dev, name, 0x4e); } -static int enable_flash_ich_dc(struct pci_dev *dev, char *name) +static int enable_flash_ich_dc(struct pci_dev *dev, const char *name) { return enable_flash_ich(dev, name, 0xdc); } -static int enable_flash_vt823x(struct pci_dev *dev, char *name) +static int enable_flash_vt823x(struct pci_dev *dev, const char *name) { uint8_t val; @@ -194,7 +196,7 @@ return 0; } -static int enable_flash_cs5530(struct pci_dev *dev, char *name) +static int enable_flash_cs5530(struct pci_dev *dev, const char *name) { uint8_t reg8; @@ -224,7 +226,7 @@ return 0; } -static int enable_flash_cs5536(struct pci_dev *dev, char *name) +static int enable_flash_cs5536(struct pci_dev *dev, const char *name) { int fd_msr; unsigned char buf[8]; @@ -233,15 +235,15 @@ /* Geode systems write protect the BIOS via RCONFs (cache * settings similar to MTRRs). To unlock, change MSR 0x1808 * top byte to 0x22. Reading and writing to msr, however - * requires instrucitons rdmsr/wrmsr, which are ring0 privileged + * requires instructions rdmsr/wrmsr, which are ring0 privileged * instructions so only the kernel can do the read/write. This * function, therefore, requires that the msr kernel module be * loaded to access these instructions from user space using * device /dev/cpu/0/msr. This hard-coded driver location * could have potential problems on SMP machines since it - * assumes cpu0, but it is safe on the geode which is not SMP. + * assumes cpu0, but it is safe on the Geode which is not SMP. * - * This is probably not portable beyond linux. + * This is probably not portable beyond Linux. */ fd_msr = open("/dev/cpu/0/msr", O_RDONLY); @@ -272,7 +274,7 @@ return 0; } -static int enable_flash_sc1100(struct pci_dev *dev, char *name) +static int enable_flash_sc1100(struct pci_dev *dev, const char *name) { uint8_t new; @@ -288,16 +290,14 @@ return 0; } -static int enable_flash_sis5595(struct pci_dev *dev, char *name) +static int enable_flash_sis5595(struct pci_dev *dev, const char *name) { uint8_t new, newer; new = pci_read_byte(dev, 0x45); - /* clear bit 5 */ - new &= (~0x20); - /* set bit 2 */ - new |= 0x4; + new &= (~0x20); /* Clear bit 5. */ + new |= 0x4; /* Set bit 2. */ pci_write_byte(dev, 0x45, new); @@ -311,16 +311,11 @@ return 0; } -static int enable_flash_amd8111(struct pci_dev *dev, char *name) +static int enable_flash_amd8111(struct pci_dev *dev, const char *name) { - /* register 4e.b gets or'ed with one */ uint8_t old, new; - /* if it fails, it fails. There are so many variations of broken mobos - * that it is hard to argue that we should quit at this point. - */ - - /* enable decoding at 0xffb00000 to 0xffffffff */ + /* Enable decoding at 0xffb00000 to 0xffffffff. */ old = pci_read_byte(dev, 0x43); new = old | 0xC0; if (new != old) { @@ -344,17 +339,10 @@ return 0; } -static int enable_flash_ck804(struct pci_dev *dev, char *name) +static int enable_flash_ck804(struct pci_dev *dev, const char *name) { - /* register 4e.b gets or'ed with one */ uint8_t old, new; - /* if it fails, it fails. There are so many variations of broken mobos - * that it is hard to argue that we should quit at this point. - */ - - /* dump_pci_device(dev); */ - old = pci_read_byte(dev, 0x88); new = old | 0xc0; if (new != old) { @@ -378,14 +366,14 @@ return 0; } -static int enable_flash_sb400(struct pci_dev *dev, char *name) +/* ATI Technologies Inc IXP SB400 PCI-ISA Bridge (rev 80) */ +static int enable_flash_sb400(struct pci_dev *dev, const char *name) { uint8_t tmp; - struct pci_filter f; struct pci_dev *smbusdev; - /* then look for the smbus device */ + /* Look for the SMBus device. */ pci_filter_init((struct pci_access *)0, &f); f.vendor = 0x1002; f.device = 0x4372; @@ -397,21 +385,21 @@ } if (!smbusdev) { - fprintf(stderr, "ERROR: SMBus device not found. aborting\n"); + fprintf(stderr, "ERROR: SMBus device not found. Aborting.\n"); exit(1); } - /* enable some smbus stuff */ + /* Enable some SMBus stuff. */ tmp = pci_read_byte(smbusdev, 0x79); tmp |= 0x01; pci_write_byte(smbusdev, 0x79, tmp); - /* change southbridge */ + /* Change southbridge. */ tmp = pci_read_byte(dev, 0x48); tmp |= 0x21; pci_write_byte(dev, 0x48, tmp); - /* now become a bit silly. */ + /* Now become a bit silly. */ tmp = inb(0xc6f); outb(tmp, 0xeb); outb(tmp, 0xeb); @@ -423,19 +411,12 @@ return 0; } -static int enable_flash_mcp55(struct pci_dev *dev, char *name) +static int enable_flash_mcp55(struct pci_dev *dev, const char *name) { - /* register 4e.b gets or'ed with one */ - unsigned char old, new, byte; - unsigned short word; + uint8_t old, new, byte; + uint16_t word; - /* if it fails, it fails. There are so many variations of broken mobos - * that it is hard to argue that we should quit at this point. - */ - - /* dump_pci_device(dev); */ - - /* Set the 0-16 MB enable bits */ + /* Set the 0-16 MB enable bits. */ byte = pci_read_byte(dev, 0x88); byte |= 0xff; /* 256K */ pci_write_byte(dev, 0x88, byte); @@ -462,7 +443,7 @@ return 0; } -static int enable_flash_ht1000(struct pci_dev *dev, char *name) +static int enable_flash_ht1000(struct pci_dev *dev, const char *name) { uint8_t byte; @@ -479,12 +460,12 @@ } typedef struct penable { - unsigned short vendor, device; - char *name; - int (*doit) (struct pci_dev * dev, char *name); + uint16_t vendor, device; + const char *name; + int (*doit) (struct pci_dev *dev, const char *name); } FLASH_ENABLE; -static FLASH_ENABLE enables[] = { +static const FLASH_ENABLE enables[] = { {0x1039, 0x0630, "SIS630", enable_flash_sis630}, {0x8086, 0x7110, "PIIX4/PIIX4E/PIIX4M", enable_flash_piix4}, {0x8086, 0x7198, "Intel 440MX", enable_flash_piix4}, @@ -517,17 +498,14 @@ {0x1022, 0x2080, "AMD GEODE CS5536", enable_flash_cs5536}, {0x1022, 0x7468, "AMD8111", enable_flash_amd8111}, {0x10B9, 0x1533, "ALi M1533", enable_flash_ali_m1533}, - /* this fallthrough looks broken. */ {0x10de, 0x0050, "NVIDIA CK804", enable_flash_ck804}, /* LPC */ {0x10de, 0x0051, "NVIDIA CK804", enable_flash_ck804}, /* Pro */ {0x10de, 0x00d3, "NVIDIA CK804", enable_flash_ck804}, /* Slave, should not be here, to fix known bug for A01. */ - {0x10de, 0x0260, "NVidia MCP51", enable_flash_ck804}, {0x10de, 0x0261, "NVidia MCP51", enable_flash_ck804}, {0x10de, 0x0262, "NVidia MCP51", enable_flash_ck804}, {0x10de, 0x0263, "NVidia MCP51", enable_flash_ck804}, - - {0x10de, 0x0360, "NVIDIA MCP55", enable_flash_mcp55}, /* Gigabyte m57sli-s4 */ + {0x10de, 0x0360, "NVIDIA MCP55", enable_flash_mcp55}, /* M57SLI-S4 */ {0x10de, 0x0361, "NVIDIA MCP55", enable_flash_mcp55}, /* LPC */ {0x10de, 0x0362, "NVIDIA MCP55", enable_flash_mcp55}, /* LPC */ {0x10de, 0x0363, "NVIDIA MCP55", enable_flash_mcp55}, /* LPC */ @@ -535,19 +513,18 @@ {0x10de, 0x0365, "NVIDIA MCP55", enable_flash_mcp55}, /* LPC */ {0x10de, 0x0366, "NVIDIA MCP55", enable_flash_mcp55}, /* LPC */ {0x10de, 0x0367, "NVIDIA MCP55", enable_flash_mcp55}, /* Pro */ - - {0x1002, 0x4377, "ATI SB400", enable_flash_sb400}, /* ATI Technologies Inc IXP SB400 PCI-ISA Bridge (rev 80) */ - + {0x1002, 0x4377, "ATI SB400", enable_flash_sb400}, {0x1166, 0x0205, "Broadcom HT-1000", enable_flash_ht1000}, }; int chipset_flash_enable(void) { struct pci_dev *dev = 0; - int ret = -2; /* nothing! */ + int ret = -2; /* Nothing! */ int i; - /* now let's try to find the chipset we have ... */ + /* Now let's try to find the chipset we have... */ + /* TODO: Use ARRAY_SIZE. */ for (i = 0; i < sizeof(enables) / sizeof(enables[0]); i++) { dev = pci_dev_find(enables[i].vendor, enables[i].device); if (dev) Modified: trunk/util/flashrom/flash.h =================================================================== --- trunk/util/flashrom/flash.h 2007-12-04 01:15:29 UTC (rev 2996) +++ trunk/util/flashrom/flash.h 2007-12-04 21:49:06 UTC (rev 2997) @@ -31,7 +31,7 @@ #include struct flashchip { - char *name; + const char *name; int manufacture_id; int model_id; @@ -43,18 +43,18 @@ int (*write) (struct flashchip *flash, uint8_t *buf); int (*read) (struct flashchip *flash, uint8_t *buf); - /* some flash devices have an additional - * register space - */ + /* Some flash devices have an additional register space. */ volatile uint8_t *virtual_memory; volatile uint8_t *virtual_registers; }; extern struct flashchip flashchips[]; -/* Please keep this list sorted alphabetically by manufacturer. The first +/* + * Please keep this list sorted alphabetically by manufacturer. The first * entry of each section should be the manufacturer ID, followed by the * list of devices from that manufacturer (sorted by device IDs). + * * All LPC/FWH parts (parallel flash) have 8-bit device IDs. * All SPI parts have 16-bit device IDs. */ @@ -80,9 +80,11 @@ #define EMST_ID 0x8C /* EMST / EFST */ #define EMST_F49B002UA 0x00 +/* + * EN25 chips are SPI, first byte of device ID is memory type, + * second byte of device ID is log(bitsize)-9. + */ #define EON_ID 0x1C /* EON */ -/* EN25 chips are SPI, first byte of device id is memory type, - * second byte of device id is log(bitsize)-9. */ #define EN_25B05 0x2010 /* 2^19 kbit or 2^16 kByte */ #define EN_25B10 0x2011 #define EN_25B20 0x2012 @@ -103,13 +105,15 @@ #define ISSI_ID 0xD5 /* ISSI */ #define MSYSTEMS_ID 0x156F /* M-Systems */ -#define MSYSTEMS_MD2200 0xDB /* ? */ +#define MSYSTEMS_MD2200 0xDB #define MSYSTEMS_MD2800 0x30 /* hmm -- both 0x30 */ #define MSYSTEMS_MD2802 0x30 /* hmm -- both 0x30 */ +/* + * MX25 chips are SPI, first byte of device ID is memory type, + * second byte of device ID is log(bitsize)-9. + */ #define MX_ID 0xC2 /* Macronix (MX) */ -/* MX25 chips are SPI, first byte of device id is memory type, - * second byte of device id is log(bitsize)-9. */ #define MX_25L512 0x2010 /* 2^19 kbit or 2^16 kByte */ #define MX_25L1005 0x2011 #define MX_25L2005 0x2012 @@ -129,9 +133,11 @@ #define SHARP_ID 0xB0 /* Sharp */ #define SHARP_LHF00L04 0xCF +/* + * SST25 chips are SPI, first byte of device ID is memory type, second + * byte of device ID is related to log(bitsize) at least for some chips. + */ #define SST_ID 0xBF /* SST */ -/* SST25 chips are SPI, first byte of device id is memory type, second - * byte of device id is related to log(bitsize) at least for some chips. */ #define SST_25WF512 0x2501 #define SST_25WF010 0x2502 #define SST_25WF020 0x2503 @@ -196,22 +202,23 @@ #define W_49V002A 0xB0 #define W_49V002FA 0x32 -/* function prototypes from udelay.h */ - +/* udelay.c */ void myusec_delay(int time); void myusec_calibrate_delay(); -/* pci handling for board/chipset_enable */ -struct pci_access *pacc; /* For board and chipset_enable */ +/* PCI handling for board/chipset_enable */ +struct pci_access *pacc; struct pci_dev *pci_dev_find(uint16_t vendor, uint16_t device); struct pci_dev *pci_card_find(uint16_t vendor, uint16_t device, uint16_t card_vendor, uint16_t card_device); -int board_flash_enable(char *vendor, char *part); /* board_enable.c */ -int chipset_flash_enable(void); /* chipset_enable.c */ +/* board_enable.c */ +int board_flash_enable(const char *vendor, const char *part); -/* physical memory mapping device */ +/* chipset_enable.c */ +int chipset_flash_enable(void); +/* Physical memory mapping device */ #if defined (__sun) && (defined(__i386) || defined(__amd64)) # define MEM_DEV "/dev/xsvc" #else From myles at pel.cs.byu.edu Tue Dec 4 23:04:16 2007 From: myles at pel.cs.byu.edu (Myles Watson) Date: Tue, 4 Dec 2007 15:04:16 -0700 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <20071129184112.GE28736@cosmic.amd.com> References: <20071129184112.GE28736@cosmic.amd.com> Message-ID: <2831fecf0712041404sf297051hccac162beae4fb5b@mail.gmail.com> > * Optimizations: There are always things we can do to clean up - add -j N > support for make, reduce memory usage, avoid stupid gmake tricks and the > like. I think things are stable enough in the core that we can start to > twist some knobs without blowing everything up. > This patch adds -jN support to speed builds. It passes it as an argument to make for the kernel and uClibc. It breaks the build for busybox, so it isn't passed there. The default is -j1, or the status quo. Signed-off-by: Myles Watson -------------- next part -------------- A non-text attachment was scrubbed... Name: make_jobs.patch Type: application/octet-stream Size: 2126 bytes Desc: not available URL: From myles at pel.cs.byu.edu Tue Dec 4 23:13:34 2007 From: myles at pel.cs.byu.edu (Myles Watson) Date: Tue, 4 Dec 2007 15:13:34 -0700 Subject: [LinuxBIOS] Add iso9660 support to LAB kernel for serengeti-cheetah Message-ID: <2831fecf0712041413r1ad72ce8w3312bf668714fe26@mail.gmail.com> This is a trivial patch that adds support for iso9660 file systems to the LAB kernel for serengeti-cheetah. Myles Signed-off-by: Myles Watson -------------- next part -------------- A non-text attachment was scrubbed... Name: iso9660_for_serengeti_cheetah_LAB.patch Type: application/octet-stream Size: 474 bytes Desc: not available URL: From myles at pel.cs.byu.edu Tue Dec 4 23:29:08 2007 From: myles at pel.cs.byu.edu (Myles Watson) Date: Tue, 4 Dec 2007 15:29:08 -0700 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <20071204052804.GH20788@greenwood> References: <20071203170024.4989.qmail@stuge.se> <017601c835d8$02a2a240$480110ac@chimp> <20071203182927.GB23382@cosmic.amd.com> <20071204052804.GH20788@greenwood> Message-ID: <000001c836c5$16bd6fb0$4b23040a@chimp> > On Mon, Dec 03, 2007 at 11:29:27AM -0700, Jordan Crouse wrote: > > > I think it's more important to figure out how we really want to > configure > > > LinuxBIOS (it seems to be a large hurdle for newbies), not buildrom. > > > > Agreed - being able to do these things easily with v3 is a priority. > > We have to think about what we would want to control externally, and > then > > make those knobs easy to turn. > > Isn't that easy in v3 already? You just use / modify defconfig files as > with the kernel. From svn at openbios.org Tue Dec 4 23:42:39 2007 From: svn at openbios.org (svn at openbios.org) Date: Tue, 4 Dec 2007 23:42:39 +0100 Subject: [LinuxBIOS] r537 - in LinuxBIOSv3: . arch/x86 mainboard/adl/msm800sev mainboard/amd/norwich mainboard/artecgroup/dbe61 mainboard/emulation/qemu-x86 mainboard/pcengines/alix1c Message-ID: Author: hailfinger Date: 2007-12-04 23:42:38 +0100 (Tue, 04 Dec 2007) New Revision: 537 Modified: LinuxBIOSv3/Rules.make LinuxBIOSv3/arch/x86/Makefile LinuxBIOSv3/arch/x86/stage1.c LinuxBIOSv3/mainboard/adl/msm800sev/Makefile LinuxBIOSv3/mainboard/amd/norwich/Makefile LinuxBIOSv3/mainboard/artecgroup/dbe61/Makefile LinuxBIOSv3/mainboard/emulation/qemu-x86/Makefile LinuxBIOSv3/mainboard/pcengines/alix1c/Makefile Log: Absolute calls from initram were only working from the file which had _MAINOBJECT #defined. Calls from all other files ended up in nirvana because the compiler was not able to calculate the address of the wrapper for the absolute call. The linker tried, but failed miserably. Use the -combine flag and compile all of initram at once. This enables GCC to calculate the address of the abscall wrapper, resulting in working code. Segher Boessenkool thinks the patched code works only by accident because GCC has no way to specify generation of XIP code. According to him, future GCC versions or other circumstances may break the code. While this patch makes code work for now, it does NOT check whether the generated code tries to write to memory outside the stack (general writable data). That will of course fail, but I hope porters are smart enough to avoid that. Corey Osgood writes: Great work tracking this down! This is okay for now, but we need to look for a better solution in the future. Counting on porters who may or may not remember this discussion to avoid something isn't good future-proofing. Checking the ELF sections for read-write data and stopping the build with an error could make this future-proof. Signed-off-by: Carl-Daniel Hailfinger Acked-by: Corey Osgood Modified: LinuxBIOSv3/Rules.make =================================================================== --- LinuxBIOSv3/Rules.make 2007-12-04 21:06:52 UTC (rev 536) +++ LinuxBIOSv3/Rules.make 2007-12-04 22:42:38 UTC (rev 537) @@ -78,13 +78,3 @@ $(Q)printf " CC $(subst $(shell pwd)/,,$(@))\n" $(Q)$(CC) $(INITCFLAGS) -c $< -o $@ -# -# RAM initialization code can not be linked at a specific address, -# hence it has to be executed in place (XIP) position independently. -# - -$(obj)/%_xip.o: $(src)/%.c - $(Q)mkdir -p $(dir $@) - $(Q)printf " CC $(subst $(shell pwd)/,,$(@)) (XIP)\n" - $(Q)$(CC) $(INITCFLAGS) -D_SHARED -fPIE -c $< -o $@ - Modified: LinuxBIOSv3/arch/x86/Makefile =================================================================== --- LinuxBIOSv3/arch/x86/Makefile 2007-12-04 21:06:52 UTC (rev 536) +++ LinuxBIOSv3/arch/x86/Makefile 2007-12-04 22:42:38 UTC (rev 537) @@ -36,7 +36,7 @@ ROM_SIZE := $(shell expr $(CONFIG_LINUXBIOS_ROMSIZE_KB) \* 1024) -LARFILES := nocompress:normal/initram.o normal/stage2.o nocompress:normal/option_table +LARFILES := nocompress:normal/initram normal/stage2.o nocompress:normal/option_table ifneq ($(CONFIG_PAYLOAD_NONE),y) LARFILES += normal/payload endif @@ -57,11 +57,11 @@ COMPRESSFLAG := -C nrv2b endif -$(obj)/linuxbios.rom $(obj)/linuxbios.map: $(obj)/linuxbios.bootblock $(obj)/util/lar/lar lzma nrv2b $(obj)/linuxbios.initram.o $(obj)/linuxbios.stage2.o $(obj)/option_table +$(obj)/linuxbios.rom $(obj)/linuxbios.map: $(obj)/linuxbios.bootblock $(obj)/util/lar/lar lzma nrv2b $(obj)/linuxbios.initram $(obj)/linuxbios.stage2.o $(obj)/option_table $(Q)rm -rf $(obj)/lar.tmp $(Q)mkdir $(obj)/lar.tmp $(Q)mkdir $(obj)/lar.tmp/normal - $(Q)cp $(obj)/linuxbios.initram.o $(obj)/lar.tmp/normal/initram.o + $(Q)cp $(obj)/linuxbios.initram $(obj)/lar.tmp/normal/initram $(Q)cp $(obj)/linuxbios.stage2.o $(obj)/lar.tmp/normal/stage2.o $(Q)cp $(obj)/option_table $(obj)/lar.tmp/normal/option_table ifeq ($(CONFIG_PAYLOAD_NONE),y) @@ -232,12 +232,14 @@ $(Q)printf " AS $(subst $(shell pwd)/,,$(@))\n" $(Q)$(AS) $(obj)/arch/x86/stage0_asm.s -o $@ -$(obj)/linuxbios.initram.o $(obj)/linuxbios.initram.map: $(obj)/stage0.init $(obj)/stage0-prefixed.o $(patsubst %.o,%_xip.o,$(INITRAM_OBJ)) +$(obj)/linuxbios.initram $(obj)/linuxbios.initram.map: $(obj)/stage0.init $(obj)/stage0-prefixed.o $(INITRAM_OBJ) + $(Q)printf " CC $(subst $(shell pwd)/,,$(@)) (XIP)\n" + $(Q)$(CC) $(INITCFLAGS) -D_SHARED -fPIE -c -combine $(INITRAM_OBJ) -o $(obj)/linuxbios.initram_partiallylinked.o $(Q)# initram links against stage0 $(Q)printf " LD $(subst $(shell pwd)/,,$(@))\n" $(Q)$(LD) -Ttext 0 --entry main -N -R $(obj)/stage0-prefixed.o \ - $(patsubst %.o,%_xip.o,$(INITRAM_OBJ)) -o $(obj)/linuxbios.initram.o + $(obj)/linuxbios.initram_partiallylinked.o -o $(obj)/linuxbios.initram $(Q)printf " NM $(subst $(shell pwd)/,,$(@))\n" - $(Q)$(NM) $(obj)/linuxbios.initram.o | sort -u > $(obj)/linuxbios.initram.map + $(Q)$(NM) $(obj)/linuxbios.initram | sort -u > $(obj)/linuxbios.initram.map endif Modified: LinuxBIOSv3/arch/x86/stage1.c =================================================================== --- LinuxBIOSv3/arch/x86/stage1.c 2007-12-04 21:06:52 UTC (rev 536) +++ LinuxBIOSv3/arch/x86/stage1.c 2007-12-04 22:42:38 UTC (rev 537) @@ -137,17 +137,17 @@ // find first initram if (check_normal_boot_flag()) { printk(BIOS_DEBUG, "Choosing normal boot.\n"); - ret = execute_in_place(&archive, "normal/initram.o/segment0"); + ret = execute_in_place(&archive, "normal/initram/segment0"); } else { printk(BIOS_DEBUG, "Choosing fallback boot.\n"); - ret = execute_in_place(&archive, "fallback/initram.o/segment0"); + ret = execute_in_place(&archive, "fallback/initram/segment0"); /* Try a normal boot if fallback doesn't exist in the lar. * TODO: There are other ways to do this. * It could be ifdef or the boot flag could be forced. */ if (ret) { printk(BIOS_DEBUG, "Fallback failed. Try normal boot\n"); - ret = execute_in_place(&archive, "normal/initram.o/segment0"); + ret = execute_in_place(&archive, "normal/initram/segment0"); } } Modified: LinuxBIOSv3/mainboard/adl/msm800sev/Makefile =================================================================== --- LinuxBIOSv3/mainboard/adl/msm800sev/Makefile 2007-12-04 21:06:52 UTC (rev 536) +++ LinuxBIOSv3/mainboard/adl/msm800sev/Makefile 2007-12-04 22:42:38 UTC (rev 537) @@ -21,10 +21,10 @@ STAGE0_MAINBOARD_OBJ := $(obj)/mainboard/$(MAINBOARDDIR)/stage1.o -INITRAM_OBJ = $(obj)/mainboard/$(MAINBOARDDIR)/initram.o \ - $(obj)/northbridge/amd/geodelx/raminit.o \ - $(obj)/southbridge/amd/cs5536/smbus_initram.o \ - $(obj)/arch/x86/geodelx/geodelx.o +INITRAM_OBJ = $(src)/mainboard/$(MAINBOARDDIR)/initram.c \ + $(src)/northbridge/amd/geodelx/raminit.c \ + $(src)/southbridge/amd/cs5536/smbus_initram.c \ + $(src)/arch/x86/geodelx/geodelx.c STAGE2_MAINBOARD_OBJ = Modified: LinuxBIOSv3/mainboard/amd/norwich/Makefile =================================================================== --- LinuxBIOSv3/mainboard/amd/norwich/Makefile 2007-12-04 21:06:52 UTC (rev 536) +++ LinuxBIOSv3/mainboard/amd/norwich/Makefile 2007-12-04 22:42:38 UTC (rev 537) @@ -21,10 +21,10 @@ STAGE0_MAINBOARD_OBJ := $(obj)/mainboard/$(MAINBOARDDIR)/stage1.o -INITRAM_OBJ = $(obj)/mainboard/$(MAINBOARDDIR)/initram.o \ - $(obj)/northbridge/amd/geodelx/raminit.o \ - $(obj)/southbridge/amd/cs5536/smbus_initram.o \ - $(obj)/arch/x86/geodelx/geodelx.o +INITRAM_OBJ = $(src)/mainboard/$(MAINBOARDDIR)/initram.c \ + $(src)/northbridge/amd/geodelx/raminit.c \ + $(src)/southbridge/amd/cs5536/smbus_initram.c \ + $(src)/arch/x86/geodelx/geodelx.c STAGE2_MAINBOARD_OBJ = Modified: LinuxBIOSv3/mainboard/artecgroup/dbe61/Makefile =================================================================== --- LinuxBIOSv3/mainboard/artecgroup/dbe61/Makefile 2007-12-04 21:06:52 UTC (rev 536) +++ LinuxBIOSv3/mainboard/artecgroup/dbe61/Makefile 2007-12-04 22:42:38 UTC (rev 537) @@ -21,8 +21,8 @@ STAGE0_MAINBOARD_OBJ := $(obj)/mainboard/$(MAINBOARDDIR)/stage1.o -INITRAM_OBJ = $(obj)/mainboard/$(MAINBOARDDIR)/initram.o \ - $(obj)/arch/x86/geodelx/geodelx.o +INITRAM_OBJ = $(src)/mainboard/$(MAINBOARDDIR)/initram.c \ + $(src)/arch/x86/geodelx/geodelx.c STAGE2_MAINBOARD_OBJ = Modified: LinuxBIOSv3/mainboard/emulation/qemu-x86/Makefile =================================================================== --- LinuxBIOSv3/mainboard/emulation/qemu-x86/Makefile 2007-12-04 21:06:52 UTC (rev 536) +++ LinuxBIOSv3/mainboard/emulation/qemu-x86/Makefile 2007-12-04 22:42:38 UTC (rev 537) @@ -28,8 +28,8 @@ # directory and is built from what was auto.c in v2. # -INITRAM_OBJ = $(obj)/mainboard/$(MAINBOARDDIR)/initram.o \ - $(obj)/mainboard/$(MAINBOARDDIR)/initram_printktest.o +INITRAM_OBJ = $(src)/mainboard/$(MAINBOARDDIR)/initram.c \ + $(src)/mainboard/$(MAINBOARDDIR)/initram_printktest.c STAGE2_MAINBOARD_OBJ = vga.o Modified: LinuxBIOSv3/mainboard/pcengines/alix1c/Makefile =================================================================== --- LinuxBIOSv3/mainboard/pcengines/alix1c/Makefile 2007-12-04 21:06:52 UTC (rev 536) +++ LinuxBIOSv3/mainboard/pcengines/alix1c/Makefile 2007-12-04 22:42:38 UTC (rev 537) @@ -21,9 +21,9 @@ STAGE0_MAINBOARD_OBJ := $(obj)/mainboard/$(MAINBOARDDIR)/stage1.o -INITRAM_OBJ = $(obj)/mainboard/$(MAINBOARDDIR)/initram.o \ - $(obj)/northbridge/amd/geodelx/raminit.o \ - $(obj)/arch/x86/geodelx/geodelx.o +INITRAM_OBJ = $(src)/mainboard/$(MAINBOARDDIR)/initram.c \ + $(src)/northbridge/amd/geodelx/raminit.c \ + $(src)/arch/x86/geodelx/geodelx.c STAGE2_MAINBOARD_OBJ = From c-d.hailfinger.devel.2006 at gmx.net Tue Dec 4 23:52:21 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Tue, 04 Dec 2007 23:52:21 +0100 Subject: [LinuxBIOS] [PATCH] v3: fix absolute calls from initram In-Reply-To: <47559F3B.1080407@gmail.com> References: <4754BDFE.6060203@gmx.net> <47559F3B.1080407@gmail.com> Message-ID: <4755DA25.4030201@gmx.net> On 04.12.2007 19:40, Corey Osgood wrote: > Carl-Daniel Hailfinger wrote: > >> Absolute calls from initram were only working from the file which had >> _MAINOBJECT #defined. Calls from all other files ended up in nirvana >> because the compiler was not able to calculate the address of the >> wrapper for the absolute call. The linker tried, but failed miserably. >> Use the -combine flag and compile all of initram at once. This enables >> GCC to calculate the address of the abscall wrapper, resulting in >> working code. >> >> Segher Boessenkool thinks the patched code works only by accident >> because GCC has no way to specify generation of XIP code. According to >> him, future GCC versions or other circumstances may break the code. >> >> While this patch makes code work for now, it does NOT check whether the >> generated code tries to write to memory outside the stack (general >> writable data). That will of course fail, but I hope porters are smart >> enough to avoid that. >> >> Signed-off-by: Carl-Daniel Hailfinger >> > > Acked-by: Corey Osgood > Thanks, r537. Regards, Carl-Daniel From svn at openbios.org Wed Dec 5 00:15:33 2007 From: svn at openbios.org (svn at openbios.org) Date: Wed, 5 Dec 2007 00:15:33 +0100 Subject: [LinuxBIOS] r538 - in LinuxBIOSv3: lib util/lar Message-ID: Author: hailfinger Date: 2007-12-05 00:15:33 +0100 (Wed, 05 Dec 2007) New Revision: 538 Modified: LinuxBIOSv3/lib/lar.c LinuxBIOSv3/util/lar/stream.c Log: Change wrong "LAR: NO FILE FOUND!" message to "LAR: File not found!". The message appears if a file has not been found in the LAR archive and is triggered even by lookup routines. Normal capitalization helps reducing the frightening effect of the message. Correct a few typos in other areas of the LAR code as well. Signed-off-by: Carl-Daniel Hailfinger Acked-by: Carl-Daniel Hailfinger Modified: LinuxBIOSv3/lib/lar.c =================================================================== --- LinuxBIOSv3/lib/lar.c 2007-12-04 22:42:38 UTC (rev 537) +++ LinuxBIOSv3/lib/lar.c 2007-12-04 23:15:33 UTC (rev 538) @@ -141,7 +141,7 @@ walk += (ntohl(header->offset) + ntohl(header->len) - 1) & 0xfffffff0; } - printk(BIOS_SPEW, "LAR: NO FILE FOUND!\n"); + printk(BIOS_SPEW, "LAR: File not found!\n"); return 1; } Modified: LinuxBIOSv3/util/lar/stream.c =================================================================== --- LinuxBIOSv3/util/lar/stream.c 2007-12-04 22:42:38 UTC (rev 537) +++ LinuxBIOSv3/util/lar/stream.c 2007-12-04 23:15:33 UTC (rev 538) @@ -63,7 +63,7 @@ /** * Output all the ELF segments for a given file - * @param lar The LAR Archoe + * @param lar The LAR archive * @param name The LAR name * @param filebuf The ELF file * @param filelen Size of the ELF file @@ -88,9 +88,13 @@ u32 complen; /* Allocate a temporary buffer to compress into - this is unavoidable, - because we need to make sure that the compressed data will fit in - the LAR, and we won't know the size of the compressed data until - we actually compress it */ + * because we need to make sure that the compressed data will fit in + * the LAR, and we won't know the size of the compressed data until + * we actually compress it. + * FIXME: In case the compressed file is bigger than the original, + * we corrupt memory. Compute maximum size increase and allocate that + * on top of the file length. + */ temp = calloc(filelen, 1); From c-d.hailfinger.devel.2006 at gmx.net Wed Dec 5 00:22:46 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Wed, 05 Dec 2007 00:22:46 +0100 Subject: [LinuxBIOS] r538 - in LinuxBIOSv3: lib util/lar In-Reply-To: <20071204231548.30674gmx1@mx029.gmx.net> References: <20071204231548.30674gmx1@mx029.gmx.net> Message-ID: <4755E146.2020907@gmx.net> On 05.12.2007 00:15, svn at openbios.org wrote: > Author: hailfinger > Date: 2007-12-05 00:15:33 +0100 (Wed, 05 Dec 2007) > New Revision: 538 > > Modified: > LinuxBIOSv3/lib/lar.c > LinuxBIOSv3/util/lar/stream.c > Log: > Change wrong "LAR: NO FILE FOUND!" message to "LAR: File not found!". > The message appears if a file has not been found in the LAR archive and > is triggered even by lookup routines. Normal capitalization helps > reducing the frightening effect of the message. > > Correct a few typos in other areas of the LAR code as well. > > Signed-off-by: Carl-Daniel Hailfinger > Acked-by: Carl-Daniel Hailfinger > My first self-acked patch. Flame away! Carl-Daniel From c-d.hailfinger.devel.2006 at gmx.net Wed Dec 5 00:54:54 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Wed, 05 Dec 2007 00:54:54 +0100 Subject: [LinuxBIOS] [PATCH] v3: correct stage2 naming Message-ID: <4755E8CE.30205@gmx.net> linuxbios.stage2.o (and stage2.o in the LAR) are NOT .o files, they are ELF executables. Remove the .o suffix to reduce confusion. Signed-off-by: Carl-Daniel Hailfinger Index: LinuxBIOSv3-dontcallexecutablesdoto/arch/x86/stage1.c =================================================================== --- LinuxBIOSv3-dontcallexecutablesdoto/arch/x86/stage1.c (Revision 538) +++ LinuxBIOSv3-dontcallexecutablesdoto/arch/x86/stage1.c (Arbeitskopie) @@ -160,7 +160,7 @@ /* Turn off Cache-As-Ram */ disable_car(); - entry = load_file_segments(&archive, "normal/stage2.o"); + entry = load_file_segments(&archive, "normal/stage2"); if (entry == (void *)-1) die("FATAL: Failed loading stage2."); ret = run_address(entry); Index: LinuxBIOSv3-dontcallexecutablesdoto/arch/x86/Makefile =================================================================== --- LinuxBIOSv3-dontcallexecutablesdoto/arch/x86/Makefile (Revision 538) +++ LinuxBIOSv3-dontcallexecutablesdoto/arch/x86/Makefile (Arbeitskopie) @@ -36,7 +36,7 @@ ROM_SIZE := $(shell expr $(CONFIG_LINUXBIOS_ROMSIZE_KB) \* 1024) -LARFILES := nocompress:normal/initram normal/stage2.o nocompress:normal/option_table +LARFILES := nocompress:normal/initram normal/stage2 nocompress:normal/option_table ifneq ($(CONFIG_PAYLOAD_NONE),y) LARFILES += normal/payload endif @@ -57,12 +57,12 @@ COMPRESSFLAG := -C nrv2b endif -$(obj)/linuxbios.rom $(obj)/linuxbios.map: $(obj)/linuxbios.bootblock $(obj)/util/lar/lar lzma nrv2b $(obj)/linuxbios.initram $(obj)/linuxbios.stage2.o $(obj)/option_table +$(obj)/linuxbios.rom $(obj)/linuxbios.map: $(obj)/linuxbios.bootblock $(obj)/util/lar/lar lzma nrv2b $(obj)/linuxbios.initram $(obj)/linuxbios.stage2 $(obj)/option_table $(Q)rm -rf $(obj)/lar.tmp $(Q)mkdir $(obj)/lar.tmp $(Q)mkdir $(obj)/lar.tmp/normal $(Q)cp $(obj)/linuxbios.initram $(obj)/lar.tmp/normal/initram - $(Q)cp $(obj)/linuxbios.stage2.o $(obj)/lar.tmp/normal/stage2.o + $(Q)cp $(obj)/linuxbios.stage2 $(obj)/lar.tmp/normal/stage2 $(Q)cp $(obj)/option_table $(obj)/lar.tmp/normal/option_table ifeq ($(CONFIG_PAYLOAD_NONE),y) $(Q)printf " PAYLOAD none (as specified by user)\n" @@ -198,12 +198,12 @@ STAGE2_OBJ += $(obj)/util/x86emu/libx86emu.a $(LIBGCC_FILE_NAME) endif -$(obj)/linuxbios.stage2.o $(obj)/linuxbios.stage2.map: $(obj)/stage0.init $(STAGE2_OBJ) +$(obj)/linuxbios.stage2 $(obj)/linuxbios.stage2.map: $(obj)/stage0.init $(STAGE2_OBJ) $(Q)# leave a .o with full symbols in it for debugging. $(Q)printf " LD $(subst $(shell pwd)/,,$(@))\n" $(Q)$(LD) -R $(obj)/stage0.o -Ttext 0x1000 --entry=stage2 \ - -o $(obj)/linuxbios.stage2.o $(STAGE2_OBJ) - $(Q)$(NM) $(obj)/linuxbios.stage2.o | sort -u > $(obj)/linuxbios.stage2.map + -o $(obj)/linuxbios.stage2 $(STAGE2_OBJ) + $(Q)$(NM) $(obj)/linuxbios.stage2 | sort -u > $(obj)/linuxbios.stage2.map # # Build rules. From yasteve at gmail.com Wed Dec 5 01:08:47 2007 From: yasteve at gmail.com (Steve Isaacs) Date: Tue, 04 Dec 2007 16:08:47 -0800 Subject: [LinuxBIOS] PCI: Left over static devices. Check your Config.lb Message-ID: <1196813327.32101.41.camel@biosbreath> I'm seeing this message during boot and have made several attempts and modifying the Config.lb as the message suggests. Here's the tail of the messages: PCI: 00:09.0 [1166/0142] disabled PCI: 00:0a.0 subbordinate bus PCI Express PCI: 00:0a.0 [1166/0144] enabled PCI: 00:0b.0 subbordinate bus PCI Express PCI: 00:0b.0 [1166/0142] disabled PCI: 00:0c.0 subbordinate bus PCI Express PCI: 00:0c.0 [1166/0144] disabled PCI: 00:01.1 PCI: Left over static devices. Check your Config.lb I did start with a much longer list of left over devices and have narrowed it down to this one but I can't find a config that corrects the problem. I've tried locating documentation that provides the rules for proper PCI configuration but haven't found anything that helps me understand what I've gotten wrong. Any clues I need to look for? Thanks, Steve From peter at stuge.se Wed Dec 5 01:18:38 2007 From: peter at stuge.se (Peter Stuge) Date: Wed, 5 Dec 2007 01:18:38 +0100 Subject: [LinuxBIOS] flashrom on ASUS P3B-F with M29F002 or 39SF020A In-Reply-To: <200712041800.48581.heino.goldenstein@t-online.de> References: <200712041800.48581.heino.goldenstein@t-online.de> Message-ID: <20071205001838.31964.qmail@stuge.se> On Tue, Dec 04, 2007 at 06:00:48PM +0100, Heino Goldenstein wrote: > I like to play with an ASUS P3B-F lingering around. Cool! > Neither the original (M29F002) nor an replacement Flashchip > (39SF020A) is recognized. According the documentation this should > be supported. .. > The result of probe_jedec seems flaky. > > Either I do something wrong or there is a bug. > Is there any advise how to resolve this? The mainboard probably needs some extra tricks to let the write enable signal through to the flash chip. It is needed also to identify the flash chip. :\ Some Asus boards had a tricky SMBus mux thing going on. Maybe that is what's causing problems here too? //Peter From c-d.hailfinger.devel.2006 at gmx.net Wed Dec 5 01:35:23 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Wed, 05 Dec 2007 01:35:23 +0100 Subject: [LinuxBIOS] flashrom fails on GA-M57SLI with 1MB ROM In-Reply-To: <20071201233401.GA4260@flashgordon> References: <200711212319.02068.harald.gutmann@gmx.net> <20071121224253.GA3489@flashgordon> <200711220102.29902.duwe@lst.de> <20071122072446.GA20729@flashgordon> <474777D4.30300@gmx.net> <20071125085413.GA3488@flashgordon> <474AB535.3030001@gmx.net> <20071126190059.GA4477@flashgordon> <474B64D1.1070904@gmx.net> <20071201091136.GA4277@flashgordon> <20071201233401.GA4260@flashgordon> Message-ID: <4755F24B.1090400@gmx.net> On 02.12.2007 00:34, Andreas B. Mundt wrote: > On Sat, Dec 01, 2007 at 10:11:36AM +0100, Andreas B. Mundt wrote: > >> Hi, >> >> building a LAB-image with buildrom (I had to do this on an other >> 32-bit machine) flashing now works for me, too. I tried to find out >> why, but so far without success. Some configuration might differ? >> > > > > > Hey, > > I found the difference in the builds: > > =================================================================== > --- src/mainboard/gigabyte/m57sli/Config.lb (revision 2994) > +++ src/mainboard/gigabyte/m57sli/Config.lb (working copy) > @@ -310,7 +310,7 @@ > # SIO pin set 1 input mode > #irq 0xc8 = 0x0 > # SIO pin set 2 mixed input/output mode > - irq 0xc9 = 0x40 > + irq 0xc9 = 0x0 > # SIO pin set 4 input mode > #irq 0xcb = 0x0 > # Generate SMI# on EC IRQ > > > This has been changed in rev 2972. Buildrom has still the 'old' > version. Flashing works fine for me if irq 0xc9 = 0x0 is set. With irq > 0xc9 = 0x40 it fails. > OK, is that a difference between board revisions, BIOS revisions or just a misinterpretation of some superiotool dump? I can see that your latest superiotool dump with the proprietary BIOS has irq 0xc9 = 0x40 set. I tried to mirror that. Now the interesting question is: Why does that setting not work for you? > Could somebody check if flashing really works for some m57sli-boards > (LPC) with the latest revision (irq 0xc9 = 0x40)? To track this down, I need: * superiotool dump of proprietary BIOS for board revisions 1.0, 1.1, 2.0, 2.x * the exact BIOS version of the proprietary BIOS. It seems that Ward's board also has 0xc9 = 0x40 set. Regards, Carl-Daniel From duwe at lst.de Wed Dec 5 01:33:17 2007 From: duwe at lst.de (Torsten Duwe) Date: Wed, 5 Dec 2007 01:33:17 +0100 Subject: [LinuxBIOS] r538 - in LinuxBIOSv3: lib util/lar In-Reply-To: <4755E146.2020907@gmx.net> References: <20071204231548.30674gmx1@mx029.gmx.net> <4755E146.2020907@gmx.net> Message-ID: <200712050133.17805.duwe@lst.de> On Wednesday 05 December 2007, Carl-Daniel Hailfinger wrote: > > Change wrong "LAR: NO FILE FOUND!" message to "LAR: File not found!". > My first self-acked patch. Flame away! Here you go: how is an automated checkin hook to tell the difference between this obviously trivial (sic!) change and a printf that might go to an autogenerated source file? In the essence: placing more commit hooks is moot, when OTOH you _know_ your patch is fine. Thank you for demonstrating my point :-) Torsten From c-d.hailfinger.devel.2006 at gmx.net Wed Dec 5 01:43:44 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Wed, 05 Dec 2007 01:43:44 +0100 Subject: [LinuxBIOS] Gigabyte M57SLI rev2.0 - PCI-Express In-Reply-To: <200712022105.23963.harald.gutmann@gmx.net> References: <200712022105.23963.harald.gutmann@gmx.net> Message-ID: <4755F440.7000006@gmx.net> On 02.12.2007 21:05, Harald Gutmann wrote: > Hello! > > As i know the PCI-Express port on that board should work with lb but i've > troubles on using an nvidia-grapic card with the propritary nvidia driver and > lb. i used the revison 2994 for this test with lb-v2. Or is it nessacary to > use a patch to get the PCI-Express working with lb? > > here are some informations on my system: > > dmesg shows the following output according to the nvidia module: > nvidia: module license 'NVIDIA' taints kernel. > NVRM: loading NVIDIA UNIX x86_64 Kernel Module 100.14.19 Wed Sep 12 14:08:38 > PDT 2007 > NVRM: RmInitAdapter failed! (0x12:0x2b:1557) > NVRM: rm_init_adapter(0) failed > > the xorg logfile contains the following error: > (EE) NVIDIA(0): The NVIDIA kernel module does not appear to be receiving > (EE) NVIDIA(0): interrupts generated by the NVIDIA graphics device > (EE) NVIDIA(0): PCI:7:0:0. Please see Chapter 8: Common Problems in the > (EE) NVIDIA(0): README for additional information. > (EE) NVIDIA(0): Failed to initialize the NVIDIA graphics device! > (EE) Screen(s) found, but none have a usable configuration. > > > where the last two lines (beginning with NVRM) in the dmesg appear when i try > to start the xserver with the nvidia grapics driver. > > attached is the superio output from lb, and from the propritary bios. > Please attach lspci -vvvxxx under lb and prop as well. I suspect some age-old PCI setup difference may be causing problems here. And I have no idea whether we boot the Nvidia graphics BIOS or not. A LinuxBIOS serial capture should help to clear that up. Regards, Carl-Daniel From c-d.hailfinger.devel.2006 at gmx.net Wed Dec 5 01:47:40 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Wed, 05 Dec 2007 01:47:40 +0100 Subject: [LinuxBIOS] [PATCH] v3: duplicate less code In-Reply-To: <474CB08F.7070600@gmx.net> References: <47444315.90702@gmx.net> <4748AE0A.1080601@gmx.net> <47499410.50502@coresystems.de> <474CB08F.7070600@gmx.net> Message-ID: <4755F52C.8040007@gmx.net> Comments? This has been sitting in my tree for a while. Regards, Carl-Daniel On 28.11.2007 01:04, Carl-Daniel Hailfinger wrote: > To reduce code duplication, make sure STAGE2_OBJ does not contain > any object already mentioned in STAGE0_OBJ. > This saves 386 bytes in qemu stage2 (~240 bytes after LZMA compression). > > Build tested and runtime tested in Qemu. > > Signed-off-by: Carl-Daniel Hailfinger > > > Index: LinuxBIOSv3-filteroutduplicatedshared/arch/x86/Makefile > =================================================================== > --- LinuxBIOSv3-filteroutduplicatedshared/arch/x86/Makefile (Revision 529) > +++ LinuxBIOSv3-filteroutduplicatedshared/arch/x86/Makefile (Arbeitskopie) > @@ -198,11 +198,16 @@ > STAGE2_OBJ += $(obj)/util/x86emu/libx86emu.a $(LIBGCC_FILE_NAME) > endif > > -$(obj)/linuxbios.stage2.o $(obj)/linuxbios.stage2.map: $(obj)/stage0.init $(STAGE2_OBJ) > +# To reduce code duplication, always make sure STAGE2_OBJ does not contain > +# any object from STAGE0_OBJ. > + > +STAGE2_OBJ_NEEDED = $(filter-out $(STAGE0_OBJ), $(STAGE2_OBJ)) > + > +$(obj)/linuxbios.stage2.o $(obj)/linuxbios.stage2.map: $(obj)/stage0.init $(STAGE2_OBJ_NEEDED) > $(Q)# leave a .o with full symbols in it for debugging. > $(Q)printf " LD $(subst $(shell pwd)/,,$(@))\n" > $(Q)$(LD) -R $(obj)/stage0.o -Ttext 0x1000 --entry=stage2 \ > - -o $(obj)/linuxbios.stage2.o $(STAGE2_OBJ) > + -o $(obj)/linuxbios.stage2.o $(STAGE2_OBJ_NEEDED) > $(Q)$(NM) $(obj)/linuxbios.stage2.o | sort -u > $(obj)/linuxbios.stage2.map > > # > From ward at gnu.org Wed Dec 5 01:48:35 2007 From: ward at gnu.org (Ward Vandewege) Date: Tue, 4 Dec 2007 19:48:35 -0500 Subject: [LinuxBIOS] Gigabyte M57SLI rev2.0 - PCI-Express In-Reply-To: <4755F440.7000006@gmx.net> References: <200712022105.23963.harald.gutmann@gmx.net> <4755F440.7000006@gmx.net> Message-ID: <20071205004835.GA4247@localdomain> On Wed, Dec 05, 2007 at 01:43:44AM +0100, Carl-Daniel Hailfinger wrote: > On 02.12.2007 21:05, Harald Gutmann wrote: > And I have no idea whether we boot the Nvidia graphics BIOS or not. A > LinuxBIOS serial capture should help to clear that up. I'm pretty sure we do; my nvidia card works just fine with the nv driver (and I get console on bootup). Thanks, Ward. -- Ward Vandewege Free Software Foundation - Senior System Administrator From duwe at lst.de Wed Dec 5 01:48:13 2007 From: duwe at lst.de (Torsten Duwe) Date: Wed, 5 Dec 2007 01:48:13 +0100 Subject: [LinuxBIOS] flashrom fails on GA-M57SLI with 1MB ROM In-Reply-To: <4755F24B.1090400@gmx.net> References: <200711212319.02068.harald.gutmann@gmx.net> <20071201233401.GA4260@flashgordon> <4755F24B.1090400@gmx.net> Message-ID: <200712050148.13404.duwe@lst.de> On Wednesday 05 December 2007, Carl-Daniel Hailfinger wrote: > To track this down, I need: > * superiotool dump of proprietary BIOS for board revisions 1.0, 1.1, > 2.0, 2.x > * the exact BIOS version of the proprietary BIOS. Here's my 1.0, BIOS rev 11b -------------- next part -------------- superiotool r Found ITE IT8716F (id=0x8716, rev=0x0) at 0x2e Register dump: idx 07 20 21 22 23 24 2b val 0a 87 16 00 51 00 00 def NA 87 16 01 00 00 00 LDN 0x00 idx 30 60 61 70 74 f0 f1 val 01 03 f0 06 02 00 80 def 00 03 f0 06 02 00 00 LDN 0x01 idx 30 60 61 70 f0 f1 f2 f3 val 01 03 f8 04 00 50 00 7f def 00 03 f8 04 00 50 00 7f LDN 0x02 idx 30 60 61 70 f0 f1 f2 f3 val 00 00 00 00 00 50 00 7f def 00 02 f8 03 00 50 00 7f LDN 0x03 idx 30 60 61 62 63 70 74 f0 val 01 03 78 07 78 07 03 0b def 00 03 78 07 78 07 03 03 LDN 0x04 idx 30 60 61 62 63 70 f0 f1 f2 f3 f4 f5 f6 val 01 02 90 00 00 00 08 08 0a 00 88 00 ff def 00 02 90 02 30 09 00 00 00 00 00 NA NA LDN 0x05 idx 30 60 61 62 63 70 71 f0 val 01 00 60 00 64 01 02 68 def 01 00 60 00 64 01 02 00 LDN 0x06 idx 30 70 71 f0 val 01 0c 02 00 def 00 0c 02 00 LDN 0x07 idx 25 26 27 28 29 2a 2c 60 61 62 63 64 65 70 71 72 73 74 b0 b1 b2 b3 b4 b5 b8 b9 ba bb bc bd c0 c1 c2 c3 c4 c8 c9 ca cb cc e0 e1 e2 e3 e4 f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd val 00 43 20 00 81 00 1f 00 00 08 00 00 00 00 01 00 38 00 00 00 00 00 00 00 00 00 00 00 01 00 00 43 20 00 00 00 40 00 00 00 00 00 00 00 00 10 40 00 00 00 00 28 00 00 00 00 00 32 00 def 01 00 00 40 00 00 00 00 00 00 00 00 00 00 00 20 38 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 40 00 01 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 NA 00 LDN 0x08 idx 30 60 61 70 f0 val 00 03 00 0a 00 def 00 03 00 0a 00 LDN 0x09 idx 30 60 61 val 00 02 01 def 00 02 01 LDN 0x0a idx 30 60 61 70 f0 val 00 03 10 0b 06 def 00 03 10 0b 00 From corey.osgood at gmail.com Wed Dec 5 02:20:59 2007 From: corey.osgood at gmail.com (Corey Osgood) Date: Tue, 4 Dec 2007 20:20:59 -0500 Subject: [LinuxBIOS] [PATCH] v3: correct stage2 naming In-Reply-To: <4755E8CE.30205@gmx.net> References: <4755E8CE.30205@gmx.net> Message-ID: On Dec 4, 2007 6:54 PM, Carl-Daniel Hailfinger < c-d.hailfinger.devel.2006 at gmx.net> wrote: > linuxbios.stage2.o (and stage2.o in the LAR) are NOT .o files, they are > ELF executables. Remove the .o suffix to reduce confusion. > > Signed-off-by: Carl-Daniel Hailfinger > Acked-by: Corey Osgood -------------- next part -------------- An HTML attachment was scrubbed... URL: From svn at openbios.org Wed Dec 5 02:45:55 2007 From: svn at openbios.org (svn at openbios.org) Date: Wed, 5 Dec 2007 02:45:55 +0100 Subject: [LinuxBIOS] r539 - LinuxBIOSv3/arch/x86 Message-ID: Author: hailfinger Date: 2007-12-05 02:45:55 +0100 (Wed, 05 Dec 2007) New Revision: 539 Modified: LinuxBIOSv3/arch/x86/Makefile LinuxBIOSv3/arch/x86/stage1.c Log: linuxbios.stage2.o (and stage2.o in the LAR) are NOT .o files, they are ELF executables. Remove the .o suffix to reduce confusion. Signed-off-by: Carl-Daniel Hailfinger Acked-by: Corey Osgood Modified: LinuxBIOSv3/arch/x86/Makefile =================================================================== --- LinuxBIOSv3/arch/x86/Makefile 2007-12-04 23:15:33 UTC (rev 538) +++ LinuxBIOSv3/arch/x86/Makefile 2007-12-05 01:45:55 UTC (rev 539) @@ -36,7 +36,7 @@ ROM_SIZE := $(shell expr $(CONFIG_LINUXBIOS_ROMSIZE_KB) \* 1024) -LARFILES := nocompress:normal/initram normal/stage2.o nocompress:normal/option_table +LARFILES := nocompress:normal/initram normal/stage2 nocompress:normal/option_table ifneq ($(CONFIG_PAYLOAD_NONE),y) LARFILES += normal/payload endif @@ -57,12 +57,12 @@ COMPRESSFLAG := -C nrv2b endif -$(obj)/linuxbios.rom $(obj)/linuxbios.map: $(obj)/linuxbios.bootblock $(obj)/util/lar/lar lzma nrv2b $(obj)/linuxbios.initram $(obj)/linuxbios.stage2.o $(obj)/option_table +$(obj)/linuxbios.rom $(obj)/linuxbios.map: $(obj)/linuxbios.bootblock $(obj)/util/lar/lar lzma nrv2b $(obj)/linuxbios.initram $(obj)/linuxbios.stage2 $(obj)/option_table $(Q)rm -rf $(obj)/lar.tmp $(Q)mkdir $(obj)/lar.tmp $(Q)mkdir $(obj)/lar.tmp/normal $(Q)cp $(obj)/linuxbios.initram $(obj)/lar.tmp/normal/initram - $(Q)cp $(obj)/linuxbios.stage2.o $(obj)/lar.tmp/normal/stage2.o + $(Q)cp $(obj)/linuxbios.stage2 $(obj)/lar.tmp/normal/stage2 $(Q)cp $(obj)/option_table $(obj)/lar.tmp/normal/option_table ifeq ($(CONFIG_PAYLOAD_NONE),y) $(Q)printf " PAYLOAD none (as specified by user)\n" @@ -198,12 +198,12 @@ STAGE2_OBJ += $(obj)/util/x86emu/libx86emu.a $(LIBGCC_FILE_NAME) endif -$(obj)/linuxbios.stage2.o $(obj)/linuxbios.stage2.map: $(obj)/stage0.init $(STAGE2_OBJ) +$(obj)/linuxbios.stage2 $(obj)/linuxbios.stage2.map: $(obj)/stage0.init $(STAGE2_OBJ) $(Q)# leave a .o with full symbols in it for debugging. $(Q)printf " LD $(subst $(shell pwd)/,,$(@))\n" $(Q)$(LD) -R $(obj)/stage0.o -Ttext 0x1000 --entry=stage2 \ - -o $(obj)/linuxbios.stage2.o $(STAGE2_OBJ) - $(Q)$(NM) $(obj)/linuxbios.stage2.o | sort -u > $(obj)/linuxbios.stage2.map + -o $(obj)/linuxbios.stage2 $(STAGE2_OBJ) + $(Q)$(NM) $(obj)/linuxbios.stage2 | sort -u > $(obj)/linuxbios.stage2.map # # Build rules. Modified: LinuxBIOSv3/arch/x86/stage1.c =================================================================== --- LinuxBIOSv3/arch/x86/stage1.c 2007-12-04 23:15:33 UTC (rev 538) +++ LinuxBIOSv3/arch/x86/stage1.c 2007-12-05 01:45:55 UTC (rev 539) @@ -160,7 +160,7 @@ /* Turn off Cache-As-Ram */ disable_car(); - entry = load_file_segments(&archive, "normal/stage2.o"); + entry = load_file_segments(&archive, "normal/stage2"); if (entry == (void *)-1) die("FATAL: Failed loading stage2."); ret = run_address(entry); From c-d.hailfinger.devel.2006 at gmx.net Wed Dec 5 02:48:44 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Wed, 05 Dec 2007 02:48:44 +0100 Subject: [LinuxBIOS] [PATCH] v3: correct stage2 naming In-Reply-To: References: <4755E8CE.30205@gmx.net> Message-ID: <4756037C.5010208@gmx.net> On 05.12.2007 02:20, Corey Osgood wrote: > On Dec 4, 2007 6:54 PM, Carl-Daniel Hailfinger < > c-d.hailfinger.devel.2006 at gmx.net> wrote: > > >> linuxbios.stage2.o (and stage2.o in the LAR) are NOT .o files, they are >> ELF executables. Remove the .o suffix to reduce confusion. >> >> Signed-off-by: Carl-Daniel Hailfinger >> >> > Acked-by: Corey Osgood > Thanks, r539. Regards, Carl-Daniel From c-d.hailfinger.devel.2006 at gmx.net Wed Dec 5 02:56:26 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Wed, 05 Dec 2007 02:56:26 +0100 Subject: [LinuxBIOS] [PATCH] v3: duplicate less code In-Reply-To: <4755F52C.8040007@gmx.net> References: <47444315.90702@gmx.net> <4748AE0A.1080601@gmx.net> <47499410.50502@coresystems.de> <474CB08F.7070600@gmx.net> <4755F52C.8040007@gmx.net> Message-ID: <4756054A.7040009@gmx.net> To reduce code duplication, make sure STAGE2_OBJ does not contain any object already mentioned in STAGE0_OBJ. This saves 386 bytes in qemu stage2 (~240 bytes after LZMA compression). Build tested and runtime tested in Qemu. Signed-off-by: Carl-Daniel Hailfinger Index: LinuxBIOSv3-filteroutduplicatedshared/arch/x86/Makefile =================================================================== --- LinuxBIOSv3-filteroutduplicatedshared/arch/x86/Makefile (Revision 539) +++ LinuxBIOSv3-filteroutduplicatedshared/arch/x86/Makefile (Arbeitskopie) @@ -198,11 +198,16 @@ STAGE2_OBJ += $(obj)/util/x86emu/libx86emu.a $(LIBGCC_FILE_NAME) endif -$(obj)/linuxbios.stage2 $(obj)/linuxbios.stage2.map: $(obj)/stage0.init $(STAGE2_OBJ) +# To reduce code duplication, always make sure STAGE2_OBJ does not contain +# any object from STAGE0_OBJ. + +STAGE2_OBJ_NEEDED = $(filter-out $(STAGE0_OBJ), $(STAGE2_OBJ)) + +$(obj)/linuxbios.stage2 $(obj)/linuxbios.stage2.map: $(obj)/stage0.init $(STAGE2_OBJ_NEEDED) $(Q)# leave a .o with full symbols in it for debugging. $(Q)printf " LD $(subst $(shell pwd)/,,$(@))\n" $(Q)$(LD) -R $(obj)/stage0.o -Ttext 0x1000 --entry=stage2 \ - -o $(obj)/linuxbios.stage2 $(STAGE2_OBJ) + -o $(obj)/linuxbios.stage2 $(STAGE2_OBJ_NEEDED) $(Q)$(NM) $(obj)/linuxbios.stage2 | sort -u > $(obj)/linuxbios.stage2.map # From c-d.hailfinger.devel.2006 at gmx.net Wed Dec 5 03:26:29 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Wed, 05 Dec 2007 03:26:29 +0100 Subject: [LinuxBIOS] [RFC][PATCH] v3: lar header after member support Message-ID: <47560C55.3000000@gmx.net> We had that patch in a larger package about 7 weeks ago, but most parts of the package have been merged since then, reducing the clutter in the patch to zero. For your reference: Message-ID: <470EA5CF.2020409 at gmx.net> Date: Fri, 12 Oct 2007 00:38:07 +0200 AFAIK not all architectures start executing code at the top of ROM, some start at the bottom (low address). In that case, we can't start the archive with a LAR header, but we can end it with one or postfix the first archive member with a LAR header. To achieve that, the patch redefines offset as signed instead of unsigned and allows the lar header after the boot block to point to the boot block at the beginning. That way, even bottom boot architectures can use the existing header format unless the first LAR member is bigger than 2 GB. This patch also introduces a 2 GB limit for file names in LARchives and a 2 GB limit for unused space between header and data. There is no new restriction for member lengths or archive length. Current LAR archives look like this: Hn=header n -=padding Dn=data n H0D0D0D0H1D1----H2D2D2 where the last bytes of D2 are executed after poweron. The patch (together with signed offset) makes archives like the below one possible: D0D0D0H0H1D1----H2D2D2 (header after boot block points to boot block) The new archive format possibility allows placing a boot block at the beginning without sacrificing the goal of one common archive format. However, there are two potential problems: - Endless loops if we aren't careful when walking the LAR. I think I got all corner cases right. - "Nobody will need more than 640kB", in our case it would be 2GB boot blocks. Signed-off-by: Carl-Daniel Hailfinger Index: LinuxBIOSv3-larheaderaftermember/include/lar.h =================================================================== --- LinuxBIOSv3-larheaderaftermember/include/lar.h (Revision 539) +++ LinuxBIOSv3-larheaderaftermember/include/lar.h (Arbeitskopie) @@ -61,7 +61,15 @@ u32 reallen; u32 checksum; u32 compchecksum; - u32 offset; + /* The offset is signed to allow header after data for the first member + * of the LAR. This is needed if code execution starts at bottom of + * flash instead of at top of flash (x86). Please note that a + * header-after-data LAR member can't be larger than 2^31 bytes. + * Right now, we are about five orders of magnitude away from such a + * beast. + * Filenames are limited to 2^31-1-sizeof(lar_header)-1 bytes. + * "Nobody will ever need more than 640k" */ + s32 offset; /* Compression: * 0 = no compression * 1 = lzma Index: LinuxBIOSv3-larheaderaftermember/lib/lar.c =================================================================== --- LinuxBIOSv3-larheaderaftermember/lib/lar.c (Revision 539) +++ LinuxBIOSv3-larheaderaftermember/lib/lar.c (Arbeitskopie) @@ -116,7 +116,9 @@ if (strcmp(fullname, filename) == 0) { printk(BIOS_SPEW, "LAR: CHECK %s @ %p\n", fullname, header); - result->start = walk + ntohl(header->offset); + /* In the header-before-member case offset is at least + * sizeof(header) + strlen(filename) + 1 */ + result->start = walk + (s32)ntohl(header->offset); result->len = ntohl(header->len); result->reallen = ntohl(header->reallen); result->compression = ntohl(header->compression); @@ -137,9 +139,30 @@ * In the case of consecutive archive members with header- * before-member structure, the next iteration of the loop will * start exactly at the beginning of the next header. - */ + * In the case of header-after-member (e.g. for bottom boot + * architectures) the calculation below will effectively cause + * walk < header. To elaborate a bit more, in this case + * (header->offset + header->len - 1) will evaluate to a value + * between -1 (header directly after file), -16 (file, 15 bytes + * pad, header), and even smaller values if there is 16 bytes + * or more of padding between member and header. The outer + * expression will usually evaluate to 0xfffffff0, cause the + * expected overflow with unsigned arithmetic and result in a + * decrease of walk. That condition can be checked. */ +#warning FIXME: This loop will explode if this code is ever compiled in 64bit mode +#warning because of the hardcoded 0xfffffff0. walk += (ntohl(header->offset) + ntohl(header->len) - 1) & 0xfffffff0; + /* If we have header-after-member, walk < header is true. + * Go forward instead by starting at header, adding header size + * and strlen(fullname). The result of this calculation is the + * position of the terminating \0 of fullname. Round that + * address down to the next 16 byte boundary. */ + if (walk < (char *)header) { + walk = (char *)header; + walk += (sizeof(struct lar_header) + strlen(fullname)) + & 0xfffffff0; + } } printk(BIOS_SPEW, "LAR: File not found!\n"); return 1; Index: LinuxBIOSv3-larheaderaftermember/util/lar/lar.h =================================================================== --- LinuxBIOSv3-larheaderaftermember/util/lar/lar.h (Revision 539) +++ LinuxBIOSv3-larheaderaftermember/util/lar/lar.h (Arbeitskopie) @@ -60,6 +60,7 @@ typedef uint64_t u64; typedef uint32_t u32; typedef uint8_t u8; +typedef int32_t s32; /* NOTE -- This and the user-mode lar.h may NOT be in sync. Be careful. */ struct lar_header { @@ -68,9 +69,15 @@ u32 reallen; u32 checksum; u32 compchecksum; - /* Filenames are limited to 2^31-1-sizeof(lar_header)-1 bytes. + /* The offset is signed to allow header after data for the first member + * of the LAR. This is needed if code execution starts at bottom of + * flash instead of at top of flash (x86). Please note that a + * header-after-data LAR member can't be larger than 2^31 bytes. + * Right now, we are about five orders of magnitude away from such a + * beast. + * Filenames are limited to 2^31-1-sizeof(lar_header)-1 bytes. * "Nobody will ever need more than 640k" */ - u32 offset; + s32 offset; /* Compression: * 0 = no compression * 1 = lzma From c-d.hailfinger.devel.2006 at gmx.net Wed Dec 5 03:30:16 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Wed, 05 Dec 2007 03:30:16 +0100 Subject: [LinuxBIOS] [PATCH] v3: fix typo in util/lar/lar.h Message-ID: <47560D38.8040802@gmx.net> util/lar/lar.h was accidentially changed to point to the wrong other header. Signed-off-by: Carl-Daniel Hailfinger Index: LinuxBIOSv3-fixlarheadertypo/util/lar/lar.h =================================================================== --- LinuxBIOSv3-fixlarheadertypo/util/lar/lar.h (Revision 539) +++ LinuxBIOSv3-fixlarheadertypo/util/lar/lar.h (Arbeitskopie) @@ -61,7 +61,7 @@ typedef uint32_t u32; typedef uint8_t u8; -/* NOTE -- This and the user-mode lar.h may NOT be in sync. Be careful. */ +/* NOTE -- This and the linuxbios lar.h may NOT be in sync. Be careful. */ struct lar_header { char magic[8]; u32 len; From junkoi2004 at gmail.com Wed Dec 5 04:54:42 2007 From: junkoi2004 at gmail.com (Jun Koi) Date: Wed, 5 Dec 2007 12:54:42 +0900 Subject: [LinuxBIOS] ADLO & biosdecode Message-ID: Hello, I am running LinuxBios + ADLO with QEMU. Strangely, biosdecode now outputs nothing. If I use the original QEMU BIOS, at least biosdecode reports BIOS32 Service Dir + PCI IRQ table + ACPI. So why LinuxBIOS removes those information? Many thanks, Jun From peter at stuge.se Wed Dec 5 04:59:34 2007 From: peter at stuge.se (Peter Stuge) Date: Wed, 5 Dec 2007 04:59:34 +0100 Subject: [LinuxBIOS] [PATCH] v3: duplicate less code In-Reply-To: <4756054A.7040009@gmx.net> References: <47444315.90702@gmx.net> <4748AE0A.1080601@gmx.net> <47499410.50502@coresystems.de> <474CB08F.7070600@gmx.net> <4755F52C.8040007@gmx.net> <4756054A.7040009@gmx.net> Message-ID: <20071205035934.13443.qmail@stuge.se> On Wed, Dec 05, 2007 at 02:56:26AM +0100, Carl-Daniel Hailfinger wrote: > To reduce code duplication, make sure STAGE2_OBJ does not contain > any object already mentioned in STAGE0_OBJ. > This saves 386 bytes in qemu stage2 (~240 bytes after LZMA compression). > > Build tested and runtime tested in Qemu. > > Signed-off-by: Carl-Daniel Hailfinger Acked-by: Peter Stuge From peter at stuge.se Wed Dec 5 05:02:32 2007 From: peter at stuge.se (Peter Stuge) Date: Wed, 5 Dec 2007 05:02:32 +0100 Subject: [LinuxBIOS] [PATCH] v3: fix typo in util/lar/lar.h In-Reply-To: <47560D38.8040802@gmx.net> References: <47560D38.8040802@gmx.net> Message-ID: <20071205040232.14487.qmail@stuge.se> On Wed, Dec 05, 2007 at 03:30:16AM +0100, Carl-Daniel Hailfinger wrote: > util/lar/lar.h was accidentially changed to point to the wrong > other header. > > Signed-off-by: Carl-Daniel Hailfinger This would qualify as trivial. :) Acked-by: Peter Stuge //Peter From corey.osgood at gmail.com Wed Dec 5 05:06:16 2007 From: corey.osgood at gmail.com (Corey Osgood) Date: Tue, 04 Dec 2007 23:06:16 -0500 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <2831fecf0712041404sf297051hccac162beae4fb5b@mail.gmail.com> References: <20071129184112.GE28736@cosmic.amd.com> <2831fecf0712041404sf297051hccac162beae4fb5b@mail.gmail.com> Message-ID: <475623B8.6060901@gmail.com> Myles Watson wrote: >> * Optimizations: There are always things we can do to clean up - add -j N >> support for make, reduce memory usage, avoid stupid gmake tricks and the >> like. I think things are stable enough in the core that we can start to >> twist some knobs without blowing everything up. >> >> > > This patch adds -jN support to speed builds. It passes it as an > argument to make for the kernel and uClibc. It breaks the build for > busybox, so it isn't passed there. > > The default is -j1, or the status quo. > > Signed-off-by: Myles Watson > Acked-by: Corey Osgood From peter at stuge.se Wed Dec 5 05:08:16 2007 From: peter at stuge.se (Peter Stuge) Date: Wed, 5 Dec 2007 05:08:16 +0100 Subject: [LinuxBIOS] ADLO & biosdecode In-Reply-To: References: Message-ID: <20071205040816.16024.qmail@stuge.se> Hello Jun, On Wed, Dec 05, 2007 at 12:54:42PM +0900, Jun Koi wrote: > If I use the original QEMU BIOS, at least biosdecode reports BIOS32 > Service Dir + PCI IRQ table + ACPI. > > So why LinuxBIOS removes those information? This is on purpose. One motivation for LB is that most if not all interfaces that are associated with the term BIOS should be deprecated. LB does not strive to be BIOS compatible by design. Instead of offering callbacks, LB wants a linear program flow during boot, where initialization hands over to a payload, which hands over to the operating system, which then, in fact, operates the system. This is a slightly new concept also for operating systems, since they are used to relying on the BIOS at least for some things, but we are making (admittedly pretty slow so far) progress. //Peter From corey.osgood at gmail.com Wed Dec 5 05:09:10 2007 From: corey.osgood at gmail.com (Corey Osgood) Date: Tue, 04 Dec 2007 23:09:10 -0500 Subject: [LinuxBIOS] ADLO & biosdecode In-Reply-To: References: Message-ID: <47562466.8010909@gmail.com> Jun Koi wrote: > Hello, > > I am running LinuxBios + ADLO with QEMU. Strangely, biosdecode now > outputs nothing. > > If I use the original QEMU BIOS, at least biosdecode reports BIOS32 > Service Dir + PCI IRQ table + ACPI. > > So why LinuxBIOS removes those information? They simply aren't necessary for QEMU ;) LinuxBIOS doesn't provide BIOS callbacks, hence no BIOS32. There's a PIRQ table in the QEMU directory, but since there are no "real" interrupts, it's not needed, and isn't built by default. And there's no need for power management in a virtual machine, so that's not provided either. PIRQ tables and ACPI are supported by LinuxBIOS, but which of these are included/used depends on the person who writes the port. -Corey From rminnich at gmail.com Wed Dec 5 05:34:57 2007 From: rminnich at gmail.com (ron minnich) Date: Tue, 4 Dec 2007 20:34:57 -0800 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <000001c836c5$16bd6fb0$4b23040a@chimp> References: <20071203170024.4989.qmail@stuge.se> <017601c835d8$02a2a240$480110ac@chimp> <20071203182927.GB23382@cosmic.amd.com> <20071204052804.GH20788@greenwood> <000001c836c5$16bd6fb0$4b23040a@chimp> Message-ID: <13426df10712042034x44d87ab6m7a8797de27f3f161@mail.gmail.com> On Dec 4, 2007 2:29 PM, Myles Watson wrote: > That said, I haven't used v3 yet. > give it a try first :-) thanks ron From rminnich at gmail.com Wed Dec 5 05:34:57 2007 From: rminnich at gmail.com (ron minnich) Date: Tue, 4 Dec 2007 20:34:57 -0800 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <000001c836c5$16bd6fb0$4b23040a@chimp> References: <20071203170024.4989.qmail@stuge.se> <017601c835d8$02a2a240$480110ac@chimp> <20071203182927.GB23382@cosmic.amd.com> <20071204052804.GH20788@greenwood> <000001c836c5$16bd6fb0$4b23040a@chimp> Message-ID: <13426df10712042034x44d87ab6m7a8797de27f3f161@mail.gmail.com> On Dec 4, 2007 2:29 PM, Myles Watson wrote: > That said, I haven't used v3 yet. > give it a try first :-) thanks ron From Libo.Feng at amd.com Wed Dec 5 06:26:21 2007 From: Libo.Feng at amd.com (Feng, Libo) Date: Wed, 5 Dec 2007 13:26:21 +0800 Subject: [LinuxBIOS] Help for ATI ES1000 VGABIOS. Message-ID: Hi, all, Who has the VGA BIOS for ATI ES1000 with DDRII frame buffer instead of DDR frame buffer? Could you send me a copy? Thank you in advance. Best Regards ??? Feng Libo @ AMD Ext: 20906 Mobile Phone: 13683249071 Office Phone: 0086-010-62801406 -------------- next part -------------- An HTML attachment was scrubbed... URL: From junkoi2004 at gmail.com Wed Dec 5 07:55:33 2007 From: junkoi2004 at gmail.com (Jun Koi) Date: Wed, 5 Dec 2007 15:55:33 +0900 Subject: [LinuxBIOS] ADLO & biosdecode In-Reply-To: <47562466.8010909@gmail.com> References: <47562466.8010909@gmail.com> Message-ID: On 12/5/07, Corey Osgood wrote: > Jun Koi wrote: > > Hello, > > > > I am running LinuxBios + ADLO with QEMU. Strangely, biosdecode now > > outputs nothing. > > > > If I use the original QEMU BIOS, at least biosdecode reports BIOS32 > > Service Dir + PCI IRQ table + ACPI. > > > > So why LinuxBIOS removes those information? > > They simply aren't necessary for QEMU ;) LinuxBIOS doesn't provide BIOS > callbacks, hence no BIOS32. There's a PIRQ table in the QEMU directory, > but since there are no "real" interrupts, it's not needed, and isn't > built by default. And there's no need for power management in a virtual > machine, so that's not provided either. This is not always true. I heard about of some projects (Xen related) which try to do some power management for VMs (so for example they can slow down when the system is on battery). And to do that, the VMs must be aware of the power status of the (physical) system. Thank you, Jun From stepan at coresystems.de Wed Dec 5 09:18:46 2007 From: stepan at coresystems.de (Stefan Reinauer) Date: Wed, 05 Dec 2007 09:18:46 +0100 Subject: [LinuxBIOS] ADLO & biosdecode In-Reply-To: <20071205040816.16024.qmail@stuge.se> References: <20071205040816.16024.qmail@stuge.se> Message-ID: <47565EE6.7000506@coresystems.de> Peter Stuge wrote: > Hello Jun, > > On Wed, Dec 05, 2007 at 12:54:42PM +0900, Jun Koi wrote: > >> If I use the original QEMU BIOS, at least biosdecode reports BIOS32 >> Service Dir + PCI IRQ table + ACPI. >> >> So why LinuxBIOS removes those information? >> > > This is on purpose. > > One motivation for LB is that most if not all interfaces that are > associated with the term BIOS should be deprecated. > > LB does not strive to be BIOS compatible by design. > But this is not true for Jun's setting with LinuxBIOS + ADLO. I don't think we remove anything on purpose there. Jun, maybe you are using the 64k Qemu BIOS instead of the 128K version? In that case you won't see BIOS32 services. -- coresystems GmbH ? Brahmsstr. 16 ? D-79104 Freiburg i. Br. Tel.: +49 761 7668825 ? Fax: +49 761 7664613 Email: info at coresystems.de ? http://www.coresystems.de/ Registergericht: Amtsgericht Freiburg ? HRB 7656 Gesch?ftsf?hrer: Stefan Reinauer ? Ust-IdNr.: DE245674866 -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 249 bytes Desc: OpenPGP digital signature URL: From junkoi2004 at gmail.com Wed Dec 5 09:36:56 2007 From: junkoi2004 at gmail.com (Jun Koi) Date: Wed, 5 Dec 2007 17:36:56 +0900 Subject: [LinuxBIOS] ADLO & biosdecode In-Reply-To: <47565EE6.7000506@coresystems.de> References: <20071205040816.16024.qmail@stuge.se> <47565EE6.7000506@coresystems.de> Message-ID: On 12/5/07, Stefan Reinauer wrote: > Peter Stuge wrote: > > Hello Jun, > > > > On Wed, Dec 05, 2007 at 12:54:42PM +0900, Jun Koi wrote: > > > >> If I use the original QEMU BIOS, at least biosdecode reports BIOS32 > >> Service Dir + PCI IRQ table + ACPI. > >> > >> So why LinuxBIOS removes those information? > >> > > > > This is on purpose. > > > > One motivation for LB is that most if not all interfaces that are > > associated with the term BIOS should be deprecated. > > > > LB does not strive to be BIOS compatible by design. > > > But this is not true for Jun's setting with LinuxBIOS + ADLO. > > I don't think we remove anything on purpose there. > > Jun, maybe you are using the 64k Qemu BIOS instead of the 128K version? > In that case you won't see BIOS32 services. Hmmm... indeed! My bios.bin size is 64KB. I am using the bios coming with ADLO (bochs/bios/ in ADLO directory) So I understand that the 64KB bios only provides 16bit BIOS, and the 128KB (which is catted by 16bit (64K) + 32bit (another 64K)) provides both 16bit & 32bit BIOS? If that is correct, how to get the 128K BIOS now? Thanks, Jun From junkoi2004 at gmail.com Wed Dec 5 09:51:35 2007 From: junkoi2004 at gmail.com (Jun Koi) Date: Wed, 5 Dec 2007 17:51:35 +0900 Subject: [LinuxBIOS] ADLO & biosdecode In-Reply-To: <47565EE6.7000506@coresystems.de> References: <20071205040816.16024.qmail@stuge.se> <47565EE6.7000506@coresystems.de> Message-ID: On 12/5/07, Stefan Reinauer wrote: > Peter Stuge wrote: > > Hello Jun, > > > > On Wed, Dec 05, 2007 at 12:54:42PM +0900, Jun Koi wrote: > > > >> If I use the original QEMU BIOS, at least biosdecode reports BIOS32 > >> Service Dir + PCI IRQ table + ACPI. > >> > >> So why LinuxBIOS removes those information? > >> > > > > This is on purpose. > > > > One motivation for LB is that most if not all interfaces that are > > associated with the term BIOS should be deprecated. > > > > LB does not strive to be BIOS compatible by design. > > > But this is not true for Jun's setting with LinuxBIOS + ADLO. > > I don't think we remove anything on purpose there. Yes, I guess the information (biosdecode) must be there, as I use Boch BIOS with LinuxBIOS, but not LinuxBIOS only. And interestingly, there is no option to make 32bit BIOS in ADLO/bochs/bios/Makefile. I simply generated bochs/bios/bios.bin by running "make" inside ADLO/ So I think the question becomes: how to get 32bit BIOS now? Thanks, Jun From tokyo246 at gmail.com Wed Dec 5 10:52:12 2007 From: tokyo246 at gmail.com (Kenji Noguchi) Date: Wed, 5 Dec 2007 01:52:12 -0800 Subject: [LinuxBIOS] [PATCH] TeleVideo TC7020 support (2nd try) Message-ID: <2ba587f0712050152i3c153342i6e44e220bd31ebcb@mail.gmail.com> Hi Uwe, Thanks for the review. I have updated the patch based on your review. The new patch needs Nikolay's CS5530/CS5536 PIRQ patch. I cannot run superiotool with the factory BIOS because the BIOS is WinCE. WakeOnLan doesn't work out of the box. The original thin-clients manager is able to on/off WOL feature as far as I remember. It's a PC97317 board. Strange, the superiotool r2992 says "No Super I/O found" NIC is soldered on the motherboard, and it resides on pci 15.0. Fixed the config entry. Floppy connector may be available in one of the pin headers but I can't confirm. I leave it off to be conservative. COM2 is a regular DB9 serial. Fixed the comment. irq_tables.c in the previous patch was re-generated by getpir tool, and manually edited. However I had no way of testing it. Linux kernel won't read it unless patched, you know. Anyway I reworked on this file using Nikolay's irq patch. As for MiniPCI slot there are INTA and INTB by definition of the MiniPCI. lspci output had no 14.0 because it's a slot. I installd a WiFi card to the MiniPCI slot(PCI 14.0) for testing. It got IRQ9 and worked great! Regards, Kenji Noguchi -------------- next part -------------- A non-text attachment was scrubbed... Name: TeleVideo_TC7020.patch Type: text/x-diff Size: 20296 bytes Desc: not available URL: From harald.gutmann at gmx.net Wed Dec 5 10:57:19 2007 From: harald.gutmann at gmx.net (Harald Gutmann) Date: Wed, 5 Dec 2007 10:57:19 +0100 Subject: [LinuxBIOS] Gigabyte M57SLI rev2.0 - PCI-Express In-Reply-To: <20071205004835.GA4247@localdomain> References: <200712022105.23963.harald.gutmann@gmx.net> <4755F440.7000006@gmx.net> <20071205004835.GA4247@localdomain> Message-ID: <200712051057.20058.harald.gutmann@gmx.net> Am Mittwoch, 5. Dezember 2007 01:48:35 schrieb Ward Vandewege: > On Wed, Dec 05, 2007 at 01:43:44AM +0100, Carl-Daniel Hailfinger wrote: > > On 02.12.2007 21:05, Harald Gutmann wrote: > > And I have no idea whether we boot the Nvidia graphics BIOS or not. A > > LinuxBIOS serial capture should help to clear that up. > > I'm pretty sure we do; my nvidia card works just fine with the nv driver > (and I get console on bootup). my card works also fine with the nv driver, but not with the nvidia driver. > > Thanks, > Ward. > regards, harald From harald.gutmann at gmx.net Wed Dec 5 11:43:42 2007 From: harald.gutmann at gmx.net (Harald Gutmann) Date: Wed, 5 Dec 2007 11:43:42 +0100 Subject: [LinuxBIOS] Gigabyte M57SLI rev2.0 - PCI-Express In-Reply-To: <4755F440.7000006@gmx.net> References: <200712022105.23963.harald.gutmann@gmx.net> <4755F440.7000006@gmx.net> Message-ID: <200712051143.42635.harald.gutmann@gmx.net> Am Mittwoch, 5. Dezember 2007 01:43:44 schrieb Carl-Daniel Hailfinger: > > Please attach lspci -vvvxxx under lb and prop as well. I suspect some > age-old PCI setup difference may be causing problems here. both outputs are attached. > > And I have no idea whether we boot the Nvidia graphics BIOS or not. A > LinuxBIOS serial capture should help to clear that up. i could do that, but at the moment i have the fitting cable not here. > > Regards, > Carl-Daniel regards, harald -------------- next part -------------- 00:00.0 RAM memory: nVidia Corporation MCP55 Memory Controller (rev a1) Subsystem: Advanced Micro Devices [AMD] Unknown device 2b80 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr+ DiscTmrStat- DiscTmrSERREn+ Capabilities: [b8] Subsystem: nVidia Corporation Unknown device cb84 Capabilities: [8c] HyperTransport: MSI Mapping Enable- Fixed- Mapping Address Base: 00000000fee00000 00: de 10 70 03 07 01 b0 00 a2 01 04 06 00 00 81 00 10: 00 00 00 00 00 00 00 00 00 01 01 40 10 10 80 02 20: 10 f6 10 f6 f0 ff 00 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 b8 00 00 00 00 00 00 00 00 00 03 0a 40: 00 00 33 07 01 00 02 00 05 00 00 00 00 00 4c 00 50: 00 00 00 e0 00 00 00 00 ff 1f ff 1f 00 00 00 00 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 00 00 00 00 00 00 00 00 00 00 00 00 08 00 00 a8 90: 00 00 e0 fe 00 00 00 00 00 00 00 00 00 00 00 00 a0: 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 ff ff 00 00 0d 8c 00 00 de 10 84 cb c0: de 10 84 cb 07 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00:06.1 Audio device: nVidia Corporation MCP55 High Definition Audio (rev a2) Subsystem: Advanced Micro Devices [AMD] Unknown device 2b80 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [40] Subsystem: nVidia Corporation Unknown device 0000 Capabilities: [48] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+) Status: D0 PME-Enable- DSel=0 DScale=0 PME- Capabilities: [50] Message Signalled Interrupts: Mask- 64bit+ Queue=0/1 Enable- Address: 0000000000000000 Data: 0000 Capabilities: [60] HyperTransport: MSI Mapping Enable- Fixed- Mapping Address Base: 00000000fee00000 Capabilities: [80] Express (v1) Root Port (Slot+), MSI 00 DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <512ns, L1 <4us ExtTag- RBE+ FLReset- DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+ RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ MaxPayload 128 bytes, MaxReadReq 512 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #5, Speed 2.5GT/s, Width x8, ASPM L0s, Latency L0 <512ns, L1 <4us ClockPM- Suprise- LLActRep+ BwNot- LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x8, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surpise- Slot # 0, PowerLimit 0.000000; Interlock- NoCompl- SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg- Control: AttnInd Off, PwrInd On, Power- Interlock- SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet- Interlock- Changed: MRL- PresDet- LinkState- RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible- RootCap: CRSVisible- RootSta: PME ReqID 0000, PMEStatus- PMEPending- 00: de 10 76 03 04 01 10 00 a2 00 04 06 00 00 01 00 10: 00 00 00 00 00 00 00 00 00 02 02 00 f1 01 00 00 20: f0 ff 00 00 f1 ff 01 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 40 00 00 00 00 00 00 00 00 00 03 00 40: 0d 48 00 00 de 10 00 00 01 50 02 f8 00 00 00 00 50: 05 60 82 00 00 00 00 00 00 00 00 00 00 00 00 00 60: 08 80 00 a8 00 00 e0 fe 00 00 00 00 00 00 00 00 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 10 00 41 01 c1 84 00 00 1f 28 00 00 81 34 11 05 90: 00 00 81 10 00 00 00 00 c0 01 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00:0b.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a2) (prog-if 00 [Normal decode]) Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [40] Subsystem: nVidia Corporation Unknown device 0000 Capabilities: [48] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+) Status: D0 PME-Enable- DSel=0 DScale=0 PME- Capabilities: [50] Message Signalled Interrupts: Mask- 64bit+ Queue=0/1 Enable- Address: 0000000000000000 Data: 0000 Capabilities: [60] HyperTransport: MSI Mapping Enable- Fixed- Mapping Address Base: 00000000fee00000 Capabilities: [80] Express (v1) Root Port (Slot+), MSI 00 DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <512ns, L1 <4us ExtTag- RBE+ FLReset- DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+ RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ MaxPayload 128 bytes, MaxReadReq 512 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #4, Speed 2.5GT/s, Width x1, ASPM L0s, Latency L0 <512ns, L1 <4us ClockPM- Suprise- LLActRep+ BwNot- LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x4, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surpise- Slot # 0, PowerLimit 0.000000; Interlock- NoCompl- SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg- Control: AttnInd Off, PwrInd On, Power- Interlock- SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet- Interlock- Changed: MRL- PresDet- LinkState- RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible- RootCap: CRSVisible- RootSta: PME ReqID 0000, PMEStatus- PMEPending- 00: de 10 74 03 04 01 10 00 a2 00 04 06 00 00 01 00 10: 00 00 00 00 00 00 00 00 00 03 03 00 f1 01 00 00 20: f0 ff 00 00 f1 ff 01 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 40 00 00 00 00 00 00 00 00 00 03 00 40: 0d 48 00 00 de 10 00 00 01 50 02 f8 00 00 00 00 50: 05 60 82 00 00 00 00 00 00 00 00 00 00 00 00 00 60: 08 80 00 a8 00 00 e0 fe 00 00 00 00 00 00 00 00 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 10 00 41 01 c1 84 00 00 1f 28 00 00 11 34 11 04 90: 00 00 41 10 00 00 00 00 c0 01 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00:0c.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a2) (prog-if 00 [Normal decode]) Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [40] Subsystem: nVidia Corporation Unknown device 0000 Capabilities: [48] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+) Status: D0 PME-Enable- DSel=0 DScale=0 PME- Capabilities: [50] Message Signalled Interrupts: Mask- 64bit+ Queue=0/1 Enable- Address: 0000000000000000 Data: 0000 Capabilities: [60] HyperTransport: MSI Mapping Enable- Fixed- Mapping Address Base: 00000000fee00000 Capabilities: [80] Express (v1) Root Port (Slot+), MSI 00 DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <512ns, L1 <4us ExtTag- RBE+ FLReset- DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+ RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ MaxPayload 128 bytes, MaxReadReq 512 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #3, Speed 2.5GT/s, Width x1, ASPM L0s, Latency L0 <512ns, L1 <4us ClockPM- Suprise- LLActRep+ BwNot- LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x4, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surpise- Slot # 0, PowerLimit 0.000000; Interlock- NoCompl- SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg- Control: AttnInd Off, PwrInd On, Power- Interlock- SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet- Interlock- Changed: MRL- PresDet- LinkState- RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible- RootCap: CRSVisible- RootSta: PME ReqID 0000, PMEStatus- PMEPending- 00: de 10 74 03 04 01 10 00 a2 00 04 06 00 00 01 00 10: 00 00 00 00 00 00 00 00 00 04 04 00 f1 01 00 00 20: f0 ff 00 00 f1 ff 01 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 40 00 00 00 00 00 00 00 00 00 03 00 40: 0d 48 00 00 de 10 00 00 01 50 02 f8 00 00 00 00 50: 05 60 82 00 00 00 00 00 00 00 00 00 00 00 00 00 60: 08 80 00 a8 00 00 e0 fe 00 00 00 00 00 00 00 00 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 10 00 41 01 c1 84 00 00 1f 28 00 00 11 34 11 03 90: 00 00 41 10 00 00 00 00 c0 01 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00:0d.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a2) (prog-if 00 [Normal decode]) Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [40] Subsystem: nVidia Corporation Unknown device 0000 Capabilities: [48] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+) Status: D0 PME-Enable- DSel=0 DScale=0 PME- Capabilities: [50] Message Signalled Interrupts: Mask- 64bit+ Queue=0/1 Enable- Address: 0000000000000000 Data: 0000 Capabilities: [60] HyperTransport: MSI Mapping Enable- Fixed- Mapping Address Base: 00000000fee00000 Capabilities: [80] Express (v1) Root Port (Slot+), MSI 00 DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <512ns, L1 <4us ExtTag- RBE+ FLReset- DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+ RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ MaxPayload 128 bytes, MaxReadReq 512 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #2, Speed 2.5GT/s, Width x1, ASPM L0s, Latency L0 <512ns, L1 <4us ClockPM- Suprise- LLActRep+ BwNot- LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x4, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surpise- Slot # 0, PowerLimit 0.000000; Interlock- NoCompl- SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg- Control: AttnInd Off, PwrInd On, Power- Interlock- SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet- Interlock- Changed: MRL- PresDet- LinkState- RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible- RootCap: CRSVisible- RootSta: PME ReqID 0000, PMEStatus- PMEPending- 00: de 10 78 03 04 01 10 00 a2 00 04 06 00 00 01 00 10: 00 00 00 00 00 00 00 00 00 05 05 00 f1 01 00 00 20: f0 ff 00 00 f1 ff 01 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 40 00 00 00 00 00 00 00 00 00 03 00 40: 0d 48 00 00 de 10 00 00 01 50 02 f8 00 00 00 00 50: 05 60 82 00 00 00 00 00 00 00 00 00 00 00 00 00 60: 08 80 00 a8 00 00 e0 fe 00 00 00 00 00 00 00 00 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 10 00 41 01 c1 84 00 00 1f 28 00 00 11 34 11 02 90: 00 00 41 10 00 00 00 00 c0 01 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00:0e.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a2) (prog-if 00 [Normal decode]) Control: I/O- Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [40] Subsystem: nVidia Corporation Unknown device 0000 Capabilities: [48] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+) Status: D0 PME-Enable- DSel=0 DScale=0 PME- Capabilities: [50] Message Signalled Interrupts: Mask- 64bit+ Queue=0/1 Enable- Address: 0000000000000000 Data: 0000 Capabilities: [60] HyperTransport: MSI Mapping Enable- Fixed- Mapping Address Base: 00000000fee00000 Capabilities: [80] Express (v1) Root Port (Slot+), MSI 00 DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <512ns, L1 <4us ExtTag- RBE+ FLReset- DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+ RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ MaxPayload 128 bytes, MaxReadReq 512 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #1, Speed 2.5GT/s, Width x1, ASPM L0s, Latency L0 <512ns, L1 <4us ClockPM- Suprise- LLActRep+ BwNot- LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x8, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surpise- Slot # 0, PowerLimit 0.000000; Interlock- NoCompl- SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg- Control: AttnInd Off, PwrInd On, Power- Interlock- SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet- Interlock- Changed: MRL- PresDet- LinkState- RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible- RootCap: CRSVisible- RootSta: PME ReqID 0000, PMEStatus- PMEPending- 00: de 10 75 03 04 01 10 00 a2 00 04 06 00 00 01 00 10: 00 00 00 00 00 00 00 00 00 06 06 00 f1 01 00 00 20: f0 ff 00 00 f1 ff 01 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 40 00 00 00 00 00 00 00 00 00 03 00 40: 0d 48 00 00 de 10 00 00 01 50 02 f8 00 00 00 00 50: 05 60 82 00 00 00 00 00 00 00 00 00 00 00 00 00 60: 08 80 00 a8 00 00 e0 fe 00 00 00 00 00 00 00 00 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 10 00 41 01 c1 84 00 00 1f 28 00 00 11 34 11 01 90: 00 00 81 10 00 00 00 00 c0 01 00 00 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00:0f.0 PCI bridge: nVidia Corporation MCP55 PCI Express bridge (rev a2) (prog-if 00 [Normal decode]) Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [40] Subsystem: nVidia Corporation Unknown device 0000 Capabilities: [48] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+) Status: D0 PME-Enable- DSel=0 DScale=0 PME- Capabilities: [50] Message Signalled Interrupts: Mask- 64bit+ Queue=0/1 Enable- Address: 0000000000000000 Data: 0000 Capabilities: [60] HyperTransport: MSI Mapping Enable- Fixed- Mapping Address Base: 00000000fee00000 Capabilities: [80] Express (v1) Root Port (Slot+), MSI 00 DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <512ns, L1 <4us ExtTag- RBE+ FLReset- DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+ RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ MaxPayload 128 bytes, MaxReadReq 512 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s, Latency L0 <512ns, L1 <4us ClockPM- Suprise- LLActRep+ BwNot- LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive+ BWMgmt- ABWMgmt- SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surpise- Slot # 0, PowerLimit 0.000000; Interlock- NoCompl- SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg- Control: AttnInd Off, PwrInd On, Power- Interlock- SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock- Changed: MRL- PresDet+ LinkState+ RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible- RootCap: CRSVisible- RootSta: PME ReqID 0000, PMEStatus- PMEPending- 00: de 10 77 03 07 01 10 00 a2 00 04 06 10 00 01 00 10: 00 00 00 00 00 00 00 00 00 07 07 00 21 21 00 00 20: 00 f4 00 f6 01 e0 f1 ef 00 00 00 00 00 00 00 00 30: 00 00 00 00 40 00 00 00 00 00 00 00 00 00 0b 00 40: 0d 48 00 00 de 10 00 00 01 50 02 f8 00 00 00 00 50: 05 60 82 00 00 00 00 00 00 00 00 00 00 00 00 00 60: 08 80 00 a8 00 00 e0 fe 00 00 00 00 00 00 00 00 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 10 00 41 01 c1 84 00 00 1f 28 00 00 01 35 11 00 90: 00 00 01 31 00 00 00 00 c0 01 48 01 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr+ DiscTmrStat- DiscTmrSERREn+ Capabilities: [b8] Subsystem: Gammagraphx, Inc. Unknown device 0000 Capabilities: [8c] HyperTransport: MSI Mapping Enable- Fixed- Mapping Address Base: 00000000fee00000 00: de 10 70 03 07 00 b0 00 a2 01 04 06 00 00 81 00 10: 00 00 00 00 00 00 00 00 00 01 01 20 80 80 80 02 20: 00 fb 00 fb f0 ff 00 00 00 00 00 00 00 00 00 00 30: 00 00 00 00 b8 00 00 00 00 00 00 00 00 00 00 0a 40: 00 00 33 07 01 00 02 00 05 00 00 00 00 00 44 00 50: 00 00 fe cf 00 00 00 00 ea 1f ff 1f 00 00 00 00 60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70: 00 00 00 00 00 00 00 00 00 00 fe 2f 01 00 00 00 80: 00 00 00 00 00 00 00 00 00 00 00 00 08 00 00 a8 90: 00 00 e0 fe 00 00 00 00 00 00 00 00 00 00 00 00 a0: 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 ff ff 00 00 0d 8c 00 00 00 00 00 00 c0: 00 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00:06.1 Audio device: nVidia Corporation MCP55 High Definition Audio (rev a2) Subsystem: Giga-byte Technology Unknown device a002 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- Reset- FastB2B- PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn- Capabilities: [40] Subsystem: nVidia Corporation Unknown device 0000 Capabilities: [48] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+) Status: D0 PME-Enable- DSel=0 DScale=0 PME- Capabilities: [50] Message Signalled Interrupts: Mask- 64bit+ Queue=0/1 Enable- Address: 0000000000000000 Data: 0000 Capabilities: [60] HyperTransport: MSI Mapping Enable- Fixed- Mapping Address Base: 00000000fee00000 Capabilities: [80] Express (v1) Root Port (Slot+), MSI 00 DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <512ns, L1 <4us ExtTag- RBE+ FLReset- DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+ RlxdOrd+ ExtTag- PhantFunc- AuxPwr- NoSnoop+ MaxPayload 128 bytes, MaxReadReq 512 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #0, Speed 2.5GT/s, Width x16, ASPM L0s L1, Latency L0 <512ns, L1 <4us ClockPM- Suprise- LLActRep+ BwNot- LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+ ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive+ BWMgmt- ABWMgmt- SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surpise- Slot # 0, PowerLimit 0.000000; Interlock- NoCompl- SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg- Control: AttnInd Off, PwrInd On, Power- Interlock- SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock- Changed: MRL- PresDet+ LinkState+ RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna- CRSVisible- RootCap: CRSVisible- RootSta: PME ReqID 0000, PMEStatus- PMEPending- Capabilities: [100] Virtual Channel 00: de 10 77 03 07 00 10 00 a2 00 04 06 08 00 01 00 10: 00 00 00 00 00 00 00 00 00 02 02 00 91 91 00 00 20: 00 f8 f0 fa 01 e0 f1 ef 00 00 00 00 00 00 00 00 30: 00 00 00 00 40 00 00 00 00 00 00 00 00 00 08 00 40: 0d 48 00 00 de 10 00 00 01 50 02 f8 00 00 00 00 50: 05 60 82 00 00 00 00 00 00 00 00 00 00 00 00 00 60: 08 80 00 a8 00 00 e0 fe 00 00 00 00 00 00 00 00 70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80: 10 00 41 01 c1 84 00 00 1f 28 00 00 01 3d 11 00 90: 40 00 01 31 00 00 00 00 c0 01 48 01 00 00 00 00 a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] HyperTransport Technology Configuration Control: I/O- Mem- BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- TAbort- SERR- References: <46D6AB93.9080607@stockwith.co.uk> <47520056.7060508@gmail.com> <1196608092.4752ca5c1cbfb@imp.free.fr> Message-ID: <200712051150.35909.harald.gutmann@gmx.net> Am Sonntag, 2. Dezember 2007 16:08:12 schrieb echelon at free.fr: > Great work Richard! > In fact what you have found, confirms the theory of one of my cow-workers > that sometimes MB manufacturers ask chip makers to issue "custom" revisions > for some types of components used in new series of a MB. (Of course the > specs of these revisions remain strictly confidential naturally.. why they > do this one can simply wonder.. after all business is business so what?!..) > Btw what are the issues that remain unsolved on this board? (I know, I > know, I have to check the wiki..). What is the priority for this board? > Florentin one of the main big things on that board is the missing ACPI implementation. the other issues seem to be just little things: flashrom isn't working when lb is booted. you need "NoDDC2" in your xorg.conf, else the startup of the x-server is really slow. regards, harald From duwe at lst.de Wed Dec 5 12:11:33 2007 From: duwe at lst.de (Torsten Duwe) Date: Wed, 5 Dec 2007 12:11:33 +0100 Subject: [LinuxBIOS] Gigabyte M57SLI rev2.0 - PCI-Express In-Reply-To: <200712051057.20058.harald.gutmann@gmx.net> References: <200712022105.23963.harald.gutmann@gmx.net> <20071205004835.GA4247@localdomain> <200712051057.20058.harald.gutmann@gmx.net> Message-ID: <200712051211.33263.duwe@lst.de> On Wednesday 05 December 2007, Harald Gutmann wrote: > Am Mittwoch, 5. Dezember 2007 01:48:35 schrieb Ward Vandewege: > > On Wed, Dec 05, 2007 at 01:43:44AM +0100, Carl-Daniel Hailfinger wrote: > > > On 02.12.2007 21:05, Harald Gutmann wrote: > > > And I have no idea whether we boot the Nvidia graphics BIOS or not. A > > > LinuxBIOS serial capture should help to clear that up. > > > > I'm pretty sure we do; my nvidia card works just fine with the nv driver > > (and I get console on bootup). > > my card works also fine with the nv driver, but not with the nvidia driver. I assume the IRQ routing fixes I sent a while ago work for 1.x boards only, and that 2.x boards use different wiring. Can someone with a 1.x rev board and an nvidia card (Hi Ward ;-) try whether the proprietary nvidia driver works on that? Torsten From uwe at hermann-uwe.de Wed Dec 5 12:30:34 2007 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Wed, 5 Dec 2007 12:30:34 +0100 Subject: [LinuxBIOS] PCI: Left over static devices. Check your Config.lb In-Reply-To: <1196813327.32101.41.camel@biosbreath> References: <1196813327.32101.41.camel@biosbreath> Message-ID: <20071205113034.GA26399@greenwood> On Tue, Dec 04, 2007 at 04:08:47PM -0800, Steve Isaacs wrote: > I'm seeing this message during boot and have made several attempts and > modifying the Config.lb as the message suggests. Here's the tail of the > messages: > > PCI: 00:09.0 [1166/0142] disabled > PCI: 00:0a.0 subbordinate bus PCI Express > PCI: 00:0a.0 [1166/0144] enabled > PCI: 00:0b.0 subbordinate bus PCI Express > PCI: 00:0b.0 [1166/0142] disabled > PCI: 00:0c.0 subbordinate bus PCI Express > PCI: 00:0c.0 [1166/0144] disabled > PCI: 00:01.1 > PCI: Left over static devices. Check your Config.lb > > I did start with a much longer list of left over devices and have > narrowed it down to this one but I can't find a config that corrects the > problem. > > I've tried locating documentation that provides the rules for proper PCI > configuration but haven't found anything that helps me understand what > I've gotten wrong. Any clues I need to look for? Please post your Config.lb and 'lspci -tvnn' output. You're likely listing PCI devices in Config.lb which are not on the board, or you use the wrong nesting or order (?) Uwe, -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org From uwe at hermann-uwe.de Wed Dec 5 12:30:52 2007 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Wed, 5 Dec 2007 12:30:52 +0100 Subject: [LinuxBIOS] Add support for the AMD SimNow (TM) simulator (try 2) In-Reply-To: <2831fecf0712041339p542f8feby263911ae175108b9@mail.gmail.com> References: <20071128183212.GC22230@cosmic.amd.com> <2831fecf0711281047r2ee61cacqfef0710b5103f2ff@mail.gmail.com> <20071128185525.GD22230@cosmic.amd.com> <13426df10711281231v2c881533m8b065dce7e01f9cc@mail.gmail.com> <20071128204800.GB24403@cosmic.amd.com> <2831fecf0712041339p542f8feby263911ae175108b9@mail.gmail.com> Message-ID: <20071205113052.GB26399@greenwood> On Tue, Dec 04, 2007 at 02:39:04PM -0700, Myles Watson wrote: > On 11/28/07, Jordan Crouse wrote: > > On 28/11/07 12:31 -0800, ron minnich wrote: > > > Is there a howto on the web page to show how to use this sim > > > environment? This is really cool. > > > I put up a basic page today that should help someone get started. > It's at http://www.linuxbios.org/AMD_SimNow and it's linked to from > the homepage, down by QEMU. Very nice, thanks! But please add a license at the bottom of the page (use {{GPL}} or {{PD-self}} etc). See here for a list of licenses: http://linuxbios.org/index.php?title=Special%3AAllpages&from=&namespace=10 We can add others if you prefer another (free-ish) one. Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org From st at iss.tu-darmstadt.de Wed Dec 5 13:44:53 2007 From: st at iss.tu-darmstadt.de (ST) Date: Wed, 5 Dec 2007 13:44:53 +0100 Subject: [LinuxBIOS] different versions of the GA-M57SLI-S4 (PLCC vs SPI) In-Reply-To: <200712051150.35909.harald.gutmann@gmx.net> References: <46D6AB93.9080607@stockwith.co.uk> <1196608092.4752ca5c1cbfb@imp.free.fr> <200712051150.35909.harald.gutmann@gmx.net> Message-ID: <200712051344.53811.st@iss.tu-darmstadt.de> Hi > one of the main big things on that board is the missing ACPI > implementation. the other issues seem to be just little things: ACPI or in my case fan control is a real showstopper for me. What has to be done to remedie this problem? > flashrom isn't working when lb is booted. Only on the newer boards i suppose? ST From ward at gnu.org Wed Dec 5 13:56:46 2007 From: ward at gnu.org (Ward Vandewege) Date: Wed, 5 Dec 2007 07:56:46 -0500 Subject: [LinuxBIOS] different versions of the GA-M57SLI-S4 (PLCC vs SPI) In-Reply-To: <200712051150.35909.harald.gutmann@gmx.net> References: <46D6AB93.9080607@stockwith.co.uk> <47520056.7060508@gmail.com> <1196608092.4752ca5c1cbfb@imp.free.fr> <200712051150.35909.harald.gutmann@gmx.net> Message-ID: <20071205125646.GA23441@localdomain> On Wed, Dec 05, 2007 at 11:50:35AM +0100, Harald Gutmann wrote: > Am Sonntag, 2. Dezember 2007 16:08:12 schrieb echelon at free.fr: > > Great work Richard! > > In fact what you have found, confirms the theory of one of my cow-workers > > that sometimes MB manufacturers ask chip makers to issue "custom" revisions > > for some types of components used in new series of a MB. (Of course the > > specs of these revisions remain strictly confidential naturally.. why they > > do this one can simply wonder.. after all business is business so what?!..) > > Btw what are the issues that remain unsolved on this board? (I know, I > > know, I have to check the wiki..). What is the priority for this board? > > Florentin > > one of the main big things on that board is the missing ACPI implementation. Yeah. Because of this, no soft power off, etc. > the other issues seem to be just little things: > flashrom isn't working when lb is booted. It does for me on my v1.1 board. > you need "NoDDC2" in your xorg.conf, else the startup of the x-server is > really slow. Yeah. I'm still not sure why this is. Thanks, Ward. -- Ward Vandewege Free Software Foundation - Senior System Administrator From harald.gutmann at gmx.net Wed Dec 5 14:00:23 2007 From: harald.gutmann at gmx.net (Harald Gutmann) Date: Wed, 5 Dec 2007 14:00:23 +0100 Subject: [LinuxBIOS] different versions of the GA-M57SLI-S4 (PLCC vs SPI) In-Reply-To: <200712051344.53811.st@iss.tu-darmstadt.de> References: <46D6AB93.9080607@stockwith.co.uk> <200712051150.35909.harald.gutmann@gmx.net> <200712051344.53811.st@iss.tu-darmstadt.de> Message-ID: <200712051400.23814.harald.gutmann@gmx.net> Am Mittwoch, 5. Dezember 2007 13:44:53 schrieb ST: > Hi > > > one of the main big things on that board is the missing ACPI > > implementation. the other issues seem to be just little things: > > ACPI or in my case fan control is a real showstopper for me. What has to be > done to remedie this problem? fancontrol and cool'n'quite and the powerdown is missing without acpi. i think there is just no acpi code in the lb part for the m57sli4 > > flashrom isn't working when lb is booted. > Only on the newer boards i suppose? only on the spi version of the board. (rev 2.0) > > > ST From r.marek at assembler.cz Wed Dec 5 14:07:38 2007 From: r.marek at assembler.cz (Rudolf Marek) Date: Wed, 05 Dec 2007 14:07:38 +0100 Subject: [LinuxBIOS] different versions of the GA-M57SLI-S4 (PLCC vs SPI) In-Reply-To: <200712051400.23814.harald.gutmann@gmx.net> References: <46D6AB93.9080607@stockwith.co.uk> <200712051150.35909.harald.gutmann@gmx.net> <200712051344.53811.st@iss.tu-darmstadt.de> <200712051400.23814.harald.gutmann@gmx.net> Message-ID: <4756A29A.5090407@assembler.cz> Hi all, Adding ACPI support which should at least do poweroff properly or deliver power button event is quite simple. Maybe I can write some howto to wiki? Rudolf From peter at stuge.se Wed Dec 5 14:11:19 2007 From: peter at stuge.se (Peter Stuge) Date: Wed, 5 Dec 2007 14:11:19 +0100 Subject: [LinuxBIOS] different versions of the GA-M57SLI-S4 (PLCC vs SPI) In-Reply-To: <4756A29A.5090407@assembler.cz> References: <46D6AB93.9080607@stockwith.co.uk> <200712051150.35909.harald.gutmann@gmx.net> <200712051344.53811.st@iss.tu-darmstadt.de> <200712051400.23814.harald.gutmann@gmx.net> <4756A29A.5090407@assembler.cz> Message-ID: <20071205131119.1670.qmail@stuge.se> On Wed, Dec 05, 2007 at 02:07:38PM +0100, Rudolf Marek wrote: > Hi all, > Adding ACPI support which should at least do poweroff properly or > deliver power button event is > quite simple. Maybe I can write some howto to wiki? Please do. //Peter From ward at gnu.org Wed Dec 5 14:46:26 2007 From: ward at gnu.org (Ward Vandewege) Date: Wed, 5 Dec 2007 08:46:26 -0500 Subject: [LinuxBIOS] different versions of the GA-M57SLI-S4 (PLCC vs SPI) In-Reply-To: <4756A29A.5090407@assembler.cz> References: <46D6AB93.9080607@stockwith.co.uk> <200712051150.35909.harald.gutmann@gmx.net> <200712051344.53811.st@iss.tu-darmstadt.de> <200712051400.23814.harald.gutmann@gmx.net> <4756A29A.5090407@assembler.cz> Message-ID: <20071205134626.GA24978@localdomain> On Wed, Dec 05, 2007 at 02:07:38PM +0100, Rudolf Marek wrote: > Hi all, > Adding ACPI support which should at least do poweroff properly or > deliver power button event is > quite simple. Maybe I can write some howto to wiki? Yes, please! Thanks, Ward. -- Ward Vandewege Free Software Foundation - Senior System Administrator From r.marek at assembler.cz Wed Dec 5 14:52:53 2007 From: r.marek at assembler.cz (Rudolf Marek) Date: Wed, 05 Dec 2007 14:52:53 +0100 Subject: [LinuxBIOS] different versions of the GA-M57SLI-S4 (PLCC vs SPI) In-Reply-To: <20071205134626.GA24978@localdomain> References: <46D6AB93.9080607@stockwith.co.uk> <200712051150.35909.harald.gutmann@gmx.net> <200712051344.53811.st@iss.tu-darmstadt.de> <200712051400.23814.harald.gutmann@gmx.net> <4756A29A.5090407@assembler.cz> <20071205134626.GA24978@localdomain> Message-ID: <4756AD35.5000700@assembler.cz> >Yes, please! Ok I will try to schedule it to near future. Rudolf From myles at pel.cs.byu.edu Wed Dec 5 15:25:05 2007 From: myles at pel.cs.byu.edu (Myles Watson) Date: Wed, 5 Dec 2007 07:25:05 -0700 Subject: [LinuxBIOS] Add support for the AMD SimNow (TM) simulator (try2) In-Reply-To: <20071205113052.GB26399@greenwood> References: <20071128183212.GC22230@cosmic.amd.com> <2831fecf0711281047r2ee61cacqfef0710b5103f2ff@mail.gmail.com> <20071128185525.GD22230@cosmic.amd.com> <13426df10711281231v2c881533m8b065dce7e01f9cc@mail.gmail.com> <20071128204800.GB24403@cosmic.amd.com> <2831fecf0712041339p542f8feby263911ae175108b9@mail.gmail.com> <20071205113052.GB26399@greenwood> Message-ID: <004c01c8374a$a14dd7c0$4b23040a@chimp> > > > > Is there a howto on the web page to show how to use this sim > > > > environment? This is really cool. > > > > > I put up a basic page today that should help someone get started. > > It's at http://www.linuxbios.org/AMD_SimNow and it's linked to from > > the homepage, down by QEMU. > > Very nice, thanks! But please add a license at the bottom of the page > (use {{GPL}} or {{PD-self}} etc). Done. Thanks, Myles From myles at pel.cs.byu.edu Wed Dec 5 15:39:37 2007 From: myles at pel.cs.byu.edu (Myles Watson) Date: Wed, 5 Dec 2007 07:39:37 -0700 Subject: [LinuxBIOS] ADLO & biosdecode In-Reply-To: References: <20071205040816.16024.qmail@stuge.se><47565EE6.7000506@coresystems.de> Message-ID: <004d01c8374c$a94c2100$4b23040a@chimp> > -----Original Message----- > From: linuxbios-bounces at linuxbios.org [mailto:linuxbios- > bounces at linuxbios.org] On Behalf Of Jun Koi > On 12/5/07, Stefan Reinauer wrote: > > Peter Stuge wrote: > > > Hello Jun, > > > > > > On Wed, Dec 05, 2007 at 12:54:42PM +0900, Jun Koi wrote: > > > > > >> If I use the original QEMU BIOS, at least biosdecode reports BIOS32 > > >> Service Dir + PCI IRQ table + ACPI. > > >> > > >> So why LinuxBIOS removes those information? > > >> > > > > > > This is on purpose. > > > > > > One motivation for LB is that most if not all interfaces that are > > > associated with the term BIOS should be deprecated. > > > > > > LB does not strive to be BIOS compatible by design. > > > > > But this is not true for Jun's setting with LinuxBIOS + ADLO. > > > > I don't think we remove anything on purpose there. > > Yes, I guess the information (biosdecode) must be there, as I use Boch > BIOS with LinuxBIOS, but not LinuxBIOS only. > > And interestingly, there is no option to make 32bit BIOS in > ADLO/bochs/bios/Makefile. I simply generated bochs/bios/bios.bin by > running "make" inside ADLO/ > > So I think the question becomes: how to get 32bit BIOS now? You need to add a new version of the loader since the BIOS is larger, and use the larger elf header. I'm planning on doing that in the near future. Myles From uwe at hermann-uwe.de Wed Dec 5 17:26:19 2007 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Wed, 5 Dec 2007 17:26:19 +0100 Subject: [LinuxBIOS] [PATCH] Drop coherent_ht_car.c file Message-ID: <20071205162618.GA14308@greenwood> See patch. That file is a duplicate (it was slightly different at some point, but identical in its current form) of coherent_ht.c, so drop it. Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org -------------- next part -------------- A non-text attachment was scrubbed... Name: v2_drop_coherent_ht_car.patch Type: text/x-diff Size: 50626 bytes Desc: not available URL: From svn at openbios.org Wed Dec 5 17:42:30 2007 From: svn at openbios.org (LinuxBIOS) Date: Wed, 05 Dec 2007 16:42:30 -0000 Subject: [LinuxBIOS] #71: Avoid device overlap with pci 0:0x18.0 In-Reply-To: <040.a8128d10f402b494cbfe0ddbe4c04c51@openbios.org> References: <040.a8128d10f402b494cbfe0ddbe4c04c51@openbios.org> Message-ID: <049.c1e89ea09f5ddc81668968912517439e@openbios.org> #71: Avoid device overlap with pci 0:0x18.0 -----------------------+---------------------------------------------------- Reporter: uwe | Owner: somebody Type: defect | Status: closed Priority: major | Milestone: Component: code | Version: v2 Resolution: fixed | Keywords: Dependencies: | Patchstatus: patch has been committed -----------------------+---------------------------------------------------- Changes (by uwe): * status: new => closed * patchstatus: patch needs review => patch has been committed * resolution: => fixed Comment: Closing, this has already been fixed in r2681. -- Ticket URL: LinuxBIOS From andi.mundt at web.de Wed Dec 5 19:04:19 2007 From: andi.mundt at web.de (Andreas B. Mundt) Date: Wed, 5 Dec 2007 19:04:19 +0100 Subject: [LinuxBIOS] flashrom fails on GA-M57SLI with 1MB ROM In-Reply-To: <4755F24B.1090400@gmx.net> References: <200711220102.29902.duwe@lst.de> <20071122072446.GA20729@flashgordon> <474777D4.30300@gmx.net> <20071125085413.GA3488@flashgordon> <474AB535.3030001@gmx.net> <20071126190059.GA4477@flashgordon> <474B64D1.1070904@gmx.net> <20071201091136.GA4277@flashgordon> <20071201233401.GA4260@flashgordon> <4755F24B.1090400@gmx.net> Message-ID: <20071205180419.GA3690@flashgordon> > > This has been changed in rev 2972. Buildrom has still the 'old' > > version. Flashing works fine for me if irq 0xc9 = 0x0 is set. With irq > > 0xc9 = 0x40 it fails. > > > > OK, is that a difference between board revisions, BIOS revisions or just > a misinterpretation of some superiotool dump? > > I can see that your latest superiotool dump with the proprietary BIOS > has irq 0xc9 = 0x40 set. I tried to mirror that. Now the interesting > question is: Why does that setting not work for you? > > To track this down, I need: > * superiotool dump of proprietary BIOS for board revisions 1.0, 1.1, > 2.0, 2.x > * the exact BIOS version of the proprietary BIOS. > I double checked proprietary BIOS (F9), LB with 0xc9 = 0x40 and LB with 0xc9 = 0x0. But all I said previously is still true for my board (rev 1.0): For proprietary BIOS: 0xc9 = 0x40 flashing ok. For LB with : 0xc9 = 0x0 flashing ok. For LB with : 0xc9 = 0x40 flashing/erase fails. Regards, Andi $ diff -u lb_0x40 lb_0x0 --- lb_0x40 2007-12-05 18:30:30.000000000 +0100 +++ lb_0x0 2007-12-05 18:25:47.000000000 +0100 @@ -2,7 +2,7 @@ Found ITE IT8716F (id=0x8716, rev=0x0) at 0x2e Register dump: idx 07 20 21 22 23 24 2b -val 07 87 16 00 11 00 00 +val 0a 87 16 00 11 00 00 def NA 87 16 01 00 00 00 LDN 0x00 idx 30 60 61 70 74 f0 f1 @@ -34,7 +34,7 @@ def 00 0c 02 00 LDN 0x07 idx 25 26 27 28 29 2a 2c 60 61 62 63 64 65 70 71 72 73 74 b0 b1 b2 b3 b4 b5 b8 b9 ba bb bc bd c0 c1 c2 c3 c4 c8 c9 ca cb cc e0 e1 e2 e3 e4 f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd -val 00 43 20 40 81 00 1f 00 00 08 00 00 00 00 00 00 38 00 00 00 00 00 00 00 00 00 00 00 01 00 01 43 20 40 00 01 40 00 40 00 00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 00 00 32 00 +val 00 43 20 40 81 00 1f 00 00 08 00 00 00 00 00 00 38 00 00 00 00 00 00 00 00 00 00 00 01 00 01 43 20 40 00 01 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 00 00 32 00 def 01 00 00 40 00 00 00 00 00 00 00 00 00 00 00 20 38 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 40 00 01 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 NA 00 LDN 0x08 idx 30 60 61 70 f0 $ diff -u prop_bios lb_0x40 --- prop_bios 2007-12-05 18:36:24.000000000 +0100 +++ lb_0x40 2007-12-05 18:30:30.000000000 +0100 @@ -6,7 +6,7 @@ def NA 87 16 01 00 00 00 LDN 0x00 idx 30 60 61 70 74 f0 f1 -val 01 03 f0 06 02 00 80 +val 00 03 f0 06 02 00 00 def 00 03 f0 06 02 00 00 LDN 0x01 idx 30 60 61 70 f0 f1 f2 f3 @@ -14,27 +14,27 @@ def 00 03 f8 04 00 50 00 7f LDN 0x02 idx 30 60 61 70 f0 f1 f2 f3 -val 00 00 00 00 00 50 00 7f +val 00 02 f8 03 00 50 00 7f def 00 02 f8 03 00 50 00 7f LDN 0x03 idx 30 60 61 62 63 70 74 f0 -val 01 03 78 00 00 07 04 08 +val 00 03 78 07 78 07 04 03 def 00 03 78 07 78 07 03 03 LDN 0x04 idx 30 60 61 62 63 70 f0 f1 f2 f3 f4 f5 f6 -val 01 02 90 00 00 00 80 00 0a 00 80 00 ff +val 01 02 90 02 30 09 80 00 0a 00 80 00 ff def 00 02 90 02 30 09 00 00 00 00 00 NA NA LDN 0x05 idx 30 60 61 62 63 70 71 f0 -val 01 00 60 00 64 01 02 68 +val 01 00 60 00 64 01 02 48 def 01 00 60 00 64 01 02 00 LDN 0x06 idx 30 70 71 f0 -val 00 00 02 00 +val 01 0c 02 00 def 00 0c 02 00 LDN 0x07 idx 25 26 27 28 29 2a 2c 60 61 62 63 64 65 70 71 72 73 74 b0 b1 b2 b3 b4 b5 b8 b9 ba bb bc bd c0 c1 c2 c3 c4 c8 c9 ca cb cc e0 e1 e2 e3 e4 f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd -val 00 43 20 00 81 00 1f 00 00 08 00 00 00 00 00 00 38 00 00 00 00 00 00 00 00 00 00 00 01 00 00 43 20 00 00 00 40 00 00 00 00 00 00 00 00 10 40 00 00 00 00 28 00 00 00 00 00 32 00 +val 00 43 20 40 81 00 1f 00 00 08 00 00 00 00 00 00 38 00 00 00 00 00 00 00 00 00 00 00 01 00 01 43 20 40 00 01 40 00 40 00 00 00 00 00 00 00 00 00 00 00 00 28 00 00 00 00 00 32 00 def 01 00 00 40 00 00 00 00 00 00 00 00 00 00 00 20 38 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 40 00 01 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 NA 00 LDN 0x08 idx 30 60 61 70 f0 proprietary BIOS: superiotool r2992 Found ITE IT8716F (id=0x8716, rev=0x0) at 0x2e Register dump: idx 07 20 21 22 23 24 2b val 07 87 16 00 11 00 00 def NA 87 16 01 00 00 00 LDN 0x00 idx 30 60 61 70 74 f0 f1 val 01 03 f0 06 02 00 80 def 00 03 f0 06 02 00 00 LDN 0x01 idx 30 60 61 70 f0 f1 f2 f3 val 01 03 f8 04 00 50 00 7f def 00 03 f8 04 00 50 00 7f LDN 0x02 idx 30 60 61 70 f0 f1 f2 f3 val 00 00 00 00 00 50 00 7f def 00 02 f8 03 00 50 00 7f LDN 0x03 idx 30 60 61 62 63 70 74 f0 val 01 03 78 00 00 07 04 08 def 00 03 78 07 78 07 03 03 LDN 0x04 idx 30 60 61 62 63 70 f0 f1 f2 f3 f4 f5 f6 val 01 02 90 00 00 00 80 00 0a 00 80 00 ff def 00 02 90 02 30 09 00 00 00 00 00 NA NA LDN 0x05 idx 30 60 61 62 63 70 71 f0 val 01 00 60 00 64 01 02 68 def 01 00 60 00 64 01 02 00 LDN 0x06 idx 30 70 71 f0 val 00 00 02 00 def 00 0c 02 00 LDN 0x07 idx 25 26 27 28 29 2a 2c 60 61 62 63 64 65 70 71 72 73 74 b0 b1 b2 b3 b4 b5 b8 b9 ba bb bc bd c0 c1 c2 c3 c4 c8 c9 ca cb cc e0 e1 e2 e3 e4 f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 fa fb fc fd val 00 43 20 00 81 00 1f 00 00 08 00 00 00 00 00 00 38 00 00 00 00 00 00 00 00 00 00 00 01 00 00 43 20 00 00 00 40 00 00 00 00 00 00 00 00 10 40 00 00 00 00 28 00 00 00 00 00 32 00 def 01 00 00 40 00 00 00 00 00 00 00 00 00 00 00 20 38 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 40 00 01 00 00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 NA 00 LDN 0x08 idx 30 60 61 70 f0 val 00 03 00 0a 00 def 00 03 00 0a 00 LDN 0x09 idx 30 60 61 val 00 02 01 def 00 02 01 LDN 0x0a idx 30 60 61 70 f0 val 00 03 10 0b 06 def 00 03 10 0b 00 From svn at openbios.org Wed Dec 5 19:35:36 2007 From: svn at openbios.org (svn at openbios.org) Date: Wed, 5 Dec 2007 19:35:36 +0100 Subject: [LinuxBIOS] r74 - in buildrom-devel: . packages/kernel packages/uclibc Message-ID: Author: jcrouse Date: 2007-12-05 19:35:36 +0100 (Wed, 05 Dec 2007) New Revision: 74 Modified: buildrom-devel/Config.in buildrom-devel/packages/kernel/kernel.inc buildrom-devel/packages/uclibc/uclibc.mk Log: This patch adds -jN support to speed builds. It passes it as an argument to make for the kernel and uClibc. It breaks the build for busybox, so it isn't passed there. The default is -j1, or the status quo. Signed-off-by: Myles Watson Acked-by: Corey Osgood Modified: buildrom-devel/Config.in =================================================================== --- buildrom-devel/Config.in 2007-12-04 19:17:07 UTC (rev 73) +++ buildrom-devel/Config.in 2007-12-05 18:35:36 UTC (rev 74) @@ -13,6 +13,18 @@ See the entire build output on stdout. Otherwise, it will be saved off in a series of logs +config MAKE_JOBS + string "Send this option to make to parallelize builds" + default "-j1" + help + This can speed the build if you have more than one core that you + would like to allow make to use. If you have a single processor, use + the default (-j1) otherwise, try processors+1 (-j5 for 4 processors). + + This option currently only speeds up the kernel and uClibc builds. + It was tried for: linuxbios (not passed through to fallback,etc.) + busybox (causes errors) + config ADVANCED bool "Enable advanced operations" default n Modified: buildrom-devel/packages/kernel/kernel.inc =================================================================== --- buildrom-devel/packages/kernel/kernel.inc 2007-12-04 19:17:07 UTC (rev 73) +++ buildrom-devel/packages/kernel/kernel.inc 2007-12-05 18:35:36 UTC (rev 74) @@ -52,7 +52,7 @@ $(KERNEL_BZIMAGE): $(KERNEL_SRC_DIR)/.config @ echo "Building kernel..." - @ $(MAKE) -C $(KERNEL_SRC_DIR) ARCH=$(KERNEL_BUILD_ARCH) \ + @ $(MAKE) $(CONFIG_MAKE_JOBS) -C $(KERNEL_SRC_DIR) ARCH=$(KERNEL_BUILD_ARCH) \ KERNEL_CC="$(CC)" KERNEL_LD="$(LD)" > $(KERNEL_BUILD_LOG) 2>&1 $(OUTPUT_DIR)/bzImage: $(KERNEL_BZIMAGE) Modified: buildrom-devel/packages/uclibc/uclibc.mk =================================================================== --- buildrom-devel/packages/uclibc/uclibc.mk 2007-12-04 19:17:07 UTC (rev 73) +++ buildrom-devel/packages/uclibc/uclibc.mk 2007-12-05 18:35:36 UTC (rev 74) @@ -39,7 +39,7 @@ $(UCLIBC_SRC_DIR)/lib/libc.a: $(UCLIBC_SRC_DIR)/.config @ echo "Building uclibc..." @ ( unset CFLAGS; unset LDFLAGS; \ - $(MAKE) -C $(UCLIBC_SRC_DIR) TARGET_ARCH="$(UCLIBC_ARCH)" \ + $(MAKE) $(CONFIG_MAKE_JOBS) -C $(UCLIBC_SRC_DIR) TARGET_ARCH="$(UCLIBC_ARCH)" \ CC="$(CC) $(CROSS_CFLAGS)" LD="$(LD) $(CROSS_LDFLAGS)" \ HOSTCC="$(HOST_CC)" KERNEL_SOURCE="$(KERNEL_SRC_DIR)" \ RUNTIME_PREFIX="/" \ From jordan.crouse at amd.com Wed Dec 5 19:42:58 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Wed, 5 Dec 2007 11:42:58 -0700 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <475623B8.6060901@gmail.com> References: <20071129184112.GE28736@cosmic.amd.com> <2831fecf0712041404sf297051hccac162beae4fb5b@mail.gmail.com> <475623B8.6060901@gmail.com> Message-ID: <20071205184258.GB13883@cosmic.amd.com> On 04/12/07 23:06 -0500, Corey Osgood wrote: > Myles Watson wrote: > >> * Optimizations: There are always things we can do to clean up - add -j N > >> support for make, reduce memory usage, avoid stupid gmake tricks and the > >> like. I think things are stable enough in the core that we can start to > >> twist some knobs without blowing everything up. > >> > >> > > > > This patch adds -jN support to speed builds. It passes it as an > > argument to make for the kernel and uClibc. It breaks the build for > > busybox, so it isn't passed there. > > > > The default is -j1, or the status quo. > > > > Signed-off-by: Myles Watson > > > Acked-by: Corey Osgood r74. Thanks. -- Jordan Crouse Systems Software Development Engineer Advanced Micro Devices, Inc. From marc.jones at amd.com Wed Dec 5 19:40:50 2007 From: marc.jones at amd.com (Marc Jones) Date: Wed, 05 Dec 2007 11:40:50 -0700 Subject: [LinuxBIOS] [PATCH] Drop coherent_ht_car.c file In-Reply-To: <20071205162618.GA14308@greenwood> References: <20071205162618.GA14308@greenwood> Message-ID: <4756F0B2.90503@amd.com> Uwe Hermann wrote: > See patch. > > That file is a duplicate (it was slightly different at some point, but > identical in its current form) of coherent_ht.c, so drop it. > > > Uwe. > Signed-off-by: Uwe Hermann Acked-by: Marc Jones -- Marc Jones Senior Firmware Engineer (970) 226-9684 Office mailto:Marc.Jones at amd.com http://www.amd.com/embeddedprocessors From svn at openbios.org Wed Dec 5 20:26:55 2007 From: svn at openbios.org (svn at openbios.org) Date: Wed, 5 Dec 2007 20:26:55 +0100 Subject: [LinuxBIOS] r2998 - in trunk/LinuxBIOSv2/src: mainboard/iwill/dk8_htx mainboard/iwill/dk8s2 mainboard/iwill/dk8x northbridge/amd/amdk8 Message-ID: Author: uwe Date: 2007-12-05 20:26:55 +0100 (Wed, 05 Dec 2007) New Revision: 2998 Removed: trunk/LinuxBIOSv2/src/northbridge/amd/amdk8/coherent_ht_car.c Modified: trunk/LinuxBIOSv2/src/mainboard/iwill/dk8_htx/cache_as_ram_auto.c trunk/LinuxBIOSv2/src/mainboard/iwill/dk8s2/cache_as_ram_auto.c trunk/LinuxBIOSv2/src/mainboard/iwill/dk8x/cache_as_ram_auto.c Log: Remove the coherent_ht_car.c file. It is exactly the same as coherent_ht.c (save one empty line removed) so there's no use to keep it around. Signed-off-by: Uwe Hermann Acked-by: Marc Jones Modified: trunk/LinuxBIOSv2/src/mainboard/iwill/dk8_htx/cache_as_ram_auto.c =================================================================== --- trunk/LinuxBIOSv2/src/mainboard/iwill/dk8_htx/cache_as_ram_auto.c 2007-12-04 21:49:06 UTC (rev 2997) +++ trunk/LinuxBIOSv2/src/mainboard/iwill/dk8_htx/cache_as_ram_auto.c 2007-12-05 19:26:55 UTC (rev 2998) @@ -108,7 +108,7 @@ } #include "northbridge/amd/amdk8/amdk8.h" -#include "northbridge/amd/amdk8/coherent_ht_car.c" +#include "northbridge/amd/amdk8/coherent_ht.c" #include "northbridge/amd/amdk8/incoherent_ht.c" Modified: trunk/LinuxBIOSv2/src/mainboard/iwill/dk8s2/cache_as_ram_auto.c =================================================================== --- trunk/LinuxBIOSv2/src/mainboard/iwill/dk8s2/cache_as_ram_auto.c 2007-12-04 21:49:06 UTC (rev 2997) +++ trunk/LinuxBIOSv2/src/mainboard/iwill/dk8s2/cache_as_ram_auto.c 2007-12-05 19:26:55 UTC (rev 2998) @@ -108,7 +108,7 @@ } #include "northbridge/amd/amdk8/amdk8.h" -#include "northbridge/amd/amdk8/coherent_ht_car.c" +#include "northbridge/amd/amdk8/coherent_ht.c" #include "northbridge/amd/amdk8/incoherent_ht.c" Modified: trunk/LinuxBIOSv2/src/mainboard/iwill/dk8x/cache_as_ram_auto.c =================================================================== --- trunk/LinuxBIOSv2/src/mainboard/iwill/dk8x/cache_as_ram_auto.c 2007-12-04 21:49:06 UTC (rev 2997) +++ trunk/LinuxBIOSv2/src/mainboard/iwill/dk8x/cache_as_ram_auto.c 2007-12-05 19:26:55 UTC (rev 2998) @@ -108,7 +108,7 @@ } #include "northbridge/amd/amdk8/amdk8.h" -#include "northbridge/amd/amdk8/coherent_ht_car.c" +#include "northbridge/amd/amdk8/coherent_ht.c" #include "northbridge/amd/amdk8/incoherent_ht.c" Deleted: trunk/LinuxBIOSv2/src/northbridge/amd/amdk8/coherent_ht_car.c =================================================================== --- trunk/LinuxBIOSv2/src/northbridge/amd/amdk8/coherent_ht_car.c 2007-12-04 21:49:06 UTC (rev 2997) +++ trunk/LinuxBIOSv2/src/northbridge/amd/amdk8/coherent_ht_car.c 2007-12-05 19:26:55 UTC (rev 2998) @@ -1,1838 +0,0 @@ -/* coherent hypertransport initialization for AMD64 - * - * written by Stefan Reinauer - * (c) 2003-2004 by SuSE Linux AG - * - * (c) 2004 Tyan Computer - * 2004.12 yhlu added support to create routing table dynamically. - * it also support 8 ways too. (8 ways ladder or 8 ways crossbar) - * - * This code is licensed under GPL. - */ - -/* - * This algorithm assumes a grid configuration as follows: - * - * nodes : 1 2 4 6 8 - * org. : 1x1 2x1 2x2 2x3 2x4 - Ladder: - CPU7-------------CPU6 - | | - | | - | | - | | - | | - | | - CPU5-------------CPU4 - | | - | | - | | - | | - | | - | | - CPU3-------------CPU2 - | | - | | - | | - | | - | | - | | - CPU1-------------CPU0 - CROSS_BAR_47_56: - CPU7-------------CPU6 - | \____ ___/ | - | \ / | - | \/ | - | /\ | - | / \ | - | ____/ \___ | - CPU5 CPU4 - | | - | | - | | - | | - | | - | | - CPU3-------------CPU2 - | | - | | - | | - | | - | | - | | - CPU1-------------CPU0 - */ - -#include -#include -#include -#include "arch/romcc_io.h" - -#include "amdk8.h" - -#define enable_bsp_routing() enable_routing(0) - -#define NODE_HT(x) PCI_DEV(0,24+x,0) -#define NODE_MP(x) PCI_DEV(0,24+x,1) -#define NODE_MC(x) PCI_DEV(0,24+x,3) - -#define DEFAULT 0x00010101 /* default row entry */ - -#ifndef CROSS_BAR_47_56 - #define CROSS_BAR_47_56 0 -#endif - -#ifndef TRY_HIGH_FIRST - #define TRY_HIGH_FIRST 0 -#endif - -#ifndef K8_HT_FREQ_1G_SUPPORT - #define K8_HT_FREQ_1G_SUPPORT 0 -#endif - -#ifndef K8_HT_CHECK_PENDING_LINK - #if CONFIG_MAX_PHYSICAL_CPUS >= 4 - #define K8_HT_CHECK_PENDING_LINK 1 - #else - #define K8_HT_CHECK_PENDING_LINK 0 - #endif -#endif - -#ifndef CONFIG_MAX_PHYSICAL_CPUS_4_BUT_MORE_INSTALLED - #define CONFIG_MAX_PHYSICAL_CPUS_4_BUT_MORE_INSTALLED 0 -#endif - -#ifndef ENABLE_APIC_EXT_ID - #define ENABLE_APIC_EXT_ID 0 -#endif - - -static inline void print_linkn (const char *strval, uint8_t byteval) -{ -#if 1 -#if CONFIG_USE_PRINTK_IN_CAR - printk_debug("%s%02x\r\n", strval, byteval); -#else - print_debug(strval); print_debug_hex8(byteval); print_debug("\r\n"); -#endif -#endif -} - -static void disable_probes(void) -{ - /* disable read/write/fill probes for uniprocessor setup - * they don't make sense if only one cpu is available - */ - - /* Hypetransport Transaction Control Register - * F0:0x68 - * [ 0: 0] Disable read byte probe - * 0 = Probes issues - * 1 = Probes not issued - * [ 1: 1] Disable Read Doubleword probe - * 0 = Probes issued - * 1 = Probes not issued - * [ 2: 2] Disable write byte probes - * 0 = Probes issued - * 1 = Probes not issued - * [ 3: 3] Disable Write Doubleword Probes - * 0 = Probes issued - * 1 = Probes not issued. - * [10:10] Disable Fill Probe - * 0 = Probes issued for cache fills - * 1 = Probes not issued for cache fills. - */ - - u32 val; - - print_spew("Disabling read/write/fill probes for UP... "); - - val=pci_read_config32(NODE_HT(0), HT_TRANSACTION_CONTROL); - val |= HTTC_DIS_FILL_P | HTTC_DIS_RMT_MEM_C | HTTC_DIS_P_MEM_C | - HTTC_DIS_MTS | HTTC_DIS_WR_DW_P | HTTC_DIS_WR_B_P | - HTTC_DIS_RD_DW_P | HTTC_DIS_RD_B_P; - pci_write_config32(NODE_HT(0), HT_TRANSACTION_CONTROL, val); - - print_spew("done.\r\n"); - -} - -static void enable_apic_ext_id(u8 node) -{ -#if ENABLE_APIC_EXT_ID==1 -#warning "FIXME Is the right place to enable apic ext id here?" - - u32 val; - - val = pci_read_config32(NODE_HT(node), 0x68); - val |= (HTTC_APIC_EXT_SPUR | HTTC_APIC_EXT_ID | HTTC_APIC_EXT_BRD_CST); - pci_write_config32(NODE_HT(node), 0x68, val); -#endif -} - -static void enable_routing(u8 node) -{ - u32 val; - - /* HT Initialization Control Register - * F0:0x6C - * [ 0: 0] Routing Table Disable - * 0 = Packets are routed according to routing tables - * 1 = Packets are routed according to the default link field - * [ 1: 1] Request Disable (BSP should clear this) - * 0 = Request packets may be generated - * 1 = Request packets may not be generated. - * [ 3: 2] Default Link (Read-only) - * 00 = LDT0 - * 01 = LDT1 - * 10 = LDT2 - * 11 = CPU on same node - * [ 4: 4] Cold Reset - * - Scratch bit cleared by a cold reset - * [ 5: 5] BIOS Reset Detect - * - Scratch bit cleared by a cold reset - * [ 6: 6] INIT Detect - * - Scratch bit cleared by a warm or cold reset not by an INIT - * - */ - - /* Enable routing table */ - print_spew("Enabling routing table for node "); - print_spew_hex8(node); - - val=pci_read_config32(NODE_HT(node), 0x6c); - val &= ~((1<<1)|(1<<0)); - pci_write_config32(NODE_HT(node), 0x6c, val); - - print_spew(" done.\r\n"); -} - -static void fill_row(u8 node, u8 row, u32 value) -{ - pci_write_config32(NODE_HT(node), 0x40+(row<<2), value); -} - -#if CONFIG_MAX_PHYSICAL_CPUS > 1 -static u8 link_to_register(int ldt) -{ - /* - * [ 0: 3] Request Route - * [0] Route to this node - * [1] Route to Link 0 - * [2] Route to Link 1 - * [3] Route to Link 2 - */ - - if (ldt&0x08) return 0x40; - if (ldt&0x04) return 0x20; - if (ldt&0x02) return 0x00; - - /* we should never get here */ - print_spew("Unknown Link\n"); - return 0; -} - -static u32 get_row(u8 node, u8 row) -{ - return pci_read_config32(NODE_HT(node), 0x40+(row<<2)); -} - -static int link_connection(u8 src, u8 dest) -{ - return get_row(src, dest) & 0x0f; -} - -static void rename_temp_node(u8 node) -{ - uint32_t val; - - print_spew("Renaming current temporary node to "); - print_spew_hex8(node); - - val=pci_read_config32(NODE_HT(7), 0x60); - val &= (~7); /* clear low bits. */ - val |= node; /* new node */ - pci_write_config32(NODE_HT(7), 0x60, val); - - print_spew(" done.\r\n"); -} - -static int verify_connection(u8 dest) -{ - /* See if we have a valid connection to dest */ - u32 val; - - /* Verify that the coherent hypertransport link is - * established and actually working by reading the - * remode node's vendor/device id - */ - val = pci_read_config32(NODE_HT(dest),0); - if(val != 0x11001022) - return 0; - - return 1; -} - -static uint16_t read_freq_cap(device_t dev, uint8_t pos) -{ - /* Handle bugs in valid hypertransport frequency reporting */ - uint16_t freq_cap; - uint32_t id; - - freq_cap = pci_read_config16(dev, pos); - freq_cap &= ~(1 << HT_FREQ_VENDOR); /* Ignore Vendor HT frequencies */ - -#if K8_HT_FREQ_1G_SUPPORT == 1 - #if K8_REV_F_SUPPORT == 0 - if (!is_cpu_pre_e0()) - #endif - { - return freq_cap; - } -#endif - - id = pci_read_config32(dev, 0); - - /* AMD K8 Unsupported 1Ghz? */ - if (id == (PCI_VENDOR_ID_AMD | (0x1100 << 16))) { - freq_cap &= ~(1 << HT_FREQ_1000Mhz); - } - - return freq_cap; -} - -static int optimize_connection(device_t node1, uint8_t link1, device_t node2, uint8_t link2) -{ - static const uint8_t link_width_to_pow2[]= { 3, 4, 0, 5, 1, 2, 0, 0 }; - static const uint8_t pow2_to_link_width[] = { 0x7, 4, 5, 0, 1, 3 }; - uint16_t freq_cap1, freq_cap2; - uint8_t width_cap1, width_cap2, width, old_width, ln_width1, ln_width2; - uint8_t freq, old_freq; - int needs_reset; - /* Set link width and frequency */ - - /* Initially assume everything is already optimized and I don't need a reset */ - needs_reset = 0; - - /* Get the frequency capabilities */ - freq_cap1 = read_freq_cap(node1, link1 + PCI_HT_CAP_HOST_FREQ_CAP); - freq_cap2 = read_freq_cap(node2, link2 + PCI_HT_CAP_HOST_FREQ_CAP); - - /* Calculate the highest possible frequency */ - freq = log2(freq_cap1 & freq_cap2); - - /* See if I am changing the link freqency */ - old_freq = pci_read_config8(node1, link1 + PCI_HT_CAP_HOST_FREQ); - old_freq &= 0x0f; - needs_reset |= old_freq != freq; - old_freq = pci_read_config8(node2, link2 + PCI_HT_CAP_HOST_FREQ); - old_freq &= 0x0f; - needs_reset |= old_freq != freq; - - /* Set the Calulcated link frequency */ - pci_write_config8(node1, link1 + PCI_HT_CAP_HOST_FREQ, freq); - pci_write_config8(node2, link2 + PCI_HT_CAP_HOST_FREQ, freq); - - /* Get the width capabilities */ - width_cap1 = pci_read_config8(node1, link1 + PCI_HT_CAP_HOST_WIDTH); - width_cap2 = pci_read_config8(node2, link2 + PCI_HT_CAP_HOST_WIDTH); - - /* Calculate node1's input width */ - ln_width1 = link_width_to_pow2[width_cap1 & 7]; - ln_width2 = link_width_to_pow2[(width_cap2 >> 4) & 7]; - if (ln_width1 > ln_width2) { - ln_width1 = ln_width2; - } - width = pow2_to_link_width[ln_width1]; - /* Calculate node1's output width */ - ln_width1 = link_width_to_pow2[(width_cap1 >> 4) & 7]; - ln_width2 = link_width_to_pow2[width_cap2 & 7]; - if (ln_width1 > ln_width2) { - ln_width1 = ln_width2; - } - width |= pow2_to_link_width[ln_width1] << 4; - - /* See if I am changing node1's width */ - old_width = pci_read_config8(node1, link1 + PCI_HT_CAP_HOST_WIDTH + 1); - old_width &= 0x77; - needs_reset |= old_width != width; - - /* Set node1's widths */ - pci_write_config8(node1, link1 + PCI_HT_CAP_HOST_WIDTH + 1, width); - - // * Calculate node2's width */ - width = ((width & 0x70) >> 4) | ((width & 0x7) << 4); - - /* See if I am changing node2's width */ - old_width = pci_read_config8(node2, link2 + PCI_HT_CAP_HOST_WIDTH + 1); - old_width &= 0x77; - needs_reset |= old_width != width; - - /* Set node2's widths */ - pci_write_config8(node2, link2 + PCI_HT_CAP_HOST_WIDTH + 1, width); - - return needs_reset; -} - -static uint8_t get_linkn_first(uint8_t byte) -{ - if(byte & 0x02) { byte = 0; } - else if(byte & 0x04) { byte = 1; } - else if(byte & 0x08) { byte = 2; } - return byte; -} - -static uint8_t get_linkn_last(uint8_t byte) -{ - if(byte & 0x02) { byte &= 0x0f; byte |= 0x00; } - if(byte & 0x04) { byte &= 0x0f; byte |= 0x10; } - if(byte & 0x08) { byte &= 0x0f; byte |= 0x20; } - return byte>>4; -} - -static uint8_t get_linkn_last_count(uint8_t byte) -{ - byte &= 0x0f; - if(byte & 0x02) { byte &= 0xcf; byte |= 0x00; byte+=0x40; } - if(byte & 0x04) { byte &= 0xcf; byte |= 0x10; byte+=0x40; } - if(byte & 0x08) { byte &= 0xcf; byte |= 0x20; byte+=0x40; } - return byte>>4; -} - -static void setup_row_local(u8 source, u8 row) /* source will be 7 when it is for temp use*/ -{ - uint8_t linkn; - uint32_t val; - val = 1; - for(linkn = 0; linkn<3; linkn++) { - uint8_t regpos; - uint32_t reg; - regpos = 0x98 + 0x20 * linkn; - reg = pci_read_config32(NODE_HT(source), regpos); - if ((reg & 0x17) != 3) continue; /* it is not conherent or not connected*/ - val |= 1<<(linkn+1); - } - val <<= 16; - val |= 0x0101; - fill_row(source,row, val); -} - -static void setup_row_direct_x(u8 temp, u8 source, u8 dest, u8 linkn) -{ - uint32_t val; - uint32_t val_s; - val = 1<<(linkn+1); - val |= 1<<(linkn+1+8); /*for direct connect response route should equal to request table*/ - - if(((source &1)!=(dest &1)) -#if CROSS_BAR_47_56 - && ( (source<4)||(source>5) ) //(6,7) (7,6) should still be here - //(6,5) (7,4) should be here -#endif - ){ - val |= (1<<16); - } else { - /*for CROSS_BAR_47_56 47, 56, should be here too - and for 47, 56, 57, 75, 46, 64 we need to substract another link to - 6, 7, 6, 6, 7, 7 - */ - val_s = get_row(temp, source); - val |= ((val_s>>16) - (1<<(linkn+1)))<<16; - } - - fill_row(temp,dest, val ); -} - -#if CROSS_BAR_47_56 -static void opt_broadcast_rt(u8 source, u8 dest, u8 kickout) { - uint32_t val; - val = get_row(source, dest); - val -= link_connection(source, kickout)<<16; - fill_row(source, dest, val); -} - -static void opt_broadcast_rt_group(const u8 *conn, int num) { - int i; - - for(i=0; i 1*/ - - -#if CONFIG_MAX_PHYSICAL_CPUS > 2 -#if !CROSS_BAR_47_56 -static void setup_row_indirect_x(u8 temp, u8 source, u8 dest) -#else -static void setup_row_indirect_x(u8 temp, u8 source, u8 dest, u8 gateway, u8 diff) -#endif -{ - /*for indirect connection, we need to compute the val from val_s(source, source), and val_g(source, gateway) */ - uint32_t val_s; - uint32_t val; -#if !CROSS_BAR_47_56 - u8 gateway; - u8 diff; - if(source>= 16; - val_s &= 0xfe; - -#if !CROSS_BAR_47_56 - diff = ((source&1)!=(dest &1)); -#endif - - if(diff && (val_s!=(val&0xff)) ) { /* use another connect as response*/ - val_s -= val & 0xff; -#if (CONFIG_MAX_PHYSICAL_CPUS > 4) || (CONFIG_MAX_PHYSICAL_CPUS_4_BUT_MORE_INSTALLED == 1) - uint8_t byte; - /* Some node have two links left - * don't worry we only have (2, (3 as source need to handle - */ - byte = val_s; - byte = get_linkn_last_count(byte); - if((byte>>2)>1) { /* make sure not the corner*/ - if(source>16) - link_connection(temp, gateway))<<16; - } - - fill_row(temp, dest, val); - -} - -#if !CROSS_BAR_47_56 -static void setup_row_indirect(u8 source, u8 dest) -{ - setup_row_indirect_x(source, source, dest); -} -#else -static void setup_row_indirect(u8 source, u8 dest, u8 gateway, u8 diff) -{ - setup_row_indirect_x(source, source, dest, gateway, diff); -} -#endif - -static void setup_row_indirect_group(const u8 *conn, int num) -{ - int i; - -#if !CROSS_BAR_47_56 - for(i=0; i 2*/ - - -static void setup_uniprocessor(void) -{ - print_spew("Enabling UP settings\r\n"); -#if CONFIG_LOGICAL_CPUS==1 - unsigned tmp = (pci_read_config32(NODE_MC(0), 0xe8) >> 12) & 3; - if (tmp>0) return; -#endif - disable_probes(); -} - -#if CONFIG_MAX_PHYSICAL_CPUS > 2 -static int optimize_connection_group(const u8 *opt_conn, int num) { - int needs_reset = 0; - int i; - for(i=0; i 1 -static unsigned setup_smp2(void) -{ - unsigned nodes; - u8 byte; - uint32_t val; - nodes = 2; - - setup_row_local(0, 0); /* it will update the broadcast RT*/ - - val = get_row(0,0); - byte = (val>>16) & 0xfe; - if(byte<0x2) { /* no coherent connection so get out.*/ - nodes = 1; - return nodes; - } - - /* Setup and check a temporary connection to node 1 */ -#if TRY_HIGH_FIRST == 1 - byte = get_linkn_last(byte); /* Max Link to node1 */ -#else - byte = get_linkn_first(byte); /*Min Link to node1 --- according to AMD*/ -#endif - print_linkn("(0,1) link=", byte); - setup_row_direct(0,1, byte); - setup_temp_row(0, 1); - - verify_connection(7); - - /* We found 2 nodes so far */ - val = pci_read_config32(NODE_HT(7), 0x6c); - byte = (val>>2) & 0x3; /*get default link on node7 to node0*/ - print_linkn("(1,0) link=", byte); - setup_row_local(7,1); - setup_remote_row_direct(1, 0, byte); - -#if (CONFIG_MAX_PHYSICAL_CPUS > 4) || (CONFIG_MAX_PHYSICAL_CPUS_4_BUT_MORE_INSTALLED == 1) - val = get_row(7,1); - byte = (val>>16) & 0xfe; - byte = get_linkn_last_count(byte); - if((byte>>2)==3) { /* Oh! we need to treat it as node2. So use another link*/ - val = get_row(0,0); - byte = (val>>16) & 0xfe; -#if TRY_HIGH_FIRST == 1 - byte = get_linkn_first(byte); /* Min link to Node1 */ -#else - byte = get_linkn_last(byte); /* Max link to Node1*/ -#endif - print_linkn("\t-->(0,1) link=", byte); - setup_row_direct(0,1, byte); - setup_temp_row(0, 1); - - verify_connection(7); - - /* We found 2 nodes so far */ - val = pci_read_config32(NODE_HT(7), 0x6c); - byte = (val>>2) & 0x3; /* get default link on node7 to node0*/ - print_linkn("\t-->(1,0) link=", byte); - setup_row_local(7,1); - setup_remote_row_direct(1, 0, byte); - } -#endif - - setup_remote_node(1); /* Setup the regs on the remote node */ - rename_temp_node(1); /* Rename Node 7 to Node 1 */ - enable_routing(1); /* Enable routing on Node 1 */ -#if 0 - /*don't need and it is done by clear_dead_links */ - clear_temp_row(0); -#endif - - return nodes; -} -#endif /*CONFIG_MAX_PHYSICAL_CPUS > 1 */ - -#if CONFIG_MAX_PHYSICAL_CPUS > 2 - -static unsigned setup_smp4(void) -{ - unsigned nodes; - u8 byte; - uint32_t val; - - nodes=4; - - /* Setup and check temporary connection from Node 0 to Node 2 */ - val = get_row(0,0); - byte = ((val>>16) & 0xfe) - link_connection(0,1); - byte = get_linkn_last_count(byte); - - if((byte>>2)==0) { /* We should have two coherent for 4p and above*/ - nodes = 2; - return nodes; - } - - byte &= 3; /* bit [3,2] is count-1*/ - print_linkn("(0,2) link=", byte); - setup_row_direct(0, 2, byte); /*(0,2) direct link done*/ - - /* We found 3 nodes so far. Now setup a temporary - * connection from node 0 to node 3 via node 1 - */ - setup_temp_row(0,1); /* temp. link between nodes 0 and 1 */ - /* here should setup_row_direct(1,3) at first, before that we should find the link in node 1 to 3*/ - val = get_row(1,1); - byte = ((val>>16) & 0xfe) - link_connection(1,0); - byte = get_linkn_first(byte); - print_linkn("(1,3) link=", byte); - setup_row_direct(1,3,byte); /* (1, 3) direct link done*/ - - /* We found 4 nodes so far. Now setup all nodes for 4p */ - // We need to make sure 0,2 and 1,3 link is set already -#if !CROSS_BAR_47_56 - static const u8 conn4_1[] = { - 0,3, - 1,2, - }; -#else - static const u8 conn4_1[] = { - 0,3,2,1, - 1,2,3,1, - }; -#endif - - setup_row_indirect_group(conn4_1, sizeof(conn4_1)/sizeof(conn4_1[0])); - - setup_temp_row(0,2); - verify_connection(7); - val = pci_read_config32(NODE_HT(7), 0x6c); - byte = (val>>2) & 0x3; /* get default link on 7 to 0*/ - print_linkn("(2,0) link=", byte); - - setup_row_local(7,2); - setup_remote_row_direct(2, 0, byte); /* node 2 to node 0 direct link done */ - setup_remote_node(2); /* Setup the regs on the remote node */ - - rename_temp_node(2); /* Rename Node 7 to Node 2 */ - enable_routing(2); /* Enable routing on Node 2 */ - - setup_temp_row(0,1); - setup_temp_row(1,3); - verify_connection(7); - - val = pci_read_config32(NODE_HT(7), 0x6c); - byte = (val>>2) & 0x3; /* get default link on 7 to 1*/ - print_linkn("(3,1) link=", byte); - - setup_row_local(7,3); - setup_remote_row_direct(3, 1, byte); /* node 3 to node 1 direct link done */ - setup_remote_node(3); /* Setup the regs on the remote node */ - - /* We need to init link between 2, and 3 direct link */ - val = get_row(2,2); - byte = ((val>>16) & 0xfe) - link_connection(2,0); - byte = get_linkn_last_count(byte); - print_linkn("(2,3) link=", byte & 3); - - setup_row_direct(2,3, byte & 0x3); - setup_temp_row(0,2); - setup_temp_row(2,3); - verify_connection(7); /* to 3*/ - -#if (CONFIG_MAX_PHYSICAL_CPUS > 4) || (CONFIG_MAX_PHYSICAL_CPUS_4_BUT_MORE_INSTALLED == 1) - /* We need to find out which link is to node3 */ - if((byte>>2)==2) { /* one to node3, one to node0, one to node4*/ - val = get_row(7,3); - if((val>>16) == 1) { /* that link is to node4, because via node1 it has been set, recompute it*/ - val = get_row(2,2); - byte = ((val>>16) & 0xfe) - link_connection(2,0); - byte = get_linkn_first(byte); - print_linkn("\t-->(2,3) link=", byte); - setup_row_direct(2,3,byte); - setup_temp_row(2,3); - verify_connection(7); /* to 3*/ - } - } -#endif - - val = pci_read_config32(NODE_HT(7), 0x6c); - byte = (val>>2) & 0x3; /* get default link on 7 to 2*/ - print_linkn("(3,2) link=", byte); - setup_remote_row_direct(3,2, byte); - -#if (CONFIG_MAX_PHYSICAL_CPUS > 4) || (CONFIG_MAX_PHYSICAL_CPUS_4_BUT_MORE_INSTALLED == 1) - /* set link from 3 to 5 before enable it*/ - val = get_row(7,3); - byte = ((val>>16) & 0xfe) - link_connection(7,2) - link_connection(7,1); - byte = get_linkn_last_count(byte); - if((byte>>2)==1) { /* We should have three coherent links on node 3 for 6p and above*/ - byte &= 3; /*bit [3,2] is count-2*/ - print_linkn("(3,5) link=", byte); - setup_remote_row_direct(3, 5, byte); - } - - val = get_row(2,2); - byte = ((val>>16) & 0xfe) - link_connection(2,3) - link_connection(2,0); - byte = get_linkn_last_count(byte); - - if((byte>>2)==1) { /* We should have three coherent link on node 2 for 6p and above*/ - byte &= 3; /* bit [3,2] is count-2*/ - print_linkn("(2,4) link=", byte); - setup_row_direct(2, 4, byte); - } -#endif - - //Beside 3, 1 is set, We need to make sure 3, 5 is set already in case has three link in 3 -#if !CROSS_BAR_47_56 - static const u8 conn4_3[] = { - 3,0, - }; -#else - static const u8 conn4_3[] = { - 3,0,1,1, - }; -#endif - setup_remote_row_indirect_group(conn4_3, sizeof(conn4_3)/sizeof(conn4_3[0])); - -/* ready to enable RT for Node 3 */ - rename_temp_node(3); - enable_routing(3); /* enable routing on node 3 (temp.) */ - - // beside 2, 0 is set, We need to make sure 2, 4 link is set already in case has three link in 2 -#if !CROSS_BAR_47_56 - static const u8 conn4_2[] = { - 2,1, - }; -#else - static const u8 conn4_2[] = { - 2,1,0,1, - }; -#endif - setup_row_indirect_group(conn4_2, sizeof(conn4_2)/sizeof(conn4_2[0])); - -#if 0 - /*We need to do sth to reverse work for setup_temp_row (0,1) (1,3) */ - /* it will be done by clear_dead_links */ - clear_temp_row(0); - clear_temp_row(1); -#endif - - return nodes; - -} - -#endif /* CONFIG_MAX_PHYSICAL_CPUS > 2 */ - -#if CONFIG_MAX_PHYSICAL_CPUS > 4 - -static unsigned setup_smp6(void) -{ - unsigned nodes; - u8 byte; - uint32_t val; - - nodes=6; - - /* Setup and check temporary connection from Node 0 to Node 4 through 2*/ - val = get_row(2,2); - byte = ((val>>16) & 0xfe) - link_connection(2,3) - link_connection(2,0); - byte = get_linkn_last_count(byte); - - if((byte>>2)==0) { /* We should have three coherent link on node 2 for 6p and above*/ - nodes = 4; - return nodes; - } - - /* Setup and check temporary connection from Node 0 to Node 5 through 1, 3*/ - /* set link from 3 to 5 before enable it*/ - val = get_row(3,3); - byte = ((val>>16) & 0xfe) - link_connection(3,2) - link_connection(3,1); - byte = get_linkn_last_count(byte); - if((byte>>2)==0) { /* We should have three coherent links on node 3 for 6p and above*/ - nodes = 4; - return nodes; - } - - /* We found 6 nodes so far. Now setup all nodes for 6p */ -#warning "FIXME we need to find out the correct gateway for 6p" - static const u8 conn6_1[] = { -#if !CROSS_BAR_47_56 - 0, 4, - 0, 5, - 1, 4, - 1, 5, - 2, 5, - 3, 4, -#else - 0, 4, 2, 0, - 0, 5, 2, 1, - 1, 4, 3, 1, - 1, 5, 3, 0, - 2, 5, 3, 0, - 3, 4, 2, 0, -#endif - }; - - setup_row_indirect_group(conn6_1, sizeof(conn6_1)/sizeof(conn6_1[0])); - - for(byte=0; byte<4; byte+=2) { - setup_temp_row(byte,byte+2); - } - verify_connection(7); - val = pci_read_config32(NODE_HT(7), 0x6c); - byte = (val>>2) & 0x3; /*get default link on 7 to 2*/ - print_linkn("(4,2) link=", byte); - - setup_row_local(7,4); - setup_remote_row_direct(4, 2, byte); - setup_remote_node(4); /* Setup the regs on the remote node */ - - /* Set indirect connection to 0, to 3 */ - //we only need to set 4,0 here - static const u8 conn6_2[] = { -#if !CROSS_BAR_47_56 - 4, 0, -#else - 4, 0, 2, 0, -#endif - }; - - setup_remote_row_indirect_group(conn6_2, sizeof(conn6_2)/sizeof(conn6_2[0])); - - rename_temp_node(4); - enable_routing(4); - - setup_temp_row(0,1); - for(byte=0; byte<4; byte+=2) { - setup_temp_row(byte+1,byte+3); - } - verify_connection(7); - - val = pci_read_config32(NODE_HT(7), 0x6c); - byte = (val>>2) & 0x3; /* get default link on 7 to 3*/ - print_linkn("(5,3) link=", byte); - setup_row_local(7,5); - setup_remote_row_direct(5, 3, byte); - setup_remote_node(5); /* Setup the regs on the remote node */ - -#if !CROSS_BAR_47_56 - /* We need to init link between 4, and 5 direct link */ - val = get_row(4,4); - byte = ((val>>16) & 0xfe) - link_connection(4,2); - byte = get_linkn_last_count(byte); - print_linkn("(4,5) link=", byte & 3); - - setup_row_direct(4,5, byte & 0x3); - setup_temp_row(0,2); - setup_temp_row(2,4); - setup_temp_row(4,5); - verify_connection(7); /* to 5*/ - -#if CONFIG_MAX_PHYSICAL_CPUS > 6 - /* We need to find out which link is to node5 */ - - if((byte>>2)==2) { /* one to node5, one to node2, one to node6*/ - val = get_row(7,5); - if((val>>16) == 1) { /* that link is to node6, because via node 3 node 5 has been set*/ - val = get_row(4,4); - byte = ((val>>16) & 0xfe) - link_connection(4,2); - byte = get_linkn_first(byte); - print_linkn("\t-->(4,5) link=", byte); - setup_row_direct(4,5,byte); - setup_temp_row(4,5); - verify_connection(7); /* to 5*/ - } - } -#endif - - val = pci_read_config32(NODE_HT(7), 0x6c); - byte = (val>>2) & 0x3; /* get default link on 7 to 4*/ - print_linkn("(5,4) link=", byte); - setup_remote_row_direct(5,4, byte); - - //init 5, 7 here - val = get_row(7,5); - byte = ((val>>16) & 0xfe) - link_connection(7,4) - link_connection(7,3); - byte = get_linkn_last_count(byte); - if((byte>>2)==1) { /* We should have three coherent links on node 5 for 6p and above*/ - byte &= 3; /*bit [3,2] is count-2*/ - print_linkn("(5,7) link=", byte); - setup_remote_row_direct(5, 7, byte); - } - - //init 4,6 here - val = get_row(4,4); - byte = ((val>>16) & 0xfe) - link_connection(4,5) - link_connection(4,2); - byte = get_linkn_last_count(byte); - - if((byte>>2)==1) { /* We should have three coherent link on node 4 for 6p and above*/ - byte &= 3; /* bit [3,2] is count-2*/ - print_linkn("(4,6) link=", byte); - setup_row_direct(4, 6, byte); - } - -#endif - - //We need to set 5,0 here only, We need to set up 5, 7 to make 5,0 - /* Set indirect connection to 0, to 3 for indirect we will use clockwise routing */ - static const u8 conn6_3[] = { -#if !CROSS_BAR_47_56 - 5, 0, -#else - 5, 0, 3, 0, -#endif - }; - - setup_remote_row_indirect_group(conn6_3, sizeof(conn6_3)/sizeof(conn6_3[0])); - -/* ready to enable RT for 5 */ - rename_temp_node(5); - enable_routing(5); /* enable routing on node 5 (temp.) */ - - static const u8 conn6_4[] = { -#if !CROSS_BAR_47_56 - 4, 1, - 4, 3, - - 5, 2, - 5, 1, - -#else - 4, 1, 2, 0, - 4, 3, 2, 0, - 4, 5, 2, 0, - - 5, 2, 3, 0, - 5, 1, 3, 0, - 5, 4, 3, 0, - -#endif - }; - - setup_row_indirect_group(conn6_4, sizeof(conn6_4)/sizeof(conn6_4[0])); - -#if 0 - /* We need to do sth about reverse about setup_temp_row (0,1), (2,4), (1, 3), (3,5) - * It will be done by clear_dead_links - */ - for(byte=0; byte<4; byte++) { - clear_temp_row(byte); - } -#endif - - return nodes; - -} - -#endif /* CONFIG_MAX_PHYSICAL_CPUS > 4 */ - -#if CONFIG_MAX_PHYSICAL_CPUS > 6 - -static unsigned setup_smp8(void) -{ - unsigned nodes; - u8 byte; - uint32_t val; - - nodes=8; - - /* Setup and check temporary connection from Node 0 to Node 6 via 2 and 4 to 7 */ - val = get_row(4,4); -#if CROSS_BAR_47_56 - byte = ((val>>16) & 0xfe) - link_connection(4,2); -#else - byte = ((val>>16) & 0xfe) - link_connection(4,5) - link_connection(4,2); - byte = get_linkn_last_count(byte); /* Max link to 6*/ - if((byte>>2)==0) { /* We should have two or three coherent links on node 4 for 8p*/ - nodes = 6; - return nodes; - } -#endif - -#if CROSS_BAR_47_56 - byte = get_linkn_last_count(byte); /* Max link to 6*/ - if((byte>>2)<2) { /* We should have two or three coherent links on node 4 for 8p*/ - nodes = 6; - return nodes; - } -#if TRY_HIGH_FIRST == 1 - byte = ((val>>16) & 0xfe) - link_connection(4,2); - byte = get_linkn_first(byte); /*Min link to 6*/ -#else - byte &= 3; /* bit [3,2] is count-1 or 2*/ -#endif - print_linkn("(4,6) link=", byte); - setup_row_direct(4, 6, byte); -#endif - -#if !CROSS_BAR_47_56 - /* Setup and check temporary connection from Node 0 to Node 7 through 1, 3, 5*/ - val = get_row(5,5); - byte = ((val>>16) & 0xfe) - link_connection(5,4) - link_connection(5,3); - byte = get_linkn_last_count(byte); - if((byte>>2)==0) { /* We should have three coherent links on node 5 for 6p and above*/ - nodes = 6; - return nodes; - } -#endif - - /* We found 8 nodes so far. Now setup all nodes for 8p */ - static const u8 conn8_1[] = { -#if !CROSS_BAR_47_56 - 0, 6, - /*0, 7,*/ - 1, 6, - /*1, 7,*/ - 2, 6, - /*2, 7,*/ - 3, 6, - /*3, 7,*/ - /*4, 7,*/ - 5, 6, -#else - 0, 6, 2, 0, - /*0, 7, 2, 0,*/ - 1, 6, 3, 0, - /*1, 7, 3, 0,*/ - 2, 6, 4, 0, - /*2, 7, 4, 0,*/ - 3, 6, 5, 1, - /*3, 7, 5, 0,*/ -#endif - }; - - setup_row_indirect_group(conn8_1,sizeof(conn8_1)/sizeof(conn8_1[0])); - - for(byte=0; byte<6; byte+=2) { - setup_temp_row(byte,byte+2); - } - verify_connection(7); - val = pci_read_config32(NODE_HT(7), 0x6c); - byte = (val>>2) & 0x3; /* get default link on 7 to 4*/ - print_linkn("(6,4) link=", byte); - - setup_row_local(7,6); - setup_remote_row_direct(6, 4, byte); - setup_remote_node(6); /* Setup the regs on the remote node */ - /* Set indirect connection to 0, to 3 */ -#warning "FIXME we need to find out the correct gateway for 8p" - static const u8 conn8_2[] = { -#if !CROSS_BAR_47_56 - 6, 0, -#else - 6, 0, 4, 0, -#endif - }; - - setup_remote_row_indirect_group(conn8_2, sizeof(conn8_2)/sizeof(conn8_2[0])); - -#if CROSS_BAR_47_56 - //init 5, 6 here - /* here init 5, 6 */ - /* Setup and check temporary connection from Node 0 to Node 5 through 1, 3, 5*/ - val = get_row(5,5); - byte = ((val>>16) & 0xfe) - link_connection(5,3); -#if TRY_HIGH_FIRST == 1 - byte = get_linkn_first(byte); -#else - byte = get_linkn_last(byte); -#endif - print_linkn("(5,6) link=", byte); - setup_row_direct(5, 6, byte); - - setup_temp_row(0,1); /* temp. link between nodes 0 and 1 */ - for(byte=0; byte<4; byte+=2) { - setup_temp_row(byte+1,byte+3); - } - setup_temp_row(5,6); - - verify_connection(7); - - val = get_row(7,6); // to chect it if it is node6 before renaming - if( (val>>16) == 1) { // it is real node 7 so swap it - /* We need to recompute link to 6 */ - val = get_row(5,5); - byte = ((val>>16) & 0xfe) - link_connection(5,3); -#if TRY_HIGH_FIRST == 1 - byte = get_linkn_first(byte); -#else - byte = get_linkn_last(byte); -#endif - print_linkn("\t-->(5,6) link=", byte); - setup_row_direct(5, 6, byte); -#if 0 - setup_temp_row(0,1); /* temp. link between nodes 0 and 1 */ - for(byte=0; byte<4; byte+=2) { - setup_temp_row(byte+1,byte+3); - } -#endif - setup_temp_row(5,6); - - verify_connection(7); - } - val = pci_read_config32(NODE_HT(7), 0x6c); - byte = (val>>2) & 0x3; /* get default link on 7 to 5*/ - print_linkn("(6,5) link=", byte); - setup_remote_row_direct(6, 5, byte); - /*Till now 56, 65 done */ -#endif - - rename_temp_node(6); - enable_routing(6); - -#if !CROSS_BAR_47_56 - setup_temp_row(0,1); - for(byte=0; byte<6; byte+=2) { - setup_temp_row(byte+1,byte+3); - } - - verify_connection(7); - - val = pci_read_config32(NODE_HT(7), 0x6c); - byte = (val>>2) & 0x3; /* get default link on 7 to 5*/ - print_linkn("(7,5) link=", byte); - setup_row_local(7,7); - setup_remote_row_direct(7, 5, byte); - -#else - val = get_row(4,4); - byte = ((val>>16) & 0xfe) - link_connection(4,2) - link_connection(4,6); - byte = get_linkn_first(byte); - print_linkn("(4,7) link=", byte); - setup_row_direct(4, 7, byte); - - /* Setup and check temporary connection from Node 0 to Node 7 through 2, and 4*/ - for(byte=0; byte<4; byte+=2) { - setup_temp_row(byte,byte+2); - } - - verify_connection(7); - - val = pci_read_config32(NODE_HT(7), 0x6c); - byte = (val>>2) & 0x3; /* get default link on 7 to 4*/ - print_linkn("(7,4) link=", byte); - setup_row_local(7,7); - setup_remote_row_direct(7, 4, byte); - /* till now 4-7, 7-4 done. */ -#endif - setup_remote_node(7); /* Setup the regs on the remote node */ - -#if CROSS_BAR_47_56 - /* here init 5, 7 */ - /* Setup and check temporary connection from Node 0 to Node 5 through 1, 3, 5*/ - val = get_row(5,5); - byte = ((val>>16) & 0xfe) - link_connection(5,3) - link_connection(5,6); - byte = get_linkn_first(byte); - print_linkn("(5,7) link=", byte); - setup_row_direct(5, 7, byte); - - setup_temp_row(0,1); /* temp. link between nodes 0 and 1 */ - for(byte=0; byte<4; byte+=2) { - setup_temp_row(byte+1,byte+3); - } - - verify_connection(7); - - val = pci_read_config32(NODE_HT(7), 0x6c); - byte = (val>>2) & 0x3; /* get default link on 7 to 5*/ - print_linkn("(7,5) link=", byte); - setup_remote_row_direct(7, 5, byte); - /*Till now 57, 75 done */ - -#endif - - /* We need to init link between 6, and 7 direct link */ - val = get_row(6,6); -#if !CROSS_BAR_47_56 - byte = ((val>>16) & 0xfe) - link_connection(6,4); -#else - byte = ((val>>16) & 0xfe) - link_connection(6,4) - link_connection(6,5); -#endif - byte = get_linkn_first(byte); - print_linkn("(6,7) link=", byte); - setup_row_direct(6,7, byte); - - val = get_row(7,7); -#if !CROSS_BAR_47_56 - byte = ((val>>16) & 0xfe) - link_connection(7,5); -#else - byte = ((val>>16) & 0xfe) - link_connection(7,5) - link_connection(7,4); -#endif - byte = get_linkn_first(byte); - print_linkn("(7,6) link=", byte); - setup_row_direct(7,6, byte); - - /* Set indirect connection to 0, to 3 for indirect we will use clockwise routing */ - static const u8 conn8_3[] = { -#if !CROSS_BAR_47_56 - 0, 7, /* restore it*/ - 1, 7, - 2, 7, - 3, 7, - 4, 7, - - 6, 1, - 6, 2, - 6, 3, - 6, 5, - - 7, 0, - 7, 1, - 7, 2, - 7, 3, - 7, 4, -#else - - - 4, 5, 6, 1, - 5, 4, 7, 1, - - 6, 1, 5, 0, // or 4, 1 - 6, 2, 4, 0, - 6, 3, 5, 0, // or 4, 1 - - 7, 0, 4, 0, // or 5, 1 - 7, 1, 5, 0, - 7, 2, 4, 0, // or 5, 1 - 7, 3, 5, 0, - - 0, 7, 2, 0, /* restore it*/ - 1, 7, 3, 0, - 2, 7, 4, 1, - 3, 7, 5, 0, - - 2, 5, 4, 1, /* reset it */ - 3, 4, 5, 1, - - 4, 1, 2, 1, /* reset it */ - 4, 3, 2, 1, - - 5, 2, 3, 1, /* reset it */ - 5, 0, 3, 1, - -#endif - }; - - setup_row_indirect_group(conn8_3, sizeof(conn8_3)/sizeof(conn8_3[0])); - -#if CROSS_BAR_47_56 - /* for 47, 56, 57, 75, 46, 64 we need to substract another link to - 6, 7, 6, 6, 7, 7 */ - static const u8 conn8_4[] = { -//direct - 4, 7, 6, - 5, 6, 7, - 5, 7, 6, - 7, 5, 6, - 4, 6, 7, - 6, 4, 7, - -//in direct - 0, 6, 1, - 0, 7, 1, - - 1, 6, 0, - 1, 7, 0, - - 2, 6, 3, -// 2, 7, 3, + - -// 3, 6, 1, + - 3, 7, 2, - - 6, 0, 7, - 6, 1, 7, // needed for via 5 - 6, 1, 4, // ??? - 6, 2, 7, - 6, 3, 7, // needed for via 5 - 6, 3, 4, //??? - 7, 0, 6, // needed for via 4 - 7, 0, 5, //??? - 7, 1, 6, - 7, 2, 6, // needed for via 4 - 7, 2, 5, //??? - 7, 3, 6, - }; - - opt_broadcast_rt_group(conn8_4, sizeof(conn8_4)/sizeof(conn8_4[0])); - - static const u8 conn8_5[] = { - 2, 7, 0, - - 3, 6, 1, - }; - - opt_broadcast_rt_plus_group(conn8_5, sizeof(conn8_5)/sizeof(conn8_5[0])); -#endif - - - -/* ready to enable RT for Node 7 */ - enable_routing(7); /* enable routing on node 7 (temp.) */ - - return nodes; -} - -#endif /* CONFIG_MAX_PHYSICAL_CPUS > 6 */ - - -#if CONFIG_MAX_PHYSICAL_CPUS > 1 - -static unsigned setup_smp(void) -{ - unsigned nodes; - - print_spew("Enabling SMP settings\r\n"); - - nodes = setup_smp2(); -#if CONFIG_MAX_PHYSICAL_CPUS > 2 - if(nodes == 2) - nodes = setup_smp4(); -#endif - -#if CONFIG_MAX_PHYSICAL_CPUS > 4 - if(nodes == 4) - nodes = setup_smp6(); -#endif - -#if CONFIG_MAX_PHYSICAL_CPUS > 6 - if(nodes == 6) - nodes = setup_smp8(); -#endif - -#if CONFIG_USE_PRINTK_IN_CAR - printk_debug("%02x nodes initialized.\r\n", nodes); -#else - print_debug_hex8(nodes); - print_debug(" nodes initialized.\r\n"); -#endif - - return nodes; -} - -static unsigned verify_mp_capabilities(unsigned nodes) -{ - unsigned node, mask; - - mask = 0x06; /* BigMPCap */ - - for (node=0; node 2 - case 0x02: /* MPCap */ - if(nodes > 2) { - print_err("Going back to DP\r\n"); - return 2; - } - break; -#endif - case 0x00: /* Non SMP */ - if(nodes >1 ) { - print_err("Going back to UP\r\n"); - return 1; - } - break; - } - - return nodes; - -} - - -static void clear_dead_routes(unsigned nodes) -{ - int last_row; - int node, row; -#if CONFIG_MAX_PHYSICAL_CPUS == 8 - if(nodes==8) return;/* don't touch (7,7)*/ -#endif - last_row = nodes; - if (nodes == 1) { - last_row = 0; - } - for(node = 7; node >= 0; node--) { - for(row = 7; row >= last_row; row--) { - fill_row(node, row, DEFAULT); - } - } - - /* Update the local row */ - for( node=0; node> 8) & 0xff)) << 16) | 0x0101); - } -} -#endif /* CONFIG_MAX_PHYSICAL_CPUS > 1 */ - -#if CONFIG_LOGICAL_CPUS==1 -static unsigned verify_dualcore(unsigned nodes) -{ - unsigned node, totalcpus, tmp; - - totalcpus = 0; - for (node=0; node> 12) & 3 ; - totalcpus += (tmp + 1); - } - - return totalcpus; - -} -#endif - -static void coherent_ht_finalize(unsigned nodes) -{ - unsigned node; -#if K8_REV_F_SUPPORT == 0 - int rev_a0; -#endif -#if CONFIG_LOGICAL_CPUS==1 - unsigned total_cpus; - - if(read_option(CMOS_VSTART_dual_core, CMOS_VLEN_dual_core, 0) == 0) { /* dual_core */ - total_cpus = verify_dualcore(nodes); - } - else { - total_cpus = nodes; - } -#endif - - /* set up cpu count and node count and enable Limit - * Config Space Range for all available CPUs. - * Also clear non coherent hypertransport bus range - * registers on Hammer A0 revision. - */ - - print_spew("coherent_ht_finalize\r\n"); -#if K8_REV_F_SUPPORT == 0 - rev_a0 = is_cpu_rev_a0(); -#endif - for (node = 0; node < nodes; node++) { - device_t dev; - uint32_t val; - dev = NODE_HT(node); - - /* Set the Total CPU and Node count in the system */ - val = pci_read_config32(dev, 0x60); - val &= (~0x000F0070); -#if CONFIG_LOGICAL_CPUS==1 - val |= ((total_cpus-1)<<16)|((nodes-1)<<4); -#else - val |= ((nodes-1)<<16)|((nodes-1)<<4); -#endif - pci_write_config32(dev, 0x60, val); - - /* Only respond to real cpu pci configuration cycles - * and optimize the HT settings - */ - val=pci_read_config32(dev, HT_TRANSACTION_CONTROL); - val &= ~((HTTC_BUF_REL_PRI_MASK << HTTC_BUF_REL_PRI_SHIFT) | - (HTTC_MED_PRI_BYP_CNT_MASK << HTTC_MED_PRI_BYP_CNT_SHIFT) | - (HTTC_HI_PRI_BYP_CNT_MASK << HTTC_HI_PRI_BYP_CNT_SHIFT)); - val |= HTTC_LIMIT_CLDT_CFG | - (HTTC_BUF_REL_PRI_8 << HTTC_BUF_REL_PRI_SHIFT) | - (3 << HTTC_MED_PRI_BYP_CNT_SHIFT) | - (3 << HTTC_HI_PRI_BYP_CNT_SHIFT); - pci_write_config32(dev, HT_TRANSACTION_CONTROL, val); - -#if K8_REV_F_SUPPORT == 0 - if (rev_a0) { - pci_write_config32(dev, 0x94, 0); - pci_write_config32(dev, 0xb4, 0); - pci_write_config32(dev, 0xd4, 0); - } -#endif - } - - print_spew("done\r\n"); -} - -static int apply_cpu_errata_fixes(unsigned nodes) -{ - unsigned node; - int needs_reset = 0; - for(node = 0; node < nodes; node++) { - device_t dev; - uint32_t cmd; - dev = NODE_MC(node); -#if K8_REV_F_SUPPORT == 0 - if (is_cpu_pre_c0()) { - - /* Errata 66 - * Limit the number of downstream posted requests to 1 - */ - cmd = pci_read_config32(dev, 0x70); - if ((cmd & (3 << 0)) != 2) { - cmd &= ~(3<<0); - cmd |= (2<<0); - pci_write_config32(dev, 0x70, cmd ); - needs_reset = 1; - } - cmd = pci_read_config32(dev, 0x7c); - if ((cmd & (3 << 4)) != 0) { - cmd &= ~(3<<4); - cmd |= (0<<4); - pci_write_config32(dev, 0x7c, cmd ); - needs_reset = 1; - } - /* Clock Power/Timing Low */ - cmd = pci_read_config32(dev, 0xd4); - if (cmd != 0x000D0001) { - cmd = 0x000D0001; - pci_write_config32(dev, 0xd4, cmd); - needs_reset = 1; /* Needed? */ - } - - } - else if (is_cpu_pre_d0()) { // d0 later don't need it - uint32_t cmd_ref; - /* Errata 98 - * Set Clk Ramp Hystersis to 7 - * Clock Power/Timing Low - */ - cmd_ref = 0x04e20707; /* Registered */ - cmd = pci_read_config32(dev, 0xd4); - if(cmd != cmd_ref) { - pci_write_config32(dev, 0xd4, cmd_ref ); - needs_reset = 1; /* Needed? */ - } - } -#endif - } - return needs_reset; -} - -static int optimize_link_read_pointers(unsigned nodes) -{ - unsigned node; - int needs_reset = 0; - for(node = 0; node < nodes; node++) { - device_t f0_dev, f3_dev; - uint32_t cmd_ref, cmd; - int link; - f0_dev = NODE_HT(node); - f3_dev = NODE_MC(node); - cmd_ref = cmd = pci_read_config32(f3_dev, 0xdc); - for(link = 0; link < 3; link++) { - uint32_t link_type; - unsigned reg; - /* This works on an Athlon64 because unimplemented links return 0 */ - reg = 0x98 + (link * 0x20); - link_type = pci_read_config32(f0_dev, reg); - /* Only handle coherent links */ - if ((link_type & (LinkConnected | InitComplete|NonCoherent)) == - (LinkConnected|InitComplete)) - { - cmd &= ~(0xff << (link *8)); - cmd |= 0x25 << (link *8); - } - } - if (cmd != cmd_ref) { - pci_write_config32(f3_dev, 0xdc, cmd); - needs_reset = 1; - } - } - return needs_reset; -} - -static inline unsigned get_nodes(void) -{ - return ((pci_read_config32(PCI_DEV(0, 0x18, 0), 0x60)>>4) & 7) + 1; -} - -static int optimize_link_coherent_ht(void) -{ - int needs_reset = 0; - - unsigned nodes; - - nodes = get_nodes(); - -#if CONFIG_MAX_PHYSICAL_CPUS > 1 - if(nodes>1) { - needs_reset |= optimize_connection( - NODE_HT(0), 0x80 + link_to_register(link_connection(0,1)), - NODE_HT(1), 0x80 + link_to_register(link_connection(1,0)) ); - } - -#if CONFIG_MAX_PHYSICAL_CPUS > 2 - if(nodes>2) { - /* optimize physical connections - by LYH */ - static const u8 opt_conn4[] = { - 0,2, - 1,3, - 2,3, - }; - needs_reset |= optimize_connection_group(opt_conn4, sizeof(opt_conn4)/sizeof(opt_conn4[0])); - } -#endif - -#if CONFIG_MAX_PHYSICAL_CPUS > 4 - if(nodes>4) { - static const uint8_t opt_conn6[] ={ - 2, 4, - 3, 5, - #if !CROSS_BAR_47_56 - 4, 5, - #endif - }; - needs_reset |= optimize_connection_group(opt_conn6, sizeof(opt_conn6)/sizeof(opt_conn6[0])); - } -#endif - -#if CONFIG_MAX_PHYSICAL_CPUS > 6 - if(nodes>6) { - static const uint8_t opt_conn8[] ={ - 4, 6, - #if CROSS_BAR_47_56 - 4, 7, - 5, 6, - #endif - 5, 7, - 6, 7, - }; - needs_reset |= optimize_connection_group(opt_conn8, sizeof(opt_conn8)/sizeof(opt_conn8[0])); - } -#endif - -#endif - - needs_reset |= apply_cpu_errata_fixes(nodes); - needs_reset |= optimize_link_read_pointers(nodes); - - return needs_reset; -} - -#if RAMINIT_SYSINFO == 1 -static void setup_coherent_ht_domain(void) -#else -static int setup_coherent_ht_domain(void) -#endif -{ - unsigned nodes; - nodes = 1; - - enable_bsp_routing(); - -#if CONFIG_MAX_PHYSICAL_CPUS > 1 - nodes = setup_smp(); - nodes = verify_mp_capabilities(nodes); - clear_dead_routes(nodes); -#endif - - if (nodes == 1) { - setup_uniprocessor(); - } - coherent_ht_finalize(nodes); - -#if RAMINIT_SYSINFO == 0 - return optimize_link_coherent_ht(); -#endif -} - From uwe at hermann-uwe.de Wed Dec 5 20:27:40 2007 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Wed, 5 Dec 2007 20:27:40 +0100 Subject: [LinuxBIOS] [PATCH] Drop coherent_ht_car.c file In-Reply-To: <4756F0B2.90503@amd.com> References: <20071205162618.GA14308@greenwood> <4756F0B2.90503@amd.com> Message-ID: <20071205192740.GB14308@greenwood> On Wed, Dec 05, 2007 at 11:40:50AM -0700, Marc Jones wrote: > Acked-by: Marc Jones Thanks, r2998. Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org From yinghailu at gmail.com Wed Dec 5 20:38:15 2007 From: yinghailu at gmail.com (yhlu) Date: Wed, 5 Dec 2007 11:38:15 -0800 Subject: [LinuxBIOS] mcp55 irq and apic patch Message-ID: <2ea3fae10712051138r4eb6202cgb4d14f889ffb8274@mail.gmail.com> [Patch] mcp55: irq and apic route device irq through pci bridge instead in mptable. don't enable pin0 for ioapic of io-4 Signed-off-by: Yinghai Lu -------------- next part -------------- A non-text attachment was scrubbed... Name: mcp55_irq_apic.diff Type: text/x-patch Size: 24808 bytes Desc: not available URL: From yasteve at gmail.com Wed Dec 5 21:00:59 2007 From: yasteve at gmail.com (Steve Isaacs) Date: Wed, 05 Dec 2007 12:00:59 -0800 Subject: [LinuxBIOS] PCI: Left over static devices. Check your Config.lb In-Reply-To: <20071205113034.GA26399@greenwood> References: <1196813327.32101.41.camel@biosbreath> <20071205113034.GA26399@greenwood> Message-ID: <1196884859.11436.15.camel@biosbreath> On Wed, 2007-12-05 at 12:30 +0100, Uwe Hermann wrote: > Please post your Config.lb and 'lspci -tvnn' output. > > You're likely listing PCI devices in Config.lb which are not on the > board, or you use the wrong nesting or order (?) > Thanks, see below. I have been in a very uncomfortable position of having to guess about this. I dug around in other boards trying to find something that almost fits and then hacked from there. Is there anything that describes how to make a configuration in detail? I'd rather learn the rules than have someone figure it out for me. Other questions are, in what form and how is this information used at run-time? I apologize if I seem full of dumb or redundant questions. Steve Config.lb chip northbridge/amd/amdk8/root_complex device apic_cluster 0 on chip cpu/amd/socket_F device apic 0 on end end end device pci_domain 0 on chip northbridge/amd/amdk8 device pci 18.0 on # northbridge # devices on link 0 chip southbridge/broadcom/bcm21000 device pci 0.0 on end device pci 1.0 off end device pci 2.0 on end device pci 3.0 off end device pci 4.0 off end end chip southbridge/broadcom/bcm11000 device pci 0.0 on end device pci 0.1 on end device pci 1.0 on device pci e.0 on end end device pci 1.1 on end device pci 2.0 on device pci b.0 on end device pci b.1 on end device pci b.2 on end device pci c.0 on end device pci c.1 on end device pci c.2 on end device pci d.0 on end device pci d.1 on end device pci d.2 on end end device pci 2.1 on end device pci 3.0 on end device pci 3.1 on end device pci 4.0 on end device pci 4.1 on end device pci 6.0 on chip drivers/i2c/i2cmux2 # pca9544 smbus mux device i2c 71 on # MIS_ P40,28,39 end #0 pca9544 0 device i2c 71 on # HT_ P40,24,42 end #0 pca9544 1 device i2c 71 on # pca9544 2 P1_ P40,2,6,7 chip drivers/generic/generic #dimm 0-0-0 device i2c 50 on end end chip drivers/generic/generic #dimm 0-0-1 device i2c 51 on end end chip drivers/generic/generic #dimm 0-1-0 device i2c 52 on end end chip drivers/generic/generic #dimm 0-1-1 device i2c 53 on end end end device i2c 71 on #pca9544 3 P2_ P40,8,12,13 chip drivers/generic/generic #dimm 1-0-0 device i2c 50 on end end chip drivers/generic/generic #dimm 1-0-1 device i2c 51 on end end chip drivers/generic/generic #dimm 1-1-0 device i2c 52 on end end chip drivers/generic/generic #dimm 1-1-1 device i2c 53 on end end end end end device pci 6.1 on end device pci 6.2 on chip superio/smsc/sch4304 device pnp 2e.0 off # Floppy io 0x60 = 0x3f0 irq 0x70 = 6 drq 0x74 = 2 end device pnp 2e.3 on # Parallel Port io 0x60 = 0x378 irq 0x70 = 7 end device pnp 2e.4 on # Com 1 io 0x60 = 0x3f8 irq 0x70 = 4 end device pnp 2e.5 on # Com 2 io 0x60 = 0x2f8 irq 0x70 = 3 end device pnp 2e.6 on # RTC io 0x60 = 0x70 io 0x62 = 0x72 end device pnp 2e.7 on # Keyboard io 0x60 = 0x60 io 0x62 = 0x64 irq 0x70 = 1 end #device pnp 2e.7 off #end #device pnp 2e.B off #end end end device pci 6.3 off end device pci 6.4 on end device pci 6.5 on end device pci 6.6 on end end # bcm11000 end # device pci 18.0 device pci 18.1 on end device pci 18.2 on end device pci 18.3 on end end end #pci_domain end $ lspci -tvnn -[0000:00]-+-01.0 1166:0031 +-02.0-[0000:01]----0f.0 1166:0410 +-03.0-[0000:02]--+-0c.0 1166:0412 | +-0c.1 1166:0412 | +-0c.2 1166:0414 | +-0d.0 1166:0412 | +-0d.1 1166:0412 | +-0d.2 1166:0414 | +-0e.0 1166:0412 | +-0e.1 1166:0412 | \-0e.2 1166:0416 +-04.0-[0000:03]-- +-05.0-[0000:04]-- +-07.0 1166:0408 +-07.1 1166:0214 +-07.2 1166:040a +-08.0-[0000:05]-- +-09.0-[0000:06]-- +-0a.0-[0000:07]-- +-0b.0-[0000:08]-- +-0c.0-[0000:09]-- +-0e.0 10ec:8139 +-0f.0 1002:515e +-18.0 1022:1100 +-18.1 1022:1101 +-18.2 1022:1102 +-18.3 1022:1103 +-19.0 1022:1100 +-19.1 1022:1101 +-19.2 1022:1102 \-19.3 1022:1103 From myles at pel.cs.byu.edu Wed Dec 5 21:28:33 2007 From: myles at pel.cs.byu.edu (Myles Watson) Date: Wed, 5 Dec 2007 13:28:33 -0700 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <13426df10712042034x44d87ab6m7a8797de27f3f161@mail.gmail.com> References: <20071203170024.4989.qmail@stuge.se> <017601c835d8$02a2a240$480110ac@chimp> <20071203182927.GB23382@cosmic.amd.com> <20071204052804.GH20788@greenwood> <000001c836c5$16bd6fb0$4b23040a@chimp> <13426df10712042034x44d87ab6m7a8797de27f3f161@mail.gmail.com> Message-ID: <2831fecf0712051228g74f4152ard30e9e76411b434a@mail.gmail.com> > > That said, I haven't used v3 yet. > > > > give it a try first :-) > > thanks > > ron > This patch adds support for QEMU to buildrom, for both v2 and v3. It also allows you to build QEMU from sources with the patches. I've built it for v2 and v3 and it boots in v2, I'm not sure why it builds but doesn't boot in v3. Anyone care to send me their config file that works? In both v2 and v3 I turned of lzma compression because the decompressor was running out of space, and emulated ROM space was cheap today. I set it to use revision 539 of v3 because that was the last revision before it was broken on purpose to mirror hardware better. Myles Signed-off-by: Myles Watson From jordan.crouse at amd.com Wed Dec 5 21:50:06 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Wed, 5 Dec 2007 13:50:06 -0700 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <2831fecf0712051228g74f4152ard30e9e76411b434a@mail.gmail.com> References: <20071203170024.4989.qmail@stuge.se> <017601c835d8$02a2a240$480110ac@chimp> <20071203182927.GB23382@cosmic.amd.com> <20071204052804.GH20788@greenwood> <000001c836c5$16bd6fb0$4b23040a@chimp> <13426df10712042034x44d87ab6m7a8797de27f3f161@mail.gmail.com> <2831fecf0712051228g74f4152ard30e9e76411b434a@mail.gmail.com> Message-ID: <20071205205006.GB14853@cosmic.amd.com> On 05/12/07 13:28 -0700, Myles Watson wrote: > > > That said, I haven't used v3 yet. > > > > > > > give it a try first :-) > > > > thanks > > > > ron > > > > This patch adds support for QEMU to buildrom, for both v2 and v3. It > also allows you to build QEMU from sources with the patches. Not attached. > I've built it for v2 and v3 and it boots in v2, I'm not sure why it > builds but doesn't boot in v3. Anyone care to send me their config > file that works? > > In both v2 and v3 I turned of lzma compression because the > decompressor was running out of space, and emulated ROM space was > cheap today. > > I set it to use revision 539 of v3 because that was the last revision > before it was broken on purpose to mirror hardware better. Are you saying you snuck v3 support in when I wasn't looking? Well done. Jordan -- Jordan Crouse Systems Software Development Engineer Advanced Micro Devices, Inc. From uwe at hermann-uwe.de Wed Dec 5 22:23:48 2007 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Wed, 5 Dec 2007 22:23:48 +0100 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <2831fecf0712051228g74f4152ard30e9e76411b434a@mail.gmail.com> References: <20071203170024.4989.qmail@stuge.se> <017601c835d8$02a2a240$480110ac@chimp> <20071203182927.GB23382@cosmic.amd.com> <20071204052804.GH20788@greenwood> <000001c836c5$16bd6fb0$4b23040a@chimp> <13426df10712042034x44d87ab6m7a8797de27f3f161@mail.gmail.com> <2831fecf0712051228g74f4152ard30e9e76411b434a@mail.gmail.com> Message-ID: <20071205212348.GC14308@greenwood> On Wed, Dec 05, 2007 at 01:28:33PM -0700, Myles Watson wrote: > This patch adds support for QEMU to buildrom, for both v2 and v3. It > also allows you to build QEMU from sources with the patches. > > I've built it for v2 and v3 and it boots in v2, I'm not sure why it > builds but doesn't boot in v3. Anyone care to send me their config > file that works? The default config should work fine with current v3 trunk. Just run 'make menuconfig' and save (no changes). > In both v2 and v3 I turned of lzma compression because the > decompressor was running out of space, and emulated ROM space was > cheap today. > > I set it to use revision 539 of v3 because that was the last revision > before it was broken on purpose to mirror hardware better. You can use trunk, qemu build/run has been fixed in v3. Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org From uwe at hermann-uwe.de Wed Dec 5 22:49:52 2007 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Wed, 5 Dec 2007 22:49:52 +0100 Subject: [LinuxBIOS] mcp55 irq and apic patch In-Reply-To: <2ea3fae10712051138r4eb6202cgb4d14f889ffb8274@mail.gmail.com> References: <2ea3fae10712051138r4eb6202cgb4d14f889ffb8274@mail.gmail.com> Message-ID: <20071205214952.GD14308@greenwood> On Wed, Dec 05, 2007 at 11:38:15AM -0800, yhlu wrote: > [Patch] mcp55: irq and apic > > route device irq through pci bridge instead in mptable. > don't enable pin0 for ioapic of io-4 > > Signed-off-by: Yinghai Lu Thanks! The patch didn't apply cleanly and had some random whitespace breakage in it which I fixed, see attached version of the patch. I'll reply with a quick review and some questions. Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org -------------- next part -------------- A non-text attachment was scrubbed... Name: mcp55_irq_apic_2.diff Type: text/x-diff Size: 22452 bytes Desc: not available URL: From ward at gnu.org Wed Dec 5 23:17:19 2007 From: ward at gnu.org (Ward Vandewege) Date: Wed, 5 Dec 2007 17:17:19 -0500 Subject: [LinuxBIOS] alix and LPC.1A adapter? Message-ID: <20071205221719.GA1000@localdomain> Hi there, The alix.2/3 manual mentions that port J11/J16 can be used for an alternate flash rom via an LPC adapter. The alix.1 manual describes the same on port J16. The PC Engines adapter LPC.1A is mentioned in this context, but I can't find any documentation about it, not even on their website. Ron, which adapter do you use? Would the one that comes with the programmable LPC dongle by the Artek Group work? (http://www.artecgroup.com/products/hardware-products/programmable-lpc-dongle.html and http://www.opencores.org/projects.cgi/web/usb_dongle_fpga/overview) Thanks, Ward. -- Ward Vandewege Free Software Foundation - Senior System Administrator From ripzonetriton at gmail.com Wed Dec 5 23:26:41 2007 From: ripzonetriton at gmail.com (Triton) Date: Wed, 5 Dec 2007 22:26:41 +0000 Subject: [LinuxBIOS] alix and LPC.1A adapter? In-Reply-To: <20071205221719.GA1000@localdomain> References: <20071205221719.GA1000@localdomain> Message-ID: <20071205222641.7f4ce3c9.ripzonetriton@gmail.com> On Wed, 5 Dec 2007 17:17:19 -0500 Ward Vandewege wrote: > The PC Engines adapter LPC.1A is mentioned in this context, but I can't find > any documentation about it, not even on their website. You can order it directly from PC Engines. You just have to ask for it by email. Later, Jo?o Matos -- Triton From svn at openbios.org Thu Dec 6 00:00:51 2007 From: svn at openbios.org (svn at openbios.org) Date: Thu, 6 Dec 2007 00:00:51 +0100 Subject: [LinuxBIOS] r75 - buildrom-devel/packages/linuxbios/patches Message-ID: Author: ward Date: 2007-12-06 00:00:50 +0100 (Thu, 06 Dec 2007) New Revision: 75 Modified: buildrom-devel/packages/linuxbios/patches/supermicro-h8dmr-kernel-and-lab-Config.lb.patch Log: This patch fixes LAB booting for the supermicro H8DMR board (the generated linuxbios Config.lb file needed some love). This is a trivial patch. Signed-off-by: Ward Vandewege Acked-by: Ward Vandewege Modified: buildrom-devel/packages/linuxbios/patches/supermicro-h8dmr-kernel-and-lab-Config.lb.patch =================================================================== --- buildrom-devel/packages/linuxbios/patches/supermicro-h8dmr-kernel-and-lab-Config.lb.patch 2007-12-05 18:35:36 UTC (rev 74) +++ buildrom-devel/packages/linuxbios/patches/supermicro-h8dmr-kernel-and-lab-Config.lb.patch 2007-12-05 23:00:50 UTC (rev 75) @@ -1,6 +1,8 @@ +Index: Config.lb +=================================================================== --- LinuxBIOSv2/targets/supermicro/h8dmr/Config.lb 2008-05-29 14:42:05.000000000 -0400 +++ LinuxBIOSv2/targets/supermicro/h8dmr/Config.lb 2007-11-30 13:54:40.000000000 -0500 -@@ -22,82 +22,18 @@ +@@ -22,82 +22,28 @@ target h8dmr mainboard supermicro/h8dmr @@ -40,18 +42,22 @@ -# payload ../../../payloads/tg3--eepro100--e1000--filo_hda2_com2.zelf -end +option ROM_SIZE=0x100000 -+# 44K for ATI ROM in 1M -+option FALLBACK_SIZE=(ROM_SIZE-0xB000) ++# 44K for ATI ROM in 1M; 4K for failover ++option FALLBACK_SIZE=(ROM_SIZE-0xC000) romimage "fallback" - option USE_FAILOVER_IMAGE=0 -- option USE_FALLBACK_IMAGE=1 ++ option USE_FAILOVER_IMAGE=0 + option USE_FALLBACK_IMAGE=1 -# option ROM_IMAGE_SIZE=0x13800 -# option ROM_IMAGE_SIZE=0x19800 - option ROM_IMAGE_SIZE=0x20000 -# option ROM_IMAGE_SIZE=0x15800 -- option XIP_ROM_SIZE=0x40000 -- option LINUXBIOS_EXTRA_VERSION="$(shell cat ../../VERSION)_Fallback" ++ option CONFIG_COMPRESSED_PAYLOAD_LZMA=1 ++ option CONFIG_PRECOMPRESSED_PAYLOAD=1 ++ option ROM_IMAGE_SIZE=0x18000 + option XIP_ROM_SIZE=0x40000 + option LINUXBIOS_EXTRA_VERSION="$(shell cat ../../VERSION)_Fallback" -# payload ../../../payloads/tg3--ide_disk.zelf -# payload ../../../payloads/filo.elf -# payload ../../../payloads/filo_mem.elf @@ -74,23 +80,23 @@ -# payload ../../../payloads/tg3--eepro100--e1000--filo_hda2.zelf -# payload ../../../payloads/tg3--eepro100--e1000--filo_hda2_5.3.zelf -# payload ../../../payloads/tg3--eepro100--e1000--filo_hda2_com2.zelf --end -- --romimage "failover" ++ payload ../payload.elf + end + + romimage "failover" - option USE_FAILOVER_IMAGE=1 - option USE_FALLBACK_IMAGE=0 - option ROM_IMAGE_SIZE=FAILOVER_SIZE - option XIP_ROM_SIZE=FAILOVER_SIZE - option LINUXBIOS_EXTRA_VERSION="$(shell cat ../../VERSION)_Failover" -+ option USE_FALLBACK_IMAGE=1 -+ option CONFIG_COMPRESSED_PAYLOAD_LZMA=1 -+ option CONFIG_PRECOMPRESSED_PAYLOAD=1 -+ option ROM_IMAGE_SIZE=0x17000 -+ option XIP_ROM_SIZE=0x40000 -+ option LINUXBIOS_EXTRA_VERSION="$(shell cat ../../VERSION)_Fallback" -+ payload ../payload.elf ++ option USE_FAILOVER_IMAGE=1 ++ option USE_FALLBACK_IMAGE=0 ++ option ROM_IMAGE_SIZE=FAILOVER_SIZE ++ option XIP_ROM_SIZE=FAILOVER_SIZE ++ option LINUXBIOS_EXTRA_VERSION="$(shell cat ../../VERSION)_Failover" end -#buildrom ./linuxbios.rom ROM_SIZE "normal" "fallback" -buildrom ./linuxbios.rom ROM_SIZE "normal" "fallback" "failover" -+buildrom ./linuxbios.rom ROM_SIZE "fallback" ++ ++buildrom ./linuxbios.rom ROM_SIZE "fallback" "failover" From myles at pel.cs.byu.edu Thu Dec 6 00:07:55 2007 From: myles at pel.cs.byu.edu (Myles Watson) Date: Wed, 5 Dec 2007 16:07:55 -0700 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <47570C15.8040806@gmail.com> References: <20071203170024.4989.qmail@stuge.se> <017601c835d8$02a2a240$480110ac@chimp> <20071203182927.GB23382@cosmic.amd.com> <20071204052804.GH20788@greenwood> <000001c836c5$16bd6fb0$4b23040a@chimp> <13426df10712042034x44d87ab6m7a8797de27f3f161@mail.gmail.com> <2831fecf0712051228g74f4152ard30e9e76411b434a@mail.gmail.com> <47570C15.8040806@gmail.com> Message-ID: <2831fecf0712051507r36b8adc3r5d73c4c22aebf9c4@mail.gmail.com> On 12/5/07, Corey Osgood wrote: > Myles Watson wrote: > >>> That said, I haven't used v3 yet. > >>> > >>> > >> give it a try first :-) > >> > >> thanks > >> > >> ron > >> > >> > > > > This patch adds support for QEMU to buildrom, for both v2 and v3. It > > also allows you to build QEMU from sources with the patches. > > you forgot to attach ;) > That's what I get for leaving right after mailing the patch. Sorry, Myles I updated it to use 539, as per Uwe's suggestion to use the latest version. Signed-off-by: Myles Watson -------------- next part -------------- A non-text attachment was scrubbed... Name: qemu.patch Type: application/octet-stream Size: 51936 bytes Desc: not available URL: From svn at openbios.org Thu Dec 6 00:27:08 2007 From: svn at openbios.org (svn at openbios.org) Date: Thu, 6 Dec 2007 00:27:08 +0100 Subject: [LinuxBIOS] r76 - buildrom-devel/packages/kernel/conf Message-ID: Author: ward Date: 2007-12-06 00:27:08 +0100 (Thu, 06 Dec 2007) New Revision: 76 Modified: buildrom-devel/packages/kernel/conf/defconfig-supermicro-h8dmr Log: This patch updates the LAB kernel config so that it can see a 64-bit address and IO space (and up to 64GB of RAM) and is optimized for Opteron CPUs. The kernel that is kexec'ed from the LAB kernel can not do this by itself it seems (the same with enabling SMP), so our LAB kernel needs to be configured properly. This is a trivial patch. Signed-off-by: Ward Vandewege Acked-by: Ward Vandewege Modified: buildrom-devel/packages/kernel/conf/defconfig-supermicro-h8dmr =================================================================== --- buildrom-devel/packages/kernel/conf/defconfig-supermicro-h8dmr 2007-12-05 23:00:50 UTC (rev 75) +++ buildrom-devel/packages/kernel/conf/defconfig-supermicro-h8dmr 2007-12-05 23:27:08 UTC (rev 76) @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit # Linux kernel version: 2.6.22.2 -# Wed Sep 5 17:08:35 2007 +# Wed Dec 5 18:14:21 2007 # CONFIG_X86_32=y CONFIG_GENERIC_TIME=y @@ -136,7 +136,7 @@ # CONFIG_X86_GENERICARCH is not set # CONFIG_X86_ES7000 is not set # CONFIG_PARAVIRT is not set -CONFIG_M386=y +# CONFIG_M386 is not set # CONFIG_M486 is not set # CONFIG_M586 is not set # CONFIG_M586TSC is not set @@ -149,7 +149,7 @@ # CONFIG_MPENTIUM4 is not set # CONFIG_MK6 is not set # CONFIG_MK7 is not set -# CONFIG_MK8 is not set +CONFIG_MK8=y # CONFIG_MCRUSOE is not set # CONFIG_MEFFICEON is not set # CONFIG_MWINCHIPC6 is not set @@ -161,14 +161,23 @@ # CONFIG_MVIAC3_2 is not set # CONFIG_MVIAC7 is not set # CONFIG_X86_GENERIC is not set -CONFIG_X86_L1_CACHE_SHIFT=4 -CONFIG_RWSEM_GENERIC_SPINLOCK=y +CONFIG_X86_CMPXCHG=y +CONFIG_X86_L1_CACHE_SHIFT=6 +CONFIG_X86_XADD=y +CONFIG_RWSEM_XCHGADD_ALGORITHM=y # CONFIG_ARCH_HAS_ILOG2_U32 is not set # CONFIG_ARCH_HAS_ILOG2_U64 is not set CONFIG_GENERIC_CALIBRATE_DELAY=y -CONFIG_X86_PPRO_FENCE=y -CONFIG_X86_F00F_BUG=y -CONFIG_X86_MINIMUM_CPU_MODEL=0 +CONFIG_X86_WP_WORKS_OK=y +CONFIG_X86_INVLPG=y +CONFIG_X86_BSWAP=y +CONFIG_X86_POPAD_OK=y +CONFIG_X86_CMPXCHG64=y +CONFIG_X86_GOOD_APIC=y +CONFIG_X86_INTEL_USERCOPY=y +CONFIG_X86_USE_PPRO_CHECKSUM=y +CONFIG_X86_TSC=y +CONFIG_X86_MINIMUM_CPU_MODEL=4 CONFIG_HPET_TIMER=y # CONFIG_PREEMPT_NONE is not set # CONFIG_PREEMPT_VOLUNTARY is not set @@ -193,15 +202,17 @@ # CONFIG_EDD is not set # CONFIG_DELL_RBU is not set # CONFIG_DCDBAS is not set -CONFIG_NOHIGHMEM=y +# CONFIG_NOHIGHMEM is not set # CONFIG_HIGHMEM4G is not set -# CONFIG_HIGHMEM64G is not set +CONFIG_HIGHMEM64G=y CONFIG_VMSPLIT_3G=y # CONFIG_VMSPLIT_3G_OPT is not set # CONFIG_VMSPLIT_2G is not set # CONFIG_VMSPLIT_2G_OPT is not set # CONFIG_VMSPLIT_1G is not set CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_HIGHMEM=y +CONFIG_X86_PAE=y CONFIG_ARCH_FLATMEM_ENABLE=y CONFIG_ARCH_SPARSEMEM_ENABLE=y CONFIG_ARCH_SELECT_MEMORY_MODEL=y @@ -214,9 +225,10 @@ CONFIG_FLAT_NODE_MEM_MAP=y CONFIG_SPARSEMEM_STATIC=y CONFIG_SPLIT_PTLOCK_CPUS=4 -# CONFIG_RESOURCES_64BIT is not set +CONFIG_RESOURCES_64BIT=y CONFIG_ZONE_DMA_FLAG=1 CONFIG_NR_QUICK=1 +# CONFIG_HIGHPTE is not set # CONFIG_MATH_EMULATION is not set # CONFIG_MTRR is not set # CONFIG_SECCOMP is not set @@ -226,10 +238,12 @@ # CONFIG_HZ_1000 is not set CONFIG_HZ=250 CONFIG_KEXEC=y +# CONFIG_CRASH_DUMP is not set CONFIG_PHYSICAL_START=0x100000 # CONFIG_RELOCATABLE is not set CONFIG_PHYSICAL_ALIGN=0x100000 CONFIG_COMPAT_VDSO=y +CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y # # Power management options (ACPI, APM) From uwe at hermann-uwe.de Thu Dec 6 00:44:50 2007 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Thu, 6 Dec 2007 00:44:50 +0100 Subject: [LinuxBIOS] mcp55 irq and apic patch In-Reply-To: <20071205214952.GD14308@greenwood> References: <2ea3fae10712051138r4eb6202cgb4d14f889ffb8274@mail.gmail.com> <20071205214952.GD14308@greenwood> Message-ID: <20071205234450.GE14308@greenwood> On Wed, Dec 05, 2007 at 10:49:52PM +0100, Uwe Hermann wrote: > > route device irq through pci bridge instead in mptable. > > don't enable pin0 for ioapic of io-4 Please explain in more detail why the change is done and which consequences there are or which bugs / problems are fixed. Also, you're changing the MCP55 code _and_ some board-specific code for just one board? Will the other MCP55 boards need fixes, too? If so, which fixes? > Index: src/southbridge/nvidia/mcp55/mcp55_lpc.c > =================================================================== > --- src/southbridge/nvidia/mcp55/mcp55_lpc.c (Revision 2998) > +++ src/southbridge/nvidia/mcp55/mcp55_lpc.c (Arbeitskopie) > @@ -87,7 +87,7 @@ > /* Be careful and don't write past the end... */ > }; > > -static void setup_ioapic(unsigned long ioapic_base) > +static void setup_ioapic(unsigned long ioapic_base, int master) > { > int i; > unsigned long value_low, value_high; > @@ -95,7 +95,14 @@ > volatile unsigned long *l; > struct ioapicreg *a = ioapicregvalues; > > - ioapicregvalues[0].value_high = lapicid()<<(56-32); > + if (master) { > + ioapicregvalues[0].value_high = lapicid()<<(56-32); > + ioapicregvalues[0].value_low = ENABLED | TRIGGER_EDGE | POLARITY_HIGH | PHYSICAL_DEST | ExtINT; > + } > + else { > + ioapicregvalues[0].value_high = NONE; > + ioapicregvalues[0].value_low = DISABLED; > + } > > l = (unsigned long *) ioapic_base; > > @@ -121,14 +128,14 @@ > > #define MAINBOARD_POWER_OFF 0 > #define MAINBOARD_POWER_ON 1 > -#define SLOW_CPU_OFF 0 > -#define SLOW_CPU__ON 1 > +#define SLOW_CPU_OFF 0 > +#define SLOW_CPU__ON 1 > > #ifndef MAINBOARD_POWER_ON_AFTER_POWER_FAIL > -#define MAINBOARD_POWER_ON_AFTER_POWER_FAIL MAINBOARD_POWER_ON > +#define MAINBOARD_POWER_ON_AFTER_POWER_FAIL MAINBOARD_POWER_ON > #endif > > -static void lpc_common_init(device_t dev) > +static void lpc_common_init(device_t dev, int master) > { > uint8_t byte; > uint32_t dword; > @@ -139,13 +146,12 @@ > pci_write_config8(dev, 0x74, byte); > dword = pci_read_config32(dev, PCI_BASE_ADDRESS_1); // 0x14 > > - setup_ioapic(dword); > - > + setup_ioapic(dword, master); > } > > static void lpc_slave_init(device_t dev) > { > - lpc_common_init(dev); > + lpc_common_init(dev, 0); Maybe #define FOO_MASTER 1 #define FOO_SLAVE 0 at the top of the file, with some good name for 'FOO', to remove the magic constants from the function calls and to make it clear what's meant. > } > > #if 0 > @@ -166,13 +172,12 @@ > int on; > int nmi_option; > > - lpc_common_init(dev); > + lpc_common_init(dev, 1); > > #if 0 > /* posted memory write enable */ > byte = pci_read_config8(dev, 0x46); > pci_write_config8(dev, 0x46, byte | (1<<0)); > - > #endif > /* power after power fail */ > > @@ -198,7 +203,7 @@ > dword = inl(pm10_bar + 0x10); > on = 8-on; > printk_debug("Throttling CPU %2d.%1.1d percent.\n", > - (on*12)+(on>>1),(on&1)*5); > + (on*12)+(on>>1),(on&1)*5); > } > > #if 0 > Index: src/mainboard/nvidia/l1_2pvv/mptable.c > =================================================================== > --- src/mainboard/nvidia/l1_2pvv/mptable.c (Revision 2998) > +++ src/mainboard/nvidia/l1_2pvv/mptable.c (Arbeitskopie) > @@ -39,6 +39,7 @@ > unsigned sbdn; > > int i,j; > + unsigned char apicpin[4]; This should be u8 I think (you need stdint.h). > mc = (void *)(((char *)v) + SMP_FLOATING_TABLE_LEN); > memset(mc, 0, sizeof(*mc)); > @@ -65,8 +66,8 @@ > > /*Bus: Bus ID Type*/ > /* define bus and isa numbers */ > - for(j= 0; j < 256 ; j++) { > - if(m->bus_type[j]) > + for (j = 0; j < 256 ; j++) { > + if (m->bus_type[j]) > smp_write_bus(mc, j, "PCI "); > } > smp_write_bus(mc, m->bus_isa, "ISA "); > @@ -77,38 +78,43 @@ > struct resource *res; > uint32_t dword; > > - dev = dev_find_slot(m->bus_mcp55[0], PCI_DEVFN(sbdn+ 0x1,0)); > + dev = dev_find_slot(m->bus_mcp55, PCI_DEVFN(sbdn+ 0x1,0)); Why is this no longer an array? Only on this board or for all MCP55 boards? > if (dev) { > res = find_resource(dev, PCI_BASE_ADDRESS_1); > - if (res) { > + if (res) > smp_write_ioapic(mc, m->apicid_mcp55, 0x11, res->base); > - } > > + /* Initialize interrupt mapping*/ > + dword = pci_read_config32(dev, 0x74); > + dword &= ~(1<<15); > + dword |= 1<<2; > + pci_write_config32(dev, 0x74, dword); > + > dword = 0x43c6c643; > - pci_write_config32(dev, 0x7c, dword); > + pci_write_config32(dev, 0x7c, dword); > > dword = 0x81001a00; > pci_write_config32(dev, 0x80, dword); > > - dword = 0xd00012d2; > + dword = 0xd00012d2; > pci_write_config32(dev, 0x84, dword); > > } > > - if(m->bus_mcp55b[0]) { > - dev = dev_find_slot(m->bus_mcp55b[0], PCI_DEVFN(m->sbdnb + 0x1,0)); > + if (m->bus_mcp55b) { > + dev = dev_find_slot(m->bus_mcp55b, PCI_DEVFN(m->sbdnb + 0x1,0)); > if (dev) { > res = find_resource(dev, PCI_BASE_ADDRESS_1); > - if (res) { > + if (res) > smp_write_ioapic(mc, m->apicid_mcp55b, 0x11, res->base); > - } > + > dword = 0x43c60000; > - pci_write_config32(dev, 0x7c, dword); > + pci_write_config32(dev, 0x7c, dword); > > dword = 0x81000000; > pci_write_config32(dev, 0x80, dword); > > - dword = 0xd00002d0; > + dword = 0xd00002d0; > pci_write_config32(dev, 0x84, dword); > > } > @@ -116,8 +122,8 @@ > } > > } > - > - /*I/O Ints: Type Polarity Trigger Bus ID IRQ APIC ID PIN# */ > + > + /*I/O Ints: Type Polarity Trigger Bus ID IRQ APIC ID PIN# */ > smp_write_intsrc(mc, mp_ExtINT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, m->bus_isa, 0x0, m->apicid_mcp55, 0x0); > smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, m->bus_isa, 0x1, m->apicid_mcp55, 0x1); > smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, m->bus_isa, 0x0, m->apicid_mcp55, 0x2); > @@ -131,63 +137,65 @@ > smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, m->bus_isa, 0xe, m->apicid_mcp55, 0xe); > smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, m->bus_isa, 0xf, m->apicid_mcp55, 0xf); > > - smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55[0], ((sbdn+1)<<2)|1, m->apicid_mcp55, 0xa); > + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55, ((sbdn+1)<<2)|1, m->apicid_mcp55, 0xa); // 10 Why are the numbers in hex (0xa) with a comment for decimal (10)? Does it make a deeper sense to use the hex values and not use the decimal values directly? > - smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55[0], ((sbdn+2)<<2)|0, m->apicid_mcp55, 0x16); // 22 > + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55, ((sbdn+2)<<2)|0, m->apicid_mcp55, 0x16); // 22 > > - smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55[0], ((sbdn+2)<<2)|1, m->apicid_mcp55, 0x17); // 23 > + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55, ((sbdn+2)<<2)|1, m->apicid_mcp55, 0x17); // 23 > > - smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55[0], ((sbdn+6)<<2)|1, m->apicid_mcp55, 0x17); // 23 > + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55, ((sbdn+6)<<2)|1, m->apicid_mcp55, 0x17); // 23 > > - smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55[0], ((sbdn+5)<<2)|0, m->apicid_mcp55, 0x14); // 20 > - smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55[0], ((sbdn+5)<<2)|1, m->apicid_mcp55, 0x17); // 23 > - smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55[0], ((sbdn+5)<<2)|2, m->apicid_mcp55, 0x15); // 21 > + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55, ((sbdn+5)<<2)|0, m->apicid_mcp55, 0x14); // 20 > + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55, ((sbdn+5)<<2)|1, m->apicid_mcp55, 0x17); // 23 > + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55, ((sbdn+5)<<2)|2, m->apicid_mcp55, 0x15); // 21 > > - smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55[0], ((sbdn+8)<<2)|0, m->apicid_mcp55, 0x16); // 22 > - smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55[0], ((sbdn+9)<<2)|0, m->apicid_mcp55, 0x15); // 21 > + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55, ((sbdn+8)<<2)|0, m->apicid_mcp55, 0x16); // 22 > + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55, ((sbdn+9)<<2)|0, m->apicid_mcp55, 0x15); // 21 > > - for(j=7; j>=2; j--) { > - if(!m->bus_mcp55[j]) continue; > - for(i=0;i<4;i++) { > - smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55[j], (0x00<<2)|i, m->apicid_mcp55, 0x10 + (2+j+i+4-sbdn%4)%4); > - } > +//Slot PCIE > + for (j = 2; j < 8; j++) { > + device_t dev; > + dev = dev_find_slot(m->bus_mcp55, PCI_DEVFN(sbdn + 0x0a + j - 2 , 0)); > + if (!dev || !dev->enabled) > + continue; > + for (i = 0; i < 4; i++) > + apicpin[i] = 0x10 + (2+j+i+4-sbdn%4)%4; > + smp_write_intsrc_pci_bridge(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, dev, m->apicid_mcp55, apicpin); > } > > - for(j=0; j<2; j++) > - for(i=0;i<4;i++) { > - smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55[1], ((0x06+j)<<2)|i, m->apicid_mcp55, 0x10 + (2+i+j)%4); > - } > +//Slot PCI 32 > + { > + device_t dev; > + dev = dev_find_slot(m->bus_mcp55, PCI_DEVFN(sbdn + 6 , 0)); > + if (dev && dev->enabled) { > + for (i = 0; i < 4; i++) > + apicpin[i] = 0x10 + (2+i)%4; > + smp_write_intsrc_pci_bridge(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, dev, m->apicid_mcp55, apicpin); > + } > + } > > - if(m->bus_mcp55b[0]) { > - smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55b[0], ((m->sbdnb+5)<<2)|0, m->apicid_mcp55b, 0x14); // 20 > - smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55b[0], ((m->sbdnb+5)<<2)|1, m->apicid_mcp55b, 0x17); // 23 > - smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55b[0], ((m->sbdnb+5)<<2)|2, m->apicid_mcp55b, 0x15); // 21 > + if (m->bus_mcp55b) { > + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55b, ((m->sbdnb+5)<<2)|0, m->apicid_mcp55b, 0x14); // 20 > + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55b, ((m->sbdnb+5)<<2)|1, m->apicid_mcp55b, 0x17); // 23 > + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55b, ((m->sbdnb+5)<<2)|2, m->apicid_mcp55b, 0x15); // 21 > > - smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55b[0], ((m->sbdnb+8)<<2)|0, m->apicid_mcp55b, 0x16); // 22 > - smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55b[0], ((m->sbdnb+9)<<2)|0, m->apicid_mcp55b, 0x15); // 21 > + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55b, ((m->sbdnb+8)<<2)|0, m->apicid_mcp55b, 0x16); // 22 > + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55b, ((m->sbdnb+9)<<2)|0, m->apicid_mcp55b, 0x15); // 21 > > > - for(j=7; j>=2; j--) { > - if(!m->bus_mcp55b[j]) continue; > - for(i=0;i<4;i++) { > - smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_mcp55b[j], (0x00<<2)|i, m->apicid_mcp55b, 0x10 + (2+j+i+4-m->sbdnb%4)%4); > + //Slot PCIE > + for (j = 2; j < 8; j++) { > + device_t dev; > + dev = dev_find_slot(m->bus_mcp55b, PCI_DEVFN(m->sbdnb + 0x0a + j - 2 , 0)); > + if (!dev || !dev->enabled) > + continue; > + for (i = 0; i < 4; i++) { > + apicpin[i] = 0x10 + (2+j+i+4-m->sbdnb%4)%4; > } > + smp_write_intsrc_pci_bridge(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, dev, m->apicid_mcp55b, apicpin); > } > - } > -#if 1 > > - if(m->bus_pcix[0]) { > - > - for(i=0;i<2;i++) { > - smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_pcix[2], (4<<2)|i, m->apicid_mcp55, 0x10 + (0+i+4-sbdn%4)%4); //16, 17 > - } > - > - > - for(i=0;i<4;i++) { > - smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL|MP_IRQ_POLARITY_LOW, m->bus_pcix[1], (4<<2)|i, m->apicid_mcp55, 0x10 + (2+i+4-sbdn%4)%4); // 18, 19, 16, 17 > - } > } > -#endif > > /*Local Ints: Type Polarity Trigger Bus ID IRQ APIC ID PIN#*/ > smp_write_intsrc(mc, mp_ExtINT, MP_IRQ_TRIGGER_EDGE|MP_IRQ_POLARITY_HIGH, m->bus_isa, 0x0, MP_APIC_ALL, 0x0); > Index: src/mainboard/nvidia/l1_2pvv/irq_tables.c > =================================================================== > --- src/mainboard/nvidia/l1_2pvv/irq_tables.c (Revision 2998) > +++ src/mainboard/nvidia/l1_2pvv/irq_tables.c (Arbeitskopie) > @@ -78,15 +78,15 @@ > > pirq = (void *)(addr); > v = (uint8_t *)(addr); > - > + > pirq->signature = PIRQ_SIGNATURE; > pirq->version = PIRQ_VERSION; > - > - pirq->rtr_bus = m->bus_mcp55[0]; > + > + pirq->rtr_bus = m->bus_mcp55; > pirq->rtr_devfn = ((sbdn+6)<<3)|0; > > pirq->exclusive_irqs = 0; > - > + > pirq->rtr_vendor = 0x10de; > pirq->rtr_device = 0x0370; > > @@ -97,10 +97,10 @@ > pirq_info = (void *) ( &pirq->checksum + 1); > slot_num = 0; > //pci bridge > - write_pirq_info(pirq_info, m->bus_mcp55[0], ((sbdn+6)<<3)|0, 0x1, 0xdef8, 0x2, 0xdef8, 0x3, 0xdef8, 0x4, 0xdef8, 0, 0); > + write_pirq_info(pirq_info, m->bus_mcp55, ((sbdn+6)<<3)|0, 0x1, 0xdef8, 0x2, 0xdef8, 0x3, 0xdef8, 0x4, 0xdef8, 0, 0); > pirq_info++; slot_num++; > - > - for(i=1; i< sysconf.hc_possible_num; i++) { > + > + for (i = 1; i < sysconf.hc_possible_num; i++) { > if(!(sysconf.pci1234[i] & 0x1) ) continue; > unsigned busn = (sysconf.pci1234[i] >> 16) & 0xff; > unsigned devn = sysconf.hcdn[i] & 0xff; > @@ -109,10 +109,10 @@ > pirq_info++; slot_num++; > } > > - pirq->size = 32 + 16 * slot_num; > + pirq->size = 32 + 16 * slot_num; > > for (i = 0; i < pirq->size; i++) > - sum += v[i]; > + sum += v[i]; > > sum = pirq->checksum - sum; > > Index: src/mainboard/nvidia/l1_2pvv/mb_sysconf.h > =================================================================== > --- src/mainboard/nvidia/l1_2pvv/mb_sysconf.h (Revision 2998) > +++ src/mainboard/nvidia/l1_2pvv/mb_sysconf.h (Arbeitskopie) > @@ -24,12 +24,11 @@ > > struct mb_sysconf_t { > unsigned char bus_isa; > - unsigned char bus_mcp55[8]; //1 > - unsigned char bus_mcp55b[8];//a > + unsigned char bus_mcp55; > + unsigned char bus_mcp55b; > unsigned apicid_mcp55; > unsigned apicid_mcp55b; > unsigned bus_type[256]; > - unsigned char bus_pcix[3]; // under bus_mcp55_2 > > unsigned sbdnb; > > Index: src/mainboard/nvidia/l1_2pvv/get_bus_conf.c > =================================================================== > --- src/mainboard/nvidia/l1_2pvv/get_bus_conf.c (Revision 2998) > +++ src/mainboard/nvidia/l1_2pvv/get_bus_conf.c (Arbeitskopie) > @@ -35,7 +35,7 @@ > // Global variables for MB layouts and these will be shared by irqtable mptable and acpi_tables > struct mb_sysconf_t mb_sysconf; > > -unsigned pci1234x[] = > +unsigned pci1234x[] = > { //Here you only need to set value in pci1234 for HT-IO that could be installed or not > //You may need to preset pci1234 for HTIO board, please refer to src/northbridge/amd/amdk8/get_sblk_pci1234.c for detail > 0x0000ff0, > @@ -47,7 +47,7 @@ > // 0x0000ff0, > // 0x0000ff0 > }; > -unsigned hcdnx[] = > +unsigned hcdnx[] = > { //HT Chain device num, actually it is unit id base of every ht device in chain, assume every chain only have 4 ht device at most > 0x20202020, > 0x20202020, > @@ -98,18 +98,19 @@ > device_t dev; > int i, j; > > - if(get_bus_conf_done==1) return; //do it only once > + if (get_bus_conf_done) > + return; //do it only once > > get_bus_conf_done = 1; > > sysconf.mb = &mb_sysconf; > - > + > m = sysconf.mb; > memset(m, 0, sizeof(struct mb_sysconf_t)); > > sysconf.hc_possible_num = sizeof(pci1234x)/sizeof(pci1234x[0]); > > - for(i=0;i + for (i = 0; i < sysconf.hc_possible_num; i++) { > sysconf.pci1234[i] = pci1234x[i]; > sysconf.hcdn[i] = hcdnx[i]; > } > @@ -121,77 +122,41 @@ > m->sbdnb = (sysconf.hcdn[1] & 0xff); // first byte of second chain > > m->bus_type[0] = 1; //pci > - > - m->bus_mcp55[0] = (sysconf.pci1234[0] >> 16) & 0xff; > > - /* MCP55 */ > - dev = dev_find_slot(m->bus_mcp55[0], PCI_DEVFN(sysconf.sbdn + 0x06,0)); > - if (dev) { > - m->bus_mcp55[1] = pci_read_config8(dev, PCI_SECONDARY_BUS); > - } > - else { > - printk_debug("ERROR - could not find PCI 1:%02x.0, using defaults\n", sysconf.sbdn + 0x06); > - } > + m->bus_mcp55 = (sysconf.pci1234[0] >> 16) & 0xff; > > - for(i=2; i<8;i++) { > - dev = dev_find_slot(m->bus_mcp55[0], PCI_DEVFN(sysconf.sbdn + 0x0a + i - 2 , 0)); > - if (dev) { > - m->bus_mcp55[i] = pci_read_config8(dev, PCI_SECONDARY_BUS); > - } > - else { > - printk_debug("ERROR - could not find PCI %02x:%02x.0, using defaults\n", m->bus_mcp55[0], sysconf.sbdn + 0x0a + i - 2 ); > - } > - } > + for (i = 0; i < sysconf.hc_possible_num; i++) { > + unsigned busn_min, busn_max; > > - if(m->bus_mcp55[2]) { > - for(i=0;i<2; i++) { > - dev = dev_find_slot(m->bus_mcp55[2], PCI_DEVFN(0, i)); > - if(dev) { > - m->bus_pcix[0] = m->bus_mcp55[2]; > - m->bus_pcix[i+1] = pci_read_config8(dev, PCI_SECONDARY_BUS); > - } > - } > - } > - > - for(i=0; i< sysconf.hc_possible_num; i++) { > - if(!(sysconf.pci1234[i] & 0x1) ) continue; > + if (!(sysconf.pci1234[i] & 0x1)) > + continue; > > - unsigned busn = (sysconf.pci1234[i] >> 16) & 0xff; > - unsigned busn_max = (sysconf.pci1234[i] >> 24) & 0xff; > - for (j = busn; j <= busn_max; j++) > + busn_min = (sysconf.pci1234[i] >> 16) & 0xff; > + busn_max = (sysconf.pci1234[i] >> 24) & 0xff; > + for (j = busn_min; j <= busn_max; j++) > m->bus_type[j] = 1; > - if(m->bus_isa <= busn_max) > + if(m->bus_isa <= busn_max) > m->bus_isa = busn_max + 1; > - printk_debug("i=%d bus range: [%x, %x] bus_isa=%x\n",i, busn, busn_max, m->bus_isa); > + printk_debug("i=%d bus range: [%x, %x] bus_isa=%x\n",i, busn_min, busn_max, m->bus_isa); > } > > /* MCP55b */ > - for(i=1; i< sysconf.hc_possible_num; i++) { > - if (!(sysconf.pci1234[i] & 0x0f) ) continue; > + for (i = 1; i < sysconf.hc_possible_num; i++) { > + if (!(sysconf.pci1234[i] & 0x0f)) > + continue; > // check hcid type here > sysconf.hcid[i] = get_hcid(i); > - if (!sysconf.hcid[i]) continue; //unknown co processor > + if (!sysconf.hcid[i]) > + continue; //unknown co processor > > - m->bus_mcp55b[0] = (sysconf.pci1234[1]>>16) & 0xff; > - m->bus_mcp55b[1] = m->bus_mcp55b[0]+1; //fake pci > - > - for(i=2; i<8;i++) { > - dev = dev_find_slot(m->bus_mcp55b[0], PCI_DEVFN(m->sbdnb + 0x0a + i - 2 , 0)); > - if (dev) { > - m->bus_mcp55b[i] = pci_read_config8(dev, PCI_SECONDARY_BUS); > - } > - else { > - printk_debug("ERROR - could not find PCI %02x:%02x.0, using defaults\n", m->bus_mcp55b[0], m->sbdnb + 0x0a + i - 2 ); > - } > - } > + m->bus_mcp55b = (sysconf.pci1234[1]>>16) & 0xff; > } > > - > /*I/O APICs: APIC ID Version State Address*/ > #if CONFIG_LOGICAL_CPUS==1 > apicid_base = get_apicid_base(2); > -#else > - apicid_base = CONFIG_MAX_PHYSICAL_CPUS; > +#else > + apicid_base = CONFIG_MAX_PHYSICAL_CPUS; > #endif > m->apicid_mcp55 = apicid_base+0; > m->apicid_mcp55b = apicid_base+1; > Index: src/arch/i386/smp/mpspec.c > =================================================================== > --- src/arch/i386/smp/mpspec.c (Revision 2998) > +++ src/arch/i386/smp/mpspec.c (Arbeitskopie) > @@ -1,6 +1,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -26,8 +27,7 @@ > void *v; > > /* 16 byte align the table address */ > - addr += 15; > - addr &= ~15; > + addr = (addr + 0xf) & (~0xf); Maybe a small function in lib/ would be good here. Something like x = align_foo(x, 16); is certainly more readable than open-coding the function. > v = (void *)addr; > > mf = v; > @@ -52,8 +52,8 @@ > { > struct intel_mp_floating *mf; > void *v; > - > - v = (void *)addr; > + > + v = (void *)addr; > mf = v; > mf->mpf_signature[0] = '_'; > mf->mpf_signature[1] = 'M'; > @@ -204,7 +204,59 @@ > #endif > } > > +void smp_write_intsrc_pci_bridge(struct mp_config_table *mc, > + unsigned char irqtype, unsigned short irqflag, > + struct device *dev, > + unsigned char dstapic, unsigned char *dstirq) Add a small doxygen-style comment for the function please, which explains what it does and how and why. > +{ > + struct device *child; > > + int linkn; > + int i; > + int srcbus; > + int slot; Can be in one line instead of four. > + struct bus *link; > + unsigned char dstirq_x[4]; u8 > + > + for (linkn = 0; linkn < dev->links; linkn++) { > + > + link = &dev->link[linkn]; > + child = link->children; > + srcbus = link->secondary; > + > + while (child) { > + if (child->path.type != DEVICE_PATH_PCI) > + goto next; > + > + slot = (child->path.u.pci.devfn >> 3); > + /* round pins */ > + for (i = 0; i < 4; i++) > + dstirq_x[i] = dstirq[(i + slot) % 4]; > + > + if ((child->class >> 16) != PCI_BASE_CLASS_BRIDGE) { > + /* pci device */ > + printk_debug("route irq: %s %04x\n", dev_path(child)); > + for (i = 0; i < 4; i++) > + smp_write_intsrc(mc, irqtype, irqflag, srcbus, (slot<<2)|i, dstapic, dstirq_x[i]); > + goto next; > + } > + > + switch (child->class>>8) { > + case PCI_CLASS_BRIDGE_PCI: > + case PCI_CLASS_BRIDGE_PCMCIA: > + case PCI_CLASS_BRIDGE_CARDBUS: > + printk_debug("route irq bridge: %s %04x\n", dev_path(child)); > + smp_write_intsrc_pci_bridge(mc, irqtype, irqflag, child, dstapic, dstirq_x); > + } > + > + next: > + child = child->sibling; > + } > + > + } > +} > + > void smp_write_lintsrc(struct mp_config_table *mc, > unsigned char irqtype, unsigned short irqflag, > unsigned char srcbusid, unsigned char srcbusirq, > Index: src/arch/i386/include/arch/smp/mpspec.h > =================================================================== > --- src/arch/i386/include/arch/smp/mpspec.h (Revision 2998) > +++ src/arch/i386/include/arch/smp/mpspec.h (Arbeitskopie) > @@ -248,6 +248,10 @@ > unsigned char irqtype, unsigned short irqflag, > unsigned char srcbus, unsigned char srcbusirq, > unsigned char dstapic, unsigned char dstirq); > +void smp_write_intsrc_pci_bridge(struct mp_config_table *mc, > + unsigned char irqtype, unsigned short irqflag, > + struct device *dev, > + unsigned char dstapic, unsigned char *dstirq); > void smp_write_lintsrc(struct mp_config_table *mc, > unsigned char irqtype, unsigned short irqflag, > unsigned char srcbusid, unsigned char srcbusirq, Thanks, Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org From junkoi2004 at gmail.com Thu Dec 6 01:10:11 2007 From: junkoi2004 at gmail.com (Jun Koi) Date: Thu, 6 Dec 2007 09:10:11 +0900 Subject: [LinuxBIOS] ADLO & biosdecode In-Reply-To: <004d01c8374c$a94c2100$4b23040a@chimp> References: <20071205040816.16024.qmail@stuge.se> <47565EE6.7000506@coresystems.de> <004d01c8374c$a94c2100$4b23040a@chimp> Message-ID: On 12/5/07, Myles Watson wrote: > > > > -----Original Message----- > > From: linuxbios-bounces at linuxbios.org [mailto:linuxbios- > > bounces at linuxbios.org] On Behalf Of Jun Koi > > On 12/5/07, Stefan Reinauer wrote: > > > Peter Stuge wrote: > > > > Hello Jun, > > > > > > > > On Wed, Dec 05, 2007 at 12:54:42PM +0900, Jun Koi wrote: > > > > > > > >> If I use the original QEMU BIOS, at least biosdecode reports BIOS32 > > > >> Service Dir + PCI IRQ table + ACPI. > > > >> > > > >> So why LinuxBIOS removes those information? > > > >> > > > > > > > > This is on purpose. > > > > > > > > One motivation for LB is that most if not all interfaces that are > > > > associated with the term BIOS should be deprecated. > > > > > > > > LB does not strive to be BIOS compatible by design. > > > > > > > But this is not true for Jun's setting with LinuxBIOS + ADLO. > > > > > > I don't think we remove anything on purpose there. > > > > Yes, I guess the information (biosdecode) must be there, as I use Boch > > BIOS with LinuxBIOS, but not LinuxBIOS only. > > > > And interestingly, there is no option to make 32bit BIOS in > > ADLO/bochs/bios/Makefile. I simply generated bochs/bios/bios.bin by > > running "make" inside ADLO/ > > > > So I think the question becomes: how to get 32bit BIOS now? > > You need to add a new version of the loader since the BIOS is larger, and > use the larger elf header. You mean the new version of ADLO is needed? > > I'm planning on doing that in the near future. > Anything I can help here? Or if you can give some hints, I will try to do something (Currently I am not used to the ADLO code yet) Thanks, Jun From yinghailu at gmail.com Thu Dec 6 04:17:48 2007 From: yinghailu at gmail.com (yhlu) Date: Wed, 5 Dec 2007 19:17:48 -0800 Subject: [LinuxBIOS] mcp55 irq and apic patch In-Reply-To: <20071205234450.GE14308@greenwood> References: <2ea3fae10712051138r4eb6202cgb4d14f889ffb8274@mail.gmail.com> <20071205214952.GD14308@greenwood> <20071205234450.GE14308@greenwood> Message-ID: <2ea3fae10712051917u698eaa41haf0b52925a2a1c22@mail.gmail.com> On Dec 5, 2007 3:44 PM, Uwe Hermann wrote: > On Wed, Dec 05, 2007 at 10:49:52PM +0100, Uwe Hermann wrote: > > > route device irq through pci bridge instead in mptable. > > > don't enable pin0 for ioapic of io-4 > > Please explain in more detail why the change is done and which > consequences there are or which bugs / problems are fixed. 1. apic error in kernel for MB with mcp55+io55 2. some pcie-cards could have pci bridge there, so need to put entries for device under them in mptable. > > Also, you're changing the MCP55 code _and_ some board-specific code > for just one board? Will the other MCP55 boards need fixes, too? > If so, which fixes? only some MB that will be used with pci card with pci-bridge build in and the device need to use io apic for irq routing. YH From peter at stuge.se Thu Dec 6 06:24:25 2007 From: peter at stuge.se (Peter Stuge) Date: Thu, 6 Dec 2007 06:24:25 +0100 Subject: [LinuxBIOS] alix and Artec LPC dongle [was: LPC.1A adapter?] In-Reply-To: <20071205221719.GA1000@localdomain> References: <20071205221719.GA1000@localdomain> Message-ID: <20071206052426.2511.qmail@stuge.se> On Wed, Dec 05, 2007 at 05:17:19PM -0500, Ward Vandewege wrote: > The alix.2/3 manual mentions that port J11/J16 can be used for an > alternate flash rom via an LPC adapter. The alix.1 manual describes > the same on port J16. > > The PC Engines adapter LPC.1A is mentioned in this context, but I > can't find any documentation about it, not even on their website. It's on the website but not linked, so you have to guess the filename. > Ron, which adapter do you use? Would the one that comes with the > programmable LPC dongle by the Artec Group work? Yes, Artec's LPC dongle works with the alix1c. I'm using the previous product revision 441103 but there's no reason the current revision 441104 should not work equally well or better. (Allow longer cabling.) It needs a cable with pins connected the right way, but no other components are needed. I hacked the proper cable up by cutting up an old floppy cable and pressing a 10-pin header onto one end. This is my wiring diagram: alix1c J16 LCLK0 1 2 GND LAD0 3 4 GND LAD1 5 6 GND LAD2 7 8 GND LAD3 9 10 GND LFRAME# 11 12 GND PCIRST# 13 14 NC CSEXT 15 16 VCC5 GND 17 18 VCC3 SERIRQ 19 20 LDRQ# 441103 J3 PCIRST 1 2 LAD0 LAD1 3 4 LAD2 LAD3 5 6 LFRAME# R330GND 7 8 PCICLK1 GND 9 10 VCC3 in 441103-alix1c: 1-13 2-3 3-5 4-7 5-9 6-11 8-1 9-2/4/6/8/10/12/17 10-nc -15/18 441103 pin 9 connects to any one of the alix1c pins, not all of them. The last one, -15/18 means that pins 15 and 18 on the alix1c end should be connected together, but not to any pin on the dongle end, in order to pull CSEXT to 3.3V and tell alix to boot from LPC flash. (Too bad CSEXT isn't active low, then it would just have been a jumper on the header on the board. Oh well. :) The alix1c docs don't say if CSEXT is 5V or 3V so I played it safe and tried 3V first, which works. My cable length is ca. 10cm. The LPC dongle docs say that cables should be kept to just a few cm but 10cm works fine for me. Note that the above cable can supply power to the LPC dongle. Pay attention to JMP4 on the dongle or the alix power supply will be connected to the USB host power supply that the dongle is connected to. May or may not be a big deal depending on the power supply designs. //Peter From peter at stuge.se Thu Dec 6 06:35:55 2007 From: peter at stuge.se (Peter Stuge) Date: Thu, 6 Dec 2007 06:35:55 +0100 Subject: [LinuxBIOS] alix and Artec LPC dongle [was: LPC.1A adapter?] In-Reply-To: <20071206052426.2511.qmail@stuge.se> References: <20071205221719.GA1000@localdomain> <20071206052426.2511.qmail@stuge.se> Message-ID: <20071206053556.4640.qmail@stuge.se> On Thu, Dec 06, 2007 at 06:24:25AM +0100, Peter Stuge wrote: > GND 9 10 VCC3 in > > 441103-alix1c: > 1-13 2-3 3-5 4-7 5-9 6-11 8-1 9-2/4/6/8/10/12/17 10-nc -15/18 > > Note that the above cable can supply power to the LPC dongle. Note that it can not. Sorry. I am too tired. I left 10 not connected specifically to avoid the problem, since I think I'll usually be powering the LPC dongle from USB. The dongle needs 200ms or so to boot, so it has to be powered up before the target board. I like pulling the power when trying a newly flashed LB so dongle has to get power from somewhere else. //Peter From John.Wakefield2 at wellpoint.com Wed Dec 5 21:31:54 2007 From: John.Wakefield2 at wellpoint.com (Wakefield, John ) Date: Wed, 5 Dec 2007 12:31:54 -0800 Subject: [LinuxBIOS] Will linuxBIOS Work on My Machine? Message-ID: <56830EF2F035AD4E903FFF9801934DB90A499BAF@ACPWVBE002.us.ad.wellpoint.com> I have an Acer 5102WLMi Notebook with Dual Core AMD TL50s, which are 64 bit CPUs AMD/ATI Radeon Xpress 1100 Graphics and an AMD SB600 (Southbridge Chipset). The MOBO # is LX.ABH0J.011. Other identifying information is listed below: Acer Aspire 5102WLMi w/o Bluetooth, Orbicam, or TV Tuner Model No: BL51 AS5102WLMI-MCEEN-TL50/15.4 ACB/512M/100G US S/N: LXABH0J0116380F0B41601 I'm not sure if I can obtain any other information. Can you work with what I've provided? Thanks, John CONFIDENTIALITY NOTICE: This e-mail message, including any attachments, is for the sole use of the intended recipient(s) and may contain confidential and privileged information or otherwise protected by law. Any unauthorized review, use, disclosure or distribution is prohibited. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. -------------- next part -------------- An HTML attachment was scrubbed... URL: From M.vDijk at fugrodatasolutions.nl Thu Dec 6 10:35:34 2007 From: M.vDijk at fugrodatasolutions.nl (Dijk, Michiel van [FDS]) Date: Thu, 6 Dec 2007 10:35:34 +0100 Subject: [LinuxBIOS] LinuxBIOS on Compaq ProLiant 1850R? Message-ID: <9903D6861D75544C91D846AA424E2C1E1F8846@ldam-msx1.fugro-nl.local> > Yep, let's do it. Does the board have a socketed BIOS so you can > hot-swap it to have a backup chip stored away safely? The BIOS is a socketed chip yes (a PLCC, don't know what type). I need a replacement chip first so I can back-up the original. > Please send the output of 'lspci -tvnn' and 'superiotool -dV' from > your board (run it as root). Also, please run the 'getpir' tool and > send us the irq_tables.c file which is generated by the tool. > We can make a patch with that information then, if you're willing to > test it on your hardware. Ok, I will do that. Please give me some time to install Linux on the system (running FreeNAS = FreeBSD 6.2 at the moment). Would it be possible to use a LiveCD as well, or should I just install a full distro? > Do you absolutely need the SCSI? See also Peter's post, I'm not sure > if/how it may work, but you should be able to boot off of IDE just > fine with LinuxBIOS if that helps. I would prefer IDE, but since the manual of the server says IDE harddisks are not supported... I don't know if that's a BIOS problem or a hardware problem. > Uwe. Regards, Michiel. From peter at stuge.se Thu Dec 6 15:44:14 2007 From: peter at stuge.se (Peter Stuge) Date: Thu, 6 Dec 2007 15:44:14 +0100 Subject: [LinuxBIOS] LinuxBIOS on Compaq ProLiant 1850R? In-Reply-To: <9903D6861D75544C91D846AA424E2C1E1F8846@ldam-msx1.fugro-nl.local> References: <9903D6861D75544C91D846AA424E2C1E1F8846@ldam-msx1.fugro-nl.local> Message-ID: <20071206144414.11498.qmail@stuge.se> On Thu, Dec 06, 2007 at 10:35:34AM +0100, Dijk, Michiel van [FDS] wrote: > > Yep, let's do it. Does the board have a socketed BIOS so you can > > hot-swap it to have a backup chip stored away safely? > > The BIOS is a socketed chip yes (a PLCC, don't know what type). > I need a replacement chip first so I can back-up the original. If you can identify the current chip model we can suggest other compatible models. > > Please send the output of 'lspci -tvnn' and 'superiotool -dV' from > > your board (run it as root). Also, please run the 'getpir' tool and > > send us the irq_tables.c file which is generated by the tool. > > We can make a patch with that information then, if you're willing to > > test it on your hardware. > > Ok, I will do that. Please give me some time to install Linux on the > system (running FreeNAS = FreeBSD 6.2 at the moment). > Would it be possible to use a LiveCD as well, or should I just > install a full distro? LiveCD will work just fine, as long as you can run those utilities. lspci is included on many liveCDs, superiotool and getpir are not, so you'll have to build those yourself. > > Do you absolutely need the SCSI? > > I would prefer IDE, but since the manual of the server says IDE > harddisks are not supported... I don't know if that's a BIOS > problem or a hardware problem. lspci output should answer this. //Peter From Marc.Karasek at Sun.COM Thu Dec 6 16:47:24 2007 From: Marc.Karasek at Sun.COM (Marc Karasek) Date: Thu, 06 Dec 2007 10:47:24 -0500 Subject: [LinuxBIOS] Qemu compile for LinuxBIOSV2 In-Reply-To: <475467D7.9010504@gmx.net> References: <47506A1F.8070104@sun.com> <20071203181517.GK9493@cosmic.amd.com> <475447C5.7020406@sun.com> <47545F8F.5090003@gmx.net> <47546480.5070509@sun.com> <475467D7.9010504@gmx.net> Message-ID: <4758198C.8020209@sun.com> As promised here is the patch for first the --build-on problem and also the final linker problem. Although I consider the second one a patch rather than a fix.. :-) I have compiled this and tested it with FILO under QEMU. I think this will take care of all of the other builds as well. At least teh i386 ones.. :-) Files Modified: LinuxBIOSv2/src/arch/i386/Config.lb LinuxBIOSv2/src/arch/i386/lib/id.lds LinuxBIOSv2/src/config/Config.lb /*************************Patch*********************************************** diff -C 3 -r -x .svn LinuxBIOSv2.orig/src/arch/i386/Config.lb LinuxBIOSv2/src/arch/i386/Config.lb *** LinuxBIOSv2.orig/src/arch/i386/Config.lb 2007-12-06 10:06:31.000000000 -0500 --- LinuxBIOSv2/src/arch/i386/Config.lb 2007-12-04 16:25:13.000000000 -0500 *************** *** 100,106 **** makerule linuxbios depends "crt0.o init.o $(LINUXBIOS_APC) $(LINUXBIOS_RAM_ROM) ldscript.ld" ! action "$(CC) -nostdlib -nostartfiles -static -o $@ -T ldscript.ld crt0.o init.o" action "$(CROSS_COMPILE)nm -n linuxbios | sort > linuxbios.map" end --- 100,106 ---- makerule linuxbios depends "crt0.o init.o $(LINUXBIOS_APC) $(LINUXBIOS_RAM_ROM) ldscript.ld" ! action "$(CC) -Wl,--build-id=none -nostdlib -nostartfiles -static -o $@ -T ldscript.ld crt0.o init.o" action "$(CROSS_COMPILE)nm -n linuxbios | sort > linuxbios.map" end diff -C 3 -r -x .svn LinuxBIOSv2.orig/src/arch/i386/lib/id.lds LinuxBIOSv2/src/arch/i386/lib/id.lds *** LinuxBIOSv2.orig/src/arch/i386/lib/id.lds 2007-12-06 10:06:31.000000000 -0500 --- LinuxBIOSv2/src/arch/i386/lib/id.lds 2007-12-06 10:36:31.000000000 -0500 *************** *** 1,5 **** SECTIONS { ! . = (_ROMBASE + ROM_IMAGE_SIZE - 0x10) - (__id_end - __id_start); .id (.): { *(.id) } --- 1,11 ---- SECTIONS { ! ! /* ! * . = (_ROMBASE + (ROM_IMAGE_SIZE - 0x10)) - (__id_end - __id_start); ! * This is a temporary fix. Under Fedora 8 ld does not like it if the .id section is above address 0xFFFF_EF00 ! */ ! _ROMTEMP = 0xffffef00; ! . = _ROMTEMP; .id (.): { *(.id) } Only in LinuxBIOSv2/src/arch/i386/lib: id.lds~ diff -C 3 -r -x .svn LinuxBIOSv2.orig/src/config/Config.lb LinuxBIOSv2/src/config/Config.lb *** LinuxBIOSv2.orig/src/config/Config.lb 2007-12-06 10:06:30.000000000 -0500 --- LinuxBIOSv2/src/config/Config.lb 2007-12-04 16:27:48.000000000 -0500 *************** *** 40,51 **** makerule linuxbios_ram.o depends "$(DRIVER) linuxbios.a $(LIBGCC_FILE_NAME)" ! action "$(CC) -nostdlib -r -o $@ c_start.o $(DRIVER) linuxbios.a $(LIBGCC_FILE_NAME)" end makerule linuxbios_ram depends "linuxbios_ram.o $(TOP)/src/config/linuxbios_ram.ld ldoptions" ! action "$(CC) -nostdlib -nostartfiles -static -o $@ -T $(TOP)/src/config/linuxbios_ram.ld linuxbios_ram.o" action "$(CROSS_COMPILE)nm -n linuxbios_ram | sort > linuxbios_ram.map" end --- 40,51 ---- makerule linuxbios_ram.o depends "$(DRIVER) linuxbios.a $(LIBGCC_FILE_NAME)" ! action "$(CC) -Wl,--build-id=none -nostdlib -r -o $@ c_start.o $(DRIVER) linuxbios.a $(LIBGCC_FILE_NAME)" end makerule linuxbios_ram depends "linuxbios_ram.o $(TOP)/src/config/linuxbios_ram.ld ldoptions" ! action "$(CC) -Wl,--build-id=none -nostdlib -nostartfiles -static -o $@ -T $(TOP)/src/config/linuxbios_ram.ld linuxbios_ram.o" action "$(CROSS_COMPILE)nm -n linuxbios_ram | sort > linuxbios_ram.map" end /*************************Patch*********************************************** Signed-off-by: Marc Karasek mailto:marc.karasek at sun.com /********************* Marc Karasek MTS Sun Microsystems mailto:marc.karasek at sun.com ph:770.360.6415 *********************/ Carl-Daniel Hailfinger wrote: > On 03.12.2007 21:18, Marc Karasek wrote: > >> I think I have found the problem. It is related to the patch Ed sent. >> The new LD looks like it automagically turns on the --build-id >> option. I have not found out how turn it off. >> When this option is used it generates the .note.gnu.build-id >> section. When this section was discarded in the first ld pass >> (linuxbios_rom.ram creation) it was causing the segmentation fault crash. >> It looks like this same option is being called again when crt0.o is >> linked to create linuxbios. I have added the .note.gnu.build-id >> section to the .id section in the ldscript.ld file. >> SECTIONS { >> . = (_ROMBASE + ROM_IMAGE_SIZE - 0x10) - (__id_end - __id_start); >> .id (.) : { >> *(.id) >> *(.note.gnu.build-id) >> } >> >> >> This has gotten me past the second crash but now linuxbios.strip is >> crashing. >> > > Well done. > > >> nm -n linuxbios | sort > linuxbios.map >> objcopy --gap-fill 0xff -O binary linuxbios linuxbios.strip >> objcopy: linuxbios.strip: Bad value >> objcopy: linuxbios.strip: Bad value >> make[1]: *** [linuxbios.strip] Error 1 >> >> So this does not look like a ld problem, but an added feature to ld is >> causing us grief. If anyone can figure out how to turn this option >> off, that may fix all of this without any patches... :-) >> > > Still, it would be a nice gesture to the binutils guys to report it as a > bug. Maybe there's some bug deeper down which triggers this. > > > Regards, > Carl-Daniel > -------------- next part -------------- An HTML attachment was scrubbed... URL: From myles at pel.cs.byu.edu Thu Dec 6 16:57:35 2007 From: myles at pel.cs.byu.edu (Myles Watson) Date: Thu, 6 Dec 2007 08:57:35 -0700 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <2831fecf0712051507r36b8adc3r5d73c4c22aebf9c4@mail.gmail.com> References: <20071203170024.4989.qmail@stuge.se> <017601c835d8$02a2a240$480110ac@chimp> <20071203182927.GB23382@cosmic.amd.com> <20071204052804.GH20788@greenwood> <000001c836c5$16bd6fb0$4b23040a@chimp> <13426df10712042034x44d87ab6m7a8797de27f3f161@mail.gmail.com> <2831fecf0712051228g74f4152ard30e9e76411b434a@mail.gmail.com> <47570C15.8040806@gmail.com> <2831fecf0712051507r36b8adc3r5d73c4c22aebf9c4@mail.gmail.com> Message-ID: <2831fecf0712060757u75a2e91oa32fd1d4efc0d49@mail.gmail.com> This is the same patch, updated to use HEAD instead of 539. Because of the way linuxbios.inc works, this only gets the true head the first time, then it just takes the previously built tarball. So if you really want the new head you have to remove the tarball. I also created a new variable LINUXBIOS_SVN_DIR to keep it from getting v2 and v3 confused with version numbers when you switch back and forth. I added an option to use the lgdt patch from the mailing list which enables compilation on the compilers I have. I fixed a bug I introduced in the last patch when I added an extra @ to a line in linuxbios.inc Myles Signed-off-by: Myles Watson From myles at pel.cs.byu.edu Thu Dec 6 17:00:57 2007 From: myles at pel.cs.byu.edu (Myles Watson) Date: Thu, 6 Dec 2007 09:00:57 -0700 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <2831fecf0712060757u75a2e91oa32fd1d4efc0d49@mail.gmail.com> References: <20071203170024.4989.qmail@stuge.se> <017601c835d8$02a2a240$480110ac@chimp> <20071203182927.GB23382@cosmic.amd.com> <20071204052804.GH20788@greenwood> <000001c836c5$16bd6fb0$4b23040a@chimp> <13426df10712042034x44d87ab6m7a8797de27f3f161@mail.gmail.com> <2831fecf0712051228g74f4152ard30e9e76411b434a@mail.gmail.com> <47570C15.8040806@gmail.com> <2831fecf0712051507r36b8adc3r5d73c4c22aebf9c4@mail.gmail.com> <2831fecf0712060757u75a2e91oa32fd1d4efc0d49@mail.gmail.com> Message-ID: <2831fecf0712060800p9280d16ne5f22275d040351d@mail.gmail.com> And the patch :) > > Myles > > Signed-off-by: Myles Watson > -------------- next part -------------- A non-text attachment was scrubbed... Name: qemu.patch Type: application/octet-stream Size: 52291 bytes Desc: not available URL: From jordan.crouse at amd.com Thu Dec 6 17:08:40 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Thu, 6 Dec 2007 09:08:40 -0700 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <2831fecf0712060757u75a2e91oa32fd1d4efc0d49@mail.gmail.com> References: <20071203170024.4989.qmail@stuge.se> <017601c835d8$02a2a240$480110ac@chimp> <20071203182927.GB23382@cosmic.amd.com> <20071204052804.GH20788@greenwood> <000001c836c5$16bd6fb0$4b23040a@chimp> <13426df10712042034x44d87ab6m7a8797de27f3f161@mail.gmail.com> <2831fecf0712051228g74f4152ard30e9e76411b434a@mail.gmail.com> <47570C15.8040806@gmail.com> <2831fecf0712051507r36b8adc3r5d73c4c22aebf9c4@mail.gmail.com> <2831fecf0712060757u75a2e91oa32fd1d4efc0d49@mail.gmail.com> Message-ID: <20071206160840.GD15478@cosmic.amd.com> On 06/12/07 08:57 -0700, Myles Watson wrote: > This is the same patch, updated to use HEAD instead of 539. Because > of the way linuxbios.inc works, this only gets the true head the first > time, then it just takes the previously built tarball. So if you > really want the new head you have to remove the tarball. The decision to force the user to chose what revision to use was mine, and I've taken a lot of flack for it. I still think there is real value in directly specifying where the code comes from (for reproducability) purposes, but if everybody complains at the same time, I can change my mind (and reserve the right to say "I told you so" later). > I also created a new variable LINUXBIOS_SVN_DIR to keep it from > getting v2 and v3 confused with version numbers when you switch back > and forth. > > I added an option to use the lgdt patch from the mailing list which > enables compilation on the compilers I have. > > I fixed a bug I introduced in the last patch when I added an extra @ > to a line in linuxbios.inc > > Myles > > Signed-off-by: Myles Watson Not attached, again.. :) > -- > linuxbios mailing list > linuxbios at linuxbios.org > http://www.linuxbios.org/mailman/listinfo/linuxbios > > -- Jordan Crouse Systems Software Development Engineer Advanced Micro Devices, Inc. From svn at openbios.org Thu Dec 6 17:03:33 2007 From: svn at openbios.org (svn at openbios.org) Date: Thu, 6 Dec 2007 17:03:33 +0100 Subject: [LinuxBIOS] r540 - LinuxBIOSv3/arch/x86 Message-ID: Author: hailfinger Date: 2007-12-06 17:03:32 +0100 (Thu, 06 Dec 2007) New Revision: 540 Modified: LinuxBIOSv3/arch/x86/Makefile Log: To reduce code duplication, make sure STAGE2_OBJ does not contain any object already mentioned in STAGE0_OBJ. This saves 386 bytes in qemu stage2 (~240 bytes after LZMA compression). Build tested and runtime tested in Qemu. Signed-off-by: Carl-Daniel Hailfinger Acked-by: Peter Stuge Modified: LinuxBIOSv3/arch/x86/Makefile =================================================================== --- LinuxBIOSv3/arch/x86/Makefile 2007-12-05 01:45:55 UTC (rev 539) +++ LinuxBIOSv3/arch/x86/Makefile 2007-12-06 16:03:32 UTC (rev 540) @@ -198,11 +198,16 @@ STAGE2_OBJ += $(obj)/util/x86emu/libx86emu.a $(LIBGCC_FILE_NAME) endif -$(obj)/linuxbios.stage2 $(obj)/linuxbios.stage2.map: $(obj)/stage0.init $(STAGE2_OBJ) +# To reduce code duplication, always make sure STAGE2_OBJ does not contain +# any object from STAGE0_OBJ. + +STAGE2_OBJ_NEEDED = $(filter-out $(STAGE0_OBJ), $(STAGE2_OBJ)) + +$(obj)/linuxbios.stage2 $(obj)/linuxbios.stage2.map: $(obj)/stage0.init $(STAGE2_OBJ_NEEDED) $(Q)# leave a .o with full symbols in it for debugging. $(Q)printf " LD $(subst $(shell pwd)/,,$(@))\n" $(Q)$(LD) -R $(obj)/stage0.o -Ttext 0x1000 --entry=stage2 \ - -o $(obj)/linuxbios.stage2 $(STAGE2_OBJ) + -o $(obj)/linuxbios.stage2 $(STAGE2_OBJ_NEEDED) $(Q)$(NM) $(obj)/linuxbios.stage2 | sort -u > $(obj)/linuxbios.stage2.map # From c-d.hailfinger.devel.2006 at gmx.net Thu Dec 6 17:06:42 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Thu, 06 Dec 2007 17:06:42 +0100 Subject: [LinuxBIOS] [PATCH] v3: duplicate less code In-Reply-To: <20071205035934.13443.qmail@stuge.se> References: <47444315.90702@gmx.net> <4748AE0A.1080601@gmx.net> <47499410.50502@coresystems.de> <474CB08F.7070600@gmx.net> <4755F52C.8040007@gmx.net> <4756054A.7040009@gmx.net> <20071205035934.13443.qmail@stuge.se> Message-ID: <47581E12.9040306@gmx.net> On 05.12.2007 04:59, Peter Stuge wrote: > On Wed, Dec 05, 2007 at 02:56:26AM +0100, Carl-Daniel Hailfinger wrote: > >> To reduce code duplication, make sure STAGE2_OBJ does not contain >> any object already mentioned in STAGE0_OBJ. >> This saves 386 bytes in qemu stage2 (~240 bytes after LZMA compression). >> >> Build tested and runtime tested in Qemu. >> >> Signed-off-by: Carl-Daniel Hailfinger >> > > Acked-by: Peter Stuge > Thanks, r540. Regards, Carl-Daniel From svn at openbios.org Thu Dec 6 17:06:08 2007 From: svn at openbios.org (svn at openbios.org) Date: Thu, 6 Dec 2007 17:06:08 +0100 Subject: [LinuxBIOS] r541 - LinuxBIOSv3/util/lar Message-ID: Author: hailfinger Date: 2007-12-06 17:06:07 +0100 (Thu, 06 Dec 2007) New Revision: 541 Modified: LinuxBIOSv3/util/lar/lar.h Log: util/lar/lar.h was accidentially changed to point to the wrong other header. Signed-off-by: Carl-Daniel Hailfinger Acked-by: Peter Stuge Modified: LinuxBIOSv3/util/lar/lar.h =================================================================== --- LinuxBIOSv3/util/lar/lar.h 2007-12-06 16:03:32 UTC (rev 540) +++ LinuxBIOSv3/util/lar/lar.h 2007-12-06 16:06:07 UTC (rev 541) @@ -61,7 +61,7 @@ typedef uint32_t u32; typedef uint8_t u8; -/* NOTE -- This and the user-mode lar.h may NOT be in sync. Be careful. */ +/* NOTE -- This and the linuxbios lar.h may NOT be in sync. Be careful. */ struct lar_header { char magic[8]; u32 len; From c-d.hailfinger.devel.2006 at gmx.net Thu Dec 6 17:09:11 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Thu, 06 Dec 2007 17:09:11 +0100 Subject: [LinuxBIOS] [PATCH] v3: fix typo in util/lar/lar.h In-Reply-To: <20071205040232.14487.qmail@stuge.se> References: <47560D38.8040802@gmx.net> <20071205040232.14487.qmail@stuge.se> Message-ID: <47581EA7.6060905@gmx.net> On 05.12.2007 05:02, Peter Stuge wrote: > On Wed, Dec 05, 2007 at 03:30:16AM +0100, Carl-Daniel Hailfinger wrote: > >> util/lar/lar.h was accidentially changed to point to the wrong >> other header. >> >> Signed-off-by: Carl-Daniel Hailfinger >> > > This would qualify as trivial. :) > > Acked-by: Peter Stuge > Thanks, r541. Regards, Carl-Daniel From jordan.crouse at amd.com Thu Dec 6 17:16:52 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Thu, 6 Dec 2007 09:16:52 -0700 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <2831fecf0712060800p9280d16ne5f22275d040351d@mail.gmail.com> References: <017601c835d8$02a2a240$480110ac@chimp> <20071203182927.GB23382@cosmic.amd.com> <20071204052804.GH20788@greenwood> <000001c836c5$16bd6fb0$4b23040a@chimp> <13426df10712042034x44d87ab6m7a8797de27f3f161@mail.gmail.com> <2831fecf0712051228g74f4152ard30e9e76411b434a@mail.gmail.com> <47570C15.8040806@gmail.com> <2831fecf0712051507r36b8adc3r5d73c4c22aebf9c4@mail.gmail.com> <2831fecf0712060757u75a2e91oa32fd1d4efc0d49@mail.gmail.com> <2831fecf0712060800p9280d16ne5f22275d040351d@mail.gmail.com> Message-ID: <20071206161652.GA5380@cosmic.amd.com> On 06/12/07 09:00 -0700, Myles Watson wrote: > And the patch :) So begins the v3 era in buildrom. I also have some ideas and patches for v3 - but since this patch is here, and it works, I think what I'll do is ack and commit it immediately, and then we can build from there. Is that okay with everybody? Jordan > > Myles > > > > Signed-off-by: Myles Watson Acked-by: Jordan Crouse > -- > linuxbios mailing list > linuxbios at linuxbios.org > http://www.linuxbios.org/mailman/listinfo/linuxbios -- Jordan Crouse Systems Software Development Engineer Advanced Micro Devices, Inc. From ward at gnu.org Thu Dec 6 17:14:43 2007 From: ward at gnu.org (Ward Vandewege) Date: Thu, 6 Dec 2007 11:14:43 -0500 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <20071206161652.GA5380@cosmic.amd.com> References: <20071203182927.GB23382@cosmic.amd.com> <20071204052804.GH20788@greenwood> <000001c836c5$16bd6fb0$4b23040a@chimp> <13426df10712042034x44d87ab6m7a8797de27f3f161@mail.gmail.com> <2831fecf0712051228g74f4152ard30e9e76411b434a@mail.gmail.com> <47570C15.8040806@gmail.com> <2831fecf0712051507r36b8adc3r5d73c4c22aebf9c4@mail.gmail.com> <2831fecf0712060757u75a2e91oa32fd1d4efc0d49@mail.gmail.com> <2831fecf0712060800p9280d16ne5f22275d040351d@mail.gmail.com> <20071206161652.GA5380@cosmic.amd.com> Message-ID: <20071206161443.GA28277@localdomain> On Thu, Dec 06, 2007 at 09:16:52AM -0700, Jordan Crouse wrote: > On 06/12/07 09:00 -0700, Myles Watson wrote: > > And the patch :) > > So begins the v3 era in buildrom. I also have some ideas and patches > for v3 - but since this patch is here, and it works, I think what I'll > do is ack and commit it immediately, and then we can build from there. > > Is that okay with everybody? Yes, please :) Thanks, Ward. -- Ward Vandewege Free Software Foundation - Senior System Administrator From svn at openbios.org Thu Dec 6 17:18:18 2007 From: svn at openbios.org (svn at openbios.org) Date: Thu, 6 Dec 2007 17:18:18 +0100 Subject: [LinuxBIOS] r77 - in buildrom-devel: . config/payloads config/platforms packages/linuxbios Message-ID: Author: jcrouse Date: 2007-12-06 17:18:18 +0100 (Thu, 06 Dec 2007) New Revision: 77 Modified: buildrom-devel/Config.in buildrom-devel/config/payloads/payloads.conf buildrom-devel/config/platforms/Config.in buildrom-devel/config/platforms/platforms.conf buildrom-devel/packages/linuxbios/linuxbios.inc Log: This patch adds support for QEMU to buildrom, for both v2 and v3. It also allows you to build QEMU from sources with the patches. Signed-off-by: Myles Watson Acked-by: Jordan Crouse Modified: buildrom-devel/Config.in =================================================================== --- buildrom-devel/Config.in 2007-12-05 23:27:08 UTC (rev 76) +++ buildrom-devel/Config.in 2007-12-06 16:18:18 UTC (rev 77) @@ -43,6 +43,23 @@ menu "LinuxBIOS configuration" +config LINUXBIOS_V3 + bool "Use LinuxBIOSv3" + depends ADVANCED + default n + help + Use the v3 tree. LinuxBIOSv3 doesn't support all platforms yet. + +config LINUXBIOS_V3_LGDT_PATCH + bool "Avoid an error in stage0_i586 with some compilers" + depends LINUXBIOS_V3 + default n + help + Say 'y' here to use the patch from the mailing list to replace + "data32 lgdt %cs:gdtptr" with + "movl $gdtptr" + "%ebx lgdt %cs:(%bx)" + config USE_LZMA bool "Enable LZMA compression" depends !PAYLOAD_OFW Modified: buildrom-devel/config/payloads/payloads.conf =================================================================== --- buildrom-devel/config/payloads/payloads.conf 2007-12-05 23:27:08 UTC (rev 76) +++ buildrom-devel/config/payloads/payloads.conf 2007-12-06 16:18:18 UTC (rev 77) @@ -29,6 +29,7 @@ # Add LZMA if it is enabled HOSTTOOLS-$(CONFIG_USE_LZMA) += lzma +HOSTTOOLS-$(CONFIG_BUILD_QEMU) += qemu # Sanity check Modified: buildrom-devel/config/platforms/Config.in =================================================================== --- buildrom-devel/config/platforms/Config.in 2007-12-05 23:27:08 UTC (rev 76) +++ buildrom-devel/config/platforms/Config.in 2007-12-06 16:18:18 UTC (rev 77) @@ -21,6 +21,9 @@ config VENDOR_PC_ENGINES bool "PC Engines" +config VENDOR_QEMU + bool "QEMU Emulator" + config VENDOR_SUPERMICRO bool "Supermicro" @@ -84,6 +87,11 @@ select PLATFORM select PLATFORM_SUPPORT_64BIT +config PLATFORM_QEMU-i386 + bool "QEMU Emulator" + depends VENDOR_QEMU + select PLATFORM + config PLATFORM_SERENGETI_CHEETAH bool "AMD Serengeti-Cheetah" depends VENDOR_AMD @@ -98,6 +106,22 @@ endchoice +config BUILD_QEMU + bool "Build QEMU with patches for LinuxBIOS" + depends PLATFORM_QEMU-i386 + default n + help + Say 'y' here to build a patched version of QEMU to work with + LinuxBIOS. This downloads the correct version and patches it + it even builds it if you specify the QEMU_CC correctly. + +config QEMU_CC + string "Compiler to use when building QEMU" + depends BUILD_QEMU + default "gcc32" + help + Set this string to point to your compiler (GCC_VER <=3.2) + config SIMNOW bool "Build for the AMD SimNow (TM) emulator" depends PLATFORM_SERENGETI_CHEETAH || PLATFORM_SERENGETI_CHEETAH_64 Modified: buildrom-devel/config/platforms/platforms.conf =================================================================== --- buildrom-devel/config/platforms/platforms.conf 2007-12-05 23:27:08 UTC (rev 76) +++ buildrom-devel/config/platforms/platforms.conf 2007-12-06 16:18:18 UTC (rev 77) @@ -18,5 +18,6 @@ PLATFORM-$(CONFIG_PLATFORM_SERENGETI_CHEETAH) = serengeti_cheetah.conf PLATFORM-$(CONFIG_PLATFORM_SERENGETI_CHEETAH_64) = serengeti_cheetah-x86_64.conf PLATFORM-$(CONFIG_PLATFORM_GA_2761GXDK) = ga-2761gxdk.conf +PLATFORM-$(CONFIG_PLATFORM_QEMU-i386) = qemu.conf include $(CONFIG_DIR)/platforms/$(PLATFORM-y) Modified: buildrom-devel/packages/linuxbios/linuxbios.inc =================================================================== --- buildrom-devel/packages/linuxbios/linuxbios.inc 2007-12-05 23:27:08 UTC (rev 76) +++ buildrom-devel/packages/linuxbios/linuxbios.inc 2007-12-06 16:18:18 UTC (rev 77) @@ -7,8 +7,14 @@ ifeq ($(LINUXBIOS_BOARD),) $(error No LinuxBIOS board specified) endif -ifeq ($(LINUXBIOS_CONFIG),) -$(error No LinuxBIOS config specified) +ifeq ($(CONFIG_LINUXBIOS_V3),y) + ifeq ($(LINUXBIOS_V3_CONFIG),) + $(error No LinuxBIOSv3 config specified) + endif +else + ifeq ($(LINUXBIOS_CONFIG),) + $(error No LinuxBIOS config specified) + endif endif ifeq ($(LINUXBIOS_TDIR),) $(error No LinuxBIOS TDIR specified) @@ -29,7 +35,12 @@ LINUXBIOS_TARGET_DIR=$(LINUXBIOS_SRC_DIR)/targets/ LINUXBIOS_TARGET_NAME=$(LINUXBIOS_VENDOR)/$(LINUXBIOS_BOARD) LINUXBIOS_CONFIG_NAME=$(LINUXBIOS_TARGET_NAME)/$(LINUXBIOS_CONFIG) + +ifeq ($(CONFIG_LINUXBIOS_V3),y) +LINUXBIOS_BUILD_DIR=$(LINUXBIOS_SRC_DIR) +else LINUXBIOS_BUILD_DIR=$(LINUXBIOS_TARGET_DIR)/$(LINUXBIOS_TARGET_NAME)/$(LINUXBIOS_TDIR) +endif LINUXBIOS_STAMP_DIR=$(LINUXBIOS_DIR)/stamps LINUXBIOS_LOG_DIR=$(LINUXBIOS_DIR)/logs @@ -68,10 +79,17 @@ @ touch $@ $(LINUXBIOS_STAMP_DIR)/.configured: $(LINUXBIOS_STAMP_DIR)/.patched +ifeq ($(CONFIG_LINUXBIOS_V3),y) + @ echo "Configuring v3..." + @ cp $(LINUXBIOS_V3_CONFIG) $(LINUXBIOS_SRC_DIR)/.config + @ make -C $(LINUXBIOS_SRC_DIR) oldconfig > $(LINUXBIOS_CONFIG_LOG) 2>&1 + @ touch $@ +else @ echo "Building target..." @( cd $(LINUXBIOS_TARGET_DIR); \ ./buildtarget $(LINUXBIOS_CONFIG_NAME) > $(LINUXBIOS_CONFIG_LOG) 2>&1) @ touch $@ +endif $(LINUXBIOS_STAMP_DIR) $(LINUXBIOS_LOG_DIR): @ mkdir -p $@ From jordan.crouse at amd.com Thu Dec 6 17:26:00 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Thu, 6 Dec 2007 09:26:00 -0700 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <2831fecf0712060800p9280d16ne5f22275d040351d@mail.gmail.com> References: <017601c835d8$02a2a240$480110ac@chimp> <20071203182927.GB23382@cosmic.amd.com> <20071204052804.GH20788@greenwood> <000001c836c5$16bd6fb0$4b23040a@chimp> <13426df10712042034x44d87ab6m7a8797de27f3f161@mail.gmail.com> <2831fecf0712051228g74f4152ard30e9e76411b434a@mail.gmail.com> <47570C15.8040806@gmail.com> <2831fecf0712051507r36b8adc3r5d73c4c22aebf9c4@mail.gmail.com> <2831fecf0712060757u75a2e91oa32fd1d4efc0d49@mail.gmail.com> <2831fecf0712060800p9280d16ne5f22275d040351d@mail.gmail.com> Message-ID: <20071206162600.GB5380@cosmic.amd.com> On 06/12/07 09:00 -0700, Myles Watson wrote: > And the patch :) > > > > Myles > > > > Signed-off-by: Myles Watson > > r77. Everybody please update - and go nuts. > -- > linuxbios mailing list > linuxbios at linuxbios.org > http://www.linuxbios.org/mailman/listinfo/linuxbios -- Jordan Crouse Systems Software Development Engineer Advanced Micro Devices, Inc. From myles at pel.cs.byu.edu Thu Dec 6 17:23:46 2007 From: myles at pel.cs.byu.edu (Myles Watson) Date: Thu, 6 Dec 2007 09:23:46 -0700 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <20071206160840.GD15478@cosmic.amd.com> References: <20071203170024.4989.qmail@stuge.se> <017601c835d8$02a2a240$480110ac@chimp> <20071203182927.GB23382@cosmic.amd.com> <20071204052804.GH20788@greenwood> <000001c836c5$16bd6fb0$4b23040a@chimp> <13426df10712042034x44d87ab6m7a8797de27f3f161@mail.gmail.com> <2831fecf0712051228g74f4152ard30e9e76411b434a@mail.gmail.com> <47570C15.8040806@gmail.com> <2831fecf0712051507r36b8adc3r5d73c4c22aebf9c4@mail.gmail.com> <2831fecf0712060757u75a2e91oa32fd1d4efc0d49@mail.gmail.com> <20071206160840.GD15478@cosmic.amd.com> Message-ID: <009c01c83824$6064dc60$4b23040a@chimp> > -----Original Message----- > From: Jordan Crouse [mailto:jordan.crouse at amd.com] > Sent: Thursday, December 06, 2007 9:09 AM > To: Myles Watson > Cc: Linuxbios > Subject: Re: State of the buildrom > > On 06/12/07 08:57 -0700, Myles Watson wrote: > > This is the same patch, updated to use HEAD instead of 539. Because > > of the way linuxbios.inc works, this only gets the true head the first > > time, then it just takes the previously built tarball. So if you > > really want the new head you have to remove the tarball. > > The decision to force the user to chose what revision to use was mine, and > I've taken a lot of flack for it. I still think there is real value in > directly specifying where the code comes from (for reproducability) > purposes, > but if everybody complains at the same time, I can change my mind > (and reserve the right to say "I told you so" later). > It seems like a two-edged sword to me. Right now if you install the latest iasl and use buildrom, it will fail on any platform that needs iasl, since iasl changed. If we took from the latest, we'd have to update iasl before it worked again. Either way works for me. Myles From c-d.hailfinger.devel.2006 at gmx.net Thu Dec 6 17:29:45 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Thu, 06 Dec 2007 17:29:45 +0100 Subject: [LinuxBIOS] r77 - in buildrom-devel: . config/payloads config/platforms packages/linuxbios In-Reply-To: <20071206161834.3387gmx1@mx050.gmx.net> References: <20071206161834.3387gmx1@mx050.gmx.net> Message-ID: <47582379.9000402@gmx.net> On 06.12.2007 17:18, svn at openbios.org wrote: > Author: jcrouse > Date: 2007-12-06 17:18:18 +0100 (Thu, 06 Dec 2007) > New Revision: 77 > > Log: > This patch adds support for QEMU to buildrom, for both v2 and v3. It > also allows you to build QEMU from sources with the patches. > > Signed-off-by: Myles Watson > Acked-by: Jordan Crouse > > > Modified: buildrom-devel/Config.in > =================================================================== > --- buildrom-devel/Config.in 2007-12-05 23:27:08 UTC (rev 76) > +++ buildrom-devel/Config.in 2007-12-06 16:18:18 UTC (rev 77) > @@ -43,6 +43,23 @@ > > menu "LinuxBIOS configuration" > > +config LINUXBIOS_V3 > + bool "Use LinuxBIOSv3" > + depends ADVANCED > + default n > + help > + Use the v3 tree. LinuxBIOSv3 doesn't support all platforms yet. > + > +config LINUXBIOS_V3_LGDT_PATCH > + bool "Avoid an error in stage0_i586 with some compilers" > + depends LINUXBIOS_V3 > + default n > + help > + Say 'y' here to use the patch from the mailing list to replace > + "data32 lgdt %cs:gdtptr" with > + "movl $gdtptr" > + "%ebx lgdt %cs:(%bx)" > + > config USE_LZMA > bool "Enable LZMA compression" > depends !PAYLOAD_OFW > While I welcome almost everything in that patch, I dislike that part. Either we agree on some code sequence that works for everyone or we mark some compilers "broken". Regards, Carl-Daniel From myles at pel.cs.byu.edu Thu Dec 6 17:33:24 2007 From: myles at pel.cs.byu.edu (Myles Watson) Date: Thu, 6 Dec 2007 09:33:24 -0700 Subject: [LinuxBIOS] r77 - in buildrom-devel: . config/payloads config/platforms packages/linuxbios In-Reply-To: <47582379.9000402@gmx.net> References: <20071206161834.3387gmx1@mx050.gmx.net> <47582379.9000402@gmx.net> Message-ID: <009d01c83825$b91e3850$4b23040a@chimp> > > Modified: buildrom-devel/Config.in > > =================================================================== > > --- buildrom-devel/Config.in 2007-12-05 23:27:08 UTC (rev 76) > > +++ buildrom-devel/Config.in 2007-12-06 16:18:18 UTC (rev 77) > > @@ -43,6 +43,23 @@ > > > > menu "LinuxBIOS configuration" > > > > +config LINUXBIOS_V3 > > + bool "Use LinuxBIOSv3" > > + depends ADVANCED > > + default n > > + help > > + Use the v3 tree. LinuxBIOSv3 doesn't support all platforms yet. > > + > > +config LINUXBIOS_V3_LGDT_PATCH > > + bool "Avoid an error in stage0_i586 with some compilers" > > + depends LINUXBIOS_V3 > > + default n > > + help > > + Say 'y' here to use the patch from the mailing list to replace > > + "data32 lgdt %cs:gdtptr" with > > + "movl $gdtptr" > > + "%ebx lgdt %cs:(%bx)" > > + > > config USE_LZMA > > bool "Enable LZMA compression" > > depends !PAYLOAD_OFW > > > > While I welcome almost everything in that patch, I dislike that part. > Either we agree on some code sequence that works for everyone or we mark > some compilers "broken". I like the "code sequence that works for everyone" thought. That's more of a LinuxBIOSv3 issue than a buildrom issue, though. I'd hoped to make people happy by not applying the patch by default. Myles From myles at pel.cs.byu.edu Thu Dec 6 17:34:05 2007 From: myles at pel.cs.byu.edu (Myles Watson) Date: Thu, 6 Dec 2007 09:34:05 -0700 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <20071206162600.GB5380@cosmic.amd.com> References: <017601c835d8$02a2a240$480110ac@chimp> <20071203182927.GB23382@cosmic.amd.com> <20071204052804.GH20788@greenwood> <000001c836c5$16bd6fb0$4b23040a@chimp> <13426df10712042034x44d87ab6m7a8797de27f3f161@mail.gmail.com> <2831fecf0712051228g74f4152ard30e9e76411b434a@mail.gmail.com> <47570C15.8040806@gmail.com> <2831fecf0712051507r36b8adc3r5d73c4c22aebf9c4@mail.gmail.com> <2831fecf0712060757u75a2e91oa32fd1d4efc0d49@mail.gmail.com> <2831fecf0712060800p9280d16ne5f22275d040351d@mail.gmail.com> <20071206162600.GB5380@cosmic.amd.com> Message-ID: <009e01c83825$d1881140$4b23040a@chimp> > -----Original Message----- > From: Jordan Crouse [mailto:jordan.crouse at amd.com] > Sent: Thursday, December 06, 2007 9:26 AM > To: Myles Watson > Cc: Linuxbios > Subject: Re: State of the buildrom > > On 06/12/07 09:00 -0700, Myles Watson wrote: > > And the patch :) > > > > > > Myles > > > > > > Signed-off-by: Myles Watson > > > > > r77. Everybody please update - and go nuts. None of the new files came through. They look like they're in the patch, but not in the commit. Am I supposed to generate the patches differently? I'm just using svn diff buildrom-devel Thanks, Myles > > > -- > > linuxbios mailing list > > linuxbios at linuxbios.org > > http://www.linuxbios.org/mailman/listinfo/linuxbios > > -- > Jordan Crouse > Systems Software Development Engineer > Advanced Micro Devices, Inc. From c-d.hailfinger.devel.2006 at gmx.net Thu Dec 6 17:37:01 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Thu, 06 Dec 2007 17:37:01 +0100 Subject: [LinuxBIOS] different versions of the GA-M57SLI-S4 (PLCC vs SPI) In-Reply-To: <200712051400.23814.harald.gutmann@gmx.net> References: <46D6AB93.9080607@stockwith.co.uk> <200712051150.35909.harald.gutmann@gmx.net> <200712051344.53811.st@iss.tu-darmstadt.de> <200712051400.23814.harald.gutmann@gmx.net> Message-ID: <4758252D.9080905@gmx.net> On 05.12.2007 14:00, Harald Gutmann wrote: > Am Mittwoch, 5. Dezember 2007 13:44:53 schrieb ST: > >> Hi >> >> >>> one of the main big things on that board is the missing ACPI >>> implementation. the other issues seem to be just little things: >>> >> ACPI or in my case fan control is a real showstopper for me. What has to be >> done to remedie this problem? >> > fancontrol and cool'n'quite and the powerdown is missing without acpi. > i think there is just no acpi code in the lb part for the m57sli4 > > >>> flashrom isn't working when lb is booted. >>> >> Only on the newer boards i suppose? >> > only on the spi version of the board. (rev 2.0) > Can someone with a logic probe or oscilloscope debug that? Once I know what's wrong with the signals, I can fix the code. Regards, Carl-Daniel From c-d.hailfinger.devel.2006 at gmx.net Thu Dec 6 17:39:34 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Thu, 06 Dec 2007 17:39:34 +0100 Subject: [LinuxBIOS] r77 - in buildrom-devel: . config/payloads config/platforms packages/linuxbios In-Reply-To: <009d01c83825$b91e3850$4b23040a@chimp> References: <20071206161834.3387gmx1@mx050.gmx.net> <47582379.9000402@gmx.net> <009d01c83825$b91e3850$4b23040a@chimp> Message-ID: <475825C6.2090804@gmx.net> On 06.12.2007 17:33, Myles Watson wrote: >>> Modified: buildrom-devel/Config.in >>> =================================================================== >>> --- buildrom-devel/Config.in 2007-12-05 23:27:08 UTC (rev 76) >>> +++ buildrom-devel/Config.in 2007-12-06 16:18:18 UTC (rev 77) >>> @@ -43,6 +43,23 @@ >>> >>> menu "LinuxBIOS configuration" >>> >>> +config LINUXBIOS_V3 >>> + bool "Use LinuxBIOSv3" >>> + depends ADVANCED >>> + default n >>> + help >>> + Use the v3 tree. LinuxBIOSv3 doesn't support all platforms yet. >>> + >>> +config LINUXBIOS_V3_LGDT_PATCH >>> + bool "Avoid an error in stage0_i586 with some compilers" >>> + depends LINUXBIOS_V3 >>> + default n >>> + help >>> + Say 'y' here to use the patch from the mailing list to replace >>> + "data32 lgdt %cs:gdtptr" with >>> + "movl $gdtptr" >>> + "%ebx lgdt %cs:(%bx)" >>> + >>> config USE_LZMA >>> bool "Enable LZMA compression" >>> depends !PAYLOAD_OFW >>> >>> >> While I welcome almost everything in that patch, I dislike that part. >> Either we agree on some code sequence that works for everyone or we mark >> some compilers "broken". >> > > I like the "code sequence that works for everyone" thought. That's more of > a LinuxBIOSv3 issue than a buildrom issue, though. I'd hoped to make people > happy by not applying the patch by default. > Can you send it in as a patch with a short description? If comments are positive, we should just commit. Regards, Carl-Daniel From svn at openbios.org Thu Dec 6 17:38:25 2007 From: svn at openbios.org (svn at openbios.org) Date: Thu, 6 Dec 2007 17:38:25 +0100 Subject: [LinuxBIOS] r78 - in buildrom-devel: config/platforms packages packages/filo/conf packages/kernel packages/kernel/conf packages/linuxbios packages/linuxbios/conf.v3 packages/linuxbios/patches packages/qemu packages/qemu/patches Message-ID: Author: jcrouse Date: 2007-12-06 17:38:25 +0100 (Thu, 06 Dec 2007) New Revision: 78 Added: buildrom-devel/config/platforms/qemu.conf buildrom-devel/packages/filo/conf/qemu-Config buildrom-devel/packages/kernel/conf/defconfig-qemu buildrom-devel/packages/kernel/qemu-kernel.mk buildrom-devel/packages/linuxbios/conf.v3/ buildrom-devel/packages/linuxbios/conf.v3/qemu.conf buildrom-devel/packages/linuxbios/patches/lgdt.patch buildrom-devel/packages/linuxbios/patches/qemu-lab.patch buildrom-devel/packages/linuxbios/patches/qemu-payload.patch buildrom-devel/packages/linuxbios/qemu.mk buildrom-devel/packages/qemu/ buildrom-devel/packages/qemu/patches/ buildrom-devel/packages/qemu/patches/qemu-bios-size.patch buildrom-devel/packages/qemu/patches/qemu-isa-bios-ram.patch buildrom-devel/packages/qemu/patches/qemu-piix-ram-size.patch buildrom-devel/packages/qemu/qemu.mk Log: I royally screwed up that last commit somehow - but these are all part of Myle's patch - they never got added. Added: buildrom-devel/config/platforms/qemu.conf =================================================================== --- buildrom-devel/config/platforms/qemu.conf (rev 0) +++ buildrom-devel/config/platforms/qemu.conf 2007-12-06 16:38:25 UTC (rev 78) @@ -0,0 +1,45 @@ +# Support for the QEMU emulator Platform + +#### Platform configuration + +CC=gcc +STRIP=strip +AS=as + +TARGET_ARCH=i686 +CFLAGS_platform = + +# Targets + +KERNEL_MK=$(PACKAGE_DIR)/kernel/qemu-kernel.mk +LINUXBIOS_MK=$(PACKAGE_DIR)/linuxbios/qemu.mk + +# kernel configuration (for LAB) + +KERNEL_VERSION=2.6.22.2 +KERNEL_CONFIG=$(PACKAGE_DIR)/kernel/conf/defconfig-qemu +UCLIBC_VER=0.9.28 + +# Etherboot configuration +ETHERBOOT_ARCH=i386 + +# LinuxBIOS configuration + +ifeq ($(CONFIG_LINUXBIOS_V3),y) +LINUXBIOS_TAG=HEAD +LINUXBIOS_V3_CONFIG=$(PACKAGE_DIR)/linuxbios/conf.v3/qemu.conf +LINUXBIOS_ROM_NAME=build/linuxbios.rom +else +LINUXBIOS_TAG=2950 +LINUXBIOS_CONFIG=Config.lb +LINUXBIOS_ROM_NAME=qemu.rom +endif + +LINUXBIOS_VENDOR=emulation +LINUXBIOS_BOARD=qemu-i386 +LINUXBIOS_TDIR=qemu-i386 + +# FILO configuration + +FILO_CONFIG=qemu-Config + Added: buildrom-devel/packages/filo/conf/qemu-Config =================================================================== --- buildrom-devel/packages/filo/conf/qemu-Config (rev 0) +++ buildrom-devel/packages/filo/conf/qemu-Config 2007-12-06 16:38:25 UTC (rev 78) @@ -0,0 +1,101 @@ +# !!! NOTE !!! +# Do NOT add spaces or comments at the end of option lines. +# It confuses some versions of make. + +# Use grub instead of autoboot? +USE_GRUB = 1 + +# Grub menu.lst path +MENULST_FILE = "hda3:/boot/filo/menu.lst" +# Via Epia-MII CF boot: +#MENULST_FILE = "hde1:/boot/filo/menu.lst" + +# time before default menu.lst is chosen. Set to 0 to ignore +MENULST_TIMEOUT = 0 + +# Image filename for automatic boot and optional command line parameter +AUTOBOOT_FILE = "hda1:/vmlinuz root=/dev/hda1 console=tty0 console=ttyS0,115200" +#AUTOBOOT_FILE = "mem at 0xfff80000" +#AUTOBOOT_FILE = "hde1 at 0" +#AUTOBOOT_FILE = "uda1:/vmlinuz.elf" + +# Time in second before booting AUTOBOOT_FILE +AUTOBOOT_DELAY = 2 + +# Driver for hard disk, CompactFlash, and CD-ROM on IDE bus +IDE_DISK = 1 + +# Add a short delay when polling status registers +# (required on some broken SATA controllers) +# NOTE: Slows down access significantly, so disable +# whenever possible. +#IDE_DISK_POLL_DELAY = 1 + +# Use PCMCIA compact flash on Via Epia MII10000 and MII6000E +# This device is referred to as hde. +#PCMCIA_CF = 1 + +# Driver for USB Storage +USB_DISK = 1 + +# VGA text console +VGA_CONSOLE = 1 +PC_KEYBOARD = 1 + +# Serial console +SERIAL_CONSOLE = 1 +SERIAL_IOBASE = 0x3f8 +# if SERIAL_SPEED is commented out, the speed will not be changed. +#SERIAL_SPEED = 115200 + +# Filesystems +FSYS_EXT2FS = 1 +FSYS_FAT = 1 +#FSYS_JFS = 1 +#FSYS_MINIX = 1 +FSYS_REISERFS = 1 +#FSYS_XFS = 1 +FSYS_ISO9660 = 1 + +# Support for boot disk image in bootable CD-ROM (El Torito) +ELTORITO = 1 + +# PCI support +SUPPORT_PCI = 1 + +# Enable this to scan PCI busses above bus 0 +# AMD64 based boards do need this. +PCI_BRUTE_SCAN = 1 + +# Sound support (needs SUPPORT_PCI) +#SUPPORT_SOUND = 1 + +# Sound drivers +#VIA_SOUND = 1 + +# Debugging +#DEBUG_ALL = 1 +#DEBUG_ELFBOOT = 1 +#DEBUG_ELFNOTE = 1 +#DEBUG_LINUXBIOS = 1 +#DEBUG_MALLOC = 1 +#DEBUG_MULTIBOOT = 1 +#DEBUG_SEGMENT = 1 +#DEBUG_SYS_INFO = 1 +#DEBUG_TIMER = 1 +#DEBUG_BLOCKDEV = 1 +#DEBUG_PCI = 1 +#DEBUG_VIA_SOUND = 1 +#DEBUG_LINUXLOAD = 1 +#DEBUG_IDE = 1 +#DEBUG_USB = 1 +#DEBUG_ELTORITO = 1 + +# i386 options + +# Loader for standard Linux kernel image, a.k.a. /vmlinuz +LINUX_LOADER = 1 + +# Boot FILO from Multiboot loader (eg. GRUB) +#MULTIBOOT_IMAGE = 1 + Added: buildrom-devel/packages/kernel/conf/defconfig-qemu =================================================================== --- buildrom-devel/packages/kernel/conf/defconfig-qemu (rev 0) +++ buildrom-devel/packages/kernel/conf/defconfig-qemu 2007-12-06 16:38:25 UTC (rev 78) @@ -0,0 +1,1193 @@ +# +# Automatically generated make config: don't edit +# Linux kernel version: 2.6.22.2 +# Sun Sep 30 14:52:47 2007 +# +CONFIG_X86_32=y +CONFIG_GENERIC_TIME=y +CONFIG_CLOCKSOURCE_WATCHDOG=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BROADCAST=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_SEMAPHORE_SLEEPERS=y +CONFIG_X86=y +CONFIG_MMU=y +CONFIG_ZONE_DMA=y +CONFIG_QUICKLIST=y +CONFIG_GENERIC_ISA_DMA=y +CONFIG_GENERIC_IOMAP=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_ARCH_MAY_HAVE_PC_FDC=y +CONFIG_DMI=y +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" + +# +# Code maturity level options +# +CONFIG_EXPERIMENTAL=y +CONFIG_BROKEN_ON_SMP=y +CONFIG_LOCK_KERNEL=y +CONFIG_INIT_ENV_ARG_LIMIT=32 + +# +# General setup +# +CONFIG_LOCALVERSION="BuildROM L-A-B V1.0" +# CONFIG_LOCALVERSION_AUTO is not set +# CONFIG_SWAP is not set +# CONFIG_SYSVIPC is not set +# CONFIG_POSIX_MQUEUE is not set +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_TASKSTATS is not set +# CONFIG_UTS_NS is not set +# CONFIG_AUDIT is not set +# CONFIG_IKCONFIG is not set +CONFIG_LOG_BUF_SHIFT=17 +# CONFIG_SYSFS_DEPRECATED is not set +# CONFIG_RELAY is not set +CONFIG_BLK_DEV_INITRD=y +CONFIG_INITRAMFS_SOURCE="" +# CONFIG_SYSENTER is not set +# CONFIG_AIO is not set +# CONFIG_XATTR is not set +# CONFIG_FILE_LOCKING is not set +# CONFIG_ETHTOOL is not set +# CONFIG_INETPEER is not set +# CONFIG_NET_DEV_MULTICAST is not set +# CONFIG_MEASURE_INLINES is not set +CONFIG_CC_OPTIMIZE_FOR_SIZE=y +CONFIG_SYSCTL=y +CONFIG_EMBEDDED=y +# CONFIG_UID16 is not set +# CONFIG_SYSCTL_SYSCALL is not set +# CONFIG_KALLSYMS is not set +CONFIG_HOTPLUG=y +CONFIG_PRINTK_FUNC=y +CONFIG_PRINTK=y +# CONFIG_BUG is not set +CONFIG_ELF_CORE=y +CONFIG_PANIC=y +CONFIG_FULL_PANIC=y +CONFIG_BASE_FULL=y +CONFIG_NET_SMALL=y +CONFIG_FUTEX=y +CONFIG_ANON_INODES=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +CONFIG_SHMEM=y +# CONFIG_CRC32_TABLES is not set +# CONFIG_VM_EVENT_COUNTERS is not set +# CONFIG_SLAB is not set +# CONFIG_SLUB is not set +CONFIG_SLOB=y +CONFIG_CC_FUNIT_AT_A_TIME=y +CONFIG_LINUXTINY_DO_UNINLINE=y +CONFIG_BINFMT_SCRIPT=y +CONFIG_MAX_SWAPFILES_SHIFT=0 +CONFIG_NR_LDISCS=2 +CONFIG_MAX_USER_RT_PRIO=5 +CONFIG_RT_MUTEXES=y +CONFIG_CRC32_CALC=y +# CONFIG_TINY_SHMEM is not set +CONFIG_BASE_SMALL=0 + +# +# Loadable module support +# +# CONFIG_MODULES is not set + +# +# Block layer +# +CONFIG_BLOCK=y +# CONFIG_LBD is not set +# CONFIG_BLK_DEV_IO_TRACE is not set +# CONFIG_LSF is not set + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +CONFIG_IOSCHED_AS=y +# CONFIG_IOSCHED_DEADLINE is not set +# CONFIG_IOSCHED_CFQ is not set +CONFIG_DEFAULT_AS=y +# CONFIG_DEFAULT_DEADLINE is not set +# CONFIG_DEFAULT_CFQ is not set +# CONFIG_DEFAULT_NOOP is not set +CONFIG_DEFAULT_IOSCHED="anticipatory" + +# +# Processor type and features +# +# CONFIG_TICK_ONESHOT is not set +# CONFIG_NO_HZ is not set +# CONFIG_HIGH_RES_TIMERS is not set +# CONFIG_SMP is not set +CONFIG_X86_PC=y +# CONFIG_X86_ELAN is not set +# CONFIG_X86_VOYAGER is not set +# CONFIG_X86_NUMAQ is not set +# CONFIG_X86_SUMMIT is not set +# CONFIG_X86_BIGSMP is not set +# CONFIG_X86_VISWS is not set +# CONFIG_X86_GENERICARCH is not set +# CONFIG_X86_ES7000 is not set +# CONFIG_PARAVIRT is not set +CONFIG_M386=y +# CONFIG_M486 is not set +# CONFIG_M586 is not set +# CONFIG_M586TSC is not set +# CONFIG_M586MMX is not set +# CONFIG_M686 is not set +# CONFIG_MPENTIUMII is not set +# CONFIG_MPENTIUMIII is not set +# CONFIG_MPENTIUMM is not set +# CONFIG_MCORE2 is not set +# CONFIG_MPENTIUM4 is not set +# CONFIG_MK6 is not set +# CONFIG_MK7 is not set +# CONFIG_MK8 is not set +# CONFIG_MCRUSOE is not set +# CONFIG_MEFFICEON is not set +# CONFIG_MWINCHIPC6 is not set +# CONFIG_MWINCHIP2 is not set +# CONFIG_MWINCHIP3D is not set +# CONFIG_MGEODEGX1 is not set +# CONFIG_MGEODE_LX is not set +# CONFIG_MCYRIXIII is not set +# CONFIG_MVIAC3_2 is not set +# CONFIG_MVIAC7 is not set +# CONFIG_X86_GENERIC is not set +CONFIG_X86_L1_CACHE_SHIFT=4 +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_ARCH_HAS_ILOG2_U32 is not set +# CONFIG_ARCH_HAS_ILOG2_U64 is not set +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_X86_PPRO_FENCE=y +CONFIG_X86_F00F_BUG=y +CONFIG_X86_MINIMUM_CPU_MODEL=0 +CONFIG_HPET_TIMER=y +# CONFIG_PREEMPT_NONE is not set +# CONFIG_PREEMPT_VOLUNTARY is not set +CONFIG_PREEMPT=y +CONFIG_PREEMPT_BKL=y +CONFIG_X86_UP_APIC=y +CONFIG_X86_UP_IOAPIC=y +CONFIG_X86_LOCAL_APIC=y +CONFIG_X86_IO_APIC=y +# CONFIG_X86_MCE is not set +# CONFIG_VM86 is not set +# CONFIG_TOSHIBA is not set +# CONFIG_I8K is not set +# CONFIG_X86_REBOOTFIXUPS is not set +# CONFIG_MICROCODE is not set +# CONFIG_X86_MSR is not set +# CONFIG_X86_CPUID is not set + +# +# Firmware Drivers +# +# CONFIG_EDD is not set +# CONFIG_DELL_RBU is not set +# CONFIG_DCDBAS is not set +CONFIG_NOHIGHMEM=y +# CONFIG_HIGHMEM4G is not set +# CONFIG_HIGHMEM64G is not set +CONFIG_VMSPLIT_3G=y +# CONFIG_VMSPLIT_3G_OPT is not set +# CONFIG_VMSPLIT_2G is not set +# CONFIG_VMSPLIT_2G_OPT is not set +# CONFIG_VMSPLIT_1G is not set +CONFIG_PAGE_OFFSET=0xC0000000 +CONFIG_ARCH_FLATMEM_ENABLE=y +CONFIG_ARCH_SPARSEMEM_ENABLE=y +CONFIG_ARCH_SELECT_MEMORY_MODEL=y +CONFIG_ARCH_POPULATES_NODE_MAP=y +CONFIG_SELECT_MEMORY_MODEL=y +CONFIG_FLATMEM_MANUAL=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_SPARSEMEM_MANUAL is not set +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_SPARSEMEM_STATIC=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_RESOURCES_64BIT is not set +CONFIG_ZONE_DMA_FLAG=1 +CONFIG_NR_QUICK=1 +# CONFIG_MATH_EMULATION is not set +# CONFIG_MTRR is not set +# CONFIG_SECCOMP is not set +# CONFIG_HZ_100 is not set +CONFIG_HZ_250=y +# CONFIG_HZ_300 is not set +# CONFIG_HZ_1000 is not set +CONFIG_HZ=250 +CONFIG_KEXEC=y +CONFIG_PHYSICAL_START=0x100000 +# CONFIG_RELOCATABLE is not set +CONFIG_PHYSICAL_ALIGN=0x100000 +CONFIG_COMPAT_VDSO=y + +# +# Power management options (ACPI, APM) +# +# CONFIG_PM is not set + +# +# CPU Frequency scaling +# +# CONFIG_CPU_FREQ is not set + +# +# Bus options (PCI, PCMCIA, EISA, MCA, ISA) +# +CONFIG_PCI=y +# CONFIG_PCI_GOBIOS is not set +# CONFIG_PCI_GOMMCONFIG is not set +# CONFIG_PCI_GODIRECT is not set +CONFIG_PCI_GOANY=y +CONFIG_PCI_BIOS=y +CONFIG_PCI_DIRECT=y +# CONFIG_PCIEPORTBUS is not set +CONFIG_ARCH_SUPPORTS_MSI=y +# CONFIG_PCI_MSI is not set +CONFIG_HT_IRQ=y +CONFIG_ISA_DMA_API=y +# CONFIG_ISA is not set +# CONFIG_MCA is not set +# CONFIG_SCx200 is not set + +# +# PCCARD (PCMCIA/CardBus) support +# +# CONFIG_PCCARD is not set +# CONFIG_HOTPLUG_PCI is not set + +# +# Executable file formats +# +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_AOUT is not set +# CONFIG_BINFMT_MISC is not set + +# +# Networking +# +CONFIG_NET=y + +# +# Networking options +# +# CONFIG_PACKET is not set +CONFIG_UNIX=y +# CONFIG_NET_KEY is not set +CONFIG_INET=y +# CONFIG_IP_MULTICAST is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +CONFIG_IP_FIB_HASH=y +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE is not set +# CONFIG_ARPD is not set +CONFIG_SYN_COOKIES=y +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_XFRM_TUNNEL is not set +# CONFIG_INET_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_DIAG is not set +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +# CONFIG_IPV6 is not set +# CONFIG_INET6_XFRM_TUNNEL is not set +# CONFIG_INET6_TUNNEL is not set +# CONFIG_NETWORK_SECMARK is not set +# CONFIG_NETFILTER is not set +# CONFIG_IP_DCCP is not set +# CONFIG_IP_SCTP is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +# CONFIG_BRIDGE is not set +# CONFIG_VLAN_8021Q is not set +# CONFIG_DECNET is not set +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_ECONET is not set +# CONFIG_WAN_ROUTER is not set + +# +# QoS and/or fair queueing +# +# CONFIG_NET_SCHED is not set + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +# CONFIG_IRDA is not set +# CONFIG_BT is not set +# CONFIG_AF_RXRPC is not set + +# +# Wireless +# +# CONFIG_CFG80211 is not set +# CONFIG_WIRELESS_EXT is not set +# CONFIG_MAC80211 is not set +# CONFIG_IEEE80211 is not set +# CONFIG_RFKILL is not set + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +# CONFIG_FW_LOADER is not set +# CONFIG_SYS_HYPERVISOR is not set + +# +# Connector - unified userspace <-> kernelspace linker +# +# CONFIG_CONNECTOR is not set +# CONFIG_MTD is not set + +# +# Parallel port support +# +# CONFIG_PARPORT is not set + +# +# Plug and Play support +# +# CONFIG_PNPACPI is not set + +# +# Block devices +# +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_CPQ_DA is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_UMEM is not set +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=y +# CONFIG_BLK_DEV_CRYPTOLOOP is not set +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_SX8 is not set +CONFIG_BLK_DEV_RAM=y +CONFIG_BLK_DEV_RAM_COUNT=16 +CONFIG_BLK_DEV_RAM_SIZE=65536 +CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024 +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set + +# +# Misc devices +# +# CONFIG_IBM_ASM is not set +# CONFIG_PHANTOM is not set +# CONFIG_SGI_IOC4 is not set +# CONFIG_TIFM_CORE is not set +CONFIG_IDE=y +CONFIG_IDE_MAX_HWIFS=4 +CONFIG_BLK_DEV_IDE=y + +# +# Please see Documentation/ide.txt for help/info on IDE drives +# +# CONFIG_BLK_DEV_IDE_SATA is not set +# CONFIG_BLK_DEV_HD_IDE is not set +# CONFIG_BLK_DEV_IDEDISK is not set +# CONFIG_IDEDISK_MULTI_MODE is not set +CONFIG_BLK_DEV_IDECD=y +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDEFLOPPY is not set +# CONFIG_BLK_DEV_IDESCSI is not set +# CONFIG_IDE_TASK_IOCTL is not set +# CONFIG_IDE_PROC_FS is not set + +# +# IDE chipset support/bugfixes +# +CONFIG_IDE_GENERIC=y +# CONFIG_BLK_DEV_CMD640 is not set +CONFIG_BLK_DEV_IDEPCI=y +CONFIG_IDEPCI_SHARE_IRQ=y +CONFIG_IDEPCI_PCIBUS_ORDER=y +# CONFIG_BLK_DEV_OFFBOARD is not set +CONFIG_BLK_DEV_GENERIC=y +# CONFIG_BLK_DEV_OPTI621 is not set +# CONFIG_BLK_DEV_RZ1000 is not set +CONFIG_BLK_DEV_IDEDMA_PCI=y +# CONFIG_BLK_DEV_IDEDMA_FORCED is not set +# CONFIG_IDEDMA_ONLYDISK is not set +# CONFIG_BLK_DEV_AEC62XX is not set +# CONFIG_BLK_DEV_ALI15X3 is not set +CONFIG_BLK_DEV_AMD74XX=y +# CONFIG_BLK_DEV_ATIIXP is not set +# CONFIG_BLK_DEV_CMD64X is not set +# CONFIG_BLK_DEV_TRIFLEX is not set +# CONFIG_BLK_DEV_CY82C693 is not set +# CONFIG_BLK_DEV_CS5520 is not set +# CONFIG_BLK_DEV_CS5530 is not set +# CONFIG_BLK_DEV_CS5535 is not set +# CONFIG_BLK_DEV_HPT34X is not set +# CONFIG_BLK_DEV_HPT366 is not set +# CONFIG_BLK_DEV_JMICRON is not set +# CONFIG_BLK_DEV_SC1200 is not set +# CONFIG_BLK_DEV_PIIX is not set +# CONFIG_BLK_DEV_IT8213 is not set +# CONFIG_BLK_DEV_IT821X is not set +# CONFIG_BLK_DEV_NS87415 is not set +# CONFIG_BLK_DEV_PDC202XX_OLD is not set +# CONFIG_BLK_DEV_PDC202XX_NEW is not set +# CONFIG_BLK_DEV_SVWKS is not set +# CONFIG_BLK_DEV_SIIMAGE is not set +# CONFIG_BLK_DEV_SIS5513 is not set +# CONFIG_BLK_DEV_SLC90E66 is not set +# CONFIG_BLK_DEV_TRM290 is not set +# CONFIG_BLK_DEV_VIA82CXXX is not set +# CONFIG_BLK_DEV_TC86C001 is not set +# CONFIG_IDE_ARM is not set +CONFIG_BLK_DEV_IDEDMA=y +# CONFIG_IDEDMA_IVB is not set +# CONFIG_BLK_DEV_HD is not set + +# +# SCSI device support +# +# CONFIG_RAID_ATTRS is not set +CONFIG_SCSI=y +# CONFIG_SCSI_TGT is not set +# CONFIG_SCSI_NETLINK is not set +# CONFIG_SCSI_PROC_FS is not set + +# +# SCSI support type (disk, tape, CD-ROM) +# +CONFIG_BLK_DEV_SD=y +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CHR_DEV_OSST is not set +# CONFIG_BLK_DEV_SR is not set +# CONFIG_CHR_DEV_SG is not set +# CONFIG_CHR_DEV_SCH is not set + +# +# Some SCSI devices (e.g. CD jukebox) support multiple LUNs +# +# CONFIG_SCSI_MULTI_LUN is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_LOGGING is not set +# CONFIG_SCSI_SCAN_ASYNC is not set + +# +# SCSI Transports +# +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_SAS_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set + +# +# SCSI low-level drivers +# +# CONFIG_ISCSI_TCP is not set +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_SCSI_3W_9XXX is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +# CONFIG_SCSI_AIC79XX is not set +# CONFIG_SCSI_AIC94XX is not set +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_ARCMSR is not set +# CONFIG_MEGARAID_NEWGEN is not set +# CONFIG_MEGARAID_LEGACY is not set +# CONFIG_MEGARAID_SAS is not set +# CONFIG_SCSI_HPTIOP is not set +# CONFIG_SCSI_BUSLOGIC is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_EATA is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GDTH is not set +# CONFIG_SCSI_IPS is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_STEX is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_SCSI_IPR is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_QLA_FC is not set +# CONFIG_SCSI_QLA_ISCSI is not set +# CONFIG_SCSI_LPFC is not set +# CONFIG_SCSI_DC395x is not set +# CONFIG_SCSI_DC390T is not set +# CONFIG_SCSI_NSP32 is not set +# CONFIG_SCSI_DEBUG is not set +# CONFIG_SCSI_SRP is not set +CONFIG_ATA=y +# CONFIG_ATA_NONSTANDARD is not set +# CONFIG_SATA_AHCI is not set +# CONFIG_SATA_SVW is not set +# CONFIG_ATA_PIIX is not set +# CONFIG_SATA_MV is not set +CONFIG_SATA_NV=y +# CONFIG_PDC_ADMA is not set +# CONFIG_SATA_QSTOR is not set +# CONFIG_SATA_PROMISE is not set +# CONFIG_SATA_SX4 is not set +# CONFIG_SATA_SIL is not set +# CONFIG_SATA_SIL24 is not set +# CONFIG_SATA_SIS is not set +# CONFIG_SATA_ULI is not set +# CONFIG_SATA_VIA is not set +# CONFIG_SATA_VITESSE is not set +# CONFIG_SATA_INIC162X is not set +# CONFIG_PATA_ALI is not set +# CONFIG_PATA_AMD is not set +# CONFIG_PATA_ARTOP is not set +# CONFIG_PATA_ATIIXP is not set +# CONFIG_PATA_CMD640_PCI is not set +# CONFIG_PATA_CMD64X is not set +# CONFIG_PATA_CS5520 is not set +# CONFIG_PATA_CS5530 is not set +# CONFIG_PATA_CS5535 is not set +# CONFIG_PATA_CYPRESS is not set +# CONFIG_PATA_EFAR is not set +# CONFIG_ATA_GENERIC is not set +# CONFIG_PATA_HPT366 is not set +# CONFIG_PATA_HPT37X is not set +# CONFIG_PATA_HPT3X2N is not set +# CONFIG_PATA_HPT3X3 is not set +# CONFIG_PATA_IT821X is not set +# CONFIG_PATA_IT8213 is not set +# CONFIG_PATA_JMICRON is not set +# CONFIG_PATA_TRIFLEX is not set +# CONFIG_PATA_MARVELL is not set +# CONFIG_PATA_MPIIX is not set +# CONFIG_PATA_OLDPIIX is not set +# CONFIG_PATA_NETCELL is not set +# CONFIG_PATA_NS87410 is not set +# CONFIG_PATA_OPTI is not set +# CONFIG_PATA_OPTIDMA is not set +# CONFIG_PATA_PDC_OLD is not set +# CONFIG_PATA_RADISYS is not set +# CONFIG_PATA_RZ1000 is not set +# CONFIG_PATA_SC1200 is not set +# CONFIG_PATA_SERVERWORKS is not set +# CONFIG_PATA_PDC2027X is not set +# CONFIG_PATA_SIL680 is not set +# CONFIG_PATA_SIS is not set +# CONFIG_PATA_VIA is not set +# CONFIG_PATA_WINBOND is not set +# CONFIG_PATA_PLATFORM is not set + +# +# Multi-device support (RAID and LVM) +# +# CONFIG_MD is not set + +# +# Fusion MPT device support +# +# CONFIG_FUSION is not set +# CONFIG_FUSION_SPI is not set +# CONFIG_FUSION_FC is not set +# CONFIG_FUSION_SAS is not set + +# +# IEEE 1394 (FireWire) support +# +# CONFIG_FIREWIRE is not set +# CONFIG_IEEE1394 is not set + +# +# I2O device support +# +# CONFIG_I2O is not set +# CONFIG_MACINTOSH_DRIVERS is not set + +# +# Network device support +# +CONFIG_NETDEVICES=y +CONFIG_DUMMY=y +# CONFIG_BONDING is not set +# CONFIG_EQUALIZER is not set +# CONFIG_TUN is not set +# CONFIG_ARCNET is not set + +# +# Ethernet (10 or 100Mbit) +# +# CONFIG_NET_ETHERNET is not set +CONFIG_NETDEV_1000=y +# CONFIG_ACENIC is not set +# CONFIG_DL2K is not set +# CONFIG_E1000 is not set +# CONFIG_NS83820 is not set +# CONFIG_HAMACHI is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_R8169 is not set +# CONFIG_SIS190 is not set +# CONFIG_SKGE is not set +# CONFIG_SKY2 is not set +# CONFIG_SK98LIN is not set +# CONFIG_VIA_VELOCITY is not set +CONFIG_TIGON3=y +# CONFIG_BNX2 is not set +# CONFIG_QLA3XXX is not set +# CONFIG_ATL1 is not set +# CONFIG_NETDEV_10000 is not set +# CONFIG_TR is not set + +# +# Wireless LAN +# +# CONFIG_WLAN_PRE80211 is not set +# CONFIG_WLAN_80211 is not set +# CONFIG_WAN is not set +# CONFIG_FDDI is not set +# CONFIG_HIPPI is not set +# CONFIG_PPP is not set +# CONFIG_SLIP is not set +# CONFIG_NET_FC is not set +# CONFIG_SHAPER is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set + +# +# ISDN subsystem +# +# CONFIG_ISDN is not set + +# +# Telephony Support +# +# CONFIG_PHONE is not set + +# +# Input device support +# +CONFIG_INPUT=y +# CONFIG_INPUT_FF_MEMLESS is not set +# CONFIG_INPUT_POLLDEV is not set + +# +# Userland interfaces +# +CONFIG_INPUT_MOUSEDEV=y +# CONFIG_INPUT_MOUSEDEV_PSAUX is not set +CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 +CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_TSDEV is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_EVBUG is not set + +# +# Input Device Drivers +# +CONFIG_INPUT_KEYBOARD=y +CONFIG_KEYBOARD_ATKBD=y +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_KEYBOARD_STOWAWAY is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_TABLET is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_MISC is not set + +# +# Hardware I/O ports +# +CONFIG_SERIO=y +CONFIG_SERIO_I8042=y +CONFIG_SERIO_SERPORT=y +# CONFIG_SERIO_CT82C710 is not set +# CONFIG_SERIO_PCIPS2 is not set +CONFIG_SERIO_LIBPS2=y +# CONFIG_SERIO_RAW is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_VT=y +CONFIG_VT_CONSOLE=y +CONFIG_HW_CONSOLE=y +# CONFIG_VT_HW_CONSOLE_BINDING is not set +# CONFIG_SERIAL_NONSTANDARD is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_PCI=y +CONFIG_SERIAL_8250_NR_UARTS=48 +CONFIG_SERIAL_8250_RUNTIME_UARTS=4 +# CONFIG_SERIAL_8250_EXTENDED is not set + +# +# Non-8250 serial port support +# +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_JSM is not set +CONFIG_UNIX98_PTYS=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=256 + +# +# IPMI +# +# CONFIG_IPMI_HANDLER is not set +# CONFIG_WATCHDOG is not set +# CONFIG_HW_RANDOM is not set +# CONFIG_NVRAM is not set +# CONFIG_RTC is not set +# CONFIG_GEN_RTC is not set +# CONFIG_R3964 is not set +# CONFIG_APPLICOM is not set +# CONFIG_SONYPI is not set +# CONFIG_AGP is not set +# CONFIG_DRM is not set +# CONFIG_MWAVE is not set +# CONFIG_PC8736x_GPIO is not set +# CONFIG_NSC_GPIO is not set +# CONFIG_CS5535_GPIO is not set +# CONFIG_RAW_DRIVER is not set +# CONFIG_HANGCHECK_TIMER is not set + +# +# TPM devices +# +# CONFIG_TCG_TPM is not set +# CONFIG_TELCLOCK is not set +CONFIG_DEVPORT=y +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +# CONFIG_I2C_CHARDEV is not set + +# +# I2C Algorithms +# +CONFIG_I2C_ALGOBIT=y +# CONFIG_I2C_ALGOPCF is not set +CONFIG_I2C_ALGOPCA=y + +# +# I2C Hardware Bus support +# +# CONFIG_I2C_ALI1535 is not set +# CONFIG_I2C_ALI1563 is not set +# CONFIG_I2C_ALI15X3 is not set +# CONFIG_I2C_AMD756 is not set +# CONFIG_I2C_AMD8111 is not set +# CONFIG_I2C_I801 is not set +# CONFIG_I2C_I810 is not set +# CONFIG_I2C_PIIX4 is not set +# CONFIG_I2C_NFORCE2 is not set +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_PROSAVAGE is not set +# CONFIG_I2C_SAVAGE4 is not set +# CONFIG_I2C_SIMTEC is not set +# CONFIG_SCx200_ACB is not set +# CONFIG_I2C_SIS5595 is not set +# CONFIG_I2C_SIS630 is not set +# CONFIG_I2C_SIS96X is not set +# CONFIG_I2C_VIA is not set +# CONFIG_I2C_VIAPRO is not set +# CONFIG_I2C_VOODOO3 is not set + +# +# Miscellaneous I2C Chip support +# +# CONFIG_SENSORS_DS1337 is not set +# CONFIG_SENSORS_DS1374 is not set +# CONFIG_SENSORS_EEPROM is not set +# CONFIG_SENSORS_PCF8574 is not set +# CONFIG_SENSORS_PCA9539 is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_SENSORS_MAX6875 is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CHIP is not set + +# +# SPI support +# +# CONFIG_SPI is not set +# CONFIG_SPI_MASTER is not set + +# +# Dallas's 1-wire bus +# +# CONFIG_W1 is not set +# CONFIG_HWMON is not set + +# +# Multifunction device drivers +# +# CONFIG_MFD_SM501 is not set + +# +# Multimedia devices +# +# CONFIG_VIDEO_DEV is not set +# CONFIG_DVB_CORE is not set +# CONFIG_DAB is not set + +# +# Graphics support +# +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set + +# +# Display device support +# +# CONFIG_DISPLAY_SUPPORT is not set +# CONFIG_VGASTATE is not set +# CONFIG_FB is not set + +# +# Console display driver support +# +CONFIG_VGA_CONSOLE=y +# CONFIG_VGACON_SOFT_SCROLLBACK is not set +# CONFIG_VIDEO_SELECT is not set +CONFIG_DUMMY_CONSOLE=y + +# +# Sound +# +# CONFIG_SOUND is not set + +# +# HID Devices +# +CONFIG_HID=y +# CONFIG_HID_DEBUG is not set + +# +# USB support +# +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_ARCH_HAS_EHCI=y +# CONFIG_USB is not set + +# +# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' +# + +# +# USB Gadget Support +# +# CONFIG_USB_GADGET is not set +# CONFIG_MMC is not set + +# +# LED devices +# +# CONFIG_NEW_LEDS is not set + +# +# LED drivers +# + +# +# LED Triggers +# + +# +# InfiniBand support +# +# CONFIG_INFINIBAND is not set + +# +# EDAC - error detection and reporting (RAS) (EXPERIMENTAL) +# +# CONFIG_EDAC is not set + +# +# Real Time Clock +# +# CONFIG_RTC_CLASS is not set + +# +# DMA Engine support +# +# CONFIG_DMA_ENGINE is not set + +# +# DMA Clients +# + +# +# DMA Devices +# + +# +# Virtualization +# +# CONFIG_KVM is not set + +# +# File systems +# +CONFIG_EXT2_FS=y +# CONFIG_EXT2_FS_XIP is not set +# CONFIG_EXT3_FS is not set +# CONFIG_EXT4DEV_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_FS_POSIX_ACL is not set +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_INOTIFY is not set +# CONFIG_QUOTA is not set +CONFIG_DNOTIFY=y +# CONFIG_AUTOFS_FS is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_FUSE_FS is not set + +# +# CD-ROM/DVD Filesystems +# +CONFIG_ISO9660_FS=y +CONFIG_JOLIET=y +# CONFIG_ZISOFS is not set +# CONFIG_UDF_FS is not set + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +CONFIG_PROC_KCORE=y +CONFIG_PROC_SYSCTL=y +CONFIG_SYSFS=y +CONFIG_TMPFS=y +# CONFIG_TMPFS_POSIX_ACL is not set +# CONFIG_HUGETLBFS is not set +# CONFIG_HUGETLB_PAGE is not set +CONFIG_RAMFS=y +# CONFIG_CONFIGFS_FS is not set + +# +# Miscellaneous filesystems +# +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_ECRYPT_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_CRAMFS is not set +# CONFIG_VXFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set + +# +# Network File Systems +# +# CONFIG_NFSD is not set +# CONFIG_SMB_FS is not set +# CONFIG_CIFS is not set +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set +# CONFIG_9P_FS is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y + +# +# Native Language Support +# +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="cp437" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_ASCII=y +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_UTF8 is not set + +# +# Distributed Lock Manager +# +# CONFIG_DLM is not set + +# +# Instrumentation Support +# +# CONFIG_PROFILING is not set + +# +# Kernel hacking +# +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +# CONFIG_PRINTK_TIME is not set +# CONFIG_ENABLE_MUST_CHECK is not set +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_UNUSED_SYMBOLS is not set +# CONFIG_DEBUG_FS is not set +# CONFIG_HEADERS_CHECK is not set +# CONFIG_DEBUG_KERNEL is not set +CONFIG_EARLY_PRINTK=y +CONFIG_X86_FIND_SMP_CONFIG=y +CONFIG_X86_MPPARSE=y +CONFIG_DOUBLEFAULT=y + +# +# Security options +# +CONFIG_KEYS=y +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set +# CONFIG_SECURITY is not set + +# +# Cryptographic options +# +CONFIG_CRYPTO=y +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_BLKCIPHER=y +CONFIG_CRYPTO_MANAGER=y +# CONFIG_CRYPTO_HMAC is not set +# CONFIG_CRYPTO_XCBC is not set +# CONFIG_CRYPTO_NULL is not set +# CONFIG_CRYPTO_MD4 is not set +CONFIG_CRYPTO_MD5=y +CONFIG_CRYPTO_SHA1=y +CONFIG_CRYPTO_SHA256=y +# CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_WP512 is not set +# CONFIG_CRYPTO_TGR192 is not set +# CONFIG_CRYPTO_GF128MUL is not set +# CONFIG_CRYPTO_ECB is not set +CONFIG_CRYPTO_CBC=y +# CONFIG_CRYPTO_PCBC is not set +# CONFIG_CRYPTO_LRW is not set +# CONFIG_CRYPTO_CRYPTD is not set +CONFIG_CRYPTO_DES=y +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_TWOFISH is not set +# CONFIG_CRYPTO_TWOFISH_586 is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_AES is not set +# CONFIG_CRYPTO_AES_586 is not set +CONFIG_CRYPTO_CAST5=y +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_TEA is not set +# CONFIG_CRYPTO_ARC4 is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_ANUBIS is not set +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_CRC32C is not set +# CONFIG_CRYPTO_CAMELLIA is not set + +# +# Hardware crypto devices +# +# CONFIG_CRYPTO_DEV_PADLOCK is not set +# CONFIG_CRYPTO_DEV_GEODE is not set + +# +# Library routines +# +CONFIG_BITREVERSE=y +CONFIG_CRC_CCITT=y +CONFIG_CRC16=y +# CONFIG_CRC_ITU_T is not set +CONFIG_CRC32=y +CONFIG_LIBCRC32C=y +CONFIG_PLIST=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_DMA=y +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_X86_BIOS_REBOOT=y +CONFIG_KTIME_SCALAR=y Added: buildrom-devel/packages/kernel/qemu-kernel.mk =================================================================== --- buildrom-devel/packages/kernel/qemu-kernel.mk (rev 0) +++ buildrom-devel/packages/kernel/qemu-kernel.mk 2007-12-06 16:38:25 UTC (rev 78) @@ -0,0 +1,26 @@ +# Build file for the QEMU LAB kernel + +KERNEL_URL=http://kernel.org/pub/linux/kernel/v2.6/ +KERNEL_SOURCE=linux-$(KERNEL_VERSION).tar.bz2 + +# Kernel config is set in the platform configuration + +TINY_URL=http://elinux.org/images/0/0e/ +TINY_SOURCE=Tiny-quilt-2.6.22.1-1.tar.gz +TINY_DIR=$(KERNEL_DIR)/tiny/patches + +KERNEL_PATCHES += $(TINY_DIR) + +$(SOURCE_DIR)/$(KERNEL_SOURCE): + @ mkdir -p $(SOURCE_DIR) + @ wget -P $(SOURCE_DIR) $(KERNEL_URL)/$(KERNEL_SOURCE) + +$(SOURCE_DIR)/$(TINY_SOURCE): + @ mkdir -p $(SOURCE_DIR) + @ wget -P $(SOURCE_DIR) $(TINY_URL)/$(TINY_SOURCE) + +include $(PACKAGE_DIR)/kernel/kernel.inc + +kernel: generic-kernel +kernel-clean: generic-kernel-clean +kernel-distclean: generic-kernel-distclean Added: buildrom-devel/packages/linuxbios/conf.v3/qemu.conf =================================================================== --- buildrom-devel/packages/linuxbios/conf.v3/qemu.conf (rev 0) +++ buildrom-devel/packages/linuxbios/conf.v3/qemu.conf 2007-12-06 16:38:25 UTC (rev 78) @@ -0,0 +1,89 @@ +# +# Automatically generated make config: don't edit +# LinuxBIOS version: 3.0.0 +# Wed Dec 5 11:10:31 2007 +# + +# +# General setup +# +# CONFIG_EXPERIMENTAL is not set +# CONFIG_EXPERT is not set +CONFIG_LOCALVERSION="" + +# +# Mainboard +# +# CONFIG_VENDOR_ADL is not set +# CONFIG_VENDOR_AMD is not set +# CONFIG_VENDOR_ARTECGROUP is not set +CONFIG_VENDOR_EMULATION=y +# CONFIG_VENDOR_PCENGINES is not set +CONFIG_MAINBOARD_NAME="emulation/qemu-x86" +CONFIG_MAINBOARD_PCI_SUBSYSTEM_VENDOR_ID=0x15ad +CONFIG_MAINBOARD_PCI_SUBSYSTEM_DEVICE_ID=0x1976 +CONFIG_BOARD_EMULATION_QEMU_X86=y +# CONFIG_LINUXBIOS_ROMSIZE_KB_128 is not set +# CONFIG_LINUXBIOS_ROMSIZE_KB_256 is not set +# CONFIG_LINUXBIOS_ROMSIZE_KB_512 is not set +# CONFIG_LINUXBIOS_ROMSIZE_KB_1024 is not set +CONFIG_LINUXBIOS_ROMSIZE_KB_2048=y +CONFIG_LINUXBIOS_ROMSIZE_KB=2048 +CONFIG_ARCH_X86=y +CONFIG_ARCH="x86" +CONFIG_CPU_I586=y +CONFIG_OPTION_TABLE=y + +# +# Compression +# +# CONFIG_COMPRESSION_LZMA is not set +# CONFIG_COMPRESSION_NRV2B is not set +# CONFIG_DEFAULT_COMPRESSION_LZMA is not set +# CONFIG_DEFAULT_COMPRESSION_NRV2B is not set +CONFIG_DEFAULT_COMPRESSION_NONE=y + +# +# Console +# +CONFIG_CONSOLE=y +CONFIG_CONSOLE_LOGLEVEL_8=y +# CONFIG_CONSOLE_LOGLEVEL_7 is not set +# CONFIG_CONSOLE_LOGLEVEL_6 is not set +# CONFIG_CONSOLE_LOGLEVEL_5 is not set +# CONFIG_CONSOLE_LOGLEVEL_4 is not set +# CONFIG_CONSOLE_LOGLEVEL_3 is not set +# CONFIG_CONSOLE_LOGLEVEL_2 is not set +# CONFIG_CONSOLE_LOGLEVEL_1 is not set +# CONFIG_CONSOLE_LOGLEVEL_0 is not set +CONFIG_DEFAULT_CONSOLE_LOGLEVEL=8 +CONFIG_CONSOLE_SERIAL=y +CONFIG_CONSOLE_SERIAL_COM1=y +# CONFIG_CONSOLE_SERIAL_COM2 is not set +CONFIG_CONSOLE_SERIAL_115200=y +# CONFIG_CONSOLE_SERIAL_57600 is not set +# CONFIG_CONSOLE_SERIAL_38400 is not set +# CONFIG_CONSOLE_SERIAL_19200 is not set +# CONFIG_CONSOLE_SERIAL_9600 is not set + +# +# Devices +# +CONFIG_PCI_OPTION_ROM_RUN=y +# CONFIG_PCI_OPTION_ROM_RUN_X86EMU is not set +CONFIG_PCI_OPTION_ROM_RUN_VM86=y +# CONFIG_PCI_OPTION_ROM_RUN_NONE is not set +# CONFIG_MULTIPLE_VGA_INIT is not set +# CONFIG_INITIALIZE_ONBOARD_VGA_FIRST is not set +CONFIG_NORTHBRIDGE_INTEL_I440BXEMULATION=y +CONFIG_SOUTHBRIDGE_INTEL_I82371EB=y +CONFIG_SUPERIO_WINBOND_W83627HF=y +CONFIG_NORTHBRIDGE_INTEL_I440BXEMULATION_RAMSIZE=32 + +# +# Payload +# +# CONFIG_PAYLOAD_PREPARSE_ELF is not set +CONFIG_PAYLOAD_ELF=y +# CONFIG_PAYLOAD_NONE is not set +CONFIG_PAYLOAD_FILE="payload.elf" Added: buildrom-devel/packages/linuxbios/patches/lgdt.patch =================================================================== --- buildrom-devel/packages/linuxbios/patches/lgdt.patch (rev 0) +++ buildrom-devel/packages/linuxbios/patches/lgdt.patch 2007-12-06 16:38:25 UTC (rev 78) @@ -0,0 +1,14 @@ +Index: svn/arch/x86/stage0_i586.S +=================================================================== +--- svn/arch/x86/stage0_i586.S (revision 539) ++++ svn/arch/x86/stage0_i586.S (working copy) +@@ -56,7 +56,8 @@ + * the ld hackery and other things. So leave it as is with this comment. + */ + +- data32 lgdt %cs:gdtptr ++ movl $gdtptr, %ebx ++ lgdt %cs:(%bx) + + movl %cr0, %eax + andl $0x7FFAFFD1, %eax /* PG,AM,WP,NE,TS,EM,MP = 0 */ Added: buildrom-devel/packages/linuxbios/patches/qemu-lab.patch =================================================================== --- buildrom-devel/packages/linuxbios/patches/qemu-lab.patch (rev 0) +++ buildrom-devel/packages/linuxbios/patches/qemu-lab.patch 2007-12-06 16:38:25 UTC (rev 78) @@ -0,0 +1,28 @@ +Index: svn/targets/emulation/qemu-i386/Config.lb +=================================================================== +--- svn/targets/emulation/qemu-i386/Config.lb (revision 2950) ++++ svn/targets/emulation/qemu-i386/Config.lb (working copy) +@@ -3,7 +3,9 @@ + target qemu-i386 + mainboard emulation/qemu-i386 + +-option ROM_SIZE=256*1024 ++option ROM_SIZE=2048*1024 ++option CONFIG_COMPRESSED_PAYLOAD_LZMA=0 ++option CONFIG_PRECOMPRESSED_PAYLOAD=0 + + option CC="gcc -m32" + +@@ -12,9 +14,9 @@ + + romimage "image" + option ROM_IMAGE_SIZE=0x10000 +- option LINUXBIOS_EXTRA_VERSION="-GRUB2" +- payload /home/stepan/core.img ++ option LINUXBIOS_EXTRA_VERSION="-LAB" ++ payload ../payload.elf + end + +-buildrom ./qemu-bios.rom ROM_SIZE "image" ++buildrom ./qemu.rom ROM_SIZE "image" + Added: buildrom-devel/packages/linuxbios/patches/qemu-payload.patch =================================================================== --- buildrom-devel/packages/linuxbios/patches/qemu-payload.patch (rev 0) +++ buildrom-devel/packages/linuxbios/patches/qemu-payload.patch 2007-12-06 16:38:25 UTC (rev 78) @@ -0,0 +1,24 @@ +Index: svn/targets/emulation/qemu-i386/Config.lb +=================================================================== +--- svn/targets/emulation/qemu-i386/Config.lb (revision 2950) ++++ svn/targets/emulation/qemu-i386/Config.lb (working copy) +@@ -4,6 +4,8 @@ + mainboard emulation/qemu-i386 + + option ROM_SIZE=256*1024 ++option CONFIG_COMPRESSED_PAYLOAD_LZMA=0 ++option CONFIG_PRECOMPRESSED_PAYLOAD=0 + + option CC="gcc -m32" + +@@ -13,8 +15,8 @@ + romimage "image" + option ROM_IMAGE_SIZE=0x10000 + option LINUXBIOS_EXTRA_VERSION="-GRUB2" +- payload /home/stepan/core.img ++ payload ../payload.elf + end + +-buildrom ./qemu-bios.rom ROM_SIZE "image" ++buildrom ./qemu.rom ROM_SIZE "image" + Added: buildrom-devel/packages/linuxbios/qemu.mk =================================================================== --- buildrom-devel/packages/linuxbios/qemu.mk (rev 0) +++ buildrom-devel/packages/linuxbios/qemu.mk 2007-12-06 16:38:25 UTC (rev 78) @@ -0,0 +1,50 @@ +# This is the QEMU LinuxBIOS target + +ifeq ($(CONFIG_PLATFORM),y) +ifeq ($(LINUXBIOS_TAG),) +$(error You need to specify a version to pull in your platform config) +endif +endif + +LINUXBIOS_PATCHES = + + + +LINUXBIOS_BASE_DIR=svn +TARGET_ROM = $(LINUXBIOS_VENDOR)-$(LINUXBIOS_BOARD).rom +LINUXBIOS_PAYLOAD_TARGET=$(LINUXBIOS_BUILD_DIR)/payload.elf + +ifeq ($(CONFIG_LINUXBIOS_V3),y) + LINUXBIOS_URL=svn://linuxbios.org/repository/LinuxBIOSv3 + LINUXBIOS_TARBALL=linuxbiosv3-svn-$(LINUXBIOS_TAG).tar.gz + ifeq ($(CONFIG_LINUXBIOS_V3_LGDT_PATCH),y) + LINUXBIOS_PATCHES += $(PACKAGE_DIR)/linuxbios/patches/lgdt.patch + endif + LINUXBIOS_SVN_DIR=$(SOURCE_DIR)/linuxbiosv3 +else + ifeq ($(CONFIG_PAYLOAD_LAB),y) + LINUXBIOS_PATCHES += $(PACKAGE_DIR)/linuxbios/patches/qemu-lab.patch + else + LINUXBIOS_PATCHES += $(PACKAGE_DIR)/linuxbios/patches/qemu-payload.patch + endif + LINUXBIOS_URL=svn://linuxbios.org/repos/trunk/LinuxBIOSv2 + LINUXBIOS_TARBALL=linuxbios-svn-$(LINUXBIOS_TAG).tar.gz + LINUXBIOS_SVN_DIR=$(SOURCE_DIR)/linuxbios +endif + +include $(PACKAGE_DIR)/linuxbios/linuxbios.inc + +$(SOURCE_DIR)/$(LINUXBIOS_TARBALL): + @ echo "Fetching the LinuxBIOS code..." + @ mkdir -p $(SOURCE_DIR)/linuxbios + @ $(BIN_DIR)/fetchsvn.sh $(LINUXBIOS_URL) $(LINUXBIOS_SVN_DIR) \ + $(LINUXBIOS_TAG) $(SOURCE_DIR)/$(LINUXBIOS_TARBALL) \ + > $(LINUXBIOS_FETCH_LOG) 2>&1 + +$(OUTPUT_DIR)/$(TARGET_ROM): $(LINUXBIOS_OUTPUT) + @ mkdir -p $(OUTPUT_DIR) + @ cp $< $@ + +linuxbios: $(OUTPUT_DIR)/$(TARGET_ROM) +linuxbios-clean: generic-linuxbios-clean +linuxbios-distclean: generic-linuxbios-distclean Added: buildrom-devel/packages/qemu/patches/qemu-bios-size.patch =================================================================== --- buildrom-devel/packages/qemu/patches/qemu-bios-size.patch (rev 0) +++ buildrom-devel/packages/qemu/patches/qemu-bios-size.patch 2007-12-06 16:38:25 UTC (rev 78) @@ -0,0 +1,31 @@ +diff -Naur qemu-0.9.0-orig/hw/pc.c qemu-0.9.0/hw/pc.c +--- qemu-0.9.0-orig/hw/pc.c 2007-07-29 19:34:43.000000000 -0300 ++++ qemu-0.9.0/hw/pc.c 2007-07-29 19:39:48.000000000 -0300 +@@ -481,13 +481,13 @@ + + /* BIOS load */ + bios_offset = ram_size + vga_ram_size; +- vga_bios_offset = bios_offset + 256 * 1024; ++ vga_bios_offset = bios_offset + 2048 * 1024; + + snprintf(buf, sizeof(buf), "%s/%s", bios_dir, BIOS_FILENAME); + bios_size = get_image_size(buf); + if (bios_size <= 0 || + (bios_size % 65536) != 0 || +- bios_size > (256 * 1024)) { ++ bios_size > (2048 * 1024)) { + goto bios_error; + } + ret = load_image(buf, phys_ram_base + bios_offset); +diff -Naur qemu-0.9.0-orig/vl.h qemu-0.9.0/vl.h +--- qemu-0.9.0-orig/vl.h 2007-07-29 19:34:43.000000000 -0300 ++++ qemu-0.9.0/vl.h 2007-07-29 19:40:19.000000000 -0300 +@@ -170,7 +170,7 @@ + #elif defined(TARGET_MIPS) + #define BIOS_SIZE (4 * 1024 * 1024) + #else +-#define BIOS_SIZE ((256 + 64) * 1024) ++#define BIOS_SIZE ((2048 + 64) * 1024) + #endif + + /* keyboard/mouse support */ Added: buildrom-devel/packages/qemu/patches/qemu-isa-bios-ram.patch =================================================================== --- buildrom-devel/packages/qemu/patches/qemu-isa-bios-ram.patch (rev 0) +++ buildrom-devel/packages/qemu/patches/qemu-isa-bios-ram.patch 2007-12-06 16:38:25 UTC (rev 78) @@ -0,0 +1,24 @@ +Index: qemu-snapshot-2007-02-09_05/hw/pc.c +=================================================================== +--- qemu-snapshot-2007-02-09_05.orig/hw/pc.c ++++ qemu-snapshot-2007-02-09_05/hw/pc.c +@@ -522,15 +522,13 @@ static void pc_init1(int ram_size, int v + cpu_register_physical_memory(0xc0000, 0x10000, + vga_bios_offset | IO_MEM_ROM); + +- /* map the last 128KB of the BIOS in ISA space */ ++ /* copy the last 128KB of the BIOS to ISA space */ + isa_bios_size = bios_size; + if (isa_bios_size > (128 * 1024)) + isa_bios_size = 128 * 1024; +- cpu_register_physical_memory(0xd0000, (192 * 1024) - isa_bios_size, +- IO_MEM_UNASSIGNED); +- cpu_register_physical_memory(0x100000 - isa_bios_size, +- isa_bios_size, +- (bios_offset + bios_size - isa_bios_size) | IO_MEM_ROM); ++ memcpy(phys_ram_base + 0x100000 - isa_bios_size, ++ phys_ram_base + bios_offset + bios_size - isa_bios_size, ++ isa_bios_size); + + { + ram_addr_t option_rom_offset; Added: buildrom-devel/packages/qemu/patches/qemu-piix-ram-size.patch =================================================================== --- buildrom-devel/packages/qemu/patches/qemu-piix-ram-size.patch (rev 0) +++ buildrom-devel/packages/qemu/patches/qemu-piix-ram-size.patch 2007-12-06 16:38:25 UTC (rev 78) @@ -0,0 +1,50 @@ +Index: qemu-snapshot-2007-02-09_05/hw/piix_pci.c +=================================================================== +--- qemu-snapshot-2007-02-09_05.orig/hw/piix_pci.c ++++ qemu-snapshot-2007-02-09_05/hw/piix_pci.c +@@ -155,7 +155,7 @@ static int i440fx_load(QEMUFile* f, void + return 0; + } + +-PCIBus *i440fx_init(PCIDevice **pi440fx_state) ++PCIBus *i440fx_init(PCIDevice **pi440fx_state, int ram_size) + { + PCIBus *b; + PCIDevice *d; +@@ -186,6 +186,10 @@ PCIBus *i440fx_init(PCIDevice **pi440fx_ + d->config[0x0a] = 0x00; // class_sub = host2pci + d->config[0x0b] = 0x06; // class_base = PCI_bridge + d->config[0x0e] = 0x00; // header_type ++ ram_size = ram_size / 8 / 1024 / 1024; ++ if (ram_size > 255) ++ ram_size = 255; ++ d->config[0x57] = ram_size; + + d->config[0x72] = 0x02; /* SMRAM */ + +Index: qemu-snapshot-2007-02-09_05/hw/pc.c +=================================================================== +--- qemu-snapshot-2007-02-09_05.orig/hw/pc.c ++++ qemu-snapshot-2007-02-09_05/hw/pc.c +@@ -623,7 +623,7 @@ static void pc_init1(int ram_size, int v + } + + if (pci_enabled) { +- pci_bus = i440fx_init(&i440fx_state); ++ pci_bus = i440fx_init(&i440fx_state, ram_size); + piix3_devfn = piix3_init(pci_bus, -1); + } else { + pci_bus = NULL; +Index: qemu-snapshot-2007-02-09_05/vl.h +=================================================================== +--- qemu-snapshot-2007-02-09_05.orig/vl.h ++++ qemu-snapshot-2007-02-09_05/vl.h +@@ -841,7 +841,7 @@ PCIBus *pci_apb_init(target_ulong specia + PCIBus *pci_vpb_init(void *pic, int irq, int realview); + + /* piix_pci.c */ +-PCIBus *i440fx_init(PCIDevice **pi440fx_state); ++PCIBus *i440fx_init(PCIDevice **pi440fx_state, int ram_size); + void i440fx_set_smm(PCIDevice *d, int val); + int piix3_init(PCIBus *bus, int devfn); + void i440fx_init_memory_mappings(PCIDevice *d); Added: buildrom-devel/packages/qemu/qemu.mk =================================================================== --- buildrom-devel/packages/qemu/qemu.mk (rev 0) +++ buildrom-devel/packages/qemu/qemu.mk 2007-12-06 16:38:25 UTC (rev 78) @@ -0,0 +1,56 @@ +QEMU_URL=http://fabrice.bellard.free.fr/qemu/ +QEMU_SOURCE=qemu-0.9.0.tar.gz +QEMU_DIR=$(BUILD_DIR)/qemu +QEMU_SRC_DIR=$(QEMU_DIR)/qemu-0.9.0 +QEMU_STAMP_DIR=$(QEMU_DIR)/stamps +QEMU_LOG_DIR=$(QEMU_DIR)/logs + +QEMU_PATCHES=$(PACKAGE_DIR)/qemu/patches/qemu-bios-size.patch +QEMU_PATCHES+=$(PACKAGE_DIR)/qemu/patches/qemu-isa-bios-ram.patch +QEMU_PATCHES+=$(PACKAGE_DIR)/qemu/patches/qemu-piix-ram-size.patch + +ifeq ($(CONFIG_VERBOSE),y) +QEMU_BUILD_LOG=/dev/stdout +QEMU_CONFIG_LOG=/dev/stdout +else +QEMU_BUILD_LOG=$(QEMU_LOG_DIR)/build.log +QEMU_CONFIG_LOG=$(QEMU_LOG_DIR)/config.log +endif + +$(SOURCE_DIR)/$(QEMU_SOURCE): + @ mkdir -p $(SOURCE_DIR) + @ wget -P $(SOURCE_DIR) $(QEMU_URL)/$(QEMU_SOURCE) + +$(QEMU_STAMP_DIR)/.unpacked: $(SOURCE_DIR)/$(QEMU_SOURCE) + @ echo "Unpacking qemu..." + @ tar -C $(QEMU_DIR) -zxf $(SOURCE_DIR)/$(QEMU_SOURCE) + @ touch $@ + +$(QEMU_STAMP_DIR)/.patched: $(QEMU_STAMP_DIR)/.unpacked + @ echo "Patching qemu..." + @ $(BIN_DIR)/doquilt.sh $(QEMU_SRC_DIR) $(QEMU_PATCHES) + @ touch $@ + +$(QEMU_STAMP_DIR)/.configured: $(QEMU_STAMP_DIR)/.patched + @ cd $(QEMU_SRC_DIR); ./configure --cc=gcc32 --target-list=i386-softmmu + @ touch $@ + +$(QEMU_SRC_DIR)/i386-softmmu/qemu: $(QEMU_STAMP_DIR)/.configured + @ make -C $(QEMU_SRC_DIR) CC=$(CONFIG_QEMU_CC) CCFLAGS="" CFLAGS="" LDFLAGS="" + @ echo "the qemu executable is in $(QEMU_SRC_DIR)/i386-softmmu/" + +$(QEMU_STAMP_DIR) $(QEMU_LOG_DIR): + @ mkdir -p $@ + +qemu: $(QEMU_STAMP_DIR) $(QEMU_LOG_DIR) $(QEMU_SRC_DIR)/i386-softmmu/qemu + +qemu-clean: + $(MAKE) -C $(QEMU_SRC_DIR) clean + +qemu-distclean: + @ rm -rf $(QEMU_DIR)/* + +qemu-bom: + echo "Package: qemu" + echo "Source: $(QEMU_URL)/$(QEMU_SOURCE)" + echo "" From c-d.hailfinger.devel.2006 at gmx.net Thu Dec 6 17:40:51 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Thu, 06 Dec 2007 17:40:51 +0100 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <009e01c83825$d1881140$4b23040a@chimp> References: <017601c835d8$02a2a240$480110ac@chimp> <20071203182927.GB23382@cosmic.amd.com> <20071204052804.GH20788@greenwood> <000001c836c5$16bd6fb0$4b23040a@chimp> <13426df10712042034x44d87ab6m7a8797de27f3f161@mail.gmail.com> <2831fecf0712051228g74f4152ard30e9e76411b434a@mail.gmail.com> <47570C15.8040806@gmail.com> <2831fecf0712051507r36b8adc3r5d73c4c22aebf9c4@mail.gmail.com> <2831fecf0712060757u75a2e91oa32fd1d4efc0d49@mail.gmail.com> <2831fecf0712060800p9280d16ne5f22275d040351d@mail.gmail.com> <20071206162600.GB5380@cosmic.amd.com> <009e01c83825$d1881140$4b23040a@chimp> Message-ID: <47582613.8090000@gmx.net> On 06.12.2007 17:34, Myles Watson wrote: > >> -----Original Message----- >> From: Jordan Crouse [mailto:jordan.crouse at amd.com] >> Sent: Thursday, December 06, 2007 9:26 AM >> To: Myles Watson >> Cc: Linuxbios >> Subject: Re: State of the buildrom >> >> On 06/12/07 09:00 -0700, Myles Watson wrote: >> >>> And the patch :) >>> >>>> Myles >>>> >>>> Signed-off-by: Myles Watson >>>> >>>> >> r77. Everybody please update - and go nuts. >> > > None of the new files came through. They look like they're in the patch, > but not in the commit. Am I supposed to generate the patches differently? > I'm just using > svn diff buildrom-devel > If you added new files, you have to issue svn add path/to/file before svn diff and/or svn commit. Regards, Carl-Daniel From jordan.crouse at amd.com Thu Dec 6 17:46:51 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Thu, 6 Dec 2007 09:46:51 -0700 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <009e01c83825$d1881140$4b23040a@chimp> References: <20071204052804.GH20788@greenwood> <000001c836c5$16bd6fb0$4b23040a@chimp> <13426df10712042034x44d87ab6m7a8797de27f3f161@mail.gmail.com> <2831fecf0712051228g74f4152ard30e9e76411b434a@mail.gmail.com> <47570C15.8040806@gmail.com> <2831fecf0712051507r36b8adc3r5d73c4c22aebf9c4@mail.gmail.com> <2831fecf0712060757u75a2e91oa32fd1d4efc0d49@mail.gmail.com> <2831fecf0712060800p9280d16ne5f22275d040351d@mail.gmail.com> <20071206162600.GB5380@cosmic.amd.com> <009e01c83825$d1881140$4b23040a@chimp> Message-ID: <20071206164651.GC5380@cosmic.amd.com> On 06/12/07 09:34 -0700, Myles Watson wrote: > > > > -----Original Message----- > > From: Jordan Crouse [mailto:jordan.crouse at amd.com] > > Sent: Thursday, December 06, 2007 9:26 AM > > To: Myles Watson > > Cc: Linuxbios > > Subject: Re: State of the buildrom > > > > On 06/12/07 09:00 -0700, Myles Watson wrote: > > > And the patch :) > > > > > > > > Myles > > > > > > > > Signed-off-by: Myles Watson > > > > > > > > r77. Everybody please update - and go nuts. > > None of the new files came through. They look like they're in the patch, > but not in the commit. Am I supposed to generate the patches differently? > I'm just using > svn diff buildrom-devel My bad - I screwed it up on my end. > Thanks, > Myles > > > > > > -- > > > linuxbios mailing list > > > linuxbios at linuxbios.org > > > http://www.linuxbios.org/mailman/listinfo/linuxbios > > > > -- > > Jordan Crouse > > Systems Software Development Engineer > > Advanced Micro Devices, Inc. > > > > > -- > linuxbios mailing list > linuxbios at linuxbios.org > http://www.linuxbios.org/mailman/listinfo/linuxbios > > -- Jordan Crouse Systems Software Development Engineer Advanced Micro Devices, Inc. From c-d.hailfinger.devel.2006 at gmx.net Thu Dec 6 17:50:07 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Thu, 06 Dec 2007 17:50:07 +0100 Subject: [LinuxBIOS] flashrom fails on GA-M57SLI with 1MB ROM In-Reply-To: <20071205180419.GA3690@flashgordon> References: <200711220102.29902.duwe@lst.de> <20071122072446.GA20729@flashgordon> <474777D4.30300@gmx.net> <20071125085413.GA3488@flashgordon> <474AB535.3030001@gmx.net> <20071126190059.GA4477@flashgordon> <474B64D1.1070904@gmx.net> <20071201091136.GA4277@flashgordon> <20071201233401.GA4260@flashgordon> <4755F24B.1090400@gmx.net> <20071205180419.GA3690@flashgordon> Message-ID: <4758283F.7010800@gmx.net> On 05.12.2007 19:04, Andreas B. Mundt wrote: >>> This has been changed in rev 2972. Buildrom has still the 'old' >>> version. Flashing works fine for me if irq 0xc9 = 0x0 is set. With irq >>> 0xc9 = 0x40 it fails. >>> >>> >> OK, is that a difference between board revisions, BIOS revisions or just >> a misinterpretation of some superiotool dump? >> >> I can see that your latest superiotool dump with the proprietary BIOS >> has irq 0xc9 = 0x40 set. I tried to mirror that. Now the interesting >> question is: Why does that setting not work for you? >> >> To track this down, I need: >> * superiotool dump of proprietary BIOS for board revisions 1.0, 1.1, >> 2.0, 2.x >> * the exact BIOS version of the proprietary BIOS. >> >> > > I double checked proprietary BIOS (F9), LB with 0xc9 = 0x40 and LB with > 0xc9 = 0x0. But all I said previously is still true for my board (rev 1.0): > > For proprietary BIOS: 0xc9 = 0x40 flashing ok. > For LB with : 0xc9 = 0x0 flashing ok. > For LB with : 0xc9 = 0x40 flashing/erase fails. > Narf. This is getting less than pleasant. Probably some SIO config has to be changed as well. I had hoped to avoid that. Ping me in two weeks if no patch for SIO dumping has appeared till then. Regards, Carl-Daniel From myles at pel.cs.byu.edu Thu Dec 6 18:00:24 2007 From: myles at pel.cs.byu.edu (Myles Watson) Date: Thu, 6 Dec 2007 10:00:24 -0700 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <20071206164651.GC5380@cosmic.amd.com> References: <20071204052804.GH20788@greenwood> <000001c836c5$16bd6fb0$4b23040a@chimp> <13426df10712042034x44d87ab6m7a8797de27f3f161@mail.gmail.com> <2831fecf0712051228g74f4152ard30e9e76411b434a@mail.gmail.com> <47570C15.8040806@gmail.com> <2831fecf0712051507r36b8adc3r5d73c4c22aebf9c4@mail.gmail.com> <2831fecf0712060757u75a2e91oa32fd1d4efc0d49@mail.gmail.com> <2831fecf0712060800p9280d16ne5f22275d040351d@mail.gmail.com> <20071206162600.GB5380@cosmic.amd.com> <009e01c83825$d1881140$4b23040a@chimp> <20071206164651.GC5380@cosmic.amd.com> Message-ID: <00aa01c83829$7e3646c0$4b23040a@chimp> > > > > None of the new files came through. They look like they're in the > patch, > > but not in the commit. Am I supposed to generate the patches > differently? > > I'm just using > > svn diff buildrom-devel > > My bad - I screwed it up on my end. > It seems easy to do. Is there an automated way to add files to svn with a patch. "svn patch" seems like it might be nice. (It would "svn add" files added in a patch) Myles From jordan.crouse at amd.com Thu Dec 6 18:10:27 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Thu, 6 Dec 2007 10:10:27 -0700 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <00aa01c83829$7e3646c0$4b23040a@chimp> References: <13426df10712042034x44d87ab6m7a8797de27f3f161@mail.gmail.com> <2831fecf0712051228g74f4152ard30e9e76411b434a@mail.gmail.com> <47570C15.8040806@gmail.com> <2831fecf0712051507r36b8adc3r5d73c4c22aebf9c4@mail.gmail.com> <2831fecf0712060757u75a2e91oa32fd1d4efc0d49@mail.gmail.com> <2831fecf0712060800p9280d16ne5f22275d040351d@mail.gmail.com> <20071206162600.GB5380@cosmic.amd.com> <009e01c83825$d1881140$4b23040a@chimp> <20071206164651.GC5380@cosmic.amd.com> <00aa01c83829$7e3646c0$4b23040a@chimp> Message-ID: <20071206171027.GD5380@cosmic.amd.com> On 06/12/07 10:00 -0700, Myles Watson wrote: > > > > > > > > None of the new files came through. They look like they're in the > > patch, > > > but not in the commit. Am I supposed to generate the patches > > differently? > > > I'm just using > > > svn diff buildrom-devel > > > > My bad - I screwed it up on my end. > > > > It seems easy to do. Is there an automated way to add files to svn with a > patch. > > "svn patch" seems like it might be nice. (It would "svn add" files added in > a patch) I have a script - it broke. I don't know why. Seesh - why is everybody acting like this is the first time anybody ever messed up a commit? :) Jordan -- Jordan Crouse Systems Software Development Engineer Advanced Micro Devices, Inc. From myles at pel.cs.byu.edu Thu Dec 6 18:14:41 2007 From: myles at pel.cs.byu.edu (Myles Watson) Date: Thu, 6 Dec 2007 10:14:41 -0700 Subject: [LinuxBIOS] LinuxBIOSv3 lgdt and gdtptr patch Message-ID: <2831fecf0712060914w19276cd5m1d3dc4f1139c1b37@mail.gmail.com> > -----Original Message----- > From: Carl-Daniel Hailfinger [mailto:c-d.hailfinger.devel.2006 at gmx.net] > Sent: Thursday, December 06, 2007 9:40 AM > To: myles at mouselemur.cs.byu.edu > Cc: 'Linuxbios' > Subject: Re: [LinuxBIOS] r77 - in buildrom-devel: . config/payloads > config/platforms packages/linuxbios > > On 06.12.2007 17:33, Myles Watson wrote: > >>> Modified: buildrom-devel/Config.in > >>> =================================================================== > >>> --- buildrom-devel/Config.in 2007-12-05 23:27:08 UTC (rev 76) > >>> +++ buildrom-devel/Config.in 2007-12-06 16:18:18 UTC (rev 77) > >>> @@ -43,6 +43,23 @@ > >>> > >>> menu "LinuxBIOS configuration" > >>> > >>> +config LINUXBIOS_V3 > >>> + bool "Use LinuxBIOSv3" > >>> + depends ADVANCED > >>> + default n > >>> + help > >>> + Use the v3 tree. LinuxBIOSv3 doesn't support all platforms yet. > >>> + > >>> +config LINUXBIOS_V3_LGDT_PATCH > >>> + bool "Avoid an error in stage0_i586 with some compilers" > >>> + depends LINUXBIOS_V3 > >>> + default n > >>> + help > >>> + Say 'y' here to use the patch from the mailing list to replace > >>> + "data32 lgdt %cs:gdtptr" with > >>> + "movl $gdtptr" > >>> + "%ebx lgdt %cs:(%bx)" > >>> + > >>> config USE_LZMA > >>> bool "Enable LZMA compression" > >>> depends !PAYLOAD_OFW > >>> > >>> > >> While I welcome almost everything in that patch, I dislike that part. > >> Either we agree on some code sequence that works for everyone or we > mark > >> some compilers "broken". > >> > > > > I like the "code sequence that works for everyone" thought. That's more > of > > a LinuxBIOSv3 issue than a buildrom issue, though. I'd hoped to make > people > > happy by not applying the patch by default. > > > > Can you send it in as a patch with a short description? If comments are > positive, we should just commit. It was submitted (but not in patch form) by Brendan Trotter http://www.mail-archive.com/linuxbios at linuxbios.org/msg08771.html Here it is in patch form. - data32 lgdt %cs:gdtptr + movl $gdtptr, %ebx + lgdt %cs:(%bx) It removes the first line, which causes some compilers to give a "truncated gdtptr" error, and replaces it with an intermediate load step. I think it should be tested by someone with the "working" compiler, to compare the output. Myles -------------- next part -------------- A non-text attachment was scrubbed... Name: lgdt.patch Type: application/octet-stream Size: 435 bytes Desc: not available URL: From corey.osgood at gmail.com Thu Dec 6 18:22:34 2007 From: corey.osgood at gmail.com (Corey Osgood) Date: Thu, 06 Dec 2007 12:22:34 -0500 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <20071206171027.GD5380@cosmic.amd.com> References: <13426df10712042034x44d87ab6m7a8797de27f3f161@mail.gmail.com> <2831fecf0712051228g74f4152ard30e9e76411b434a@mail.gmail.com> <47570C15.8040806@gmail.com> <2831fecf0712051507r36b8adc3r5d73c4c22aebf9c4@mail.gmail.com> <2831fecf0712060757u75a2e91oa32fd1d4efc0d49@mail.gmail.com> <2831fecf0712060800p9280d16ne5f22275d040351d@mail.gmail.com> <20071206162600.GB5380@cosmic.amd.com> <009e01c83825$d1881140$4b23040a@chimp> <20071206164651.GC5380@cosmic.amd.com> <00aa01c83829$7e3646c0$4b23040a@chimp> <20071206171027.GD5380@cosmic.amd.com> Message-ID: <47582FDA.90609@gmail.com> Jordan Crouse wrote: > On 06/12/07 10:00 -0700, Myles Watson wrote: > >> >>>> None of the new files came through. They look like they're in the >>>> >>> patch, >>> >>>> but not in the commit. Am I supposed to generate the patches >>>> >>> differently? >>> >>>> I'm just using >>>> svn diff buildrom-devel >>>> >>> My bad - I screwed it up on my end. >>> >>> >> It seems easy to do. Is there an automated way to add files to svn with a >> patch. >> >> "svn patch" seems like it might be nice. (It would "svn add" files added in >> a patch) >> > I have a script - it broke. I don't know why. Seesh - why is everybody > acting like this is the first time anybody ever messed up a commit? :) > > Jordan Because you don't make mistakes :p -Corey From jordan.crouse at amd.com Thu Dec 6 18:33:46 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Thu, 6 Dec 2007 10:33:46 -0700 Subject: [LinuxBIOS] State of the buildrom In-Reply-To: <47582FDA.90609@gmail.com> References: <47570C15.8040806@gmail.com> <2831fecf0712051507r36b8adc3r5d73c4c22aebf9c4@mail.gmail.com> <2831fecf0712060757u75a2e91oa32fd1d4efc0d49@mail.gmail.com> <2831fecf0712060800p9280d16ne5f22275d040351d@mail.gmail.com> <20071206162600.GB5380@cosmic.amd.com> <009e01c83825$d1881140$4b23040a@chimp> <20071206164651.GC5380@cosmic.amd.com> <00aa01c83829$7e3646c0$4b23040a@chimp> <20071206171027.GD5380@cosmic.amd.com> <47582FDA.90609@gmail.com> Message-ID: <20071206173346.GE5380@cosmic.amd.com> On 06/12/07 12:22 -0500, Corey Osgood wrote: > Jordan Crouse wrote: > > On 06/12/07 10:00 -0700, Myles Watson wrote: > > > >> > >>>> None of the new files came through. They look like they're in the > >>>> > >>> patch, > >>> > >>>> but not in the commit. Am I supposed to generate the patches > >>>> > >>> differently? > >>> > >>>> I'm just using > >>>> svn diff buildrom-devel > >>>> > >>> My bad - I screwed it up on my end. > >>> > >>> > >> It seems easy to do. Is there an automated way to add files to svn with a > >> patch. > >> > >> "svn patch" seems like it might be nice. (It would "svn add" files added in > >> a patch) > >> > > I have a script - it broke. I don't know why. Seesh - why is everybody > > acting like this is the first time anybody ever messed up a commit? :) > > > > Jordan > > Because you don't make mistakes :p You haven't known me very long, have you? Just wait.... :) > -Corey > > -- > linuxbios mailing list > linuxbios at linuxbios.org > http://www.linuxbios.org/mailman/listinfo/linuxbios > > -- Jordan Crouse Systems Software Development Engineer Advanced Micro Devices, Inc. From c-d.hailfinger.devel.2006 at gmx.net Thu Dec 6 18:52:25 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Thu, 06 Dec 2007 18:52:25 +0100 Subject: [LinuxBIOS] v3: State of hardware targets Message-ID: <475836D9.5060406@gmx.net> Hi Ron, does the current v3 tree allow you to boot on any hardware targets? If not, can you post the boot log so I can take a look? Regards, Carl-Daniel From myles at pel.cs.byu.edu Thu Dec 6 18:53:06 2007 From: myles at pel.cs.byu.edu (Myles Watson) Date: Thu, 6 Dec 2007 10:53:06 -0700 Subject: [LinuxBIOS] ADLO & biosdecode In-Reply-To: References: <20071205040816.16024.qmail@stuge.se> <47565EE6.7000506@coresystems.de> <004d01c8374c$a94c2100$4b23040a@chimp> Message-ID: <00af01c83830$db3505d0$4b23040a@chimp> > > You need to add a new version of the loader since the BIOS is larger, > and > > use the larger elf header. > > You mean the new version of ADLO is needed? > Yes, The file loader.s copies the BIOS into RAM and sets up the CMOS values. If you use the 32-bit BIOS, you need to make sure all of it gets copied. I was also messing around with this because the loader needs to be 4k-aligned to work with kexec, and that's the pathway I want to use. > > > > I'm planning on doing that in the near future. > > > > Anything I can help here? Or if you can give some hints, I will try to > do something (Currently I am not used to the ADLO code yet) These emails are from my latest progress. I hope to get back to it soon, but I'd love it if you beat me to it. http://www.mail-archive.com/linuxbios at linuxbios.org/msg12748.html http://www.mail-archive.com/linuxbios at linuxbios.org/msg12724.html Feel free to ask specific questions once you're digging. Thanks, Myles > Thanks, > Jun From Marc.Karasek at Sun.COM Thu Dec 6 19:57:56 2007 From: Marc.Karasek at Sun.COM (Marc Karasek) Date: Thu, 06 Dec 2007 13:57:56 -0500 Subject: [LinuxBIOS] Question about QEMU & FILO Message-ID: <47584634.1080102@sun.com> I am trying to get a system up using QEMU. I have compiled LinuxBIOS with Filo as a payload. I followed the steps on the wiki about making a harddrive image, I had to make it a bit bigger than 200M though. When I "boot" the system, it finds the kernel and the initrd image, but then when it gets a bit further it seems to have a problem with finding the harddrive image to boot from . Although it has already fetched the kernel and initrd from the image. Any pointers would be appreciated. Waiting for driver initialization. Loading ata_generic.ko module Trying to resume from LABEL=SWAP-sda2 Unable to access resume device (LABEL=SWAP-sda2) Creating root device. Mounting root filesystem. mount: could not find filesystem '/dev/root' Setting up other filesystems. Setting up new root fs setuproot: moving /dev failed: No such file or directory no fstab.sys, mounting internal defaults setuproot: error mounting /proc: No such file or directory setuproot: error mounting /sys: No such file or directory Switching to new root and running init. unmounting old /dev unmounting old /proc unmounting old /sys switchroot: mount failed: No such file or directory Booting has failed. -- /********************* Marc Karasek MTS Sun Microsystems mailto:marc.karasek at sun.com ph:770.360.6415 *********************/ From yasteve at gmail.com Thu Dec 6 20:09:08 2007 From: yasteve at gmail.com (Steve Isaacs) Date: Thu, 06 Dec 2007 11:09:08 -0800 Subject: [LinuxBIOS] I2c MUX -- pca9544 versus pca9548 Message-ID: <1196968148.24004.17.camel@biosbreath> I was dealing with a strange first-time issue that would cause problems on power on but appear fine after that. I'm working with a dual Opteron board with two banks of DIMMs on separate I2C buses connected to a pca9544 I2C mux. This problem manifested itself as a series of "no memory" messages during startup after power on. Calling dump_smbus_registers would appear to correct the problem since reading registers from the mux would leave the last channel enabled which would allow reading of the second bank of DIMMs. Which in turn meant that the second bank of DIMMs was being detected twice and created other mysterious problems with RAM. The issue was that unlike other 8 channel muxes the pca9544 is a 4 channel mux using a channel number and an enable bit to enable specific channels. Most other muxes I've seen use a bit mask -- one bit per channel -- to select channels and allow multiple channels to be selected at one time which appears to be the way the LinuxBIOS code assumes a mux to work. I was able to work around this problem by adding code to my cache_as_ram_auto.c: static inline void activate_spd_rom(const struct mem_controller *ctrl) { #define SMBUS_HUB 0x71 int ret,i; unsigned device=(ctrl->channel0[0])>>8; smbus_send_byte(SMBUS_HUB, device | 0x04); } The OR of 0x04 ensures that the channel is properly enabled. To work fully this also required the following table be defined: #define RC0 (2<<8) #define RC1 (3<<8) #define DIMM0 0x50 #define DIMM1 0x51 #define DIMM2 0x52 #define DIMM3 0x53 static const uint16_t spd_addr[] = { RC0|DIMM0, RC0|DIMM2, 0, 0, RC0|DIMM1, RC0|DIMM3, 0, 0, #if CONFIG_MAX_PHYSICAL_CPUS > 1 RC1|DIMM0, RC1|DIMM2, 0, 0, RC1|DIMM1, RC1|DIMM3, 0, 0, #endif }; I have the feeling that this might be a viable work-around for me but not very generic. Looking at the code I could not find a better place to make these changes. Can someone point me to a better place if there is one? The reason I ask is I'm unsure if the channels need to be properly selected at a later time. Anything that uses I2C will need to select a channel. This fixes things for SPD ROMs but what about other devices. Suggestions? Thanks, Steve From corey.osgood at gmail.com Thu Dec 6 20:10:09 2007 From: corey.osgood at gmail.com (Corey Osgood) Date: Thu, 06 Dec 2007 14:10:09 -0500 Subject: [LinuxBIOS] Question about QEMU & FILO In-Reply-To: <47584634.1080102@sun.com> References: <47584634.1080102@sun.com> Message-ID: <47584911.5050405@gmail.com> Marc Karasek wrote: > I am trying to get a system up using QEMU. I have compiled LinuxBIOS > with Filo as a payload. > > I followed the steps on the wiki about making a harddrive image, I had > to make it a bit bigger than 200M though. > When I "boot" the system, it finds the kernel and the initrd image, but > then when it gets a bit further it seems to have a problem with finding > the harddrive image to boot from . Although it has already fetched the > kernel and initrd from the image. > > Any pointers would be appreciated. > > Waiting for driver initialization. > Loading ata_generic.ko module > Trying to resume from LABEL=SWAP-sda2 > Unable to access resume device (LABEL=SWAP-sda2) > Creating root device. > Mounting root filesystem. > mount: could not find filesystem '/dev/root' > what's your FILO boot command? Are you using grub or autoboot? Shouldn't this be root=/dev/XdaN? -Corey > Setting up other filesystems. > Setting up new root fs > setuproot: moving /dev failed: No such file or directory > no fstab.sys, mounting internal defaults > setuproot: error mounting /proc: No such file or directory > setuproot: error mounting /sys: No such file or directory > Switching to new root and running init. > unmounting old /dev > unmounting old /proc > unmounting old /sys > switchroot: mount failed: No such file or directory > Booting has failed. > > From shocky1 at users.sourceforge.net Thu Dec 6 20:23:07 2007 From: shocky1 at users.sourceforge.net (Shocky) Date: Thu, 06 Dec 2007 12:23:07 -0700 Subject: [LinuxBIOS] Flashrom support for NVidia MCP51? In-Reply-To: <200711301417.33903.shocky1@users.sourceforge.net> References: <200711292125.57661.shocky1@users.sourceforge.net> <47507774.2020105@gmx.net> <200711301417.33903.shocky1@users.sourceforge.net> Message-ID: <200712061223.07996.shocky1@users.sourceforge.net> On Friday 30 November 2007 14:17, Shocky wrote: > On Friday 30 November 2007 13:49, Carl-Daniel Hailfinger wrote: > > On 30.11.2007 05:25, Shocky wrote: > > > Now that I can build and run flashrom, I get: > > > > > > Calibrating delay loop.. OK. > > > No LinuxBIOS table found. > > > Found chipset "NVidia MCP51", enabling flash write... OK > > > generic_spi_command called, but no SPI chipset detected > > > No EEPROM/flash device found. > > > > > > I see on the supported devices list that NVidia MCP55 is supported, but > > > mine is "?". Anything I can do to help get it supported? > > > > Why do you assume it is not supported? > > Good point. I guess "?" means unknown. I guess the "Found chipset...OK" is > encouraging. > > > > I don't know what type of flash chip I have, or for that matter what > > > type of > > > > We need verbose output from flashrom. > > Okay. See attached. > > > > m/b. It's an HP Pavilion dv2412ca laptop. I haven't been able to figure > > > out > > > > Ah, a laptop. Laptops usually need additional tricks before they > > cooperare on the flash side. If verbose output from flashrom doesn't > > yield anything obvious, I suggest you don't try further. > > That's not so encouraging 8^(. I'd really like to make this work, even if > it requires some serious effort. The thought of reinstalling Vista just to > be able to flash my BIOS just fills me with revulsion. > > I am a developer. My expertise is not in C, and not in drivers, but I like > to learn new skills. > > > Regards, > > Carl-Daniel > > Shocky I guess you didn't find anything useful in the flashrom verbose output? I did manage to get my BIOS flashed through another route: I remembered I had an old XP machine around someone gave me, so I used that to build BartPE, as Frederico Silva suggested. This is roughly equivalent to a live cd for Windows. This plus HP's flash utility on a USB key did the trick. I'd still love to be able to do it in Linux, but at least my immediate problem is solved. Shocky -- These are my opinions. Get your own. From rminnich at gmail.com Thu Dec 6 21:04:46 2007 From: rminnich at gmail.com (ron minnich) Date: Thu, 6 Dec 2007 12:04:46 -0800 Subject: [LinuxBIOS] Question about QEMU & FILO In-Reply-To: <47584634.1080102@sun.com> References: <47584634.1080102@sun.com> Message-ID: <13426df10712061204q1b01c1b6nc226a3996fae0aa3@mail.gmail.com> On Dec 6, 2007 10:57 AM, Marc Karasek wrote: > I am trying to get a system up using QEMU. I have compiled LinuxBIOS > with Filo as a payload. > > I followed the steps on the wiki about making a harddrive image, I had > to make it a bit bigger than 200M though. > When I "boot" the system, it finds the kernel and the initrd image, but > then when it gets a bit further it seems to have a problem with finding > the harddrive image to boot from . Although it has already fetched the > kernel and initrd from the image. > > Any pointers would be appreciated. > > Waiting for driver initialization. > Loading ata_generic.ko module > Trying to resume from LABEL=SWAP-sda2 > Unable to access resume device (LABEL=SWAP-sda2) This is a linux error message. Your are now in initrd hell. You are missing the modules you need to load the drivers for the hardware. The problems start above. Everything else after is of no real use, since you are dead at this point. I am attaching a script I used to generate a very generic initrd with lots of drivers, including USB drivers; we use it when we boot usb root file systems. It's a useful example and it's small. ron -------------- next part -------------- A non-text attachment was scrubbed... Name: MK_INITRD_THNX_USBSTICK Type: application/octet-stream Size: 161 bytes Desc: not available URL: From jordan at chalmers.se Thu Dec 6 21:11:50 2007 From: jordan at chalmers.se (Ulf Jordan) Date: Thu, 6 Dec 2007 21:11:50 +0100 (CET) Subject: [LinuxBIOS] [PATCH] superiotool: Add detection and dump support for NSC PC97307 Message-ID: Add detection and dump support for NSC PC97307. /ulf -------------- next part -------------- Add detection and dump support for NSC PC97307. Signed-off-by: Ulf Jordan Index: nsc.c =================================================================== --- nsc.c (revision 2998) +++ nsc.c (working copy) @@ -25,6 +25,42 @@ #define CHIP_REV_REG 0x27 /* Super I/O revision ID (SRID) */ static const struct superio_registers reg_table[] = { + {0xcf, "PC97307", { + {NOLDN, NULL, + {0x20,0x21,0x22,0x23,0x24,0x27,EOT}, + {0xcf,MISC,MISC,0x00,0x00,NANA,EOT}}, + {0x0, "Keyboard", + {0x30,0x31,0x60,0x61,0x62,0x63,0x70,0x71,0x74,0x75, + 0xf0,EOT}, + {MISC,0x00,0x00,0x60,0x00,0x64,0x01,0x02,0x04,0x04, + 0x40,EOT}}, + {0x1, "Mouse", + {0x30,0x70,0x71,0x74,0x75,EOT}, + {0x00,0x0c,0x02,0x04,0x04,EOT}}, + {0x2, "Real-time clock and advanced power control", + {0x30,0x31,0x60,0x61,0x70,0x71,0x74,0x75,EOT}, + {MISC,0x00,0x00,0x70,0x08,0x00,0x04,0x04,EOT}}, + {0x3, "Floppy", + {0x30,0x31,0x60,0x61,0x70,0x71,0x74,0x75,0xf0,0xf1, + EOT}, + {MISC,0x00,0x03,0xf2,0x06,0x03,0x02,0x04,0x20,0x00, + EOT}}, + {0x4, "Parallel port", + {0x30,0x31,0x60,0x61,0x70,0x71,0x74,0x75,0xf0,EOT}, + {0x00,0x00,0x02,0x78,0x07,0x00,0x04,0x04,0xf2,EOT}}, + {0x5, "COM2 / IR", + {0x30,0x31,0x60,0x61,0x70,0x71,0x74,0x75,0xf0,EOT}, + {0x00,0x00,0x02,0xf8,0x03,0x03,0x04,0x04,0x02,EOT}}, + {0x6, "COM1", + {0x30,0x31,0x60,0x61,0x70,0x71,0x74,0x75,0xf0,EOT}, + {0x00,0x00,0x03,0xf8,0x04,0x03,0x04,0x04,0x02,EOT}}, + {0x7, "GPIO", + {0x30,0x31,0x60,0x61,0x74,0x75,EOT}, + {0x00,0x00,0x00,0x00,0x04,0x04,EOT}}, + {0x8, "Power management", + {0x30,0x31,0x60,0x61,0x74,0x75,EOT}, + {0x00,0x00,0x00,0x00,0x04,0x04,EOT}}, + {EOT}}}, {0xd0, "PC87371", { /* From sensors-detect */ {EOT}}}, {0xdf, "PC97371", { /* From sensors-detect */ From uwe at hermann-uwe.de Thu Dec 6 22:12:22 2007 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Thu, 6 Dec 2007 22:12:22 +0100 Subject: [LinuxBIOS] LinuxBIOSv3 lgdt and gdtptr patch In-Reply-To: <2831fecf0712060914w19276cd5m1d3dc4f1139c1b37@mail.gmail.com> References: <2831fecf0712060914w19276cd5m1d3dc4f1139c1b37@mail.gmail.com> Message-ID: <20071206211222.GA16314@greenwood> On Thu, Dec 06, 2007 at 10:14:41AM -0700, Myles Watson wrote: > It was submitted (but not in patch form) by Brendan Trotter > http://www.mail-archive.com/linuxbios at linuxbios.org/msg08771.html > > Here it is in patch form. > - data32 lgdt %cs:gdtptr > + movl $gdtptr, %ebx > + lgdt %cs:(%bx) > > It removes the first line, which causes some compilers to give a > "truncated gdtptr" error, and replaces it with an intermediate load > step. I think it should be tested by someone with the "working" > compiler, to compare the output. Please repost with a Signed-off-by. Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org From todthgie at hotmail.com Thu Dec 6 22:32:56 2007 From: todthgie at hotmail.com (a a) Date: Thu, 6 Dec 2007 21:32:56 +0000 Subject: [LinuxBIOS] DawnLight's Abit KN9 Ultra Message-ID: Signed-off-by: Reinder E.N. de Haan lb_reha at mveas.com _________________________________________________________________ Express yourself instantly with MSN Messenger! Download today it's FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/ -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: flashrom-2998-pm49fl00x_erase_fixed.diff Type: application/octet-stream Size: 4134 bytes Desc: not available URL: From jordan at chalmers.se Thu Dec 6 22:44:55 2007 From: jordan at chalmers.se (Ulf Jordan) Date: Thu, 6 Dec 2007 22:44:55 +0100 (CET) Subject: [LinuxBIOS] superiotool: conflicting SID for PC97317? Message-ID: Hello! I'm writing a patch to add detection and dump support for the NSC PC97317. According to the datasheet from National it has SID = 0xdf. However, in superiotool/nsc.c there is the conflicting entry {0xdf, "PC97371", { /* From sensors-detect */ {EOT}}}, I have not been able to find any datasheet on PC97371. Furthermore it's not mentioned by National in the list of chips that were sold to Winbond, and a simple google search for PC97371 returns hits on lm-sensors (and to a lesser extent superiotool). OTOH, googling for PC97317 returns datasheets as the most prominent hits. Both PC87317 and PC97317 are mentioned among the chips transfered from National to Winbond. I'm beginning to suspect that the '371s could be the result of a typo in sensors-detect (introduced in their r2848), that was later carried over to superiotool/nsc.c (r2837). Any comments? /ulf From myles at pel.cs.byu.edu Thu Dec 6 23:08:58 2007 From: myles at pel.cs.byu.edu (Myles Watson) Date: Thu, 6 Dec 2007 15:08:58 -0700 Subject: [LinuxBIOS] LinuxBIOSv3 lgdt and gdtptr patch In-Reply-To: <20071206211222.GA16314@greenwood> References: <2831fecf0712060914w19276cd5m1d3dc4f1139c1b37@mail.gmail.com> <20071206211222.GA16314@greenwood> Message-ID: <00cf01c83854$99ddfe10$4b23040a@chimp> > On Thu, Dec 06, 2007 at 10:14:41AM -0700, Myles Watson wrote: > > It was submitted (but not in patch form) by Brendan Trotter > > http://www.mail-archive.com/linuxbios at linuxbios.org/msg08771.html > > > > Here it is in patch form. > > - data32 lgdt %cs:gdtptr > > + movl $gdtptr, %ebx > > + lgdt %cs:(%bx) > > > > It removes the first line, which causes some compilers to give a > > "truncated gdtptr" error, and replaces it with an intermediate load > > step. I think it should be tested by someone with the "working" > > compiler, to compare the output. > > Please repost with a Signed-off-by. I was hoping Brendan Trotter would supply that, since it was his work. It could be considered trivial, though, if the compiler output is the same. Myles From jordan.crouse at amd.com Thu Dec 6 23:34:53 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Thu, 6 Dec 2007 15:34:53 -0700 Subject: [LinuxBIOS] [BUILDROM] Some fixes Message-ID: <20071206223453.GA4092@cosmic.amd.com> A few fixes before my v3 patch - this cleans up the menuconfig to be a little bit more clear, and fixes a spurious variable that I removed behind Ward's back. Jordan -- Jordan Crouse Systems Software Development Engineer Advanced Micro Devices, Inc. -------------- next part -------------- [BUILDROM] Some fixes Remove a spurious variable from the GPXE stuff, rearrange the menu a little bit, and switch the Make jobs to an integer to make it easier to understand and use. Signed-off-by: Jordan Crouse Index: buildrom-devel/config/payloads/Config.in =================================================================== --- buildrom-devel.orig/config/payloads/Config.in 2007-12-03 12:07:43.000000000 -0700 +++ buildrom-devel/config/payloads/Config.in 2007-12-06 14:31:51.000000000 -0700 @@ -15,7 +15,6 @@ config PAYLOAD_GPXE depends EXPERIMENTAL bool "GPXE" - select PAYLOAD config PAYLOAD_ETHERBOOT depends !PLATFORM_M57SLI Index: buildrom-devel/packages/kernel/kernel.inc =================================================================== --- buildrom-devel.orig/packages/kernel/kernel.inc 2007-12-05 11:42:40.000000000 -0700 +++ buildrom-devel/packages/kernel/kernel.inc 2007-12-06 14:31:51.000000000 -0700 @@ -52,7 +52,7 @@ $(KERNEL_BZIMAGE): $(KERNEL_SRC_DIR)/.config @ echo "Building kernel..." - @ $(MAKE) $(CONFIG_MAKE_JOBS) -C $(KERNEL_SRC_DIR) ARCH=$(KERNEL_BUILD_ARCH) \ + @ $(MAKE) $(PARALLEL_MAKE) -C $(KERNEL_SRC_DIR) ARCH=$(KERNEL_BUILD_ARCH) \ KERNEL_CC="$(CC)" KERNEL_LD="$(LD)" > $(KERNEL_BUILD_LOG) 2>&1 $(OUTPUT_DIR)/bzImage: $(KERNEL_BZIMAGE) Index: buildrom-devel/packages/uclibc/uclibc.mk =================================================================== --- buildrom-devel.orig/packages/uclibc/uclibc.mk 2007-12-05 11:42:40.000000000 -0700 +++ buildrom-devel/packages/uclibc/uclibc.mk 2007-12-06 14:31:51.000000000 -0700 @@ -39,7 +39,7 @@ $(UCLIBC_SRC_DIR)/lib/libc.a: $(UCLIBC_SRC_DIR)/.config @ echo "Building uclibc..." @ ( unset CFLAGS; unset LDFLAGS; \ - $(MAKE) $(CONFIG_MAKE_JOBS) -C $(UCLIBC_SRC_DIR) TARGET_ARCH="$(UCLIBC_ARCH)" \ + $(MAKE) $(PARALLEL_MAKE) -C $(UCLIBC_SRC_DIR) TARGET_ARCH="$(UCLIBC_ARCH)" \ CC="$(CC) $(CROSS_CFLAGS)" LD="$(LD) $(CROSS_LDFLAGS)" \ HOSTCC="$(HOST_CC)" KERNEL_SOURCE="$(KERNEL_SRC_DIR)" \ RUNTIME_PREFIX="/" \ Index: buildrom-devel/Config.in =================================================================== --- buildrom-devel.orig/Config.in 2007-12-06 14:32:50.000000000 -0700 +++ buildrom-devel/Config.in 2007-12-06 14:33:41.000000000 -0700 @@ -6,25 +6,6 @@ bool default y -config VERBOSE - bool "See the build output on stdout" - default n - help - See the entire build output on stdout. Otherwise, it will - be saved off in a series of logs - -config MAKE_JOBS - string "Send this option to make to parallelize builds" - default "-j1" - help - This can speed the build if you have more than one core that you - would like to allow make to use. If you have a single processor, use - the default (-j1) otherwise, try processors+1 (-j5 for 4 processors). - - This option currently only speeds up the kernel and uClibc builds. - It was tried for: linuxbios (not passed through to fallback,etc.) - busybox (causes errors) - config ADVANCED bool "Enable advanced operations" default n @@ -36,11 +17,34 @@ default n help Experimental features are not yet ready for prime time and/or - completely broken. The features revealed by this setting are likely to be - only useful if you are a developer and want to hack on buildrom. + completely broken. The features revealed by this setting are + likely to be only useful if you are a developer and want to + hack on buildrom. If you are not sure, say no. +menu "Build Options" + +config VERBOSE + bool "See the build output on stdout" + default n + help + See the entire build output on stdout. Otherwise, it will + be saved off in a series of logs + +config MAKE_JOBS + int "Number of make jobs to run simultaneously (experimental)" + default 1 + help + This can speed the build if you have more than one core that you + would like to allow make to use. If you have a single processor, use + the default (1) otherwise, you can specify the number of cores you + have plus 1 (for example, specify 5 if you have 4 cores). + + This option is currently used for the kernel and uClibc packages. +endmenu + + menu "LinuxBIOS configuration" config LINUXBIOS_V3 Index: buildrom-devel/scripts/Build.settings =================================================================== --- buildrom-devel.orig/scripts/Build.settings 2007-12-06 14:32:54.000000000 -0700 +++ buildrom-devel/scripts/Build.settings 2007-12-06 14:34:46.000000000 -0700 @@ -78,5 +78,6 @@ HOST_LDFLAGS= HOSTCC=$(HOST_CC) +PARALLEL_MAKE=-j$(CONFIG_MAKE_JOBS) -export CC AS CFLAGS LDFLAGS ASFLAGS LIBS +export CC AS CFLAGS LDFLAGS ASFLAGS LIBS PARALLEL_MAKE From todthgie at hotmail.com Thu Dec 6 23:33:40 2007 From: todthgie at hotmail.com (a a) Date: Thu, 6 Dec 2007 22:33:40 +0000 Subject: [LinuxBIOS] DawnLight's Abit KN9 Ultra Message-ID: please ignore that patch a a wrote: > Signed-off-by: Reinder E.N. de Haan lb_reha at mveas.com > > > > ------------------------------------------------------------------------ > Express yourself instantly with MSN Messenger! MSN Messenger > > _________________________________________________________________ Express yourself instantly with MSN Messenger! Download today it's FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/ -------------- next part -------------- An HTML attachment was scrubbed... URL: From ward at gnu.org Thu Dec 6 23:40:20 2007 From: ward at gnu.org (Ward Vandewege) Date: Thu, 6 Dec 2007 17:40:20 -0500 Subject: [LinuxBIOS] [BUILDROM] Some fixes In-Reply-To: <20071206223453.GA4092@cosmic.amd.com> References: <20071206223453.GA4092@cosmic.amd.com> Message-ID: <20071206224019.GA17013@localdomain> On Thu, Dec 06, 2007 at 03:34:53PM -0700, Jordan Crouse wrote: > A few fixes before my v3 patch - this cleans up the menuconfig to be > a little bit more clear, and fixes a spurious variable that I removed > behind Ward's back. Heh :) I saw that warning late last night but hadn't looked into it yet. > Remove a spurious variable from the GPXE stuff, rearrange the menu > a little bit, and switch the Make jobs to an integer to make it > easier to understand and use. Wouldn't it be more standard to just allow the use of -jX on the command line? > Signed-off-by: Jordan Crouse Acked-by: Ward Vandewege Thanks, Ward. -- Ward Vandewege Free Software Foundation - Senior System Administrator From myles at pel.cs.byu.edu Thu Dec 6 23:41:02 2007 From: myles at pel.cs.byu.edu (Myles Watson) Date: Thu, 6 Dec 2007 15:41:02 -0700 Subject: [LinuxBIOS] [BUILDROM] Some fixes In-Reply-To: <20071206223453.GA4092@cosmic.amd.com> References: <20071206223453.GA4092@cosmic.amd.com> Message-ID: <2831fecf0712061441h26be6f16gd8af5becb72aa4fb@mail.gmail.com> > [BUILDROM] Some fixes > > Remove a spurious variable from the GPXE stuff, rearrange the menu > a little bit, and switch the Make jobs to an integer to make it > easier to understand and use. > > Signed-off-by: Jordan Crouse It works for me. Acked-by: Myles Watson From jordan.crouse at amd.com Thu Dec 6 23:39:14 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Thu, 6 Dec 2007 15:39:14 -0700 Subject: [LinuxBIOS] [BUILDROM] Expand linuxbiosv3 support Message-ID: <20071206223914.GB4092@cosmic.amd.com> This is my code to expand on what Myles has already done for v3 - basically, we move to using a V3 only .mk for LinuxBIOS, and take advantage of LAR to clean up the build considerably. Also, introduce my new idea for option ROMs which totally cleans things up - if this doesn't set off anybody's BS meter, I'll backport it to v2 as well. (probably by appending a 01, 02, 03... to the front of the ROM and prepending them in order). If that goes down, then we can kill off the Geode .mk in the linuxbios/ directory, which would be great. Generic make targets for the win. Please let me know what you think. Jordan -- Jordan Crouse Systems Software Development Engineer Advanced Micro Devices, Inc. -------------- next part -------------- [BUILDROM] Expand linuxbiosv3 support Add more generic support for LinuxBIOSv3 - add specialized package for v3, and add support for using LAR to put it all together. Also add expanded (and better) option ROM support, though we're not actually using it right away. Signed-off-by: Jordan Crouse Index: buildrom-devel/Config.in =================================================================== --- buildrom-devel.orig/Config.in 2007-12-06 14:33:41.000000000 -0700 +++ buildrom-devel/Config.in 2007-12-06 14:35:17.000000000 -0700 @@ -47,12 +47,24 @@ menu "LinuxBIOS configuration" +choice + prompt "LinuxBIOS Version" + default LINUXBIOS_V2 + +config LINUXBIOS_V2 + bool "LinuxBIOS v2" + help + Select this option to build a .rom based on the LinuxBIOS + v2 code. The v2 code is far more stable, and supports many + different platforms. + config LINUXBIOS_V3 - bool "Use LinuxBIOSv3" - depends ADVANCED - default n + bool "LinuxBIOS v3" + depends EXPERIMENTAL help - Use the v3 tree. LinuxBIOSv3 doesn't support all platforms yet. + Select this option to build a LinuxBIOS v3 based ROM. This + is experimental, and only supports a few platforms. +endchoice config LINUXBIOS_V3_LGDT_PATCH bool "Avoid an error in stage0_i586 with some compilers" @@ -73,7 +85,6 @@ Allow LZMA compression for the payload. This doesn't work for FILO or OFW. - config LB_USE_BUILD bool "Specify a LinuxBIOS build dir" depends ADVANCED Index: buildrom-devel/config/platforms/Config.in =================================================================== --- buildrom-devel.orig/config/platforms/Config.in 2007-12-06 14:32:42.000000000 -0700 +++ buildrom-devel/config/platforms/Config.in 2007-12-06 14:35:17.000000000 -0700 @@ -41,49 +41,58 @@ config PLATFORM_NORWICH bool "AMD Geode LX 'Norwich'" depends VENDOR_AMD + depends LINXUBIOS_V2 select PLATFORM config PLATFORM_DBE61 bool "Artec Group DBE61" depends VENDOR_ARTEC_GROUP + depends LINUXBIOS_V2 select PLATFORM config PLATFORM_ALIX1C bool "PC Engines ALIX1.C" depends VENDOR_PC_ENGINES + depends LINUXBIOS_V2 select PLATFORM config PLATFORM_MSM800SEV bool "Advanced Digital Logic MSM800SEV" depends VENDOR_ADVANCED_DIGITAL_LOGIC + depends LINUXBIOS_V2 select PLATFORM config PLATFORM_DB800 bool "AMD DB800" depends VENDOR_AMD + depends LINUXBIOS_V2 select PLATFORM config PLATFORM_GA_M57SLI_S4 bool "GIGABYTE GA-M57SLI-S4" depends VENDOR_GIGABYTE + depends LINUXBIOS_V2 select PLATFORM select PLATFORM_SUPPORT_64BIT config PLATFORM_GA_2761GXDK bool "GIGABYTE GA-2761GXDK" depends VENDOR_GIGABYTE + depends LINUXBIOS_V2 select PLATFORM select PLATFORM_SUPPORT_64BIT config PLATFORM_TYAN_S2882 bool "Tyan S2882" depends VENDOR_TYAN + depends LINUXBIOS_V2 select PLATFORM select PLATFORM_SUPPORT_64BIT config PLATFORM_TYAN_S2891 bool "Tyan S2891" depends VENDOR_TYAN + depends LINUXBIOS_V2 select PLATFORM select PLATFORM_SUPPORT_64BIT @@ -95,12 +104,14 @@ config PLATFORM_SERENGETI_CHEETAH bool "AMD Serengeti-Cheetah" depends VENDOR_AMD + depends LINUXBIOS_V2 select PLATFORM select PLATFORM_SUPPORT_64BIT config PLATFORM_SUPERMICRO_H8DMR bool "Supermicro H8DMR" depends VENDOR_SUPERMICRO + depends LINUXBIOS_V2 select PLATFORM select PLATFORM_SUPPORT_64BIT Index: buildrom-devel/Makefile =================================================================== --- buildrom-devel.orig/Makefile 2007-12-06 14:32:42.000000000 -0700 +++ buildrom-devel/Makefile 2007-12-06 14:35:17.000000000 -0700 @@ -12,6 +12,7 @@ OUTPUT_DIR=$(BASE_DIR)/deploy PACKAGE_DIR=$(BASE_DIR)/packages BIN_DIR=$(BASE_DIR)/bin +ROM_DIR=$(OUTPUT_DIR)/roms ifeq (.config, $(wildcard .config)) dot-config := 1 @@ -39,16 +40,43 @@ # Include the global settings and other checks include $(SCRIPT_DIR)/Build.settings +# TARGET_ROM is what we are ultimately building - this should be +# specified by the platform files + +TARGET_ROM ?= linuxbios.rom +TARGET_ROM_FILE=$(OUTPUT_DIR)/$(TARGET_ROM) + +# Choose the version of LinuxBIOS to build - this might be better +# elsewhere, but what the heck - its easy. + +LINUXBIOS-$(CONFIG_LINUXBIOS_V2) = linuxbios +LINUXBIOS-$(CONFIG_LINUXBIOS_V3) = linuxbiosv3 roms + # Construct the list of packages we will be building -PKGLIST = linuxbios $(PAYLOAD-y) $(HOSTTOOLS-y) +PKGLIST = $(LINUXBIOS-y) $(PAYLOAD-y) $(HOSTTOOLS-y) # Construct the various targets PKG_clean=$(patsubst %, %-clean, $(PKGLIST)) PKG_distclean=$(patsubst %, %-distclean, $(PKGLIST)) -all: $(HOSTTOOLS-y) payload linuxbios +# This is the top level target - for v2, the final deliverable is built +# by LinuxBIOS, for v3 it is built by us, so we have ifdef magic here + +ifeq ($(CONFIG_LINUXBIOS_V2),y) +rom: $(HOSTTOOLS-y) payload $(LINUXBIOS-y) +else + +# Add the payload, and then add everything in the deploy/rom directory + +rom: $(HOSTTOOLS-y) payload $(LINUXBIOS-y) + cp $(LBV3_OUTPUT) $(TARGET_ROM_FILE) + $(STAGING_DIR)/bin/lar -a $(TARGET_ROM_FILE) $(PAYLOAD_TARGET):normal/payload + for file in `ls $(ROM_DIR)`; do \ + $(STAGING_DIR)/bin/lar -a $(TARGET_ROM_FILE) $(ROM_DIR)/$$file:$$file; \ + done +endif payload: $(PAYLOAD_TARGET) @@ -70,9 +98,15 @@ MKTARGETS:= $(shell ls $(PACKAGE_DIR)/*/*.mk) -include $(filter-out $(PACKAGE_DIR)/kernel/% $(PACKAGE_DIR)/linuxbios/%,$(MKTARGETS)) +include $(filter-out $(PACKAGE_DIR)/kernel/% $(PACKAGE_DIR)/linuxbios/% $(PACKAGE_DIR)/linuxbiosv3/%,$(MKTARGETS)) -include $(KERNEL_MK) $(LINUXBIOS_MK) +include $(KERNEL_MK) + +ifeq ($(CONFIG_LINUXBIOS_V2),y) +include $(LINUXBIOS_MK) +else +include $(PACKAGE_DIR)/linuxbiosv3/linuxbiosv3.mk +endif endif Index: buildrom-devel/packages/linuxbios/conf.v3/qemu.conf =================================================================== --- buildrom-devel.orig/packages/linuxbios/conf.v3/qemu.conf 2007-12-06 14:32:42.000000000 -0700 +++ /dev/null 1970-01-01 00:00:00.000000000 +0000 @@ -1,89 +0,0 @@ -# -# Automatically generated make config: don't edit -# LinuxBIOS version: 3.0.0 -# Wed Dec 5 11:10:31 2007 -# - -# -# General setup -# -# CONFIG_EXPERIMENTAL is not set -# CONFIG_EXPERT is not set -CONFIG_LOCALVERSION="" - -# -# Mainboard -# -# CONFIG_VENDOR_ADL is not set -# CONFIG_VENDOR_AMD is not set -# CONFIG_VENDOR_ARTECGROUP is not set -CONFIG_VENDOR_EMULATION=y -# CONFIG_VENDOR_PCENGINES is not set -CONFIG_MAINBOARD_NAME="emulation/qemu-x86" -CONFIG_MAINBOARD_PCI_SUBSYSTEM_VENDOR_ID=0x15ad -CONFIG_MAINBOARD_PCI_SUBSYSTEM_DEVICE_ID=0x1976 -CONFIG_BOARD_EMULATION_QEMU_X86=y -# CONFIG_LINUXBIOS_ROMSIZE_KB_128 is not set -# CONFIG_LINUXBIOS_ROMSIZE_KB_256 is not set -# CONFIG_LINUXBIOS_ROMSIZE_KB_512 is not set -# CONFIG_LINUXBIOS_ROMSIZE_KB_1024 is not set -CONFIG_LINUXBIOS_ROMSIZE_KB_2048=y -CONFIG_LINUXBIOS_ROMSIZE_KB=2048 -CONFIG_ARCH_X86=y -CONFIG_ARCH="x86" -CONFIG_CPU_I586=y -CONFIG_OPTION_TABLE=y - -# -# Compression -# -# CONFIG_COMPRESSION_LZMA is not set -# CONFIG_COMPRESSION_NRV2B is not set -# CONFIG_DEFAULT_COMPRESSION_LZMA is not set -# CONFIG_DEFAULT_COMPRESSION_NRV2B is not set -CONFIG_DEFAULT_COMPRESSION_NONE=y - -# -# Console -# -CONFIG_CONSOLE=y -CONFIG_CONSOLE_LOGLEVEL_8=y -# CONFIG_CONSOLE_LOGLEVEL_7 is not set -# CONFIG_CONSOLE_LOGLEVEL_6 is not set -# CONFIG_CONSOLE_LOGLEVEL_5 is not set -# CONFIG_CONSOLE_LOGLEVEL_4 is not set -# CONFIG_CONSOLE_LOGLEVEL_3 is not set -# CONFIG_CONSOLE_LOGLEVEL_2 is not set -# CONFIG_CONSOLE_LOGLEVEL_1 is not set -# CONFIG_CONSOLE_LOGLEVEL_0 is not set -CONFIG_DEFAULT_CONSOLE_LOGLEVEL=8 -CONFIG_CONSOLE_SERIAL=y -CONFIG_CONSOLE_SERIAL_COM1=y -# CONFIG_CONSOLE_SERIAL_COM2 is not set -CONFIG_CONSOLE_SERIAL_115200=y -# CONFIG_CONSOLE_SERIAL_57600 is not set -# CONFIG_CONSOLE_SERIAL_38400 is not set -# CONFIG_CONSOLE_SERIAL_19200 is not set -# CONFIG_CONSOLE_SERIAL_9600 is not set - -# -# Devices -# -CONFIG_PCI_OPTION_ROM_RUN=y -# CONFIG_PCI_OPTION_ROM_RUN_X86EMU is not set -CONFIG_PCI_OPTION_ROM_RUN_VM86=y -# CONFIG_PCI_OPTION_ROM_RUN_NONE is not set -# CONFIG_MULTIPLE_VGA_INIT is not set -# CONFIG_INITIALIZE_ONBOARD_VGA_FIRST is not set -CONFIG_NORTHBRIDGE_INTEL_I440BXEMULATION=y -CONFIG_SOUTHBRIDGE_INTEL_I82371EB=y -CONFIG_SUPERIO_WINBOND_W83627HF=y -CONFIG_NORTHBRIDGE_INTEL_I440BXEMULATION_RAMSIZE=32 - -# -# Payload -# -# CONFIG_PAYLOAD_PREPARSE_ELF is not set -CONFIG_PAYLOAD_ELF=y -# CONFIG_PAYLOAD_NONE is not set -CONFIG_PAYLOAD_FILE="payload.elf" Index: buildrom-devel/packages/linuxbios/patches/lgdt.patch =================================================================== --- buildrom-devel.orig/packages/linuxbios/patches/lgdt.patch 2007-12-06 14:32:42.000000000 -0700 +++ /dev/null 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -Index: svn/arch/x86/stage0_i586.S -=================================================================== ---- svn/arch/x86/stage0_i586.S (revision 539) -+++ svn/arch/x86/stage0_i586.S (working copy) -@@ -56,7 +56,8 @@ - * the ld hackery and other things. So leave it as is with this comment. - */ - -- data32 lgdt %cs:gdtptr -+ movl $gdtptr, %ebx -+ lgdt %cs:(%bx) - - movl %cr0, %eax - andl $0x7FFAFFD1, %eax /* PG,AM,WP,NE,TS,EM,MP = 0 */ Index: buildrom-devel/packages/linuxbiosv3/conf/qemu-i386-defconfig =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ buildrom-devel/packages/linuxbiosv3/conf/qemu-i386-defconfig 2007-12-06 14:35:17.000000000 -0700 @@ -0,0 +1,88 @@ +# +# Automatically generated make config: don't edit +# LinuxBIOS version: 3.0.0 +# Thu Dec 6 04:44:00 2007 +# + +# +# General setup +# +# CONFIG_EXPERIMENTAL is not set +# CONFIG_EXPERT is not set +CONFIG_LOCALVERSION="" + +# +# Mainboard +# +# CONFIG_VENDOR_ADL is not set +# CONFIG_VENDOR_AMD is not set +# CONFIG_VENDOR_ARTECGROUP is not set +CONFIG_VENDOR_EMULATION=y +# CONFIG_VENDOR_PCENGINES is not set +CONFIG_MAINBOARD_NAME="emulation/qemu-x86" +CONFIG_MAINBOARD_PCI_SUBSYSTEM_VENDOR_ID=0x15ad +CONFIG_MAINBOARD_PCI_SUBSYSTEM_DEVICE_ID=0x1976 +CONFIG_BOARD_EMULATION_QEMU_X86=y +# CONFIG_LINUXBIOS_ROMSIZE_KB_128 is not set +# CONFIG_LINUXBIOS_ROMSIZE_KB_256 is not set +# CONFIG_LINUXBIOS_ROMSIZE_KB_512 is not set +# CONFIG_LINUXBIOS_ROMSIZE_KB_1024 is not set +CONFIG_LINUXBIOS_ROMSIZE_KB_2048=y +CONFIG_LINUXBIOS_ROMSIZE_KB=2048 +CONFIG_ARCH_X86=y +CONFIG_ARCH="x86" +CONFIG_CPU_I586=y +CONFIG_OPTION_TABLE=y + +# +# Compression +# +# CONFIG_COMPRESSION_LZMA is not set +# CONFIG_COMPRESSION_NRV2B is not set +# CONFIG_DEFAULT_COMPRESSION_LZMA is not set +# CONFIG_DEFAULT_COMPRESSION_NRV2B is not set +CONFIG_DEFAULT_COMPRESSION_NONE=y + +# +# Console +# +CONFIG_CONSOLE=y +CONFIG_CONSOLE_LOGLEVEL_8=y +# CONFIG_CONSOLE_LOGLEVEL_7 is not set +# CONFIG_CONSOLE_LOGLEVEL_6 is not set +# CONFIG_CONSOLE_LOGLEVEL_5 is not set +# CONFIG_CONSOLE_LOGLEVEL_4 is not set +# CONFIG_CONSOLE_LOGLEVEL_3 is not set +# CONFIG_CONSOLE_LOGLEVEL_2 is not set +# CONFIG_CONSOLE_LOGLEVEL_1 is not set +# CONFIG_CONSOLE_LOGLEVEL_0 is not set +CONFIG_DEFAULT_CONSOLE_LOGLEVEL=8 +CONFIG_CONSOLE_SERIAL=y +CONFIG_CONSOLE_SERIAL_COM1=y +# CONFIG_CONSOLE_SERIAL_COM2 is not set +CONFIG_CONSOLE_SERIAL_115200=y +# CONFIG_CONSOLE_SERIAL_57600 is not set +# CONFIG_CONSOLE_SERIAL_38400 is not set +# CONFIG_CONSOLE_SERIAL_19200 is not set +# CONFIG_CONSOLE_SERIAL_9600 is not set + +# +# Devices +# +CONFIG_PCI_OPTION_ROM_RUN=y +# CONFIG_PCI_OPTION_ROM_RUN_X86EMU is not set +CONFIG_PCI_OPTION_ROM_RUN_VM86=y +# CONFIG_PCI_OPTION_ROM_RUN_NONE is not set +# CONFIG_MULTIPLE_VGA_INIT is not set +# CONFIG_INITIALIZE_ONBOARD_VGA_FIRST is not set +CONFIG_NORTHBRIDGE_INTEL_I440BXEMULATION=y +CONFIG_SOUTHBRIDGE_INTEL_I82371EB=y +CONFIG_SUPERIO_WINBOND_W83627HF=y +CONFIG_NORTHBRIDGE_INTEL_I440BXEMULATION_RAMSIZE=32 + +# +# Payload +# +# CONFIG_PAYLOAD_PREPARSE_ELF is not set +# CONFIG_PAYLOAD_ELF is not set +CONFIG_PAYLOAD_NONE=y Index: buildrom-devel/packages/linuxbiosv3/patches/lgdt.patch =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ buildrom-devel/packages/linuxbiosv3/patches/lgdt.patch 2007-12-06 14:35:17.000000000 -0700 @@ -0,0 +1,14 @@ +Index: svn/arch/x86/stage0_i586.S +=================================================================== +--- svn/arch/x86/stage0_i586.S (revision 539) ++++ svn/arch/x86/stage0_i586.S (working copy) +@@ -56,7 +56,8 @@ + * the ld hackery and other things. So leave it as is with this comment. + */ + +- data32 lgdt %cs:gdtptr ++ movl $gdtptr, %ebx ++ lgdt %cs:(%bx) + + movl %cr0, %eax + andl $0x7FFAFFD1, %eax /* PG,AM,WP,NE,TS,EM,MP = 0 */ Index: buildrom-devel/packages/roms/rom-geode.inc =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ buildrom-devel/packages/roms/rom-geode.inc 2007-12-06 14:35:17.000000000 -0700 @@ -0,0 +1,17 @@ +# This is the geode specific optionrom target +# download VSA + +VSA_URL=http://www.amd.com/files/connectivitysolutions/geode/geode_lx/ +GEODE_VSA=lx_vsa.36k.bin + +$(SOURCE_DIR)/$(GEODE_VSA): + @ echo "Fetching the VSA code..." + @ wget -P $(SOURCE_DIR) $(VSA_URL)/$(GEODE_VSA).gz -O $@ + +# Copy the file to the ROM_DIR - it should have the same name that it +# will have in the LAR + +$(ROM_DIR)/vsa: $(SOURCE_DIR)/$(GEODE_VSA): + @ cp $< $@ + +OPTIONROM_TARGETS += $(ROM_DIR)/vsa Index: buildrom-devel/packages/roms/roms.mk =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ buildrom-devel/packages/roms/roms.mk 2007-12-06 14:35:17.000000000 -0700 @@ -0,0 +1,22 @@ +# Each platform that needs an option ROM or other binary blob is specified +# here + + +OPTIONROM_TARGETS= + +OPTIONROM-y = +OPTIONROM-$(CONFIG_PLATFORM_NORWICH) += rom-geode.inc + +ifneq ($(OPTIONROMS-y),) +include $(OPTIONROM-y) +endif + +$(ROM_DIR): + mkdir -p $(ROM_DIR) + +roms: $(ROM_DIR) $(OPTIONROM_TARGETS) + +roms-clean: + @ rm -rf $(OPTIONROM_TARGETS) + +roms-distclean: roms-clean Index: buildrom-devel/config/platforms/qemu.conf =================================================================== --- buildrom-devel.orig/config/platforms/qemu.conf 2007-12-06 14:32:42.000000000 -0700 +++ buildrom-devel/config/platforms/qemu.conf 2007-12-06 14:35:17.000000000 -0700 @@ -23,17 +23,15 @@ # Etherboot configuration ETHERBOOT_ARCH=i386 -# LinuxBIOS configuration - -ifeq ($(CONFIG_LINUXBIOS_V3),y) -LINUXBIOS_TAG=HEAD -LINUXBIOS_V3_CONFIG=$(PACKAGE_DIR)/linuxbios/conf.v3/qemu.conf -LINUXBIOS_ROM_NAME=build/linuxbios.rom -else +# LinuxBIOSv2 configuration LINUXBIOS_TAG=2950 LINUXBIOS_CONFIG=Config.lb LINUXBIOS_ROM_NAME=qemu.rom -endif + +# LinuxBIOS v3 configuration +LBV3_CONFIG=qemu-i386-defconfig +LBV3_TAG=HEAD +LBV3_ROM_NAME=linuxbios.rom LINUXBIOS_VENDOR=emulation LINUXBIOS_BOARD=qemu-i386 Index: buildrom-devel/packages/linuxbios/qemu.mk =================================================================== --- buildrom-devel.orig/packages/linuxbios/qemu.mk 2007-12-06 14:32:42.000000000 -0700 +++ buildrom-devel/packages/linuxbios/qemu.mk 2007-12-06 14:35:17.000000000 -0700 @@ -8,29 +8,18 @@ LINUXBIOS_PATCHES = - - LINUXBIOS_BASE_DIR=svn TARGET_ROM = $(LINUXBIOS_VENDOR)-$(LINUXBIOS_BOARD).rom LINUXBIOS_PAYLOAD_TARGET=$(LINUXBIOS_BUILD_DIR)/payload.elf -ifeq ($(CONFIG_LINUXBIOS_V3),y) - LINUXBIOS_URL=svn://linuxbios.org/repository/LinuxBIOSv3 - LINUXBIOS_TARBALL=linuxbiosv3-svn-$(LINUXBIOS_TAG).tar.gz - ifeq ($(CONFIG_LINUXBIOS_V3_LGDT_PATCH),y) - LINUXBIOS_PATCHES += $(PACKAGE_DIR)/linuxbios/patches/lgdt.patch - endif - LINUXBIOS_SVN_DIR=$(SOURCE_DIR)/linuxbiosv3 +ifeq ($(CONFIG_PAYLOAD_LAB),y) +LINUXBIOS_PATCHES += $(PACKAGE_DIR)/linuxbios/patches/qemu-lab.patch else - ifeq ($(CONFIG_PAYLOAD_LAB),y) - LINUXBIOS_PATCHES += $(PACKAGE_DIR)/linuxbios/patches/qemu-lab.patch - else - LINUXBIOS_PATCHES += $(PACKAGE_DIR)/linuxbios/patches/qemu-payload.patch - endif - LINUXBIOS_URL=svn://linuxbios.org/repos/trunk/LinuxBIOSv2 - LINUXBIOS_TARBALL=linuxbios-svn-$(LINUXBIOS_TAG).tar.gz - LINUXBIOS_SVN_DIR=$(SOURCE_DIR)/linuxbios +LINUXBIOS_PATCHES += $(PACKAGE_DIR)/linuxbios/patches/qemu-payload.patch endif +LINUXBIOS_URL=svn://linuxbios.org/repos/trunk/LinuxBIOSv2 +LINUXBIOS_TARBALL=linuxbios-svn-$(LINUXBIOS_TAG).tar.gz +LINUXBIOS_SVN_DIR=$(SOURCE_DIR)/linuxbios include $(PACKAGE_DIR)/linuxbios/linuxbios.inc Index: buildrom-devel/packages/linuxbiosv3/linuxbiosv3.mk =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ buildrom-devel/packages/linuxbiosv3/linuxbiosv3.mk 2007-12-06 15:04:26.000000000 -0700 @@ -0,0 +1,71 @@ +LBV3_URL=svn://openbios.org/repository/LinuxBIOSv3 +LBV3_TARBALL=linuxbios-svn-$(LBV3_TAG).tar.gz +LBV3_DIR=$(BUILD_DIR)/linuxbiosv3 +LBV3_SRC_DIR=$(LBV3_DIR)/svn + +LBV3_STAMP_DIR=$(LBV3_DIR)/stamps +LBV3_LOG_DIR=$(LBV3_DIR)/logs + +ifeq ($(CONFIG_VERBOSE),y) +LBV3_FETCH_LOG=/dev/stdout +LBV3_BUILD_LOG=/dev/stdout +else +LBV3_FETCH_LOG=$(LBV3_LOG_DIR)/fetch.log +LBV3_BUILD_LOG=$(LBV3_LOG_DIR)/build.log +endif + +LBV3_OUTPUT=$(LBV3_SRC_DIR)/build/linuxbios.rom + +LBV3_PATCHES ?= + +ifeq ($(CONFIG_LINUXBIOS_V3_LGDT_PATCH),y) +LBV3_PATCHES += $(PACKAGE_DIR)/linuxbiosv3/patches/lgdt.patch +endif + +$(SOURCE_DIR)/$(LBV3_TARBALL): + @ mkdir -p $(SOURCE_DIR)/linuxbiosv3 + @ $(BIN_DIR)/fetchsvn.sh $(LBV3_URL) \ + $(SOURCE_DIR)/linuxbiosv3 $(LBV3_TAG) \ + $@ > $(LBV3_FETCH_LOG) 2>&1 + +$(LBV3_STAMP_DIR)/.unpacked: $(SOURCE_DIR)/$(LBV3_TARBALL) + @echo "Unpacking LinuxBIOSv3..." + @ mkdir -p $(LBV3_DIR) + @ tar -C $(LBV3_DIR) -zxf $(SOURCE_DIR)/$(LBV3_TARBALL) + @ touch $@ + +$(LBV3_STAMP_DIR)/.patched: $(LBV3_STAMP_DIR)/.unpacked + @ echo "Patching LinuxBIOSv3..." + @ $(BIN_DIR)/doquilt.sh $(LBV3_SRC_DIR) $(LBV3_PATCHES) + @ touch $@ + +$(LBV3_STAMP_DIR)/.configured: $(LBV3_STAMP_DIR)/.patched + @ echo "Configuring LinuxBIOSv3..." + @ cp $(PACKAGE_DIR)/linuxbiosv3/conf/$(LBV3_CONFIG) $(LBV3_SRC_DIR)/.config + @ make -C $(LBV3_SRC_DIR) oldconfig > $(LBV3_BUILD_LOG) 2>&1 + @ touch $@ + +$(LBV3_OUTPUT): $(LBV3_STAMP_DIR)/.configured + @ echo "Building LinuxBIOSv3..." + @ $(MAKE) -C $(LBV3_SRC_DIR) > $(LBV3_BUILD_LOG) 2>&1 + +$(LBV3_SRC_DIR)/build/util/lar/lar: $(LBV3_STAMP_DIR)/.configured + @ $(MAKE) -C $(LBV3_SRC_DIR)/util lar > $(LBV3_BUILD_LOG) 2>&1 + +$(STAGING_DIR)/bin/lar: $(LBV3_SRC_DIR)/build/util/lar/lar + @ mkdir -p $(STAGING_DIR)/bin + @ cp $< $@ + +$(LBV3_STAMP_DIR): + @ mkdir -p $@ + +linuxbiosv3: $(LBV3_STAMP_DIR) $(LBV3_OUTPUT) $(STAGING_DIR)/bin/lar + +linuxbiosv3-clean: + @ echo "Cleaning linuxbiosv3..." + @ $(MAKE) -C $(LBV3_SRC_DIR) clean > /dev/null 2>&1 + +linuxbiosv3-distclean: + @ rm -rf $(LBV3_DIR)/* + @ rm -rf $(STAGING_DIR)/bin/lar + From todthgie at hotmail.com Fri Dec 7 00:11:17 2007 From: todthgie at hotmail.com (a a) Date: Thu, 6 Dec 2007 23:11:17 +0000 Subject: [LinuxBIOS] PATCH: flashrom fix erasing of Pm49fl002/4 Message-ID: Signed-off-by: Reinder E.N. de Haan This patch fixes non working erasing of Pm49fl002/4 The erasing part of writing did work because it uses erase_block_jedec and not erase_chip_jedec datasheets says: "Chip erase is available in A/A Mux Mode only." this patch needs the patch from: http://www.linuxbios.org/pipermail/linuxbios/2007-November/027287.html to be inserted first. Greetings, Reinder _________________________________________________________________ Express yourself instantly with MSN Messenger! Download today it's FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/ -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: flashrom-pm49fl00x_erase_fixed.diff Type: application/octet-stream Size: 1543 bytes Desc: not available URL: From todthgie at hotmail.com Fri Dec 7 00:17:59 2007 From: todthgie at hotmail.com (a a) Date: Thu, 6 Dec 2007 23:17:59 +0000 Subject: [LinuxBIOS] PATCH: flashrom fix erasing of Pm49fl002/4 now with email Message-ID: Signed-off-by: Reinder E.N. de Haan lb_reha at mveas.com This patch fixes non working erasing of Pm49fl002/4 The erasing part of writing did work because it uses erase_block_jedec and not erase_chip_jedec datasheets says: "Chip erase is available in A/A Mux Mode only." this patch needs the patch from: http://www.linuxbios.org/pipermail/linuxbios/2007-November/027287.html to be inserted first. Greetings, Reinder _________________________________________________________________ Express yourself instantly with MSN Messenger! Download today it's FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/ -------------- next part -------------- An HTML attachment was scrubbed... URL: From bari at onelabs.com Fri Dec 7 00:18:00 2007 From: bari at onelabs.com (bari) Date: Thu, 06 Dec 2007 17:18:00 -0600 Subject: [LinuxBIOS] superiotool: conflicting SID for PC97317? In-Reply-To: References: Message-ID: <47588328.8060006@onelabs.com> Ulf Jordan wrote: > Hello! > > I'm writing a patch to add detection and dump support for the NSC PC97317. > According to the datasheet from National it has SID = 0xdf. However, in > superiotool/nsc.c there is the conflicting entry > > {0xdf, "PC97371", { /* From sensors-detect */ > {EOT}}}, > > I have not been able to find any datasheet on PC97371. Furthermore it's > not mentioned by National in the list of chips that were sold to Winbond, > and a simple google search for PC97371 returns hits on lm-sensors (and to > a lesser extent superiotool). OTOH, googling for PC97317 returns > datasheets as the most prominent hits. Both PC87317 and PC97317 are > mentioned among the chips transfered from National to Winbond. > > I'm beginning to suspect that the '371s could be the result of a typo in > sensors-detect (introduced in their r2848), that was later carried over to > superiotool/nsc.c (r2837). > > Any comments? > > > /ulf > > From the PC97317 data sheet: SID Register Index 20h The PC97317VUL is identified by the value DFh in this register. Your part must be a PC97317VUL. The PC87317VUL is identified by the value D0h in this register. From the PC97307 data sheet: SID Register Index 20h The PC97307VUL is identified by the value CFh in this register. The PC87307VUL is identified by the value C0h in this register. PC87360 data sheet: SID Register Index 20h The PC87360 is identified by the value E1h. PC87363 data sheet: SID Register Index 20h The PC87363 is identified by the value E8h. PC87364 data sheet: SID Register Index 20h The PC87364 is identified by the value E4h. PC87365 data sheet: SID Register Index 20h The PC87365 is identified by the value E5h. PC87366 data sheet: SID Register Index 20h The PC87366 is identified by the value E9h. PC87372 data sheet: SID Register Index 20h The PC87372 family is identified by the value F0h. PC87373 data sheet: SID Register Index 20h The PC87373 family is identified by the value F3h. PC8739x data sheet: SID Register Index 20h Members of the PC8739x family are identified by the value EAh. The PC97371 must be typos. There was never a PC97371 made by National. -Bari From todthgie at hotmail.com Fri Dec 7 00:25:19 2007 From: todthgie at hotmail.com (a a) Date: Thu, 6 Dec 2007 23:25:19 +0000 Subject: [LinuxBIOS] PATCH: flashrom fix erasing of Pm49fl002/4 mow also with patch Message-ID: Signed-off-by: Reinder E.N. de Haan lb_reha at mveas.com This patch fixes non working erasing of Pm49fl002/4 The erasing part of writing did work because it uses erase_block_jedec and not erase_chip_jedec datasheets says: "Chip erase is available in A/A Mux Mode only." this patch needs the patch from: http://www.linuxbios.org/pipermail/linuxbios/2007-November/027287.html to be inserted first. Greetings, Reinder _________________________________________________________________ Express yourself instantly with MSN Messenger! Download today it's FREE! http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/ -------------- next part -------------- An HTML attachment was scrubbed... URL: -------------- next part -------------- A non-text attachment was scrubbed... Name: flashrom-pm49fl00x_erase_fixed.diff Type: application/octet-stream Size: 1543 bytes Desc: not available URL: From myles at pel.cs.byu.edu Fri Dec 7 00:32:15 2007 From: myles at pel.cs.byu.edu (Myles Watson) Date: Thu, 6 Dec 2007 16:32:15 -0700 Subject: [LinuxBIOS] [BUILDROM] Expand linuxbiosv3 support In-Reply-To: <20071206223914.GB4092@cosmic.amd.com> References: <20071206223914.GB4092@cosmic.amd.com> Message-ID: <00f901c83860$3bfad7d0$4b23040a@chimp> It complains that the logs directory doesn't exist when it tries to fetch and create the linuxbiosv3/logs/fetch.log file. I prefer to have LinuxBIOSv2 and LinuxBIOSv3 represented in the same way. I think it's confusing to have one be LBV3 and one LINUXBIOS. It seems like LINUXBIOS should be used in the generic case, and things that are specific to v2 or v3 should be labeled that way. Which platform uses the extra ROM functionality you added? I didn't try that out. Myles From jordan.crouse at amd.com Fri Dec 7 00:46:49 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Thu, 6 Dec 2007 16:46:49 -0700 Subject: [LinuxBIOS] Expand linuxbiosv3 support In-Reply-To: <00f901c83860$3bfad7d0$4b23040a@chimp> References: <20071206223914.GB4092@cosmic.amd.com> <00f901c83860$3bfad7d0$4b23040a@chimp> Message-ID: <20071206234649.GA6114@cosmic.amd.com> On 06/12/07 16:32 -0700, Myles Watson wrote: > It complains that the logs directory doesn't exist when it tries to fetch > and create the linuxbiosv3/logs/fetch.log file. oops - my bad - I can fix that. > I prefer to have LinuxBIOSv2 and LinuxBIOSv3 represented in the same way. I > think it's confusing to have one be LBV3 and one LINUXBIOS. It seems like > LINUXBIOS should be used in the generic case, and things that are specific > to v2 or v3 should be labeled that way. The problem is that v2 and v3 are way too different - so regardless of the nomenclature, you're going to need to have ifeq statements everywhere, and I personally think that is messier then having different variables names. If you want, we _can_ reuse the variables since we're only including either the v2 or the v3 .mk file, but to me that makes things more confusing to the person porting the platform. > Which platform uses the extra ROM functionality you added? I didn't try > that out. Geode. Thats okay - its still in the "might not work stages". > Myles > > > > > -- Jordan Crouse Systems Software Development Engineer Advanced Micro Devices, Inc. From uwe at hermann-uwe.de Fri Dec 7 01:38:30 2007 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Fri, 7 Dec 2007 01:38:30 +0100 Subject: [LinuxBIOS] r539 - LinuxBIOSv3/arch/x86 In-Reply-To: References: Message-ID: <20071207003829.GC16314@greenwood> On Wed, Dec 05, 2007 at 02:45:55AM +0100, svn at openbios.org wrote: > linuxbios.stage2.o (and stage2.o in the LAR) are NOT .o files, they are > ELF executables. Remove the .o suffix to reduce confusion. For clarity's sake we might even want to add an .elf extention? Opinions? Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org From jordan.crouse at amd.com Fri Dec 7 01:53:08 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Thu, 6 Dec 2007 17:53:08 -0700 Subject: [LinuxBIOS] r539 - LinuxBIOSv3/arch/x86 In-Reply-To: <20071207003829.GC16314@greenwood> References: <20071207003829.GC16314@greenwood> Message-ID: <20071207005308.GC6784@cosmic.amd.com> On 07/12/07 01:38 +0100, Uwe Hermann wrote: > On Wed, Dec 05, 2007 at 02:45:55AM +0100, svn at openbios.org wrote: > > linuxbios.stage2.o (and stage2.o in the LAR) are NOT .o files, they are > > ELF executables. Remove the .o suffix to reduce confusion. > > For clarity's sake we might even want to add an .elf extention? Opinions? Why? Its not an elf either. > > Uwe. > -- > http://www.hermann-uwe.de | http://www.holsham-traders.de > http://www.crazy-hacks.org | http://www.unmaintained-free-software.org > > -- > linuxbios mailing list > linuxbios at linuxbios.org > http://www.linuxbios.org/mailman/listinfo/linuxbios > > -- Jordan Crouse Systems Software Development Engineer Advanced Micro Devices, Inc. From jakllsch at kollasch.net Fri Dec 7 04:11:47 2007 From: jakllsch at kollasch.net (jakllsch at kollasch.net) Date: Thu, 6 Dec 2007 21:11:47 -0600 Subject: [LinuxBIOS] [patch] MSI MS-7135 Message-ID: <20071207031147.GV2629@kirkkit.kollasch.net> Initial support for MSI MS-7135 (K8N Neo3) mainboard. Signed-off-by: Jonathan A. Kollasch From corey.osgood at gmail.com Fri Dec 7 06:06:56 2007 From: corey.osgood at gmail.com (Corey Osgood) Date: Fri, 07 Dec 2007 00:06:56 -0500 Subject: [LinuxBIOS] [BUILDROM] Expand linuxbiosv3 support In-Reply-To: <20071206223914.GB4092@cosmic.amd.com> References: <20071206223914.GB4092@cosmic.amd.com> Message-ID: <4758D4F0.2090402@gmail.com> Jordan Crouse wrote: > This is my code to expand on what Myles has already done for v3 - > basically, we move to using a V3 only .mk for LinuxBIOS, and take > advantage of LAR to clean up the build considerably. Also, introduce > my new idea for option ROMs which totally cleans things up - if this > doesn't set off anybody's BS meter, I'll backport it to v2 as well. > (probably by appending a 01, 02, 03... to the front of the ROM and > prepending them in order). If that goes down, then we can kill > off the Geode .mk in the linuxbios/ directory, which would be great. > Generic make targets for the win. > > Please let me know what you think. > > Jordan > Index: buildrom-devel/config/platforms/Config.in > =================================================================== > --- buildrom-devel.orig/config/platforms/Config.in 2007-12-06 14:32:42.000000000 -0700 > +++ buildrom-devel/config/platforms/Config.in 2007-12-06 14:35:17.000000000 -0700 > @@ -41,49 +41,58 @@ > config PLATFORM_NORWICH > bool "AMD Geode LX 'Norwich'" > depends VENDOR_AMD > + depends LINXUBIOS_V2 > Typo! That makes 2 mistakes this week! Are you feeling okay? :P This does look pretty good though, and the idea of having v3 in buildrom is great! I'm kicking myself now for never having used buildrom until yesterday, such a great tool. Did you ever track down the source of that __stack_chk_fail we discussed on IRC? -Corey From jakllsch at kollasch.net Fri Dec 7 06:44:44 2007 From: jakllsch at kollasch.net (jakllsch at kollasch.net) Date: Thu, 6 Dec 2007 23:44:44 -0600 Subject: [LinuxBIOS] [patch] MSI MS-7135 (this time with attachment) Message-ID: <20071207054444.GW2629@kirkkit.kollasch.net> Initial support for MSI MS-7135 (K8N Neo3) mainboard. Signed-off-by: Jonathan A. Kollasch -------------- next part -------------- Index: src/mainboard/msi/ms7135/Config.lb =================================================================== --- src/mainboard/msi/ms7135/Config.lb (revision 0) +++ src/mainboard/msi/ms7135/Config.lb (revision 0) @@ -0,0 +1,306 @@ +## +## This file is part of the LinuxBIOS project. +## +## Copyright (C) 2007 AMD +## (Written by Yinghai Lu for AMD) +## Copyright (C) 2007 Philipp Degler +## (Thanks to LSRA University of Mannheim for their support) +## Copyright (C) 2007 Jonathan A. Kollasch +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +## + +## +## Compute the location and size of where this firmware image +## (linuxBIOS plus bootloader) will live in the boot rom chip. +## +if USE_FAILOVER_IMAGE + default ROM_SECTION_SIZE = FAILOVER_SIZE + default ROM_SECTION_OFFSET = (ROM_SIZE - FAILOVER_SIZE) +else + if USE_FALLBACK_IMAGE + default ROM_SECTION_SIZE = FALLBACK_SIZE + default ROM_SECTION_OFFSET = (ROM_SIZE - FALLBACK_SIZE - FAILOVER_SIZE) + else + default ROM_SECTION_SIZE = (ROM_SIZE - FALLBACK_SIZE - FAILOVER_SIZE) + default ROM_SECTION_OFFSET = 0 + end +end + +## +## Compute the start location and size size of the LinuxBIOS bootloader. +## +default PAYLOAD_SIZE = (ROM_SECTION_SIZE - ROM_IMAGE_SIZE) +default CONFIG_ROM_PAYLOAD_START = (0xffffffff - ROM_SIZE + ROM_SECTION_OFFSET + 1) + +## +## Compute where this copy of LinuxBIOS will start in the boot ROM. +## +default _ROMBASE = ( CONFIG_ROM_PAYLOAD_START + PAYLOAD_SIZE ) + +## +## Compute a range of ROM that can be cached to speed up LinuxBIOS +## execution speed. +## +## XIP_ROM_SIZE must be a power of 2 (here 64 Kbyte) +## XIP_ROM_BASE must be a multiple of XIP_ROM_SIZE +## +default XIP_ROM_SIZE = (64 * 1024) + +if USE_FAILOVER_IMAGE + default XIP_ROM_BASE = (_ROMBASE - XIP_ROM_SIZE + ROM_IMAGE_SIZE) +else + if USE_FALLBACK_IMAGE + default XIP_ROM_BASE = (_ROMBASE - XIP_ROM_SIZE + ROM_IMAGE_SIZE + FAILOVER_SIZE) + else + default XIP_ROM_BASE = (_ROMBASE - XIP_ROM_SIZE + ROM_IMAGE_SIZE) + end +end + +arch i386 end + +## +## Build the objects we have code for in this directory. +## + +driver mainboard.o + +#dir /drivers/ati/ragexl + +# Needed by irq_tables and mptable and acpi_tables. +object get_bus_conf.o + +if HAVE_MP_TABLE + object mptable.o +end + +if HAVE_PIRQ_TABLE + object irq_tables.o +end + +if USE_DCACHE_RAM + if CONFIG_USE_INIT + makerule ./auto.o + depends "$(MAINBOARD)/cache_as_ram_auto.c option_table.h" + action "$(CC) -I$(TOP)/src -I. $(CPPFLAGS) $(MAINBOARD)/cache_as_ram_auto.c -Os -nostdinc -nostdlib -fno-builtin -Wall -c -o $@" + end + else + makerule ./auto.inc + depends "$(MAINBOARD)/cache_as_ram_auto.c option_table.h" + action "$(CC) -I$(TOP)/src -I. $(CPPFLAGS) $(MAINBOARD)/cache_as_ram_auto.c -Os -nostdinc -nostdlib -fno-builtin -Wall -c -S -o $@" + action "perl -e 's/.rodata/.rom.data/g' -pi $@" + action "perl -e 's/.text/.section .rom.text/g' -pi $@" + end + end +end + +## +## Build our 16 bit and 32 bit LinuxBIOS entry code. +## +if HAVE_FAILOVER_BOOT + if USE_FAILOVER_IMAGE + mainboardinit cpu/x86/16bit/entry16.inc + ldscript /cpu/x86/16bit/entry16.lds + end +else + if USE_FALLBACK_IMAGE + mainboardinit cpu/x86/16bit/entry16.inc + ldscript /cpu/x86/16bit/entry16.lds + end +end + +mainboardinit cpu/x86/32bit/entry32.inc + +if USE_DCACHE_RAM + if CONFIG_USE_INIT + ldscript /cpu/x86/32bit/entry32.lds + ldscript /cpu/amd/car/cache_as_ram.lds + end +end + +## +## Build our reset vector (this is where LinuxBIOS is entered). +## +if HAVE_FAILOVER_BOOT + if USE_FAILOVER_IMAGE + mainboardinit cpu/x86/16bit/reset16.inc + ldscript /cpu/x86/16bit/reset16.lds + else + mainboardinit cpu/x86/32bit/reset32.inc + ldscript /cpu/x86/32bit/reset32.lds + end +else + if USE_FALLBACK_IMAGE + mainboardinit cpu/x86/16bit/reset16.inc + ldscript /cpu/x86/16bit/reset16.lds + else + mainboardinit cpu/x86/32bit/reset32.inc + ldscript /cpu/x86/32bit/reset32.lds + end +end + +if USE_DCACHE_RAM +else + ### Should this be in the northbridge code? + mainboardinit arch/i386/lib/cpu_reset.inc +end + +## +## Include an ID string (for safe flashing). +## +mainboardinit southbridge/nvidia/ck804/id.inc +ldscript /southbridge/nvidia/ck804/id.lds + +## +## ROMSTRAP table for CK804 +## +if HAVE_FAILOVER_BOOT + if USE_FAILOVER_IMAGE + mainboardinit southbridge/nvidia/ck804/romstrap.inc + ldscript /southbridge/nvidia/ck804/romstrap.lds + end +else + if USE_FALLBACK_IMAGE + mainboardinit southbridge/nvidia/ck804/romstrap.inc + ldscript /southbridge/nvidia/ck804/romstrap.lds + end +end + +if USE_DCACHE_RAM + ## + ## Setup Cache-As-Ram + ## + mainboardinit cpu/amd/car/cache_as_ram.inc +end + + +### +### This is the early phase of LinuxBIOS startup. +### Things are delicate and we test to see if we should +### failover to another image. +### +if HAVE_FAILOVER_BOOT + if USE_FAILOVER_IMAGE + if USE_DCACHE_RAM + ldscript /arch/i386/lib/failover_failover.lds + end + end +else + if USE_FALLBACK_IMAGE + if USE_DCACHE_RAM + ldscript /arch/i386/lib/failover.lds + end + end +end + +### +### O.k. We aren't just an intermediary anymore! +### + +## +## Setup RAM +## +if USE_DCACHE_RAM + if CONFIG_USE_INIT + initobject auto.o + else + mainboardinit ./auto.inc + end +end + +## +## Include the secondary configuration files +## +if CONFIG_CHIP_NAME + config chip.h +end + +chip northbridge/amd/amdk8/root_complex # Root complex + device apic_cluster 0 on # APIC cluster + chip cpu/amd/socket_754 # Socket 754 CPU + device apic 0 on end # APIC + end + end + + device pci_domain 0 on # PCI domain + chip northbridge/amd/amdk8 # mc0 + device pci 18.0 on # Northbridge + # Devices on link 0, link 0 == LDT 0 + chip southbridge/nvidia/ck804 # Southbridge + device pci 0.0 on end # HT + device pci 1.0 on # LPC + chip superio/winbond/w83627thf # Super I/O + device pnp 2e.0 off # Floppy + io 0x60 = 0x3f0 + irq 0x70 = 6 + drq 0x74 = 2 + end + device pnp 2e.1 on # Parallel port + io 0x60 = 0x378 + irq 0x70 = 0 + end + device pnp 2e.2 on # Com1 + io 0x60 = 0x3f8 + irq 0x70 = 4 + end + device pnp 2e.3 on # Com2 + io 0x60 = 0x2f8 + irq 0x70 = 3 + end + device pnp 2e.5 on # PS/2 keyboard + io 0x60 = 0x60 + io 0x62 = 0x64 + irq 0x70 = 1 + irq 0x72 = 12 + end + device pnp 2e.6 off end # non-existant or undocumented + device pnp 2e.7 off end # Game, MIDI, GPIO 1, GPIO 5 + device pnp 2e.8 off end # GPIO 2 + device pnp 2e.9 off end # GPIO 3, GPIO 4 + device pnp 2e.a off end # ACPI + device pnp 2e.b on # env monitor + io 0x60 = 0x290 + irq 0x70 = 0 + end + end + end + device pci 1.1 on end # SMbus + device pci 2.0 on end # USB 1.1 + device pci 2.1 on end # USB 2 + device pci 4.0 on end # Onboard audio (ACI) + device pci 4.1 off end # Onboard modem (MCI) -- not wired out + device pci 6.0 on end # IDE + device pci 7.0 on end # SATA 1 + device pci 8.0 on end # SATA 0 + device pci 9.0 on end # PCI + device pci a.0 on end # NIC + device pci b.0 off end # PCI E 3 -- not wired out + device pci c.0 off end # PCI E 2 -- not wired out + device pci d.0 on end # PCI E 1 + device pci e.0 on end # PCI E 0 + register "ide0_enable" = "1" + register "ide1_enable" = "1" + register "sata0_enable" = "1" + register "sata1_enable" = "1" + # register "mac_eeprom_smbus" = "3" + # register "mac_eeprom_addr" = "0x51" + end + end + device pci 18.1 on end + device pci 18.2 on end + device pci 18.3 on end + end + end +end Index: src/mainboard/msi/ms7135/mptable.c =================================================================== --- src/mainboard/msi/ms7135/mptable.c (revision 0) +++ src/mainboard/msi/ms7135/mptable.c (revision 0) @@ -0,0 +1,240 @@ +/* + * This file is part of the LinuxBIOS project. + * + * Copyright (C) 2007 AMD + * (Written by Yinghai Lu for AMD) + * Copyright (C) 2007 Philipp Degler + * (Thanks to LSRA University of Mannheim for their support) + * Copyright (C) 2007 Jonathan A. Kollasch + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include +#include +#include +#include + +#include + +extern unsigned char bus_isa; +extern unsigned char bus_ck804[6]; +extern unsigned apicid_ck804; + +extern unsigned bus_type[256]; + +extern void get_bus_conf(void); + +void *smp_write_config_table(void *v) +{ + static const char sig[4] = "PCMP"; + static const char oem[8] = "MSI "; + static const char productid[12] = "MS-7135 "; + struct mp_config_table *mc; + unsigned sbdn; + + int bus_num; + int i; + + mc = (void *)(((char *)v) + SMP_FLOATING_TABLE_LEN); + memset(mc, 0, sizeof(*mc)); + + memcpy(mc->mpc_signature, sig, sizeof(sig)); + mc->mpc_length = sizeof(*mc); /* initially just the header */ + mc->mpc_spec = 0x04; + mc->mpc_checksum = 0; /* not yet computed */ + memcpy(mc->mpc_oem, oem, sizeof(oem)); + memcpy(mc->mpc_productid, productid, sizeof(productid)); + mc->mpc_oemptr = 0; + mc->mpc_oemsize = 0; + mc->mpc_entry_count = 0; /* No entries yet... */ + mc->mpc_lapic = LAPIC_ADDR; + mc->mpe_length = 0; + mc->mpe_checksum = 0; + mc->reserved = 0; + + smp_write_processors(mc); + + get_bus_conf(); + sbdn = sysconf.sbdn; + +/* Bus: Bus ID Type*/ + /* define numbers for pci and isa bus */ + for (bus_num = 0; bus_num < 256; bus_num++) { + if (bus_type[bus_num]) + smp_write_bus(mc, bus_num, "PCI "); + } + smp_write_bus(mc, bus_isa, "ISA "); + + +/* I/O APICs: APIC ID Version State Address*/ + { + device_t dev; + struct resource *res; + uint32_t dword; + + dev = dev_find_slot(bus_ck804[0], PCI_DEVFN(sbdn + 0x1, 0)); + if (dev) { + res = find_resource(dev, PCI_BASE_ADDRESS_1); + if (res) { + smp_write_ioapic(mc, apicid_ck804, 0x11, + res->base); + } + + /* Initialize interrupt mapping */ + + /* these are the stock bios's values */ + /*0x01800500,0x1800d509,0x00520d08*/ + + dword = 0x00d0d218; + pci_write_config32(dev, 0x7c, dword); + + dword = 0x8d001509; + pci_write_config32(dev, 0x80, dword); + + dword = 0x00010271; + pci_write_config32(dev, 0x84, dword); + + } + } + +/*I/O Ints: Type Polarity Trigger Bus ID IRQ APIC ID PIN# */ + smp_write_intsrc(mc, mp_ExtINT, + MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH, + bus_isa, 0x0, apicid_ck804, 0x0); + smp_write_intsrc(mc, mp_INT, + MP_IRQ_TRIGGER_DEFAULT | MP_IRQ_POLARITY_DEFAULT, + bus_isa, 0x1, apicid_ck804, 0x1); + smp_write_intsrc(mc, mp_INT, + MP_IRQ_TRIGGER_DEFAULT | MP_IRQ_POLARITY_DEFAULT, + bus_isa, 0x0, apicid_ck804, 0x2); + smp_write_intsrc(mc, mp_INT, + MP_IRQ_TRIGGER_DEFAULT | MP_IRQ_POLARITY_DEFAULT, + bus_isa, 0x3, apicid_ck804, 0x3); + smp_write_intsrc(mc, mp_INT, + MP_IRQ_TRIGGER_DEFAULT | MP_IRQ_POLARITY_DEFAULT, + bus_isa, 0x4, apicid_ck804, 0x4); + + smp_write_intsrc(mc, mp_INT, + MP_IRQ_TRIGGER_DEFAULT | MP_IRQ_POLARITY_DEFAULT, + bus_isa, 0x6, apicid_ck804, 0x6); + smp_write_intsrc(mc, mp_INT, + MP_IRQ_TRIGGER_DEFAULT | MP_IRQ_POLARITY_DEFAULT, + bus_isa, 0x7, apicid_ck804, 0x7); + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_EDGE | MP_IRQ_POLARITY_HIGH, + bus_isa, 0x8, apicid_ck804, 0x8); + smp_write_intsrc(mc, mp_INT, + MP_IRQ_TRIGGER_DEFAULT | MP_IRQ_POLARITY_DEFAULT, + bus_isa, 0x9, apicid_ck804, 0x9); + + smp_write_intsrc(mc, mp_INT, + MP_IRQ_TRIGGER_DEFAULT | MP_IRQ_POLARITY_DEFAULT, + bus_isa, 0xc, apicid_ck804, 0xc); + smp_write_intsrc(mc, mp_INT, + MP_IRQ_TRIGGER_DEFAULT | MP_IRQ_POLARITY_DEFAULT, + bus_isa, 0xd, apicid_ck804, 0xd); + smp_write_intsrc(mc, mp_INT, + MP_IRQ_TRIGGER_DEFAULT | MP_IRQ_POLARITY_DEFAULT, + bus_isa, 0xe, apicid_ck804, 0xe); + smp_write_intsrc(mc, mp_INT, + MP_IRQ_TRIGGER_DEFAULT | MP_IRQ_POLARITY_DEFAULT, + bus_isa, 0xf, apicid_ck804, 0xf); + + /* Onboard devices */ + + /* This line seems odd. However, many free-unix + * drivers for this aren't actually interrupt driven. + */ + // smbus + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, bus_ck804[0], ((sbdn + 1) << 2) | 1, apicid_ck804, 10); + + // USB OHCI + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, bus_ck804[0], ((sbdn + 2) << 2) | 0, apicid_ck804, 23); + + // USB EHCI + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, bus_ck804[0], ((sbdn + 2) << 2) | 1, apicid_ck804, 23); + + // AC-97 + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, bus_ck804[0], ((sbdn + 4) << 2) | 0, apicid_ck804, 23); + + // SATA 0 + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, bus_ck804[0], ((sbdn + 7) << 2) | 0, apicid_ck804, 20); + + // SATA 1 + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, bus_ck804[0], ((sbdn + 8) << 2) | 0, apicid_ck804, 21); + + // NIC + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, bus_ck804[0], ((sbdn + 10) << 2) | 0, apicid_ck804, 22); + + /* Expansion slots. */ + + /* legacy PCI bus */ + + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, bus_ck804[1], (7 << 2) | 0, apicid_ck804, 17); + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, bus_ck804[1], (7 << 2) | 1, apicid_ck804, 18); + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, bus_ck804[1], (7 << 2) | 2, apicid_ck804, 19); + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, bus_ck804[1], (7 << 2) | 3, apicid_ck804, 16); + + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, bus_ck804[1], (8 << 2) | 0, apicid_ck804, 18); + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, bus_ck804[1], (8 << 2) | 1, apicid_ck804, 19); + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, bus_ck804[1], (8 << 2) | 2, apicid_ck804, 16); + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, bus_ck804[1], (8 << 2) | 3, apicid_ck804, 17); + + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, bus_ck804[1], (9 << 2) | 0, apicid_ck804, 19); + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, bus_ck804[1], (9 << 2) | 1, apicid_ck804, 16); + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, bus_ck804[1], (9 << 2) | 2, apicid_ck804, 17); + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, bus_ck804[1], (9 << 2) | 3, apicid_ck804, 18); + + /* PCI-E x1 port */ + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, bus_ck804[2], (0 << 2) | 0, apicid_ck804, 19); + /* f1-3 untested */ + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, bus_ck804[2], (0 << 2) | 1, apicid_ck804, 16); + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, bus_ck804[2], (0 << 2) | 2, apicid_ck804, 17); + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, bus_ck804[2], (0 << 2) | 3, apicid_ck804, 18); + + /* PCI-E x16 port */ + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, bus_ck804[3], (0 << 2) | 0, apicid_ck804, 18); + /* f1-3 untested */ + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, bus_ck804[3], (0 << 2) | 1, apicid_ck804, 19); + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, bus_ck804[3], (0 << 2) | 2, apicid_ck804, 16); + smp_write_intsrc(mc, mp_INT, MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_LOW, bus_ck804[3], (0 << 2) | 3, apicid_ck804, 17); + + +/*Local Ints: Type Polarity Trigger Bus ID IRQ APIC ID PIN#*/ + smp_write_lintsrc(mc, mp_ExtINT, + MP_IRQ_TRIGGER_DEFAULT | MP_IRQ_POLARITY_DEFAULT, + bus_ck804[0], 0x0, MP_APIC_ALL, 0x0); + smp_write_lintsrc(mc, mp_NMI, + MP_IRQ_TRIGGER_DEFAULT | MP_IRQ_POLARITY_DEFAULT, + bus_ck804[0], 0x0, MP_APIC_ALL, 0x1); + + /* There is no extension information... */ + + /* Compute the checksums */ + mc->mpe_checksum = + smp_compute_checksum(smp_next_mpc_entry(mc), mc->mpe_length); + mc->mpc_checksum = smp_compute_checksum(mc, mc->mpc_length); + printk_debug("Wrote the mp table end at: %p - %p\n", + mc, smp_next_mpe_entry(mc)); + return smp_next_mpe_entry(mc); +} + +unsigned long write_smp_table(unsigned long addr) +{ + void *v; + v = smp_write_floating_table(addr); + return (unsigned long)smp_write_config_table(v); +} Index: src/mainboard/msi/ms7135/irq_tables.c =================================================================== --- src/mainboard/msi/ms7135/irq_tables.c (revision 0) +++ src/mainboard/msi/ms7135/irq_tables.c (revision 0) @@ -0,0 +1,264 @@ +/* + * This file is part of the LinuxBIOS project. + * + * Copyright (C) 2007 AMD + * (Written by Yinghai Lu for AMD) + * Copyright (C) 2007 Philipp Degler + * (Thanks to LSRA University of Mannheim for their support) + * Copyright (C) 2007 Jonathan A. Kollasch + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* Documentation at: http://www.microsoft.com/hwdev/busbios/PCIIRQ.HTM */ + +#include +#include +#include +#include +#include +#include + +extern unsigned char bus_isa; +extern unsigned char bus_ck804[6]; +extern void get_bus_conf(void); + +/** + * Add one line to IRQ table. + */ +static void write_pirq_info(struct irq_info *pirq_info, uint8_t bus, + uint8_t devfn, uint8_t link0, uint16_t bitmap0, + uint8_t link1, uint16_t bitmap1, uint8_t link2, + uint16_t bitmap2, uint8_t link3, uint16_t bitmap3, + uint8_t slot, uint8_t rfu) +{ + pirq_info->bus = bus; + pirq_info->devfn = devfn; + pirq_info->irq[0].link = link0; + pirq_info->irq[0].bitmap = bitmap0; + pirq_info->irq[1].link = link1; + pirq_info->irq[1].bitmap = bitmap1; + pirq_info->irq[2].link = link2; + pirq_info->irq[2].bitmap = bitmap2; + pirq_info->irq[3].link = link3; + pirq_info->irq[3].bitmap = bitmap3; + pirq_info->slot = slot; + pirq_info->rfu = rfu; +} + +void pci_assign_irqs(unsigned, unsigned, const unsigned char *); + +/** + * Create the IRQ routing table. + * Values are derived from getpir generated code. + */ +unsigned long write_pirq_routing_table(unsigned long addr) +{ + + struct irq_routing_table *pirq; + struct irq_info *pirq_info; + unsigned slot_num; + uint8_t *v; + + uint8_t sum = 0; + int i; + unsigned sbdn; + + /* get_bus_conf() will find out all bus num and apic that share with + * mptable.c and mptable.c + */ + get_bus_conf(); + sbdn = sysconf.sbdn; + + /* Align the table to be 16 byte aligned. */ + addr += 15; + addr &= ~15; + + /* This table must be betweeen 0xf0000 & 0x100000 */ + printk_info("Writing IRQ routing tables to 0x%x...", addr); + + pirq = (void *)(addr); + v = (uint8_t *) (addr); + + pirq->signature = PIRQ_SIGNATURE; + pirq->version = PIRQ_VERSION; + + pirq->rtr_bus = bus_ck804[0]; + pirq->rtr_devfn = ((sbdn + 9) << 3) | 0; + + pirq->exclusive_irqs = 0x828; + + pirq->rtr_vendor = 0x10de; + pirq->rtr_device = 0x005c; + + pirq->miniport_data = 0; + + memset(pirq->rfu, 0, sizeof(pirq->rfu)); + + pirq_info = (void *)(&pirq->checksum + 1); + slot_num = 0; + + /* + * Some of this is obviously wrong at this point. + */ + +//Slot1 PCIE 16x + write_pirq_info(pirq_info, bus_ck804[1], (0 << 3) | 0, 0x3, 0xdeb8, 0x4, + 0xdeb8, 0x1, 0xdeb8, 0x2, 0xdeb8, 4, 0); + pirq_info++; + slot_num++; + +//Slot2 PCIE 1x + write_pirq_info(pirq_info, bus_ck804[2], (0 << 3) | 0, 0x4, 0xdeb8, 0x1, + 0xdeb8, 0x2, 0xdeb8, 0x3, 0xdeb8, 5, 0); + pirq_info++; + slot_num++; + +//Slot3 PCIE 1x + write_pirq_info(pirq_info, bus_ck804[3], (0 << 3) | 0, 0x1, 0xdeb8, 0x2, + 0xdeb8, 0x3, 0xdeb8, 0x4, 0xdeb8, 6, 0); + pirq_info++; + slot_num++; + +//Slot4 PCIE 4x + write_pirq_info(pirq_info, bus_ck804[4], (0x4 << 3) | 0, + 0x2, 0xdeb8, 0x3, 0xdeb8, 0x4, 0xdeb8, 0x1, 0xdeb8, + 7, 0); + pirq_info++; + slot_num++; + +//Slot5 - 7 PCI + for (i = 0; i < 3; i++) { + write_pirq_info(pirq_info, bus_ck804[5], (0 << (6 + i)) | 0, + ((i + 0) % 4) + 1, 0xdeb8, + ((i + 1) % 4) + 1, 0xdeb8, + ((i + 2) % 4) + 1, 0xdeb8, + ((i + 3) % 4) + 1, 0xdeb8, i, 0); + pirq_info++; + slot_num++; + } + +//pci bridge + write_pirq_info(pirq_info, bus_ck804[0], ((sbdn + 9) << 3) | 0, 0x1, + 0xdeb8, 0x2, 0xdeb8, 0x3, 0xdeb8, 0x4, 0xdeb8, 0, 0); + pirq_info++; + slot_num++; + +//smbus + write_pirq_info(pirq_info, bus_ck804[0], ((sbdn + 1) << 3) | 0, 0x2, + 0xdeb8, 0, 0, 0, 0, 0, 0, 0, 0); + pirq_info++; + slot_num++; + +//usb + write_pirq_info(pirq_info, bus_ck804[0], ((sbdn + 2) << 3) | 0, 0x1, + 0xdeb8, 0x2, 0xdeb8, 0, 0, 0, 0, 0, 0); + pirq_info++; + slot_num++; + +//audio + write_pirq_info(pirq_info, bus_ck804[0], ((sbdn + 4) << 3) | 0, 0x1, + 0xdeb8, 0, 0, 0, 0, 0, 0, 0, 0); + pirq_info++; + slot_num++; +//sata + write_pirq_info(pirq_info, bus_ck804[0], ((sbdn + 7) << 3) | 0, 0x1, + 0xdeb8, 0, 0, 0, 0, 0, 0, 0, 0); + pirq_info++; + slot_num++; +//sata + write_pirq_info(pirq_info, bus_ck804[0], ((sbdn + 8) << 3) | 0, 0x1, + 0xdeb8, 0, 0, 0, 0, 0, 0, 0, 0); + pirq_info++; + slot_num++; +//nic + write_pirq_info(pirq_info, bus_ck804[0], ((sbdn + 0xa) << 3) | 0, 0x1, + 0xdeb8, 0, 0, 0, 0, 0, 0, 0, 0); + pirq_info++; + slot_num++; + + pirq->size = 32 + 16 * slot_num; + + for (i = 0; i < pirq->size; i++) + sum += v[i]; + + sum = pirq->checksum - sum; + + if (sum != pirq->checksum) { + pirq->checksum = sum; + } + + printk_info("done.\n"); + + unsigned char irq[4]; + irq[0] = 0; + irq[1] = 0; + irq[2] = 0; + irq[3] = 0; + + /* Bus, device, slots IRQs for {A,B,C,D}. */ + + irq[0] = 10; /* SMBus */ /* test me */ + pci_assign_irqs(bus_ck804[0], 1, irq); + + irq[0] = 10; /* USB */ + irq[1] = 10; + pci_assign_irqs(bus_ck804[0], 2, irq); + + irq[0] = 10; /* AC97 */ + irq[1] = 0; + pci_assign_irqs(bus_ck804[0], 4, irq); + + irq[0] = 11; /* SATA */ + pci_assign_irqs(bus_ck804[0], 7, irq); + + irq[0] = 5; /* SATA */ + pci_assign_irqs(bus_ck804[0], 8, irq); + + irq[0] = 10; /* Ethernet */ + pci_assign_irqs(bus_ck804[0], 10, irq); + + + /* physical slots */ + + irq[0] = 5; /* PCI E1 - x1 */ + pci_assign_irqs(bus_ck804[2], 0, irq); + + irq[0] = 11; /* PCI E2 - x16 */ + pci_assign_irqs(bus_ck804[3], 0, irq); + + /* AGP-on-PCI "AGR" ignored */ + + irq[0] = 10; /* PCI1 */ + irq[1] = 11; + irq[2] = 5; + irq[3] = 0; + pci_assign_irqs(bus_ck804[1], 7, irq); + + irq[0] = 11; /* PCI2 */ + irq[1] = 10; + irq[2] = 5; + irq[3] = 0; + pci_assign_irqs(bus_ck804[1], 8, irq); + + irq[0] = 5; /* PCI3 */ + irq[1] = 10; + irq[2] = 11; + irq[3] = 0; + pci_assign_irqs(bus_ck804[1], 9, irq); + + + return (unsigned long)pirq_info; +} Index: src/mainboard/msi/ms7135/Options.lb =================================================================== --- src/mainboard/msi/ms7135/Options.lb (revision 0) +++ src/mainboard/msi/ms7135/Options.lb (revision 0) @@ -0,0 +1,321 @@ +## +## This file is part of the LinuxBIOS project. +## +## Copyright (C) 2007 Philipp Degler +## (Thanks to LSRA University of Mannheim for their support) +## Copyright (C) 2007 Jonathan A. Kollasch +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +## + +uses HAVE_MP_TABLE +uses HAVE_PIRQ_TABLE +uses USE_FALLBACK_IMAGE +uses USE_FAILOVER_IMAGE +uses HAVE_FALLBACK_BOOT +uses HAVE_FAILOVER_BOOT +uses HAVE_HARD_RESET +uses IRQ_SLOT_COUNT +uses HAVE_OPTION_TABLE +uses CONFIG_MAX_CPUS +uses CONFIG_MAX_PHYSICAL_CPUS +uses CONFIG_LOGICAL_CPUS +uses CONFIG_IOAPIC +uses CONFIG_SMP +uses FALLBACK_SIZE +uses FAILOVER_SIZE +uses ROM_SIZE +uses ROM_SECTION_SIZE +uses ROM_IMAGE_SIZE +uses ROM_SECTION_SIZE +uses ROM_SECTION_OFFSET +uses CONFIG_ROM_PAYLOAD +uses CONFIG_ROM_PAYLOAD_START +uses CONFIG_COMPRESSED_PAYLOAD_LZMA +uses PAYLOAD_SIZE +uses _ROMBASE +uses XIP_ROM_SIZE +uses XIP_ROM_BASE +uses STACK_SIZE +uses HEAP_SIZE +uses USE_OPTION_TABLE +uses LB_CKS_RANGE_START +uses LB_CKS_RANGE_END +uses LB_CKS_LOC +uses MAINBOARD_PART_NUMBER +uses MAINBOARD_VENDOR +uses MAINBOARD +uses MAINBOARD_PCI_SUBSYSTEM_VENDOR_ID +uses MAINBOARD_PCI_SUBSYSTEM_DEVICE_ID +uses LINUXBIOS_EXTRA_VERSION +uses _RAMBASE +uses CONFIG_GDB_STUB +uses CROSS_COMPILE +uses CC +uses HOSTCC +uses OBJCOPY +uses TTYS0_BAUD +uses TTYS0_BASE +uses TTYS0_LCS +uses DEFAULT_CONSOLE_LOGLEVEL +uses MAXIMUM_CONSOLE_LOGLEVEL +uses MAINBOARD_POWER_ON_AFTER_POWER_FAIL +uses CONFIG_CONSOLE_SERIAL8250 +uses CONFIG_CONSOLE_BTEXT +uses HAVE_INIT_TIMER +uses CONFIG_GDB_STUB +uses CONFIG_CHIP_NAME +uses CONFIG_CONSOLE_VGA +uses CONFIG_PCI_ROM_RUN +uses HW_MEM_HOLE_SIZEK + +uses USE_DCACHE_RAM +uses DCACHE_RAM_BASE +uses DCACHE_RAM_SIZE +uses CONFIG_USE_INIT +uses DCACHE_RAM_GLOBAL_VAR_SIZE +uses CONFIG_AP_CODE_IN_CAR +uses MEM_TRAIN_SEQ +uses WAIT_BEFORE_CPUS_INIT + +uses ENABLE_APIC_EXT_ID +uses APIC_ID_OFFSET +uses LIFT_BSP_APIC_ID + +uses CONFIG_PCI_64BIT_PREF_MEM + +uses HT_CHAIN_UNITID_BASE +uses HT_CHAIN_END_UNITID_BASE +uses SB_HT_CHAIN_ON_BUS0 +uses SB_HT_CHAIN_UNITID_OFFSET_ONLY + +uses CONFIG_LB_MEM_TOPK + + +## ROM_SIZE is the size of boot ROM that this board will use. +## ---> 512 Kbytes +default ROM_SIZE=(512*1024) + +## +## FALLBACK_SIZE is the amount of the ROM the complete fallback image will use +## +default FALLBACK_SIZE=(252*1024) + +#FAILOVER: 4K +default FAILOVER_SIZE=(4*1024) + +### +### Build options +### + +## +## Build code for the fallback boot +## +default HAVE_FALLBACK_BOOT=1 +default HAVE_FAILOVER_BOOT=1 + +## +## Build code to reset the motherboard from linuxBIOS +## +default HAVE_HARD_RESET=1 + +## +## Build code to export a programmable irq routing table +## +default HAVE_PIRQ_TABLE=1 +default IRQ_SLOT_COUNT=13 + +## +## Build code to export an x86 MP table +## Useful for specifying IRQ routing values +## +default HAVE_MP_TABLE=1 + +## +## Build code to export a CMOS option table +## +default HAVE_OPTION_TABLE=1 + +## +## Move the default LinuxBIOS cmos range off of AMD RTC registers +## +default LB_CKS_RANGE_START=49 +default LB_CKS_RANGE_END=122 +default LB_CKS_LOC=123 + +## +## Build code for SMP support +## Only worry about 2 micro processors +## +default CONFIG_SMP=1 +default CONFIG_MAX_CPUS=2 +default CONFIG_MAX_PHYSICAL_CPUS=1 +default CONFIG_LOGICAL_CPUS=1 + +#1G memory hole +default HW_MEM_HOLE_SIZEK=0x100000 + +##HT Unit ID offset, default is 1, the typical one +default HT_CHAIN_UNITID_BASE=0 + +##real SB Unit ID, default is 0x20, mean dont touch it at last +#default HT_CHAIN_END_UNITID_BASE=0x10 + +#make the SB HT chain on bus 0, default is not (0) +default SB_HT_CHAIN_ON_BUS0=2 + +##only offset for SB chain?, default is yes(1) +default SB_HT_CHAIN_UNITID_OFFSET_ONLY=0 + +#BTEXT Console +#default CONFIG_CONSOLE_BTEXT=1 + +#VGA Console +default CONFIG_CONSOLE_VGA=1 +default CONFIG_PCI_ROM_RUN=1 + +## +## enable CACHE_AS_RAM specifics +## +default USE_DCACHE_RAM=1 +#default DCACHE_RAM_BASE=0xcf000 +#default DCACHE_RAM_SIZE=0x1000 +default DCACHE_RAM_BASE=0xc8000 +default DCACHE_RAM_SIZE=0x08000 +default DCACHE_RAM_GLOBAL_VAR_SIZE=0x01000 +default CONFIG_USE_INIT=0 + +default CONFIG_AP_CODE_IN_CAR=0 +default MEM_TRAIN_SEQ=2 +default WAIT_BEFORE_CPUS_INIT=0 + +## APIC stuff +#default ENABLE_APIC_EXT_ID=0 +#default APIC_ID_OFFSET=0x10 +#default LIFT_BSP_APIC_ID=0 + + +#default CONFIG_PCI_64BIT_PREF_MEM=1 + +## +## Build code to setup a generic IOAPIC +## +default CONFIG_IOAPIC=1 + +## +## Clean up the motherboard id strings +## +default MAINBOARD_VENDOR="MSI" +default MAINBOARD_PART_NUMBER="MS-7135" +default MAINBOARD_PCI_SUBSYSTEM_VENDOR_ID=0x1462 +default MAINBOARD_PCI_SUBSYSTEM_DEVICE_ID=0x7135 + +### +### LinuxBIOS layout values +### + +## ROM_IMAGE_SIZE is the amount of space to allow linuxBIOS to occupy. +default ROM_IMAGE_SIZE = (64*1024) +#65536 + +## +## Use a small 8K stack +## +default STACK_SIZE=0x2000 + +## +## Use a small 16K heap +## +default HEAP_SIZE=0x4000 + +## +## Only use the option table in a normal image +## +#efault USE_OPTION_TABLE = !USE_FALLBACK_IMAGE +default USE_OPTION_TABLE = (!USE_FALLBACK_IMAGE) && (!USE_FAILOVER_IMAGE ) + +## +## LinuxBIOS C code runs at this location in RAM +## +default _RAMBASE=0x00004000 + +## +## Load the payload from the ROM +## +default CONFIG_ROM_PAYLOAD = 1 + +### +### Defaults of options that you may want to override in the target config file +### + +## +## The default compiler +## +default CC="$(CROSS_COMPILE)gcc -m32" +default HOSTCC="gcc" + +## +## Disable the gdb stub by default +## +default CONFIG_GDB_STUB=0 + +## +## The Serial Console +## + +# To Enable the Serial Console +default CONFIG_CONSOLE_SERIAL8250=1 + +## Select the serial console baud rate +default TTYS0_BAUD=115200 +#default TTYS0_BAUD=57600 +#default TTYS0_BAUD=38400 +#default TTYS0_BAUD=19200 +#default TTYS0_BAUD=9600 +#default TTYS0_BAUD=4800 +#default TTYS0_BAUD=2400 +#default TTYS0_BAUD=1200 + +# Select the serial console base port +default TTYS0_BASE=0x3f8 + +# Select the serial protocol +# This defaults to 8 data bits, 1 stop bit, and no parity +default TTYS0_LCS=0x3 + +## +### Select the linuxBIOS loglevel +## +## EMERG 1 system is unusable +## ALERT 2 action must be taken immediately +## CRIT 3 critical conditions +## ERR 4 error conditions +## WARNING 5 warning conditions +## NOTICE 6 normal but significant condition +## INFO 7 informational +## DEBUG 8 debug-level messages +## SPEW 9 Way too many details + +## Request this level of debugging output +default DEFAULT_CONSOLE_LOGLEVEL=8 +## At a maximum only compile in this level of debugging +default MAXIMUM_CONSOLE_LOGLEVEL=8 + +## +## Select power on after power fail setting +default MAINBOARD_POWER_ON_AFTER_POWER_FAIL="MAINBOARD_POWER_ON" + +### End Options.lb +end Index: src/mainboard/msi/ms7135/chip.h =================================================================== --- src/mainboard/msi/ms7135/chip.h (revision 0) +++ src/mainboard/msi/ms7135/chip.h (revision 0) @@ -0,0 +1,25 @@ +/* + * This file is part of the LinuxBIOS project. + * + * Copyright (C) 2007 Jonathan A. Kollasch + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +extern struct chip_operations mainboard_msi_ms7135_ops; + +struct mainboard_ms7135_config { + int nothing; +}; Index: src/mainboard/msi/ms7135/mainboard.c =================================================================== --- src/mainboard/msi/ms7135/mainboard.c (revision 0) +++ src/mainboard/msi/ms7135/mainboard.c (revision 0) @@ -0,0 +1,28 @@ +/* + * This file is part of the LinuxBIOS project. + * + * Copyright (C) 2007 Jonathan A. Kollasch + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include "chip.h" + +#if CONFIG_CHIP_NAME == 1 +struct chip_operations mainboard_msi_ms7135_ops = { + CHIP_NAME("MSI MS-7135 Mainboard") +}; +#endif Index: src/mainboard/msi/ms7135/cmos.layout =================================================================== --- src/mainboard/msi/ms7135/cmos.layout (revision 0) +++ src/mainboard/msi/ms7135/cmos.layout (revision 0) @@ -0,0 +1,98 @@ +entries + +#start-bit length config config-ID name +#0 8 r 0 seconds +#8 8 r 0 alarm_seconds +#16 8 r 0 minutes +#24 8 r 0 alarm_minutes +#32 8 r 0 hours +#40 8 r 0 alarm_hours +#48 8 r 0 day_of_week +#56 8 r 0 day_of_month +#64 8 r 0 month +#72 8 r 0 year +#80 4 r 0 rate_select +#84 3 r 0 REF_Clock +#87 1 r 0 UIP +#88 1 r 0 auto_switch_DST +#89 1 r 0 24_hour_mode +#90 1 r 0 binary_values_enable +#91 1 r 0 square-wave_out_enable +#92 1 r 0 update_finished_enable +#93 1 r 0 alarm_interrupt_enable +#94 1 r 0 periodic_interrupt_enable +#95 1 r 0 disable_clock_updates +#96 288 r 0 temporary_filler +0 384 r 0 reserved_memory +384 1 e 4 boot_option +385 1 e 4 last_boot +386 1 e 1 ECC_memory +388 4 r 0 reboot_bits +392 3 e 5 baud_rate +395 1 e 1 hw_scrubber +396 1 e 1 interleave_chip_selects +397 2 e 8 max_mem_clock +399 1 e 2 dual_core +400 1 e 1 power_on_after_fail +412 4 e 6 debug_level +416 4 e 7 boot_first +420 4 e 7 boot_second +424 4 e 7 boot_third +428 4 h 0 boot_index +432 8 h 0 boot_countdown +440 4 e 9 slow_cpu +444 1 e 1 nmi +445 1 e 1 iommu +728 256 h 0 user_data +984 16 h 0 check_sum +# Reserve the extended AMD configuration registers +1000 24 r 0 reserved_memory + + + +enumerations + +#ID value text +1 0 Disable +1 1 Enable +2 0 Enable +2 1 Disable +4 0 Fallback +4 1 Normal +5 0 115200 +5 1 57600 +5 2 38400 +5 3 19200 +5 4 9600 +5 5 4800 +5 6 2400 +5 7 1200 +6 6 Notice +6 7 Info +6 8 Debug +6 9 Spew +7 0 Network +7 1 HDD +7 2 Floppy +7 8 Fallback_Network +7 9 Fallback_HDD +7 10 Fallback_Floppy +#7 3 ROM +8 0 400Mhz +8 1 333Mhz +8 2 266Mhz +8 3 200Mhz +9 0 off +9 1 87.5% +9 2 75.0% +9 3 62.5% +9 4 50.0% +9 5 37.5% +9 6 25.0% +9 7 12.5% + +checksums + +checksum 392 983 984 + + Index: src/mainboard/msi/ms7135/get_bus_conf.c =================================================================== --- src/mainboard/msi/ms7135/get_bus_conf.c (revision 0) +++ src/mainboard/msi/ms7135/get_bus_conf.c (revision 0) @@ -0,0 +1,127 @@ +/* + * This file is part of the LinuxBIOS project. + * + * Copyright (C) 2007 AMD + * (Written by Yinghai Lu for AMD) + * Copyright (C) 2007 Philipp Degler + * (Thanks to LSRA University of Mannheim for their support) + * Copyright (C) 2007 Jonathan A. Kollasch + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include +#include +#include +#include +#if CONFIG_LOGICAL_CPUS == 1 +#include +#endif + +#include + +/* Global variables for MB layouts and these will be shared by irqtable, + * mptable and acpi_tables. + */ +/* busnum is default */ +unsigned char bus_isa; +unsigned char bus_ck804[6]; +unsigned apicid_ck804; + +unsigned pci1234x[] = { //Here you only need to set value in pci1234 for HT-IO that could be installed or not + //You may need to preset pci1234 for HTIO board, please refer to src/northbridge/amd/amdk8/get_sblk_pci1234.c for detail + 0x0000ff0, //no HTIO for a8n_e +}; +unsigned hcdnx[] = { //HT Chain device num, actually it is unit id base of every ht device in chain, assume every chain only have 4 ht device at most + 0x20202020, //a8n_e has only one ht-chain +}; +unsigned bus_type[256]; + +extern void get_sblk_pci1234(void); + +static unsigned get_bus_conf_done = 0; + +void get_bus_conf(void) +{ + unsigned apicid_base; + + device_t dev; + unsigned sbdn; + int i, j; + + if (get_bus_conf_done == 1) + return; //do it only once + + get_bus_conf_done = 1; + + sysconf.hc_possible_num = sizeof(pci1234x) / sizeof(pci1234x[0]); + sysconf.hc_possible_num = sizeof(pci1234x) / sizeof(pci1234x[0]); + for (i = 0; i < sysconf.hc_possible_num; i++) { + sysconf.pci1234[i] = pci1234x[i]; + sysconf.hcdn[i] = hcdnx[i]; + } + + get_sblk_pci1234(); + + sysconf.sbdn = (sysconf.hcdn[0] & 0xff); // first byte of first chain + sbdn = sysconf.sbdn; + + for (i = 0; i < 6; i++) { + bus_ck804[i] = 0; + } + + for (i = 0; i < 256; i++) { + bus_type[i] = 0; + } + + bus_type[0] = 1; //pci + + bus_ck804[0] = (sysconf.pci1234[0] >> 16) & 0xff; + + bus_type[bus_ck804[0]] = 1; + + /* CK804 */ + int dn = -1; + for (i = 1; i < 4; i++) { + switch (i) { + case 1: dn = 9; break; + case 2: dn = 13; break; + case 3: dn = 14; break; + default: dn = -1; break; + } + dev = dev_find_slot(bus_ck804[0], PCI_DEVFN(sbdn + dn, 0)); + if (dev) { + bus_ck804[i] = pci_read_config8(dev, PCI_SECONDARY_BUS); + bus_isa = pci_read_config8(dev, PCI_SUBORDINATE_BUS); + bus_isa++; + for (j = bus_ck804[i]; j < bus_isa; j++) + bus_type[j] = 1; + } else { + printk_debug + ("ERROR - could not find PCI %02x:%02x.0, using defaults\n", + bus_ck804[0], sbdn + dn); + bus_isa = bus_ck804[i - 1] + 1; + } + } + +/*I/O APICs: APIC ID Version State Address*/ +#if CONFIG_LOGICAL_CPUS==1 + apicid_base = get_apicid_base(3); +#else + apicid_base = CONFIG_MAX_PHYSICAL_CPUS; +#endif + apicid_ck804 = apicid_base + 0; +} Index: src/mainboard/msi/ms7135/cache_as_ram_auto.c =================================================================== --- src/mainboard/msi/ms7135/cache_as_ram_auto.c (revision 0) +++ src/mainboard/msi/ms7135/cache_as_ram_auto.c (revision 0) @@ -0,0 +1,274 @@ +/* + * This file is part of the LinuxBIOS project. + * + * Copyright (C) 2007 AMD + * (Written by Yinghai Lu for AMD) + * Copyright (C) 2007 Philipp Degler + * (Thanks to LSRA University of Mannheim for their support) + * Copyright (C) 2007 Jonathan A. Kollasch + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#define ASSEMBLY 1 +#define __ROMCC__ + +#define SERIAL_DEV PNP_DEV(0x2e, W83627HF_SP1) + +/* Used by raminit. */ +#define QRANK_DIMM_SUPPORT 1 + +/* Turn this on for SMBus debugging output. */ +#define DEBUG_SMBUS 0 + +#if CONFIG_LOGICAL_CPUS == 1 +#define SET_NB_CFG_54 1 +#endif + +#include +#include +#include +#include +#include +#include +#include "option_table.h" +#include "pc80/mc146818rtc_early.c" +#include "cpu/x86/lapic/boot_cpu.c" +#include "northbridge/amd/amdk8/reset_test.c" +#include "superio/winbond/w83627hf/w83627hf_early_serial.c" + +#if USE_FAILOVER_IMAGE == 0 + +/* Used by ck804_early_setup(). */ +#define CK804_NUM 1 + +#if CONFIG_USE_INIT == 0 +#include "lib/memcpy.c" +#endif + +#include +#include "pc80/serial.c" +#include "arch/i386/lib/console.c" +#include "ram/ramtest.c" +#include "northbridge/amd/amdk8/incoherent_ht.c" +#include "southbridge/nvidia/ck804/ck804_early_smbus.c" +#include "northbridge/amd/amdk8/raminit.h" +#include "cpu/amd/model_fxx/apic_timer.c" +#include "lib/delay.c" +#include "northbridge/amd/amdk8/debug.c" +#include "cpu/amd/mtrr/amd_earlymtrr.c" +#include "cpu/x86/bist.h" +#include "northbridge/amd/amdk8/setup_resource_map.c" +#include "northbridge/amd/amdk8/coherent_ht.c" +#include "cpu/amd/dualcore/dualcore.c" + +static void memreset_setup(void) +{ + /* FIXME: Nothing to do? */ +} + +static void memreset(int controllers, const struct mem_controller *ctrl) +{ + /* FIXME: Nothing to do? */ +} + +static inline void activate_spd_rom(const struct mem_controller *ctrl) +{ + /* FIXME: Nothing to do? */ +} + +static inline int spd_read_byte(unsigned device, unsigned address) +{ + return smbus_read_byte(device, address); +} + +#include "northbridge/amd/amdk8/raminit.c" +#include "sdram/generic_sdram.c" +#include "southbridge/nvidia/ck804/ck804_early_setup_ss.h" +#include "southbridge/nvidia/ck804/ck804_early_setup.c" +#include "cpu/amd/car/copy_and_run.c" +#include "cpu/amd/car/post_cache_as_ram.c" +#include "cpu/amd/model_fxx/init_cpus.c" + +#endif /* USE_FAILOVER_IMAGE */ + +#if ((HAVE_FAILOVER_BOOT==1) && (USE_FAILOVER_IMAGE == 1)) \ + || ((HAVE_FAILOVER_BOOT==0) && (USE_FALLBACK_IMAGE == 1)) + +#include "southbridge/nvidia/ck804/ck804_enable_rom.c" +#include "northbridge/amd/amdk8/early_ht.c" + +static void sio_setup(void) +{ + unsigned value; + uint32_t dword; + uint8_t byte; + + /* Subject decoding */ + byte = pci_read_config8(PCI_DEV(0, CK804_DEVN_BASE + 1, 0), 0x7b); + byte |= 0x20; + pci_write_config8(PCI_DEV(0, CK804_DEVN_BASE + 1, 0), 0x7b, byte); + + /* LPC Positive Decode 0 */ + dword = pci_read_config32(PCI_DEV(0, CK804_DEVN_BASE + 1, 0), 0xa0); + /* Serial 0, Serial 1 */ + dword |= (1 << 0) | (1 << 1); + pci_write_config32(PCI_DEV(0, CK804_DEVN_BASE + 1, 0), 0xa0, dword); +} + +void failover_process(unsigned long bist, unsigned long cpu_init_detectedx) +{ + unsigned last_boot_normal_x = last_boot_normal(); + + /* Is this a CPU only reset? Or is this a secondary CPU? */ + if ((cpu_init_detectedx) || (!boot_cpu())) { + if (last_boot_normal_x) { + goto normal_image; + } else { + goto fallback_image; + } + } + + /* Nothing special needs to be done to find bus 0 */ + /* Allow the HT devices to be found */ + enumerate_ht_chain(); + + sio_setup(); + + /* Setup the ck804 */ + ck804_enable_rom(); + + /* Is this a deliberate reset by the BIOS? */ + if (bios_reset_detected() && last_boot_normal_x) { + goto normal_image; + } + + /* This is the primary CPU. How should I boot? */ + else if (do_normal_boot()) { + goto normal_image; + } else { + goto fallback_image; + } + +normal_image: + __asm__ volatile ("jmp __normal_image" + : /* outputs */ + :"a" (bist), "b"(cpu_init_detectedx) /* inputs */ + ); + +fallback_image: + +#if HAVE_FAILOVER_BOOT == 1 + __asm__ volatile ("jmp __fallback_image" + : /* outputs */ + :"a" (bist), "b"(cpu_init_detectedx) /* inputs */ + ) +#endif + ; +} + +#endif /* ((HAVE_FAILOVER_BOOT==1) && (USE_FAILOVER_IMAGE == 1)) ... */ + +void real_main(unsigned long bist, unsigned long cpu_init_detectedx); + +void cache_as_ram_main(unsigned long bist, unsigned long cpu_init_detectedx) +{ +#if HAVE_FAILOVER_BOOT == 1 +#if USE_FAILOVER_IMAGE == 1 + failover_process(bist, cpu_init_detectedx); +#else + real_main(bist, cpu_init_detectedx); +#endif +#else +#if USE_FALLBACK_IMAGE == 1 + failover_process(bist, cpu_init_detectedx); +#endif + real_main(bist, cpu_init_detectedx); +#endif +} + +#if USE_FAILOVER_IMAGE == 0 +void real_main(unsigned long bist, unsigned long cpu_init_detectedx) +{ + static const uint16_t spd_addr[] = { + (0xa << 3) | 0, (0xa << 3) | 1, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + }; + + int needs_reset; + unsigned bsp_apicid = 0; + + struct mem_controller ctrl[8]; + unsigned nodes; + + if (bist == 0) { + bsp_apicid = init_cpus(cpu_init_detectedx); + } + + w83627hf_enable_serial(SERIAL_DEV, TTYS0_BASE); + uart_init(); + console_init(); + + /* Halt if there was a built in self test failure */ + report_bist_failure(bist); + +#if 0 + dump_pci_device(PCI_DEV(0, 0x18, 0)); +#endif + + needs_reset = setup_coherent_ht_domain(); + + wait_all_core0_started(); +#if CONFIG_LOGICAL_CPUS==1 + // It is said that we should start core1 after all core0 launched + start_other_cores(); + wait_all_other_cores_started(bsp_apicid); +#endif + + needs_reset |= ht_setup_chains_x(); + + needs_reset |= ck804_early_setup_x(); + + if (needs_reset) { + print_info("ht reset -\r\n"); + soft_reset(); + } + + allow_all_aps_stop(bsp_apicid); + + nodes = get_nodes(); + //It's the time to set ctrl now; + fill_mem_ctrl(nodes, ctrl, spd_addr); + + enable_smbus(); + +#if 0 + dump_spd_registers(&ctrl[0]); + dump_smbus_registers(); +#endif + + memreset_setup(); + sdram_initialize(nodes, ctrl); + +#if 0 + print_pci_devices(); + dump_pci_devices(); +#endif + + post_cache_as_ram(); +} +#endif /* USE_FAILOVER_IMAGE */ Index: targets/msi/ms7135/Config.lb =================================================================== --- targets/msi/ms7135/Config.lb (revision 0) +++ targets/msi/ms7135/Config.lb (revision 0) @@ -0,0 +1,60 @@ +## +## This file is part of the LinuxBIOS project. +## +## Copyright (C) 2007 Philipp Degler +## (Thanks to LSRA University of Mannheim for their support) +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +## + +target ms7135 +mainboard msi/ms7135 + +option DEFAULT_CONSOLE_LOGLEVEL=8 +option MAXIMUM_CONSOLE_LOGLEVEL=8 + +option HAVE_PIRQ_TABLE=1 +option CONFIG_CONSOLE_VGA=1 +option CONFIG_PCI_ROM_RUN=1 + + +romimage "normal" + option USE_FAILOVER_IMAGE=0 + option USE_FALLBACK_IMAGE=0 + option ROM_IMAGE_SIZE=0x20000 + option XIP_ROM_SIZE=0x20000 + option LINUXBIOS_EXTRA_VERSION="_Normal" + payload /tmp/payload.elf +end + +romimage "fallback" + option USE_FAILOVER_IMAGE=0 + option USE_FALLBACK_IMAGE=1 + option ROM_IMAGE_SIZE=0x20000 + option XIP_ROM_SIZE=0x20000 + option LINUXBIOS_EXTRA_VERSION="_Fallback" + payload /tmp/payload.elf +end + +romimage "failover" + option USE_FAILOVER_IMAGE=1 + option USE_FALLBACK_IMAGE=0 + option ROM_IMAGE_SIZE=FAILOVER_SIZE + option XIP_ROM_SIZE=FAILOVER_SIZE + option LINUXBIOS_EXTRA_VERSION="_Failover" +end + +buildrom ./linuxbios.rom ROM_SIZE "normal" "fallback" "failover" +#buildrom ./linuxbios.rom ROM_SIZE "normal" "fallback" From paulepanter at users.sourceforge.net Fri Dec 7 06:54:50 2007 From: paulepanter at users.sourceforge.net (Paul Menzel) Date: Fri, 07 Dec 2007 06:54:50 +0100 Subject: [LinuxBIOS] [BUILDROM] Some fixes In-Reply-To: <20071206223453.GA4092@cosmic.amd.com> References: <20071206223453.GA4092@cosmic.amd.com> Message-ID: <1197006890.3906.3.camel@mattotaupa.home.familie-menzel.de> Am Donnerstag, den 06.12.2007, 15:34 -0700 schrieb Jordan Crouse: > +menu "Build Options" > + > +config VERBOSE > + bool "See the build output on stdout" > + default n > + help > + See the entire build output on stdout. Otherwise, it will > + be saved off in a series of logs Could you add a dot at the end of the line? > + > +config MAKE_JOBS > + int "Number of make jobs to run simultaneously (experimental)" > + default 1 > + help > + This can speed the build if you have more than one core that you s/speed/speed up/ ? > + would like to allow make to use. If you have a single processor, use > + the default (1) otherwise, you can specify the number of cores you > + have plus 1 (for example, specify 5 if you have 4 cores). > + > + This option is currently used for the kernel and uClibc packages. > +endmenu Thanks, Paul From juergen127 at kreuzholzen.de Fri Dec 7 09:39:20 2007 From: juergen127 at kreuzholzen.de (Juergen Beisert) Date: Fri, 7 Dec 2007 09:39:20 +0100 Subject: [LinuxBIOS] [PATCH] TeleVideo TC7020 support In-Reply-To: <20071203211052.GB20788@greenwood> References: <2ba587f0711291934l1981a3aic1ec6dc99bb95d61@mail.gmail.com> <20071203211052.GB20788@greenwood> Message-ID: <200712070939.21242.juergen127@kreuzholzen.de> On Monday 03 December 2007 22:10, Uwe Hermann wrote: > On Thu, Nov 29, 2007 at 07:34:32PM -0800, Kenji Noguchi wrote: > > Attached is a patch for TeleVideo TC7020 support. > > It should work fine with r2993. Please kindly review. > > Thanks, see quick review below: > > I will see how MythTV performs on this box. DirectFB already runs nicely. > > Can you document this in the wiki (kernel command line options etc). > > > Does anyone know if GX1 MPEG decoder is supported by video4linux? > > Dunno, sorry. Juergen? I'm not sure, what you mean with "MPEG decoder". Yes, the CS5530 supports video window overlay. But no MPEG decoding (AFAIK), only YUV to RGB conversion in this video overlay. Juergen From most at museresearch.com Thu Dec 6 21:35:40 2007 From: most at museresearch.com (Michael Ost) Date: Thu, 06 Dec 2007 12:35:40 -0800 Subject: [LinuxBIOS] Support for Intel Little Valley Message-ID: <47585D1C.7080500@museresearch.com> Hi, list. We are considering building a product around Intel's Little Valley mini-ITX motherboard, model D201GLY. Would we be able to use linuxbios on it? If development is required, are there folks who do that kind of programming that we could work with? Thanks for any info. Cheers... mo PS: If Ron Minnich is still active in this group, then greetings! I am David Kratzer's brother in law and you and I met a couple of years back at the lab and you gave me the tour. =============================== Michael Ost, Software Architect Muse Research, Inc. From c-d.hailfinger.devel.2006 at gmx.net Fri Dec 7 11:42:30 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Fri, 07 Dec 2007 11:42:30 +0100 Subject: [LinuxBIOS] Flashrom support for NVidia MCP51? In-Reply-To: <200712061223.07996.shocky1@users.sourceforge.net> References: <200711292125.57661.shocky1@users.sourceforge.net> <47507774.2020105@gmx.net> <200711301417.33903.shocky1@users.sourceforge.net> <200712061223.07996.shocky1@users.sourceforge.net> Message-ID: <47592396.6040708@gmx.net> On 06.12.2007 20:23, Shocky wrote: > On Friday 30 November 2007 14:17, Shocky wrote: > >> On Friday 30 November 2007 13:49, Carl-Daniel Hailfinger wrote: >> >>> On 30.11.2007 05:25, Shocky wrote: >>> >>>> Now that I can build and run flashrom, I get: >>>> >>>> Calibrating delay loop.. OK. >>>> No LinuxBIOS table found. >>>> Found chipset "NVidia MCP51", enabling flash write... OK >>>> generic_spi_command called, but no SPI chipset detected >>>> No EEPROM/flash device found. >>>> >>>> I see on the supported devices list that NVidia MCP55 is supported, but >>>> mine is "?". Anything I can do to help get it supported? >>>> >>> Why do you assume it is not supported? >>> >> Good point. I guess "?" means unknown. I guess the "Found chipset...OK" is >> encouraging. >> >> >>>> m/b. It's an HP Pavilion dv2412ca laptop. I haven't been able to figure >>>> out >>>> >>> Ah, a laptop. Laptops usually need additional tricks before they >>> cooperare on the flash side. If verbose output from flashrom doesn't >>> yield anything obvious, I suggest you don't try further. >>> >> That's not so encouraging 8^(. I'd really like to make this work, even if >> it requires some serious effort. The thought of reinstalling Vista just to >> be able to flash my BIOS just fills me with revulsion. >> > I guess you didn't find anything useful in the flashrom verbose output? > Sorry, no. It's either SPI (possibly with SPI translation) or some board specific enable routine is missing. If you post superiotool output, it may at least allow us to determine if the board uses SPI translation. Regards, Carl-Daniel From peter at stuge.se Fri Dec 7 12:02:19 2007 From: peter at stuge.se (Peter Stuge) Date: Fri, 7 Dec 2007 12:02:19 +0100 Subject: [LinuxBIOS] Support for Intel Little Valley In-Reply-To: <47585D1C.7080500@museresearch.com> References: <47585D1C.7080500@museresearch.com> Message-ID: <20071207110219.2053.qmail@stuge.se> Hi, Michael. On Thu, Dec 06, 2007 at 12:35:40PM -0800, Michael Ost wrote: > We are considering building a product around Intel's Little Valley > mini-ITX motherboard, model D201GLY. Would we be able to use > linuxbios on it? SiS662+SiS964L - neither have existing support. The southbridge SiS966 is supported, maybe it's close enough to be usable. > If development is required, are there folks who do that kind of > programming that we could work with? Yes. The problem is usually to find documentation from the chipset vendor, but we've recentlyreceived nice contributions to the project from SiS themselves so maybe that will not be a big problem here. :) > PS: If Ron Minnich is still active in this group He sure is. //Peter From saproj at gmail.com Fri Dec 7 11:39:43 2007 From: saproj at gmail.com (Sergei Antonov) Date: Fri, 7 Dec 2007 13:39:43 +0300 Subject: [LinuxBIOS] Abit BE6-II V2.0 Message-ID: <1dfa6edc0712070239l3739e59aqe81368e8d1ccbfbf@mail.gmail.com> Hi! I'd like to try LinuxBIOS on a 440BX-based Abit BE6-II V2.0. After talking on IRC, I'm sending the output of 'lspci -tvnn' and 'superiotool -dV' and a generated irq_tabl.c. 'lspci -tvnn' output: -[0000:00]-+-00.0 Unknown device [8086:7190] +-01.0-[0000:01]----00.0 Unknown device [10de:0110] +-07.0 Unknown device [8086:7110] +-07.1 Unknown device [8086:7111] +-07.2 Unknown device [8086:7112] +-07.3 Unknown device [8086:7113] +-0f.0 Unknown device [11ab:4320] \-13.0 Unknown device [1103:0004] 'superiotool -dV' output: superiotool r Probing for ALi Super I/O at 0x3f0... Failed. Returned data: id=0xffff, rev=0xff Probing for ALi Super I/O at 0x370... Failed. Returned data: id=0xffff, rev=0xff Probing for Fintek Super I/O at 0x2e... Failed. Returned data: vid=0xffff, id=0xffff Probing for Fintek Super I/O at 0x4e... Failed. Returned data: vid=0xffff, id=0xffff Probing for ITE Super I/O (init=0x87,0x01,0x55,0x55/0xaa) at 0x2e... Failed. Returned data: id=0xffff, rev=0xf Probing for ITE Super I/O (init=0x87,0x87) at 0x2e... Failed. Returned data: id=0xffff, rev=0xf Probing for ITE Super I/O (init=0x87,0x01,0x55,0x55/0xaa) at 0x4e... Failed. Returned data: id=0xffff, rev=0xf Probing for ITE Super I/O (init=0x87,0x87) at 0x4e... Failed. Returned data: id=0xffff, rev=0xf Probing for NSC Super I/O at 0x2e... Failed. Returned data: port=0xff, port+1=0xff Probing for NSC Super I/O at 0x4e... Failed. Returned data: port=0xff, port+1=0xff Probing for SMSC Super I/O (idregs=0x20/0x21) at 0x2e... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x0d/0x0e) at 0x2e... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x20/0x21) at 0x4e... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x0d/0x0e) at 0x4e... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x20/0x21) at 0x162e... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x0d/0x0e) at 0x162e... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x20/0x21) at 0x164e... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x0d/0x0e) at 0x164e... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x20/0x21) at 0x3f0... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x0d/0x0e) at 0x3f0... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x20/0x21) at 0x370... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x0d/0x0e) at 0x370... Failed. Returned data: id=0xff, rev=0xff Probing for Winbond Super I/O (init=0x88) at 0x2e... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x89) at 0x2e... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x86,0x86) at 0x2e... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x87,0x87) at 0x2e... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x88) at 0x4e... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x89) at 0x4e... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x86,0x86) at 0x4e... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x87,0x87) at 0x4e... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x88) at 0x3f0... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x89) at 0x3f0... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x86,0x86) at 0x3f0... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x87,0x87) at 0x3f0... Found Winbond W83627HF/F/HG/G (id=0x52, rev=0xf4) at 0x3f0 Register dump: idx 02 07 20 21 22 23 24 25 26 28 29 2a 2b 2c 2e 2f val ff 0b 52 f4 ff fe 80 00 00 00 ff 00 00 00 00 ff def 00 NA 52 NA ff 00 MM 00 00 00 00 7c c0 00 00 00 LDN 0x00 (Floppy) idx 30 60 61 70 74 f0 f1 f2 f4 f5 val 01 03 f0 06 02 0c 00 ff 00 00 def 01 03 f0 06 02 0e 00 ff 00 00 LDN 0x01 (Parallel port) idx 30 60 61 70 74 f0 val 01 03 78 07 03 00 def 01 03 78 07 04 3f LDN 0x02 (COM1) idx 30 60 61 70 f0 val 01 03 f8 04 00 def 01 03 f8 04 00 LDN 0x03 (COM2) idx 30 60 61 70 f0 f1 val 01 02 f8 03 00 00 def 01 02 f8 03 00 00 LDN 0x05 (Keyboard) idx 30 60 61 62 63 70 72 f0 val 01 00 60 00 64 01 00 40 def 01 00 60 00 64 01 0c 80 LDN 0x06 (Consumer IR) idx 30 60 61 70 val 00 00 00 00 def 00 00 00 00 LDN 0x07 (Game port, MIDI port, GPIO 1) idx 30 60 61 62 63 70 f0 f1 f2 val 01 00 00 00 00 00 ff 00 ff def 00 02 01 03 30 09 ff 00 00 LDN 0x08 (GPIO 2, Watchdog timer) idx 30 f0 f1 f2 f3 f5 f6 f6 f7 val 01 00 ff 00 00 ff ff ff ff def 00 ff 00 00 00 00 00 00 00 LDN 0x09 (GPIO 3) idx 30 f0 f1 f2 f3 val 00 ff ff ff ff def 00 ff 00 00 00 LDN 0x0a (ACPI) idx 30 70 e0 e1 e2 e3 e4 e5 e6 e7 f0 f1 f3 f4 f6 f7 f9 fe ff val 00 00 00 00 08 00 00 00 00 00 00 8f 37 00 00 00 00 00 00 def 00 00 00 00 NA NA 00 00 00 00 00 00 00 00 00 00 00 00 00 LDN 0x0b (Hardware monitor) idx 30 60 61 70 f0 val 01 ff ff ff ff def 00 00 00 00 00 Probing for Winbond Super I/O (init=0x88) at 0x370... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x89) at 0x370... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x86,0x86) at 0x370... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x87,0x87) at 0x370... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x88) at 0x250... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x89) at 0x250... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x86,0x86) at 0x250... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x87,0x87) at 0x250... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff -------------- next part -------------- An embedded and charset-unspecified text was scrubbed... Name: irq_tabl.c URL: From myles at pel.cs.byu.edu Fri Dec 7 15:40:35 2007 From: myles at pel.cs.byu.edu (Myles Watson) Date: Fri, 7 Dec 2007 07:40:35 -0700 Subject: [LinuxBIOS] Expand linuxbiosv3 support In-Reply-To: <20071206234649.GA6114@cosmic.amd.com> References: <20071206223914.GB4092@cosmic.amd.com> <00f901c83860$3bfad7d0$4b23040a@chimp> <20071206234649.GA6114@cosmic.amd.com> Message-ID: <010c01c838df$226f2170$4b23040a@chimp> > -----Original Message----- > From: Jordan Crouse [mailto:jordan.crouse at amd.com] > Sent: Thursday, December 06, 2007 4:47 PM > To: Myles Watson > Cc: linuxbios at linuxbios.org > Subject: Re: Expand linuxbiosv3 support > > On 06/12/07 16:32 -0700, Myles Watson wrote: > > It complains that the logs directory doesn't exist when it tries to > fetch > > and create the linuxbiosv3/logs/fetch.log file. > > oops - my bad - I can fix that. > > > I prefer to have LinuxBIOSv2 and LinuxBIOSv3 represented in the same > way. I > > think it's confusing to have one be LBV3 and one LINUXBIOS. It seems > like > > LINUXBIOS should be used in the generic case, and things that are > specific > > to v2 or v3 should be labeled that way. > > The problem is that v2 and v3 are way too different - so regardless of > the nomenclature, you're going to need to have ifeq statements everywhere, > and I personally think that is messier then having different variables > names. If you want, we _can_ reuse the variables since we're only > including > either the v2 or the v3 .mk file, but to me that makes things more > confusing > to the person porting the platform. I was just voting for the variables to look the same if they were the same. (LINUXBIOS_V2_BUILD_DIR and LINUXBIOS_V3_BUILD_DIR or LBV2_BUILD_DIR and LBV3_BUILD_DIR) I wasn't complaining about the separation. Myles From erwan at seanodes.com Fri Dec 7 16:01:20 2007 From: erwan at seanodes.com (Erwan Velu) Date: Fri, 07 Dec 2007 16:01:20 +0100 Subject: [LinuxBIOS] Question about QEMU & FILO In-Reply-To: <47584634.1080102@sun.com> References: <47584634.1080102@sun.com> Message-ID: <47596040.4010801@seanodes.com> Marc Karasek a ?crit : > I am trying to get a system up using QEMU. I have compiled LinuxBIOS > with Filo as a payload. > > I followed the steps on the wiki about making a harddrive image, I had > to make it a bit bigger than 200M though. > When I "boot" the system, it finds the kernel and the initrd image, but > then when it gets a bit further it seems to have a problem with finding > the harddrive image to boot from . Although it has already fetched the > kernel and initrd from the image. > > Any pointers would be appreciated. > > Waiting for driver initialization. > Loading ata_generic.ko module > Trying to resume from LABEL=SWAP-sda2 > Unable to access resume device (LABEL=SWAP-sda2) > Creating root device. > Mounting root filesystem. > mount: could not find filesystem '/dev/root' > Setting up other filesystems. > Setting up new root fs > setuproot: moving /dev failed: No such file or directory > no fstab.sys, mounting internal defaults > setuproot: error mounting /proc: No such file or directory > setuproot: error mounting /sys: No such file or directory > Switching to new root and running init. > unmounting old /dev > unmounting old /proc > unmounting old /sys > switchroot: mount failed: No such file or directory > Booting has failed. > > Qemu is emulating some ide disks, so you must have some root=/dev/hdax on your command line instead of /dev/sdax About the kernel modules, you must have the piix kernel module loaded in the initrd. Please check your /etc/modprobe.conf for that and redo the initrd with mkinitrd. -------------------------------------------------------------------------------- Les opinions et prises de position emises par le signataire du present message lui sont propres et ne sauraient engager la responsabilite de la societe SEANODES. Ce message ainsi que les eventuelles pieces jointes constituent une correspondance privee et confidentielle a l'attention exclusive du destinataire designe ci-dessus. Si vous n'etes pas le destinataire du present message ou une personne susceptible de pouvoir le lui delivrer, il vous est signifie que toute divulgation, distribution ou copie de cette transmission est strictement interdite. Si vous avez recu ce message par erreur, nous vous remercions d'en informer l'expediteur par telephone ou de lui retourner le present message, puis d'effacer immediatement ce message de votre systeme. The views and opinions expressed by the author of this message are personal. SEANODES shall assume no liability, express or implied for such message. This e-mail and any attachments is a confidential correspondence intended only for use of the individual or entity named above. If you are not the intended recipient or the agent responsible for delivering the message to the intended recipient, you are hereby notified that any disclosure, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please notify the sender by phone or by replying this message, and then delete this message from your system. From jordan.crouse at amd.com Fri Dec 7 16:58:11 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Fri, 7 Dec 2007 08:58:11 -0700 Subject: [LinuxBIOS] Expand linuxbiosv3 support In-Reply-To: <010c01c838df$226f2170$4b23040a@chimp> References: <20071206223914.GB4092@cosmic.amd.com> <00f901c83860$3bfad7d0$4b23040a@chimp> <20071206234649.GA6114@cosmic.amd.com> <010c01c838df$226f2170$4b23040a@chimp> Message-ID: <20071207155811.GE6784@cosmic.amd.com> On 07/12/07 07:40 -0700, Myles Watson wrote: > > > > -----Original Message----- > > From: Jordan Crouse [mailto:jordan.crouse at amd.com] > > Sent: Thursday, December 06, 2007 4:47 PM > > To: Myles Watson > > Cc: linuxbios at linuxbios.org > > Subject: Re: Expand linuxbiosv3 support > > > > On 06/12/07 16:32 -0700, Myles Watson wrote: > > > It complains that the logs directory doesn't exist when it tries to > > fetch > > > and create the linuxbiosv3/logs/fetch.log file. > > > > oops - my bad - I can fix that. > > > > > I prefer to have LinuxBIOSv2 and LinuxBIOSv3 represented in the same > > way. I > > > think it's confusing to have one be LBV3 and one LINUXBIOS. It seems > > like > > > LINUXBIOS should be used in the generic case, and things that are > > specific > > > to v2 or v3 should be labeled that way. > > > > The problem is that v2 and v3 are way too different - so regardless of > > the nomenclature, you're going to need to have ifeq statements everywhere, > > and I personally think that is messier then having different variables > > names. If you want, we _can_ reuse the variables since we're only > > including > > either the v2 or the v3 .mk file, but to me that makes things more > > confusing > > to the person porting the platform. > > I was just voting for the variables to look the same if they were the same. > (LINUXBIOS_V2_BUILD_DIR and LINUXBIOS_V3_BUILD_DIR or LBV2_BUILD_DIR and > LBV3_BUILD_DIR) That we can do. Sorry for the confusion. -- Jordan Crouse Systems Software Development Engineer Advanced Micro Devices, Inc. From jordan.crouse at amd.com Fri Dec 7 16:59:48 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Fri, 7 Dec 2007 08:59:48 -0700 Subject: [LinuxBIOS] Expand linuxbiosv3 support In-Reply-To: <4758D4F0.2090402@gmail.com> References: <20071206223914.GB4092@cosmic.amd.com> <4758D4F0.2090402@gmail.com> Message-ID: <20071207155948.GF6784@cosmic.amd.com> On 07/12/07 00:06 -0500, Corey Osgood wrote: > Jordan Crouse wrote: > > This is my code to expand on what Myles has already done for v3 - > > basically, we move to using a V3 only .mk for LinuxBIOS, and take > > advantage of LAR to clean up the build considerably. Also, introduce > > my new idea for option ROMs which totally cleans things up - if this > > doesn't set off anybody's BS meter, I'll backport it to v2 as well. > > (probably by appending a 01, 02, 03... to the front of the ROM and > > prepending them in order). If that goes down, then we can kill > > off the Geode .mk in the linuxbios/ directory, which would be great. > > Generic make targets for the win. > > > > Please let me know what you think. > > > > Jordan > > > Index: buildrom-devel/config/platforms/Config.in > > =================================================================== > > --- buildrom-devel.orig/config/platforms/Config.in 2007-12-06 14:32:42.000000000 -0700 > > +++ buildrom-devel/config/platforms/Config.in 2007-12-06 14:35:17.000000000 -0700 > > @@ -41,49 +41,58 @@ > > config PLATFORM_NORWICH > > bool "AMD Geode LX 'Norwich'" > > depends VENDOR_AMD > > + depends LINXUBIOS_V2 > > > > Typo! That makes 2 mistakes this week! Are you feeling okay? :P > This does look pretty good though, and the idea of having v3 in buildrom > is great! I'm kicking myself now for never having used buildrom until > yesterday, such a great tool. Did you ever track down the source of that > __stack_chk_fail we discussed on IRC? Sort of - I'm working on a fix right now. Stay tuned. > -Corey > > -- Jordan Crouse Systems Software Development Engineer Advanced Micro Devices, Inc. From Marc.Karasek at Sun.COM Fri Dec 7 18:02:16 2007 From: Marc.Karasek at Sun.COM (Marc Karasek) Date: Fri, 07 Dec 2007 12:02:16 -0500 Subject: [LinuxBIOS] Patch file for Fedora 8 compile problems Message-ID: <47597C98.9060202@sun.com> I think this got lost in noise when I sent it last.. As promised here is the patch for first the --build-on problem and also the final linker problem. Although I consider the second one a patch rather than a fix.. :-) I have compiled this and tested it with FILO under QEMU. I think this will take care of all of the other builds as well. At least the i386 ones.. :-) Files Modified: LinuxBIOSv2/src/arch/i386/Config.lb LinuxBIOSv2/src/arch/i386/lib/id.lds LinuxBIOSv2/src/config/Config.lb /*************************Patch*********************************************** diff -C 3 -r -x .svn LinuxBIOSv2.orig/src/arch/i386/Config.lb LinuxBIOSv2/src/arch/i386/Config.lb *** LinuxBIOSv2.orig/src/arch/i386/Config.lb 2007-12-06 10:06:31.000000000 -0500 --- LinuxBIOSv2/src/arch/i386/Config.lb 2007-12-04 16:25:13.000000000 -0500 *************** *** 100,106 **** makerule linuxbios depends "crt0.o init.o $(LINUXBIOS_APC) $(LINUXBIOS_RAM_ROM) ldscript.ld" ! action "$(CC) -nostdlib -nostartfiles -static -o $@ -T ldscript.ld crt0.o init.o" action "$(CROSS_COMPILE)nm -n linuxbios | sort > linuxbios.map" end --- 100,106 ---- makerule linuxbios depends "crt0.o init.o $(LINUXBIOS_APC) $(LINUXBIOS_RAM_ROM) ldscript.ld" ! action "$(CC) -Wl,--build-id=none -nostdlib -nostartfiles -static -o $@ -T ldscript.ld crt0.o init.o" action "$(CROSS_COMPILE)nm -n linuxbios | sort > linuxbios.map" end diff -C 3 -r -x .svn LinuxBIOSv2.orig/src/arch/i386/lib/id.lds LinuxBIOSv2/src/arch/i386/lib/id.lds *** LinuxBIOSv2.orig/src/arch/i386/lib/id.lds 2007-12-06 10:06:31.000000000 -0500 --- LinuxBIOSv2/src/arch/i386/lib/id.lds 2007-12-06 10:36:31.000000000 -0500 *************** *** 1,5 **** SECTIONS { ! . = (_ROMBASE + ROM_IMAGE_SIZE - 0x10) - (__id_end - __id_start); .id (.): { *(.id) } --- 1,11 ---- SECTIONS { ! ! /* ! * . = (_ROMBASE + (ROM_IMAGE_SIZE - 0x10)) - (__id_end - __id_start); ! * This is a temporary fix. Under Fedora 8 ld does not like it if the .id section is above address 0xFFFF_EF00 ! */ ! _ROMTEMP = 0xffffef00; ! . = _ROMTEMP; .id (.): { *(.id) } Only in LinuxBIOSv2/src/arch/i386/lib: id.lds~ diff -C 3 -r -x .svn LinuxBIOSv2.orig/src/config/Config.lb LinuxBIOSv2/src/config/Config.lb *** LinuxBIOSv2.orig/src/config/Config.lb 2007-12-06 10:06:30.000000000 -0500 --- LinuxBIOSv2/src/config/Config.lb 2007-12-04 16:27:48.000000000 -0500 *************** *** 40,51 **** makerule linuxbios_ram.o depends "$(DRIVER) linuxbios.a $(LIBGCC_FILE_NAME)" ! action "$(CC) -nostdlib -r -o $@ c_start.o $(DRIVER) linuxbios.a $(LIBGCC_FILE_NAME)" end makerule linuxbios_ram depends "linuxbios_ram.o $(TOP)/src/config/linuxbios_ram.ld ldoptions" ! action "$(CC) -nostdlib -nostartfiles -static -o $@ -T $(TOP)/src/config/linuxbios_ram.ld linuxbios_ram.o" action "$(CROSS_COMPILE)nm -n linuxbios_ram | sort > linuxbios_ram.map" end --- 40,51 ---- makerule linuxbios_ram.o depends "$(DRIVER) linuxbios.a $(LIBGCC_FILE_NAME)" ! action "$(CC) -Wl,--build-id=none -nostdlib -r -o $@ c_start.o $(DRIVER) linuxbios.a $(LIBGCC_FILE_NAME)" end makerule linuxbios_ram depends "linuxbios_ram.o $(TOP)/src/config/linuxbios_ram.ld ldoptions" ! action "$(CC) -Wl,--build-id=none -nostdlib -nostartfiles -static -o $@ -T $(TOP)/src/config/linuxbios_ram.ld linuxbios_ram.o" action "$(CROSS_COMPILE)nm -n linuxbios_ram | sort > linuxbios_ram.map" end /*************************Patch*********************************************** Signed-off-by: Marc Karasek mailto:marc.karasek at sun.com -- /********************* Marc Karasek MTS Sun Microsystems mailto:marc.karasek at sun.com ph:770.360.6415 *********************/ From c-d.hailfinger.devel.2006 at gmx.net Fri Dec 7 18:12:58 2007 From: c-d.hailfinger.devel.2006 at gmx.net (Carl-Daniel Hailfinger) Date: Fri, 07 Dec 2007 18:12:58 +0100 Subject: [LinuxBIOS] Patch file for Fedora 8 compile problems In-Reply-To: <47597C98.9060202@sun.com> References: <47597C98.9060202@sun.com> Message-ID: <47597F1A.7090200@gmx.net> Hi Marc, thanks for your patch. Could you resend it in unified diff format (diff -u)? That makes it easier to see the changes. Regards, Carl-Daniel From shocky1 at users.sourceforge.net Fri Dec 7 18:18:10 2007 From: shocky1 at users.sourceforge.net (Shocky) Date: Fri, 07 Dec 2007 10:18:10 -0700 Subject: [LinuxBIOS] Flashrom support for NVidia MCP51? In-Reply-To: <47592396.6040708@gmx.net> References: <200711292125.57661.shocky1@users.sourceforge.net> <200712061223.07996.shocky1@users.sourceforge.net> <47592396.6040708@gmx.net> Message-ID: <200712071018.11250.shocky1@users.sourceforge.net> On Friday 07 December 2007 03:42, Carl-Daniel Hailfinger wrote: ... > > I guess you didn't find anything useful in the flashrom verbose output? > > Sorry, no. It's either SPI (possibly with SPI translation) or some board > specific enable routine is missing. If you post superiotool output, it > may at least allow us to determine if the board uses SPI translation. > > Regards, > Carl-Daniel Okay, here's the verbose superiotool output. It doesn't look too encouraging either. Shocky -- These are my opinions. Get your own. -------------- next part -------------- superiotool r2992 Probing for ALi Super I/O at 0x3f0... Failed. Returned data: id=0xffff, rev=0xff Probing for ALi Super I/O at 0x370... Failed. Returned data: id=0xffff, rev=0xff Probing for Fintek Super I/O at 0x2e... Failed. Returned data: vid=0xffff, id=0xffff Probing for Fintek Super I/O at 0x4e... Failed. Returned data: vid=0xffff, id=0xffff Probing for ITE Super I/O (init=0x87,0x01,0x55,0x55/0xaa) at 0x2e... Failed. Returned data: id=0xffff, rev=0xf Probing for ITE Super I/O (init=0x87,0x87) at 0x2e... Failed. Returned data: id=0xffff, rev=0xf Probing for ITE Super I/O (init=0x87,0x01,0x55,0x55/0xaa) at 0x4e... Failed. Returned data: id=0xffff, rev=0xf Probing for ITE Super I/O (init=0x87,0x87) at 0x4e... Failed. Returned data: id=0xffff, rev=0xf Probing for NSC Super I/O at 0x2e... Failed. Returned data: port=0xff, port+1=0xff Probing for NSC Super I/O at 0x4e... Failed. Returned data: port=0xff, port+1=0xff Probing for SMSC Super I/O (idregs=0x20/0x21) at 0x2e... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x0d/0x0e) at 0x2e... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x20/0x21) at 0x4e... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x0d/0x0e) at 0x4e... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x20/0x21) at 0x162e... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x0d/0x0e) at 0x162e... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x20/0x21) at 0x164e... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x0d/0x0e) at 0x164e... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x20/0x21) at 0x3f0... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x0d/0x0e) at 0x3f0... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x20/0x21) at 0x370... Failed. Returned data: id=0xff, rev=0xff Probing for SMSC Super I/O (idregs=0x0d/0x0e) at 0x370... Failed. Returned data: id=0xff, rev=0xff Probing for Winbond Super I/O (init=0x88) at 0x2e... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x89) at 0x2e... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x86,0x86) at 0x2e... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x87,0x87) at 0x2e... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x88) at 0x4e... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x89) at 0x4e... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x86,0x86) at 0x4e... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x87,0x87) at 0x4e... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x88) at 0x3f0... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x89) at 0x3f0... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x86,0x86) at 0x3f0... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x87,0x87) at 0x3f0... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x88) at 0x370... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x89) at 0x370... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x86,0x86) at 0x370... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x87,0x87) at 0x370... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x88) at 0x250... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x89) at 0x250... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x86,0x86) at 0x250... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff Probing for Winbond Super I/O (init=0x87,0x87) at 0x250... Failed. Returned data: id/oldid=0xff/0x0f, rev=0xff No Super I/O found From Marc.Karasek at Sun.COM Fri Dec 7 18:43:57 2007 From: Marc.Karasek at Sun.COM (Marc Karasek) Date: Fri, 07 Dec 2007 12:43:57 -0500 Subject: [LinuxBIOS] Patch file for Fedora 8 compile problems In-Reply-To: <47597F1A.7090200@gmx.net> References: <47597C98.9060202@sun.com> <47597F1A.7090200@gmx.net> Message-ID: <4759865D.4060906@sun.com> Here it is in -u format... ================================================================= diff -r -u -x .svn LinuxBIOSv2.orig/src/arch/i386/Config.lb LinuxBIOSv2/src/arch/i386/Config.lb --- LinuxBIOSv2.orig/src/arch/i386/Config.lb 2007-12-06 10:06:31.000000000 -0500 +++ LinuxBIOSv2/src/arch/i386/Config.lb 2007-12-04 16:25:13.000000000 -0500 @@ -100,7 +100,7 @@ makerule linuxbios depends "crt0.o init.o $(LINUXBIOS_APC) $(LINUXBIOS_RAM_ROM) ldscript.ld" - action "$(CC) -nostdlib -nostartfiles -static -o $@ -T ldscript.ld crt0.o init.o" + action "$(CC) -Wl,--build-id=none -nostdlib -nostartfiles -static -o $@ -T ldscript.ld crt0.o init.o" action "$(CROSS_COMPILE)nm -n linuxbios | sort > linuxbios.map" end diff -r -u -x .svn LinuxBIOSv2.orig/src/arch/i386/lib/id.lds LinuxBIOSv2/src/arch/i386/lib/id.lds --- LinuxBIOSv2.orig/src/arch/i386/lib/id.lds 2007-12-06 10:06:31.000000000 -0500 +++ LinuxBIOSv2/src/arch/i386/lib/id.lds 2007-12-06 10:36:31.000000000 -0500 @@ -1,5 +1,11 @@ SECTIONS { - . = (_ROMBASE + ROM_IMAGE_SIZE - 0x10) - (__id_end - __id_start); + +/* + * . = (_ROMBASE + (ROM_IMAGE_SIZE - 0x10)) - (__id_end - __id_start); + * This is a temporary fix. Under Fedora 8 ld does not like it if the .id section is above address 0xFFFF_EF00 +*/ + _ROMTEMP = 0xffffef00; + . = _ROMTEMP; .id (.): { *(.id) } diff -r -u -x .svn LinuxBIOSv2.orig/src/config/Config.lb LinuxBIOSv2/src/config/Config.lb --- LinuxBIOSv2.orig/src/config/Config.lb 2007-12-06 10:06:30.000000000 -0500 +++ LinuxBIOSv2/src/config/Config.lb 2007-12-04 16:27:48.000000000 -0500 @@ -40,12 +40,12 @@ makerule linuxbios_ram.o depends "$(DRIVER) linuxbios.a $(LIBGCC_FILE_NAME)" - action "$(CC) -nostdlib -r -o $@ c_start.o $(DRIVER) linuxbios.a $(LIBGCC_FILE_NAME)" + action "$(CC) -Wl,--build-id=none -nostdlib -r -o $@ c_start.o $(DRIVER) linuxbios.a $(LIBGCC_FILE_NAME)" end makerule linuxbios_ram depends "linuxbios_ram.o $(TOP)/src/config/linuxbios_ram.ld ldoptions" - action "$(CC) -nostdlib -nostartfiles -static -o $@ -T $(TOP)/src/config/linuxbios_ram.ld linuxbios_ram.o" + action "$(CC) -Wl,--build-id=none -nostdlib -nostartfiles -static -o $@ -T $(TOP)/src/config/linuxbios_ram.ld linuxbios_ram.o" action "$(CROSS_COMPILE)nm -n linuxbios_ram | sort > linuxbios_ram.map" end ================================================================= Signed-off-by: Marc Karasek mailto:marc.karasek at sun.com /********************* Marc Karasek MTS Sun Microsystems mailto:marc.karasek at sun.com ph:770.360.6415 *********************/ Carl-Daniel Hailfinger wrote: > Hi Marc, > > thanks for your patch. Could you resend it in unified diff format (diff > -u)? That makes it easier to see the changes. > > Regards, > Carl-Daniel > From myles at pel.cs.byu.edu Fri Dec 7 18:58:03 2007 From: myles at pel.cs.byu.edu (Myles Watson) Date: Fri, 7 Dec 2007 10:58:03 -0700 Subject: [LinuxBIOS] [PATCH] many trivial patches In-Reply-To: <2831fecf0711071302k2b18417fxbeccb0be4a92cfa0@mail.gmail.com> References: <2831fecf0711071302k2b18417fxbeccb0be4a92cfa0@mail.gmail.com> Message-ID: <2831fecf0712070958g5b5614f6gf9e2b759f41d715b@mail.gmail.com> This is a resend. Does anyone have objections to this patch still? It adds "uses CONFIG_PRECOMPRESSED_PAYLOAD" to the Options.lb files so that buildrom can build for these targets only changing the Config.lb file, instead of patching the Options.lb files as well. Myles ---------- Forwarded message ---------- From: Myles Watson Date: Nov 7, 2007 2:02 PM Subject: [PATCH] many trivial patches To: Linuxbios This adds the same line (uses CONFIG_PRECOMPRESSED_PAYLOAD) to every Options.lb file that already had a "uses CONFIG_COMPRESSED_PAYLOAD_LZMA" line in it. I figure that only adding it to the files that already have support for LZMA payloads makes sure I don't break anything. Myles Signed-off-by: Myles Watson -------------- next part -------------- A non-text attachment was scrubbed... Name: PRECOMPRESSED.patch Type: application/octet-stream Size: 20792 bytes Desc: not available URL: From uwe at hermann-uwe.de Fri Dec 7 19:53:17 2007 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Fri, 7 Dec 2007 19:53:17 +0100 Subject: [LinuxBIOS] Patch file for Fedora 8 compile problems In-Reply-To: <4759865D.4060906@sun.com> References: <47597C98.9060202@sun.com> <47597F1A.7090200@gmx.net> <4759865D.4060906@sun.com> Message-ID: <20071207185317.GA17596@greenwood> On Fri, Dec 07, 2007 at 12:43:57PM -0500, Marc Karasek wrote: > Here it is in -u format... Thanks, but I think your Thunderbird broke the patch, probably because you copy-pasted it into the mailer and it clipped long lines. I recommend to use 'svn diff > foo.patch' in your svn tree (easier IMO, and that already produces patches in the -u format) and then just attach that file to the mail. > ================================================================= > diff -r -u -x .svn LinuxBIOSv2.orig/src/arch/i386/Config.lb > LinuxBIOSv2/src/arch/i386/Config.lb > --- LinuxBIOSv2.orig/src/arch/i386/Config.lb 2007-12-06 > 10:06:31.000000000 -0500 > +++ LinuxBIOSv2/src/arch/i386/Config.lb 2007-12-04 16:25:13.000000000 -0500 > @@ -100,7 +100,7 @@ > > makerule linuxbios > depends "crt0.o init.o $(LINUXBIOS_APC) $(LINUXBIOS_RAM_ROM) ldscript.ld" > - action "$(CC) -nostdlib -nostartfiles -static -o $@ -T ldscript.ld > crt0.o init.o" > + action "$(CC) -Wl,--build-id=none -nostdlib -nostartfiles -static -o We should make sure this doesn't break any other distros / compiler versions. Do all reasonably new gcc/ld versions know about '--build-id'? > $@ -T ldscript.ld crt0.o init.o" > action "$(CROSS_COMPILE)nm -n linuxbios | sort > linuxbios.map" > end > > diff -r -u -x .svn LinuxBIOSv2.orig/src/arch/i386/lib/id.lds > LinuxBIOSv2/src/arch/i386/lib/id.lds > --- LinuxBIOSv2.orig/src/arch/i386/lib/id.lds 2007-12-06 > 10:06:31.000000000 -0500 > +++ LinuxBIOSv2/src/arch/i386/lib/id.lds 2007-12-06 10:36:31.000000000 -0500 > @@ -1,5 +1,11 @@ > SECTIONS { > - . = (_ROMBASE + ROM_IMAGE_SIZE - 0x10) - (__id_end - __id_start); > + > +/* > + * . = (_ROMBASE + (ROM_IMAGE_SIZE - 0x10)) - (__id_end - __id_start); > + * This is a temporary fix. Under Fedora 8 ld does not like it if the > .id section is above address 0xFFFF_EF00 > +*/ > + _ROMTEMP = 0xffffef00; > + . = _ROMTEMP; I cannot parse this changeset completely, but won't this break the code for other distros or boards? Please resend the 'svn diff' output so we can test this on some non-Fedora distros. Thanks, Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org From uwe at hermann-uwe.de Fri Dec 7 19:55:19 2007 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Fri, 7 Dec 2007 19:55:19 +0100 Subject: [LinuxBIOS] [PATCH] many trivial patches In-Reply-To: <2831fecf0712070958g5b5614f6gf9e2b759f41d715b@mail.gmail.com> References: <2831fecf0711071302k2b18417fxbeccb0be4a92cfa0@mail.gmail.com> <2831fecf0712070958g5b5614f6gf9e2b759f41d715b@mail.gmail.com> Message-ID: <20071207185519.GB17596@greenwood> On Fri, Dec 07, 2007 at 10:58:03AM -0700, Myles Watson wrote: > This is a resend. Does anyone have objections to this patch still? Did you check with abuild that all boards still build fine after the patch? Did you compare the sizes, i.e. does it make a real difference in behaviour of the build, or is it just a "cosmetical" change? Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org From jordan at chalmers.se Fri Dec 7 19:59:21 2007 From: jordan at chalmers.se (Ulf Jordan) Date: Fri, 7 Dec 2007 19:59:21 +0100 (CET) Subject: [LinuxBIOS] [PATCH] Re: superiotool: conflicting SID for PC97317? In-Reply-To: <47588328.8060006@onelabs.com> References: <47588328.8060006@onelabs.com> Message-ID: On Thu, 6 Dec 2007, bari wrote: > Ulf Jordan wrote: >> >> I'm beginning to suspect that the '371s could be the result of a typo in >> sensors-detect (introduced in their r2848), that was later carried over to >> superiotool/nsc.c (r2837). >> > > From the PC97317 data sheet: > SID Register Index 20h > The PC97317VUL is identified by the value DFh in this register. > > Your part must be a PC97317VUL. > > The PC87317VUL is identified by the value D0h in this register. > > The PC97371 must be typos. > > There was never a PC97371 made by National. > > -Bari Attched is a patch that fixes the typos in superiotool/nsc.c. /ulf -------------- next part -------------- Fix typo. According to National's datasheet PC87317 has SID = 0xd0 and PC97317 has SID = 0xdf. PC87371/PC97371 do not seem to exist. Signed-off-by: Ulf Jordan Index: nsc.c =================================================================== --- nsc.c (revision 2998) +++ nsc.c (working copy) @@ -25,9 +25,9 @@ #define CHIP_REV_REG 0x27 /* Super I/O revision ID (SRID) */ static const struct superio_registers reg_table[] = { - {0xd0, "PC87371", { /* From sensors-detect */ + {0xd0, "PC87317", { {EOT}}}, - {0xdf, "PC97371", { /* From sensors-detect */ + {0xdf, "PC97317", { {EOT}}}, {0xe1, "PC87360", { {NOLDN, NULL, From uwe at hermann-uwe.de Fri Dec 7 20:06:47 2007 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Fri, 7 Dec 2007 20:06:47 +0100 Subject: [LinuxBIOS] SLIT Support In-Reply-To: <017901c836be$3b01a9b0$b104fd10$@com> References: <017901c836be$3b01a9b0$b104fd10$@com> Message-ID: <20071207190647.GC17596@greenwood> On Tue, Dec 04, 2007 at 03:40:03PM -0600, David Edrich wrote: > I've seen SLIT support within Linux does anyone know anything about what platforms/systems have implemented SLIT Table support? Is > this does by any standard BIOS vendor? Dunno, sorry. Someone else has to answer this question. > In Linux BIOS? ACPI support in LinuxBIOS has to be implemented for each board extra. Currently not all boards in LinuxBIOS support ACPI (most don't), but from a quick look at the code it _seems_ that these two _do_ have SLIT support: src/mainboard/iwill/dk8_htx/acpi_tables.c src/mainboard/amd/serengeti_cheetah/acpi_tables.c HTH, Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org From ward at gnu.org Fri Dec 7 20:07:55 2007 From: ward at gnu.org (Ward Vandewege) Date: Fri, 7 Dec 2007 14:07:55 -0500 Subject: [LinuxBIOS] [PATCH] many trivial patches In-Reply-To: <20071207185519.GB17596@greenwood> References: <2831fecf0711071302k2b18417fxbeccb0be4a92cfa0@mail.gmail.com> <2831fecf0712070958g5b5614f6gf9e2b759f41d715b@mail.gmail.com> <20071207185519.GB17596@greenwood> Message-ID: <20071207190755.GA9364@localdomain> On Fri, Dec 07, 2007 at 07:55:19PM +0100, Uwe Hermann wrote: > On Fri, Dec 07, 2007 at 10:58:03AM -0700, Myles Watson wrote: > > This is a resend. Does anyone have objections to this patch still? > > Did you check with abuild that all boards still build fine after the > patch? Did you compare the sizes, i.e. does it make a real difference > in behaviour of the build, or is it just a "cosmetical" change? It's not cosmetic. Without this patch, we can't have an LZMA precompressed payload for the board (which is an option in buildrom). If the boards still build (which I suspect they will), Acked-by: Ward Vandewege Thanks, Ward. -- Ward Vandewege Free Software Foundation - Senior System Administrator From uwe at hermann-uwe.de Fri Dec 7 20:11:48 2007 From: uwe at hermann-uwe.de (Uwe Hermann) Date: Fri, 7 Dec 2007 20:11:48 +0100 Subject: [LinuxBIOS] CONFIG_ROM_STREAM verus CONFIG_IDE_STREAM verus CONFIG_FS_STREAM? In-Reply-To: <1196794761.32101.31.camel@biosbreath> References: <1196794761.32101.31.camel@biosbreath> Message-ID: <20071207191148.GD17596@greenwood> On Tue, Dec 04, 2007 at 10:59:21AM -0800, Steve Isaacs wrote: > I'm puzzled about the difference between these options. If I want to > boot using an IDE device does the following make sense? > > ## Boot linux from IDE > default CONFIG_IDE=1 > default CONFIG_FS_STREAM=1 > default CONFIG_FS_EXT2=1 > default CONFIG_FS_ISO9660=1 > default CONFIG_FS_FAT=1 > default AUTOBOOT_CMDLINE="hda1:/vmlinuz" > > I found these in mainboard/momentum/apache and am wondering if I can use > them as is for my board. Where is this from? There's no such board in LinuxBIOS, AFAICS. > Am I correct in interpreting this as: Use the IDE interface to boot > which can contain an EXT2 or ISO9660 (CDROM) or FAT file system? (This > is what I want -- simply boot Linux using the ATA drive connected to the > IDE interface). I'm currently able to boot this way using a proprietary > BIOS and want to do the same using LinuxBIOS. You want to use the latest FILO version from svn, see http://linuxbios.org/Filo Which board and chipset is this btw? Uwe. -- http://www.hermann-uwe.de | http://www.holsham-traders.de http://www.crazy-hacks.org | http://www.unmaintained-free-software.org From svn at openbios.org Fri Dec 7 20:18:55 2007 From: svn at openbios.org (svn at openbios.org) Date: Fri, 7 Dec 2007 20:18:55 +0100 Subject: [LinuxBIOS] r79 - in buildrom-devel: . packages/linuxbios packages/linuxbios/patches Message-ID: Author: ward Date: 2007-12-07 20:18:55 +0100 (Fri, 07 Dec 2007) New Revision: 79 Added: buildrom-devel/packages/linuxbios/patches/m57sli-filo-and-etherboot-Config.lb.patch Removed: buildrom-devel/packages/linuxbios/patches/m57sli-filo-Config.lb.patch Modified: buildrom-devel/Config.in buildrom-devel/packages/linuxbios/m57sli-linuxbios.mk Log: This patch fixes etherboot booting for the gigabyte m57sli-s4 board by disabling LZMA payload compression for the etherboot payload (they don't get along). And it renames the linuxbios Config.lb patch so that it's more clear that it is now used by both the etherboot and filo payloads. This is a trivial patch. Signed-off-by: Ward Vandewege Acked-by: Ward Vandewege Modified: buildrom-devel/Config.in =================================================================== --- buildrom-devel/Config.in 2007-12-06 16:38:25 UTC (rev 78) +++ buildrom-devel/Config.in 2007-12-07 19:18:55 UTC (rev 79) @@ -64,6 +64,7 @@ bool "Enable LZMA compression" depends !PAYLOAD_OFW depends !PAYLOAD_FILO + depends !PAYLOAD_ETHERBOOT default y help Allow LZMA compression for the payload. This doesn't work Modified: buildrom-devel/packages/linuxbios/m57sli-linuxbios.mk =================================================================== --- buildrom-devel/packages/linuxbios/m57sli-linuxbios.mk 2007-12-06 16:38:25 UTC (rev 78) +++ buildrom-devel/packages/linuxbios/m57sli-linuxbios.mk 2007-12-07 19:18:55 UTC (rev 79) @@ -9,9 +9,13 @@ LINUXBIOS_PATCHES= ifeq ($(CONFIG_PAYLOAD_FILO),y) - LINUXBIOS_PATCHES += $(PACKAGE_DIR)/linuxbios/patches/m57sli-filo-Config.lb.patch + LINUXBIOS_PATCHES += $(PACKAGE_DIR)/linuxbios/patches/m57sli-filo-and-etherboot-Config.lb.patch endif +ifeq ($(CONFIG_PAYLOAD_ETHERBOOT),y) + LINUXBIOS_PATCHES += $(PACKAGE_DIR)/linuxbios/patches/m57sli-filo-and-etherboot-Config.lb.patch +endif + ifeq ($(CONFIG_PAYLOAD_KERNEL),y) LINUXBIOS_PATCHES += $(PACKAGE_DIR)/linuxbios/patches/m57sli-kernel-and-lab-Config.lb.patch endif Deleted: buildrom-devel/packages/linuxbios/patches/m57sli-filo-Config.lb.patch =================================================================== --- buildrom-devel/packages/linuxbios/patches/m57sli-filo-Config.lb.patch 2007-12-06 16:38:25 UTC (rev 78) +++ buildrom-devel/packages/linuxbios/patches/m57sli-filo-Config.lb.patch 2007-12-07 19:18:55 UTC (rev 79) @@ -1,97 +0,0 @@ -Index: Config.lb -=================================================================== ---- LinuxBIOSv2/targets/gigabyte/m57sli/Config.lb-orig 2007-08-14 14:49:13.000000000 -0400 -+++ LinuxBIOSv2/targets/gigabyte/m57sli/Config.lb 2007-08-21 17:56:34.000000000 -0400 -@@ -22,83 +22,30 @@ - target m57sli - mainboard gigabyte/m57sli - --# serengeti_leopard - romimage "normal" --# 48K for SCSI FW --# option ROM_SIZE = 475136 --# 48K for SCSI FW and 48K for ATI ROM --# option ROM_SIZE = 425984 --# 64K for Etherboot --# option ROM_SIZE = 458752 --# 44k for atixx.rom --# option ROM_SIZE = 479232 -- option USE_FAILOVER_IMAGE=0 -+ option USE_FAILOVER_IMAGE=0 - option USE_FALLBACK_IMAGE=0 --# option ROM_IMAGE_SIZE=0x13800 --# option ROM_IMAGE_SIZE=0x18800 - option ROM_IMAGE_SIZE=0x20000 --# option ROM_IMAGE_SIZE=0x15800 - option XIP_ROM_SIZE=0x40000 - option LINUXBIOS_EXTRA_VERSION="$(shell cat ../../VERSION)_Normal" --# payload ../../../payloads/tg3--ide_disk.zelf --# payload ../../../payloads/filo.elf --# payload ../../../payloads/filo_mem.elf --# payload ../../../payloads/filo.zelf --# payload ../../../payloads/tg3--filo_hda2.zelf --# payload ../../../payloads/tg3.zelf --# payload ../../../../payloads/tg3_vga.zelf --# payload ../../../../payloads/tg3--filo_hda2_vga.zelf --# payload ../../../../payloads/tg3--filo_hda2_vga_5_4.zelf --# payload ../../../../payloads/forcedeth--filo_hda2_vga.zelf -- payload ../../../../payloads/forcedeth--filo_hda2_vga_5_4_2_mcp55.zelf --# payload ../../../payloads/tg3_com2.zelf --# payload ../../../payloads/e1000--filo.zelf --# payload ../../../payloads/tg3--e1000--filo.zelf --# payload ../../../payloads/tg3--eepro100--e1000--filo_hda2.zelf --# payload ../../../payloads/tg3--eepro100--e1000--filo_hda2_5.3.zelf --# payload ../../../payloads/tg3--eepro100--e1000--filo_hda2_com2.zelf -+ payload ../payload.elf - end - - romimage "fallback" -- option USE_FAILOVER_IMAGE=0 -+ option USE_FAILOVER_IMAGE=0 - option USE_FALLBACK_IMAGE=1 --# option ROM_IMAGE_SIZE=0x13800 --# option ROM_IMAGE_SIZE=0x19800 - option ROM_IMAGE_SIZE=0x20000 --# option ROM_IMAGE_SIZE=0x15800 - option XIP_ROM_SIZE=0x40000 - option LINUXBIOS_EXTRA_VERSION="$(shell cat ../../VERSION)_Fallback" --# payload ../../../payloads/tg3--ide_disk.zelf --# payload ../../../payloads/filo.elf --# payload ../../../payloads/filo_mem.elf --# payload ../../../payloads/filo.zelf --# payload ../../../payloads/tg3--filo_hda2.zelf --# payload ../../../payloads/tg3.zelf --# payload ../../../../payloads/tg3_vga.zelf --# payload ../../../../payloads/memtest --# payload ../../../../payloads/e1000_vga.zelf --# payload ../../../../payloads/tg3--filo_hda2_vga.zelf --# payload ../../../../payloads/filo_hda.zelf --# payload ../../../../payloads/adlo.elf --# payload ../../../../payloads/tg3--filo_hda2_vga_5_4.zelf --# payload ../../../../payloads/forcedeth_mcp55_filo_hda2.zelf -- payload ../../../../payloads/forcedeth--filo_hda2_vga_5_4_2_mcp55.zelf --# payload ../../../../payloads/forcedeth--filo_hda2_vga.zelf --# payload ../../../payloads/tg3_com2.zelf --# payload ../../../payloads/e1000--filo.zelf --# payload ../../../payloads/tg3--e1000--filo.zelf --# payload ../../../payloads/tg3--eepro100--e1000--filo_hda2.zelf --# payload ../../../payloads/tg3--eepro100--e1000--filo_hda2_5.3.zelf --# payload ../../../payloads/tg3--eepro100--e1000--filo_hda2_com2.zelf -+ payload ../payload.elf - end - - romimage "failover" -- option USE_FAILOVER_IMAGE=1 -- option USE_FALLBACK_IMAGE=0 -- option ROM_IMAGE_SIZE=FAILOVER_SIZE -- option XIP_ROM_SIZE=FAILOVER_SIZE -- option LINUXBIOS_EXTRA_VERSION="$(shell cat ../../VERSION)_Failover" -+ option USE_FAILOVER_IMAGE=1 -+ option USE_FALLBACK_IMAGE=0 -+ option ROM_IMAGE_SIZE=FAILOVER_SIZE -+ option XIP_ROM_SIZE=FAILOVER_SIZE -+ option LINUXBIOS_EXTRA_VERSION="$(shell cat ../../VERSION)_Failover" - end - --#buildrom ./linuxbios.rom ROM_SIZE "normal" "fallback" - buildrom ./linuxbios.rom ROM_SIZE "normal" "fallback" "failover" Copied: buildrom-devel/packages/linuxbios/patches/m57sli-filo-and-etherboot-Config.lb.patch (from rev 78, buildrom-devel/packages/linuxbios/patches/m57sli-filo-Config.lb.patch) =================================================================== --- buildrom-devel/packages/linuxbios/patches/m57sli-filo-and-etherboot-Config.lb.patch (rev 0) +++ buildrom-devel/packages/linuxbios/patches/m57sli-filo-and-etherboot-Config.lb.patch 2007-12-07 19:18:55 UTC (rev 79) @@ -0,0 +1,97 @@ +Index: Config.lb +=================================================================== +--- LinuxBIOSv2/targets/gigabyte/m57sli/Config.lb-orig 2007-08-14 14:49:13.000000000 -0400 ++++ LinuxBIOSv2/targets/gigabyte/m57sli/Config.lb 2007-08-21 17:56:34.000000000 -0400 +@@ -22,83 +22,30 @@ + target m57sli + mainboard gigabyte/m57sli + +-# serengeti_leopard + romimage "normal" +-# 48K for SCSI FW +-# option ROM_SIZE = 475136 +-# 48K for SCSI FW and 48K for ATI ROM +-# option ROM_SIZE = 425984 +-# 64K for Etherboot +-# option ROM_SIZE = 458752 +-# 44k for atixx.rom +-# option ROM_SIZE = 479232 +- option USE_FAILOVER_IMAGE=0 ++ option USE_FAILOVER_IMAGE=0 + option USE_FALLBACK_IMAGE=0 +-# option ROM_IMAGE_SIZE=0x13800 +-# option ROM_IMAGE_SIZE=0x18800 + option ROM_IMAGE_SIZE=0x20000 +-# option ROM_IMAGE_SIZE=0x15800 + option XIP_ROM_SIZE=0x40000 + option LINUXBIOS_EXTRA_VERSION="$(shell cat ../../VERSION)_Normal" +-# payload ../../../payloads/tg3--ide_disk.zelf +-# payload ../../../payloads/filo.elf +-# payload ../../../payloads/filo_mem.elf +-# payload ../../../payloads/filo.zelf +-# payload ../../../payloads/tg3--filo_hda2.zelf +-# payload ../../../payloads/tg3.zelf +-# payload ../../../../payloads/tg3_vga.zelf +-# payload ../../../../payloads/tg3--filo_hda2_vga.zelf +-# payload ../../../../payloads/tg3--filo_hda2_vga_5_4.zelf +-# payload ../../../../payloads/forcedeth--filo_hda2_vga.zelf +- payload ../../../../payloads/forcedeth--filo_hda2_vga_5_4_2_mcp55.zelf +-# payload ../../../payloads/tg3_com2.zelf +-# payload ../../../payloads/e1000--filo.zelf +-# payload ../../../payloads/tg3--e1000--filo.zelf +-# payload ../../../payloads/tg3--eepro100--e1000--filo_hda2.zelf +-# payload ../../../payloads/tg3--eepro100--e1000--filo_hda2_5.3.zelf +-# payload ../../../payloads/tg3--eepro100--e1000--filo_hda2_com2.zelf ++ payload ../payload.elf + end + + romimage "fallback" +- option USE_FAILOVER_IMAGE=0 ++ option USE_FAILOVER_IMAGE=0 + option USE_FALLBACK_IMAGE=1 +-# option ROM_IMAGE_SIZE=0x13800 +-# option ROM_IMAGE_SIZE=0x19800 + option ROM_IMAGE_SIZE=0x20000 +-# option ROM_IMAGE_SIZE=0x15800 + option XIP_ROM_SIZE=0x40000 + option LINUXBIOS_EXTRA_VERSION="$(shell cat ../../VERSION)_Fallback" +-# payload ../../../payloads/tg3--ide_disk.zelf +-# payload ../../../payloads/filo.elf +-# payload ../../../payloads/filo_mem.elf +-# payload ../../../payloads/filo.zelf +-# payload ../../../payloads/tg3--filo_hda2.zelf +-# payload ../../../payloads/tg3.zelf +-# payload ../../../../payloads/tg3_vga.zelf +-# payload ../../../../payloads/memtest +-# payload ../../../../payloads/e1000_vga.zelf +-# payload ../../../../payloads/tg3--filo_hda2_vga.zelf +-# payload ../../../../payloads/filo_hda.zelf +-# payload ../../../../payloads/adlo.elf +-# payload ../../../../payloads/tg3--filo_hda2_vga_5_4.zelf +-# payload ../../../../payloads/forcedeth_mcp55_filo_hda2.zelf +- payload ../../../../payloads/forcedeth--filo_hda2_vga_5_4_2_mcp55.zelf +-# payload ../../../../payloads/forcedeth--filo_hda2_vga.zelf +-# payload ../../../payloads/tg3_com2.zelf +-# payload ../../../payloads/e1000--filo.zelf +-# payload ../../../payloads/tg3--e1000--filo.zelf +-# payload ../../../payloads/tg3--eepro100--e1000--filo_hda2.zelf +-# payload ../../../payloads/tg3--eepro100--e1000--filo_hda2_5.3.zelf +-# payload ../../../payloads/tg3--eepro100--e1000--filo_hda2_com2.zelf ++ payload ../payload.elf + end + + romimage "failover" +- option USE_FAILOVER_IMAGE=1 +- option USE_FALLBACK_IMAGE=0 +- option ROM_IMAGE_SIZE=FAILOVER_SIZE +- option XIP_ROM_SIZE=FAILOVER_SIZE +- option LINUXBIOS_EXTRA_VERSION="$(shell cat ../../VERSION)_Failover" ++ option USE_FAILOVER_IMAGE=1 ++ option USE_FALLBACK_IMAGE=0 ++ option ROM_IMAGE_SIZE=FAILOVER_SIZE ++ option XIP_ROM_SIZE=FAILOVER_SIZE ++ option LINUXBIOS_EXTRA_VERSION="$(shell cat ../../VERSION)_Failover" + end + +-#buildrom ./linuxbios.rom ROM_SIZE "normal" "fallback" + buildrom ./linuxbios.rom ROM_SIZE "normal" "fallback" "failover" From Marc.Karasek at Sun.COM Fri Dec 7 20:16:58 2007 From: Marc.Karasek at Sun.COM (Marc Karasek) Date: Fri, 07 Dec 2007 14:16:58 -0500 Subject: [LinuxBIOS] Patch file for Fedora 8 compile problems In-Reply-To: <20071207185317.GA17596@greenwood> References: <47597C98.9060202@sun.com> <47597F1A.7090200@gmx.net> <4759865D.4060906@sun.com> <20071207185317.GA17596@greenwood> Message-ID: <47599C2A.9010301@sun.com> I have attached the patch file. You are right I did cut and paste it from this file. /********************* Marc Karasek MTS Sun Microsystems mailto:marc.karasek at sun.com ph:770.360.6415 *********************/ Uwe Hermann wrote: > On Fri, Dec 07, 2007 at 12:43:57PM -0500, Marc Karasek wrote: > >> Here it is in -u format... >> > > Thanks, but I think your Thunderbird broke the patch, probably because > you copy-pasted it into the mailer and it clipped long lines. > > I recommend to use 'svn diff > foo.patch' in your svn tree (easier IMO, > and that already produces patches in the -u format) and then just attach > that file to the mail. > > > >> ================================================================= >> diff -r -u -x .svn LinuxBIOSv2.orig/src/arch/i386/Config.lb >> LinuxBIOSv2/src/arch/i386/Config.lb >> --- LinuxBIOSv2.orig/src/arch/i386/Config.lb 2007-12-06 >> 10:06:31.000000000 -0500 >> +++ LinuxBIOSv2/src/arch/i386/Config.lb 2007-12-04 16:25:13.000000000 -0500 >> @@ -100,7 +100,7 @@ >> >> makerule linuxbios >> depends "crt0.o init.o $(LINUXBIOS_APC) $(LINUXBIOS_RAM_ROM) ldscript.ld" >> - action "$(CC) -nostdlib -nostartfiles -static -o $@ -T ldscript.ld >> crt0.o init.o" >> + action "$(CC) -Wl,--build-id=none -nostdlib -nostartfiles -static -o >> > > We should make sure this doesn't break any other distros / compiler > versions. Do all reasonably new gcc/ld versions know about '--build-id'? > > > >> $@ -T ldscript.ld crt0.o init.o" >> action "$(CROSS_COMPILE)nm -n linuxbios | sort > linuxbios.map" >> end >> >> diff -r -u -x .svn LinuxBIOSv2.orig/src/arch/i386/lib/id.lds >> LinuxBIOSv2/src/arch/i386/lib/id.lds >> --- LinuxBIOSv2.orig/src/arch/i386/lib/id.lds 2007-12-06 >> 10:06:31.000000000 -0500 >> +++ LinuxBIOSv2/src/arch/i386/lib/id.lds 2007-12-06 10:36:31.000000000 -0500 >> @@ -1,5 +1,11 @@ >> SECTIONS { >> - . = (_ROMBASE + ROM_IMAGE_SIZE - 0x10) - (__id_end - __id_start); >> + >> +/* >> + * . = (_ROMBASE + (ROM_IMAGE_SIZE - 0x10)) - (__id_end - __id_start); >> + * This is a temporary fix. Under Fedora 8 ld does not like it if the >> .id section is above address 0xFFFF_EF00 >> +*/ >> + _ROMTEMP = 0xffffef00; >> + . = _ROMTEMP; >> > > I cannot parse this changeset completely, but won't this > break the code for other distros or boards? > > Please resend the 'svn diff' output so we can test this on some > non-Fedora distros. > > > Thanks, Uwe. > -------------- next part -------------- A non-text attachment was scrubbed... Name: LB.patch Type: text/x-patch Size: 2272 bytes Desc: not available URL: From smithbone at gmail.com Fri Dec 7 20:28:24 2007 From: smithbone at gmail.com (Richard Smith) Date: Fri, 07 Dec 2007 14:28:24 -0500 Subject: [LinuxBIOS] different versions of the GA-M57SLI-S4 (PLCC vs SPI) In-Reply-To: <4758252D.9080905@gmx.net> References: <46D6AB93.9080607@stockwith.co.uk> <200712051150.35909.harald.gutmann@gmx.net> <200712051344.53811.st@iss.tu-darmstadt.de> <200712051400.23814.harald.gutmann@gmx.net> <4758252D.9080905@gmx.net> Message-ID: <47599ED8.9010504@gmail.com> Carl-Daniel Hailfinger wrote: >> fancontrol and cool'n'quite and the powerdown is missing without acpi. >> i think there is just no acpi code in the lb part for the m57sli4 >> >> >>>> flashrom isn't working when lb is booted. >>>> >>> Only on the newer boards i suppose? >>> >> only on the spi version of the board. (rev 2.0) >> > > Can someone with a logic probe or oscilloscope debug that? Once I know > what's wrong with the signals, I can fix the code. I'll be happy to. So to verify: I need to boot LB (what svn rev?) on M557SLI-S4 rev 2.0 and then figure out what signal is not working correctly when you try to reflash with flashrom. -- Richard A. Smith smithbone at gmail.com From eswierk at arastra.com Fri Dec 7 20:31:48 2007 From: eswierk at arastra.com (Ed Swierk) Date: Fri, 7 Dec 2007 11:31:48 -0800 Subject: [LinuxBIOS] Patch file for Fedora 8 compile problems In-Reply-To: <20071207185317.GA17596@greenwood> References: <47597C98.9060202@sun.com> <47597F1A.7090200@gmx.net> <4759865D.4060906@sun.com> <20071207185317.GA17596@greenwood> Message-ID: On 12/7/07, Uwe Hermann wrote: > We should make sure this doesn't break any other distros / compiler > versions. Do all reasonably new gcc/ld versions know about '--build-id'? The Fedora Core 6 version of ld (2.17.50.0.6-5.fc6) doesn't support it. Not sure if that qualifies as reasonably new, but we're still using it. --Ed From jordan.crouse at amd.com Fri Dec 7 20:31:37 2007 From: jordan.crouse at amd.com (Jordan Crouse) Date: Fri, 7 Dec 2007 12:31:37 -0700 Subject: [LinuxBIOS] Expand linuxbiosv3 support In-Reply-To: <4758D4F0.2090402@gmail.com> References: <20071206223914.GB4092@cosmic.amd.com> <4758D4F0.2090402@gmail.com> Message-ID: <20071207193137.GC21683@cosmic.amd.com> On 07/12/07 00:06 -0500, Corey Osgood wrote: > Typo! That makes 2 mistakes this week! Are you feeling okay? :P > This does look pretty good though, and the idea of having v3 in buildrom > is great! I'm kicking myself now for never having used buildrom until > yesterday, such a great tool. Did you ever track down the source of that > __stack_chk_fail we discussed on IRC? Autoconf is very annoying, but as the inventor of OpenEmbedded once famously said, "autoconf sucks, but at least we know how it sucks". However, no amount of autoconf knowledge will save us from projects that further abuse the already fragile scripts. In this case, we have mkelfimage committing several crimes - 1) they overwrite incoming environment variables in autoconf, thereby thwarting any possibility of us tweaking things from the ouside, and 2) they ship a version of the final configure script, which forces us to patch both the configure.ac _and_ the configure script itself, which makes this patch much, much larger then it should be. Please, all you budding developers out there - take heed. Okay - here is the patch against buildrom - it fixes my ills, but I need another tester before I'll consider it good. > -Corey > > -- Jordan Crouse Systems Software Development Engineer Advanced Micro Devices, Inc. -------------- next part -------------- [BUILDROM] Fix breakage in the new mkelfimage autoconf scripts Whack the autoconf scripts in mkelfimage to allow us to pass our stack protection flags in. Signed-off-by: Jordan Crouse Index: buildrom-devel/packages/mkelfimage/mkelfimage-autoconf.patch =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ buildrom-devel/packages/mkelfimage/mkelfimage-autoconf.patch 2007-12-07 12:15:32.000000000 -0700 @@ -0,0 +1,6640 @@ +Index: mkelfImage-2.7/configure.ac +=================================================================== +--- mkelfImage-2.7.orig/configure.ac 2006-03-27 16:44:59.000000000 -0700 ++++ mkelfImage-2.7/configure.ac 2007-12-07 12:14:15.000000000 -0700 +@@ -173,15 +173,15 @@ + dnl ---Output variables... + + HOST_CC=$CC +-HOST_CFLAGS='-O2 -Wall $(HOST_CPPFLAGS)' ++HOST_CFLAGS="$HOST_CFLAGS -O2 -Wall \$(HOST_CPPFLAGS)" + + dnl TODO: figure out how to set these appropriately for compilers other than gcc +-I386_CFLAGS='-Os -ffreestanding -Wall -W -Wno-format $(I386_CPPFLAGS)' ++I386_CFLAGS="$I386_CFLAGS -Os -ffreestanding -Wall -W -Wno-format \$(I386_CPPFLAGS)" + I386_ASFLAGS='' + I386_LDFLAGS='-static --warn-multiple-gp --warn-common' + + dnl TODO: figure out how to set these appropriately for compilers other than gcc +-IA64_CFLAGS='-Os -ffreestanding -Wall -W -Wno-format -fpic -mconstant-gp -mauto-pic -fno-unwind-tables $(IA64_CPPFLAGS)' ++IA64_CFLAGS="$IA64_CFLAGS -Os -ffreestanding -Wall -W -Wno-format -fpic -mconstant-gp -mauto-pic -fno-unwind-tables \$(IA64_CPPFLAGS)" + IA64_ASFLAGS='-mconstant-gp -mauto-pic' + IA64_LDFLAGS='-static --warn-multiple-gp --warn-common' + +Index: mkelfImage-2.7/configure +=================================================================== +--- mkelfImage-2.7.orig/configure 2007-12-07 12:14:18.000000000 -0700 ++++ mkelfImage-2.7/configure 2007-12-07 12:14:21.000000000 -0700 +@@ -1,25 +1,54 @@ + #! /bin/sh + # Guess values for system-dependent variables and create Makefiles. +-# Generated by GNU Autoconf 2.59. ++# Generated by GNU Autoconf 2.61. + # +-# Copyright (C) 2003 Free Software Foundation, Inc. ++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, ++# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + # This configure script is free software; the Free Software Foundation + # gives unlimited permission to copy, distribute and modify it. + ## --------------------- ## + ## M4sh Initialization. ## + ## --------------------- ## + +-# Be Bourne compatible ++# Be more Bourne compatible ++DUALCASE=1; export DUALCASE # for MKS sh + if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then +- set -o posix ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++ ++ ++# PATH needs CR ++# Avoid depending upon Character Ranges. ++as_cr_letters='abcdefghijklmnopqrstuvwxyz' ++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ++as_cr_Letters=$as_cr_letters$as_cr_LETTERS ++as_cr_digits='0123456789' ++as_cr_alnum=$as_cr_Letters$as_cr_digits ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ echo "#! /bin/sh" >conf$$.sh ++ echo "exit 0" >>conf$$.sh ++ chmod +x conf$$.sh ++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then ++ PATH_SEPARATOR=';' ++ else ++ PATH_SEPARATOR=: ++ fi ++ rm -f conf$$.sh + fi +-DUALCASE=1; export DUALCASE # for MKS sh + + # Support unset when possible. + if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +@@ -29,8 +58,43 @@ + fi + + ++# IFS ++# We need space, tab and new line, in precisely that order. Quoting is ++# there to prevent editors from complaining about space-tab. ++# (If _AS_PATH_WALK were called with IFS unset, it would disable word ++# splitting by setting IFS to empty value.) ++as_nl=' ++' ++IFS=" "" $as_nl" ++ ++# Find who we are. Look in the path if we contain no directory separator. ++case $0 in ++ *[\\/]* ) as_myself=$0 ;; ++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ++done ++IFS=$as_save_IFS ++ ++ ;; ++esac ++# We did not find ourselves, most probably we were run as `sh COMMAND' ++# in which case we are not to be found in the path. ++if test "x$as_myself" = x; then ++ as_myself=$0 ++fi ++if test ! -f "$as_myself"; then ++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 ++ { (exit 1); exit 1; } ++fi ++ + # Work around bugs in pre-3.0 UWIN ksh. +-$as_unset ENV MAIL MAILPATH ++for as_var in ENV MAIL MAILPATH ++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++done + PS1='$ ' + PS2='> ' + PS4='+ ' +@@ -44,18 +108,19 @@ + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else +- $as_unset $as_var ++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi + done + + # Required to use basename. +-if expr a : '\(a\)' >/dev/null 2>&1; then ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr + else + as_expr=false + fi + +-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename + else + as_basename=false +@@ -63,157 +128,388 @@ + + + # Name of the executable. +-as_me=`$as_basename "$0" || ++as_me=`$as_basename -- "$0" || + $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)$' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || + echo X/"$0" | +- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } +- /^X\/\(\/\/\)$/{ s//\1/; q; } +- /^X\/\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` + ++# CDPATH. ++$as_unset CDPATH + +-# PATH needs CR, and LINENO needs CR and PATH. +-# Avoid depending upon Character Ranges. +-as_cr_letters='abcdefghijklmnopqrstuvwxyz' +-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +-as_cr_Letters=$as_cr_letters$as_cr_LETTERS +-as_cr_digits='0123456789' +-as_cr_alnum=$as_cr_Letters$as_cr_digits + +-# The user is always right. +-if test "${PATH_SEPARATOR+set}" != set; then +- echo "#! /bin/sh" >conf$$.sh +- echo "exit 0" >>conf$$.sh +- chmod +x conf$$.sh +- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then +- PATH_SEPARATOR=';' +- else +- PATH_SEPARATOR=: +- fi +- rm -f conf$$.sh ++if test "x$CONFIG_SHELL" = x; then ++ if (eval ":") 2>/dev/null; then ++ as_have_required=yes ++else ++ as_have_required=no ++fi ++ ++ if test $as_have_required = yes && (eval ": ++(as_func_return () { ++ (exit \$1) ++} ++as_func_success () { ++ as_func_return 0 ++} ++as_func_failure () { ++ as_func_return 1 ++} ++as_func_ret_success () { ++ return 0 ++} ++as_func_ret_failure () { ++ return 1 ++} ++ ++exitcode=0 ++if as_func_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_success failed. + fi + ++if as_func_failure; then ++ exitcode=1 ++ echo as_func_failure succeeded. ++fi + +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" || { +- # Find who we are. Look in the path if we contain no path at all +- # relative or not. +- case $0 in +- *[\\/]* ) as_myself=$0 ;; +- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +-done ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi + +- ;; +- esac +- # We did not find ourselves, most probably we were run as `sh COMMAND' +- # in which case we are not to be found in the path. +- if test "x$as_myself" = x; then +- as_myself=$0 +- fi +- if test ! -f "$as_myself"; then +- { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 +- { (exit 1); exit 1; }; } +- fi +- case $CONFIG_SHELL in +- '') ++if as_func_ret_failure; then ++ exitcode=1 ++ echo as_func_ret_failure succeeded. ++fi ++ ++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then ++ : ++else ++ exitcode=1 ++ echo positional parameters were not saved. ++fi ++ ++test \$exitcode = 0) || { (exit 1); exit 1; } ++ ++( ++ as_lineno_1=\$LINENO ++ as_lineno_2=\$LINENO ++ test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && ++ test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ++") 2> /dev/null; then ++ : ++else ++ as_candidate_shells= + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. +- for as_base in sh bash ksh sh5; do +- case $as_dir in ++ case $as_dir in + /*) +- if ("$as_dir/$as_base" -c ' ++ for as_base in sh bash ksh sh5; do ++ as_candidate_shells="$as_candidate_shells $as_dir/$as_base" ++ done;; ++ esac ++done ++IFS=$as_save_IFS ++ ++ ++ for as_shell in $as_candidate_shells $SHELL; do ++ # Try only shells that exist, to save several forks. ++ if { test -f "$as_shell" || test -f "$as_shell.exe"; } && ++ { ("$as_shell") 2> /dev/null <<\_ASEOF ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++: ++_ASEOF ++}; then ++ CONFIG_SHELL=$as_shell ++ as_have_required=yes ++ if { "$as_shell" 2> /dev/null <<\_ASEOF ++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then ++ emulate sh ++ NULLCMD=: ++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which ++ # is contrary to our usage. Disable this feature. ++ alias -g '${1+"$@"}'='"$@"' ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++: ++(as_func_return () { ++ (exit $1) ++} ++as_func_success () { ++ as_func_return 0 ++} ++as_func_failure () { ++ as_func_return 1 ++} ++as_func_ret_success () { ++ return 0 ++} ++as_func_ret_failure () { ++ return 1 ++} ++ ++exitcode=0 ++if as_func_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_success failed. ++fi ++ ++if as_func_failure; then ++ exitcode=1 ++ echo as_func_failure succeeded. ++fi ++ ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi ++ ++if as_func_ret_failure; then ++ exitcode=1 ++ echo as_func_ret_failure succeeded. ++fi ++ ++if ( set x; as_func_ret_success y && test x = "$1" ); then ++ : ++else ++ exitcode=1 ++ echo positional parameters were not saved. ++fi ++ ++test $exitcode = 0) || { (exit 1); exit 1; } ++ ++( + as_lineno_1=$LINENO + as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then +- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } +- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } +- CONFIG_SHELL=$as_dir/$as_base +- export CONFIG_SHELL +- exec "$CONFIG_SHELL" "$0" ${1+"$@"} +- fi;; +- esac +- done +-done +-;; +- esac ++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } ++ ++_ASEOF ++}; then ++ break ++fi ++ ++fi ++ ++ done ++ ++ if test "x$CONFIG_SHELL" != x; then ++ for as_var in BASH_ENV ENV ++ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++ done ++ export CONFIG_SHELL ++ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} ++fi ++ ++ ++ if test $as_have_required = no; then ++ echo This script requires a shell more modern than all the ++ echo shells that I found on your system. Please install a ++ echo modern shell, or manually run the script under such a ++ echo shell if you do have one. ++ { (exit 1); exit 1; } ++fi ++ ++ ++fi ++ ++fi ++ ++ ++ ++(eval "as_func_return () { ++ (exit \$1) ++} ++as_func_success () { ++ as_func_return 0 ++} ++as_func_failure () { ++ as_func_return 1 ++} ++as_func_ret_success () { ++ return 0 ++} ++as_func_ret_failure () { ++ return 1 ++} ++ ++exitcode=0 ++if as_func_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_success failed. ++fi ++ ++if as_func_failure; then ++ exitcode=1 ++ echo as_func_failure succeeded. ++fi ++ ++if as_func_ret_success; then ++ : ++else ++ exitcode=1 ++ echo as_func_ret_success failed. ++fi ++ ++if as_func_ret_failure; then ++ exitcode=1 ++ echo as_func_ret_failure succeeded. ++fi ++ ++if ( set x; as_func_ret_success y && test x = \"\$1\" ); then ++ : ++else ++ exitcode=1 ++ echo positional parameters were not saved. ++fi ++ ++test \$exitcode = 0") || { ++ echo No shell found that supports shell functions. ++ echo Please tell autoconf at gnu.org about your system, ++ echo including any error possibly output before this ++ echo message ++} ++ ++ ++ ++ as_lineno_1=$LINENO ++ as_lineno_2=$LINENO ++ test "x$as_lineno_1" != "x$as_lineno_2" && ++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a +- # line-number line before each line; the second 'sed' does the real +- # work. The second script uses 'N' to pair each line-number line +- # with the numbered line, and appends trailing '-' during +- # substitution so that $LINENO is not a special case at line end. ++ # line-number line after each line using $LINENO; the second 'sed' ++ # does the real work. The second script uses 'N' to pair each ++ # line-number line with the line containing $LINENO, and appends ++ # trailing '-' during substitution so that $LINENO is not a special ++ # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the +- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) +- sed '=' <$as_myself | ++ # scripts with optimization help from Paolo Bonzini. Blame Lee ++ # E. McMahon (1931-1989) for sed's syntax. :-) ++ sed -n ' ++ p ++ /[$]LINENO/= ++ ' <$as_myself | + sed ' ++ s/[$]LINENO.*/&-/ ++ t lineno ++ b ++ :lineno + N +- s,$,-, +- : loop +- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, ++ :loop ++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop +- s,-$,, +- s,^['$as_cr_digits']*\n,, ++ s/-\n.*// + ' >$as_me.lineno && +- chmod +x $as_me.lineno || ++ chmod +x "$as_me.lineno" || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the +- # original and so on. Autoconf is especially sensible to this). +- . ./$as_me.lineno ++ # original and so on. Autoconf is especially sensitive to this). ++ . "./$as_me.lineno" + # Exit status is that of the last command. + exit + } + + +-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in +- *c*,-n*) ECHO_N= ECHO_C=' +-' ECHO_T=' ' ;; +- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; +- *) ECHO_N= ECHO_C='\c' ECHO_T= ;; ++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then ++ as_dirname=dirname ++else ++ as_dirname=false ++fi ++ ++ECHO_C= ECHO_N= ECHO_T= ++case `echo -n x` in ++-n*) ++ case `echo 'x\c'` in ++ *c*) ECHO_T=' ';; # ECHO_T is single tab character. ++ *) ECHO_C='\c';; ++ esac;; ++*) ++ ECHO_N='-n';; + esac + +-if expr a : '\(a\)' >/dev/null 2>&1; then ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr + else + as_expr=false + fi + + rm -f conf$$ conf$$.exe conf$$.file ++if test -d conf$$.dir; then ++ rm -f conf$$.dir/conf$$.file ++else ++ rm -f conf$$.dir ++ mkdir conf$$.dir ++fi + echo >conf$$.file + if ln -s conf$$.file conf$$ 2>/dev/null; then +- # We could just check for DJGPP; but this test a) works b) is more generic +- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). +- if test -f conf$$.exe; then +- # Don't use ln at all; we don't have any links ++ as_ln_s='ln -s' ++ # ... but there are two gotchas: ++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. ++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. ++ # In both cases, we have to default to `cp -p'. ++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' +- else +- as_ln_s='ln -s' +- fi + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +-rm -f conf$$ conf$$.exe conf$$.file ++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file ++rmdir conf$$.dir 2>/dev/null + + if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +@@ -222,7 +518,28 @@ + as_mkdir_p=false + fi + +-as_executable_p="test -f" ++if test -x / >/dev/null 2>&1; then ++ as_test_x='test -x' ++else ++ if ls -dL / >/dev/null 2>&1; then ++ as_ls_L_option=L ++ else ++ as_ls_L_option= ++ fi ++ as_test_x=' ++ eval sh -c '\'' ++ if test -d "$1"; then ++ test -d "$1/."; ++ else ++ case $1 in ++ -*)set "./$1";; ++ esac; ++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ++ ???[sx]*):;;*)false;;esac;fi ++ '\'' sh ++ ' ++fi ++as_executable_p=$as_test_x + + # Sed expression to map a string onto a valid CPP name. + as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +@@ -231,39 +548,27 @@ + as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +-# IFS +-# We need space, tab and new line, in precisely that order. +-as_nl=' +-' +-IFS=" $as_nl" +- +-# CDPATH. +-$as_unset CDPATH + ++exec 7<&0 &1 + + # Name of the host. + # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, + # so uname gets run too. + ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +-exec 6>&1 +- + # + # Initializations. + # + ac_default_prefix=/usr/local ++ac_clean_files= + ac_config_libobj_dir=. ++LIBOBJS= + cross_compiling=no + subdirs= + MFLAGS= + MAKEFLAGS= + SHELL=${CONFIG_SHELL-/bin/sh} + +-# Maximum number of lines to put in a shell here document. +-# This variable seems obsolete. It should probably be removed, and +-# only ac_max_sed_lines should be used. +-: ${ac_max_here_lines=38} +- + # Identity of this package. + PACKAGE_NAME= + PACKAGE_TARNAME= +@@ -275,42 +580,136 @@ + # Factoring default headers for most tests. + ac_includes_default="\ + #include +-#if HAVE_SYS_TYPES_H ++#ifdef HAVE_SYS_TYPES_H + # include + #endif +-#if HAVE_SYS_STAT_H ++#ifdef HAVE_SYS_STAT_H + # include + #endif +-#if STDC_HEADERS ++#ifdef STDC_HEADERS + # include + # include + #else +-# if HAVE_STDLIB_H ++# ifdef HAVE_STDLIB_H + # include + # endif + #endif +-#if HAVE_STRING_H +-# if !STDC_HEADERS && HAVE_MEMORY_H ++#ifdef HAVE_STRING_H ++# if !defined STDC_HEADERS && defined HAVE_MEMORY_H + # include + # endif + # include + #endif +-#if HAVE_STRINGS_H ++#ifdef HAVE_STRINGS_H + # include + #endif +-#if HAVE_INTTYPES_H ++#ifdef HAVE_INTTYPES_H + # include +-#else +-# if HAVE_STDINT_H +-# include +-# endif + #endif +-#if HAVE_UNISTD_H ++#ifdef HAVE_STDINT_H ++# include ++#endif ++#ifdef HAVE_UNISTD_H + # include + #endif" + +-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT MKDIR RM CP LN TAR RPM SED FIND CPP EGREP LD ac_ct_LD AS ac_ct_AS OBJCOPY ac_ct_OBJCOPY I386_CC I386_CPP I386_LD I386_AS I386_OBJCOPY IA64_CC IA64_CPP IA64_LD IA64_AS IA64_OBJCOPY HOST_CC HOST_CFLAGS I386_CFLAGS I386_ASFLAGS I386_LDFLAGS IA64_CFLAGS IA64_ASFLAGS IA64_LDFLAGS LIBOBJS LTLIBOBJS' ++ac_subst_vars='SHELL ++PATH_SEPARATOR ++PACKAGE_NAME ++PACKAGE_TARNAME ++PACKAGE_VERSION ++PACKAGE_STRING ++PACKAGE_BUGREPORT ++exec_prefix ++prefix ++program_transform_name ++bindir ++sbindir ++libexecdir ++datarootdir ++datadir ++sysconfdir ++sharedstatedir ++localstatedir ++includedir ++oldincludedir ++docdir ++infodir ++htmldir ++dvidir ++pdfdir ++psdir ++libdir ++localedir ++mandir ++DEFS ++ECHO_C ++ECHO_N ++ECHO_T ++LIBS ++build_alias ++host_alias ++target_alias ++build ++build_cpu ++build_vendor ++build_os ++host ++host_cpu ++host_vendor ++host_os ++CC ++CFLAGS ++LDFLAGS ++CPPFLAGS ++ac_ct_CC ++EXEEXT ++OBJEXT ++MKDIR ++RM ++CP ++LN ++TAR ++RPM ++SED ++FIND ++CPP ++GREP ++EGREP ++LD ++AS ++OBJCOPY ++I386_CC ++I386_CPP ++I386_LD ++I386_AS ++I386_OBJCOPY ++IA64_CC ++IA64_CPP ++IA64_LD ++IA64_AS ++IA64_OBJCOPY ++HOST_CC ++HOST_CFLAGS ++I386_CFLAGS ++I386_ASFLAGS ++I386_LDFLAGS ++IA64_CFLAGS ++IA64_ASFLAGS ++IA64_LDFLAGS ++LIBOBJS ++LTLIBOBJS' + ac_subst_files='' ++ ac_precious_vars='build_alias ++host_alias ++target_alias ++CC ++CFLAGS ++LDFLAGS ++LIBS ++CPPFLAGS ++CPP' ++ + + # Initialize some variables set by options. + ac_init_help= +@@ -337,34 +736,48 @@ + # and all the variables that are supposed to be based on exec_prefix + # by default will actually change. + # Use braces instead of parens because sh, perl, etc. also accept them. ++# (The list follows the same order as the GNU Coding Standards.) + bindir='${exec_prefix}/bin' + sbindir='${exec_prefix}/sbin' + libexecdir='${exec_prefix}/libexec' +-datadir='${prefix}/share' ++datarootdir='${prefix}/share' ++datadir='${datarootdir}' + sysconfdir='${prefix}/etc' + sharedstatedir='${prefix}/com' + localstatedir='${prefix}/var' +-libdir='${exec_prefix}/lib' + includedir='${prefix}/include' + oldincludedir='/usr/include' +-infodir='${prefix}/info' +-mandir='${prefix}/man' ++docdir='${datarootdir}/doc/${PACKAGE}' ++infodir='${datarootdir}/info' ++htmldir='${docdir}' ++dvidir='${docdir}' ++pdfdir='${docdir}' ++psdir='${docdir}' ++libdir='${exec_prefix}/lib' ++localedir='${datarootdir}/locale' ++mandir='${datarootdir}/man' + + ac_prev= ++ac_dashdash= + for ac_option + do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then +- eval "$ac_prev=\$ac_option" ++ eval $ac_prev=\$ac_option + ac_prev= + continue + fi + +- ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` ++ case $ac_option in ++ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; ++ *) ac_optarg=yes ;; ++ esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + +- case $ac_option in ++ case $ac_dashdash$ac_option in ++ --) ++ ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; +@@ -386,33 +799,45 @@ + --config-cache | -C) + cache_file=config.cache ;; + +- -datadir | --datadir | --datadi | --datad | --data | --dat | --da) ++ -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; +- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ +- | --da=*) ++ -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + ++ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ ++ | --dataroo | --dataro | --datar) ++ ac_prev=datarootdir ;; ++ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ ++ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) ++ datarootdir=$ac_optarg ;; ++ + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } +- ac_feature=`echo $ac_feature | sed 's/-/_/g'` +- eval "enable_$ac_feature=no" ;; ++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` ++ eval enable_$ac_feature=no ;; ++ ++ -docdir | --docdir | --docdi | --doc | --do) ++ ac_prev=docdir ;; ++ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) ++ docdir=$ac_optarg ;; ++ ++ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ++ ac_prev=dvidir ;; ++ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) ++ dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } +- ac_feature=`echo $ac_feature | sed 's/-/_/g'` +- case $ac_option in +- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; +- *) ac_optarg=yes ;; +- esac +- eval "enable_$ac_feature='$ac_optarg'" ;; ++ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'` ++ eval enable_$ac_feature=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ +@@ -439,6 +864,12 @@ + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + ++ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ++ ac_prev=htmldir ;; ++ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ ++ | --ht=*) ++ htmldir=$ac_optarg ;; ++ + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; +@@ -463,13 +894,16 @@ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + ++ -localedir | --localedir | --localedi | --localed | --locale) ++ ac_prev=localedir ;; ++ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) ++ localedir=$ac_optarg ;; ++ + -localstatedir | --localstatedir | --localstatedi | --localstated \ +- | --localstate | --localstat | --localsta | --localst \ +- | --locals | --local | --loca | --loc | --lo) ++ | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ +- | --localstate=* | --localstat=* | --localsta=* | --localst=* \ +- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) ++ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) +@@ -534,6 +968,16 @@ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + ++ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ++ ac_prev=pdfdir ;; ++ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) ++ pdfdir=$ac_optarg ;; ++ ++ -psdir | --psdir | --psdi | --psd | --ps) ++ ac_prev=psdir ;; ++ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) ++ psdir=$ac_optarg ;; ++ + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; +@@ -586,24 +1030,20 @@ + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } +- ac_package=`echo $ac_package| sed 's/-/_/g'` +- case $ac_option in +- *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; +- *) ac_optarg=yes ;; +- esac +- eval "with_$ac_package='$ac_optarg'" ;; ++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'` ++ eval with_$ac_package=\$ac_optarg ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. +- expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && ++ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } +- ac_package=`echo $ac_package | sed 's/-/_/g'` +- eval "with_$ac_package=no" ;; ++ ac_package=`echo $ac_package | sed 's/[-.]/_/g'` ++ eval with_$ac_package=no ;; + + --x) + # Obsolete; use --with-x. +@@ -634,8 +1074,7 @@ + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } +- ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` +- eval "$ac_envvar='$ac_optarg'" ++ eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) +@@ -655,27 +1094,19 @@ + { (exit 1); exit 1; }; } + fi + +-# Be sure to have absolute paths. +-for ac_var in exec_prefix prefix +-do +- eval ac_val=$`echo $ac_var` +- case $ac_val in +- [\\/$]* | ?:[\\/]* | NONE | '' ) ;; +- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 +- { (exit 1); exit 1; }; };; +- esac +-done +- +-# Be sure to have absolute paths. +-for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ +- localstatedir libdir includedir oldincludedir infodir mandir ++# Be sure to have absolute directory names. ++for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ ++ datadir sysconfdir sharedstatedir localstatedir includedir \ ++ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ ++ libdir localedir mandir + do +- eval ac_val=$`echo $ac_var` ++ eval ac_val=\$$ac_var + case $ac_val in +- [\\/$]* | ?:[\\/]* ) ;; +- *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 +- { (exit 1); exit 1; }; };; ++ [\\/$]* | ?:[\\/]* ) continue;; ++ NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac ++ { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 ++ { (exit 1); exit 1; }; } + done + + # There might be people who depend on the old broken behavior: `$host' +@@ -702,74 +1133,76 @@ + test "$silent" = yes && exec 6>/dev/null + + ++ac_pwd=`pwd` && test -n "$ac_pwd" && ++ac_ls_di=`ls -di .` && ++ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || ++ { echo "$as_me: error: Working directory cannot be determined" >&2 ++ { (exit 1); exit 1; }; } ++test "X$ac_ls_di" = "X$ac_pwd_ls_di" || ++ { echo "$as_me: error: pwd does not report name of working directory" >&2 ++ { (exit 1); exit 1; }; } ++ ++ + # Find the source files, if location was not specified. + if test -z "$srcdir"; then + ac_srcdir_defaulted=yes +- # Try the directory containing this script, then its parent. +- ac_confdir=`(dirname "$0") 2>/dev/null || ++ # Try the directory containing this script, then the parent directory. ++ ac_confdir=`$as_dirname -- "$0" || + $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || + echo X"$0" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` + srcdir=$ac_confdir +- if test ! -r $srcdir/$ac_unique_file; then ++ if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi + else + ac_srcdir_defaulted=no + fi +-if test ! -r $srcdir/$ac_unique_file; then +- if test "$ac_srcdir_defaulted" = yes; then +- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 +- { (exit 1); exit 1; }; } +- else +- { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 +- { (exit 1); exit 1; }; } +- fi +-fi +-(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || +- { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 +- { (exit 1); exit 1; }; } +-srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +-ac_env_build_alias_set=${build_alias+set} +-ac_env_build_alias_value=$build_alias +-ac_cv_env_build_alias_set=${build_alias+set} +-ac_cv_env_build_alias_value=$build_alias +-ac_env_host_alias_set=${host_alias+set} +-ac_env_host_alias_value=$host_alias +-ac_cv_env_host_alias_set=${host_alias+set} +-ac_cv_env_host_alias_value=$host_alias +-ac_env_target_alias_set=${target_alias+set} +-ac_env_target_alias_value=$target_alias +-ac_cv_env_target_alias_set=${target_alias+set} +-ac_cv_env_target_alias_value=$target_alias +-ac_env_CC_set=${CC+set} +-ac_env_CC_value=$CC +-ac_cv_env_CC_set=${CC+set} +-ac_cv_env_CC_value=$CC +-ac_env_CFLAGS_set=${CFLAGS+set} +-ac_env_CFLAGS_value=$CFLAGS +-ac_cv_env_CFLAGS_set=${CFLAGS+set} +-ac_cv_env_CFLAGS_value=$CFLAGS +-ac_env_LDFLAGS_set=${LDFLAGS+set} +-ac_env_LDFLAGS_value=$LDFLAGS +-ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +-ac_cv_env_LDFLAGS_value=$LDFLAGS +-ac_env_CPPFLAGS_set=${CPPFLAGS+set} +-ac_env_CPPFLAGS_value=$CPPFLAGS +-ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +-ac_cv_env_CPPFLAGS_value=$CPPFLAGS +-ac_env_CPP_set=${CPP+set} +-ac_env_CPP_value=$CPP +-ac_cv_env_CPP_set=${CPP+set} +-ac_cv_env_CPP_value=$CPP ++if test ! -r "$srcdir/$ac_unique_file"; then ++ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." ++ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 ++ { (exit 1); exit 1; }; } ++fi ++ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ++ac_abs_confdir=`( ++ cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2 ++ { (exit 1); exit 1; }; } ++ pwd)` ++# When building in place, set srcdir=. ++if test "$ac_abs_confdir" = "$ac_pwd"; then ++ srcdir=. ++fi ++# Remove unnecessary trailing slashes from srcdir. ++# Double slashes in file names in object file debugging info ++# mess up M-x gdb in Emacs. ++case $srcdir in ++*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; ++esac ++for ac_var in $ac_precious_vars; do ++ eval ac_env_${ac_var}_set=\${${ac_var}+set} ++ eval ac_env_${ac_var}_value=\$${ac_var} ++ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} ++ eval ac_cv_env_${ac_var}_value=\$${ac_var} ++done + + # + # Report the --help message. +@@ -798,9 +1231,6 @@ + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +-_ACEOF +- +- cat <<_ACEOF + Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] +@@ -818,15 +1248,22 @@ + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] +- --datadir=DIR read-only architecture-independent data [PREFIX/share] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] +- --infodir=DIR info documentation [PREFIX/info] +- --mandir=DIR man documentation [PREFIX/man] ++ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] ++ --datadir=DIR read-only architecture-independent data [DATAROOTDIR] ++ --infodir=DIR info documentation [DATAROOTDIR/info] ++ --localedir=DIR locale-dependent data [DATAROOTDIR/locale] ++ --mandir=DIR man documentation [DATAROOTDIR/man] ++ --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] ++ --htmldir=DIR html documentation [DOCDIR] ++ --dvidir=DIR dvi documentation [DOCDIR] ++ --pdfdir=DIR pdf documentation [DOCDIR] ++ --psdir=DIR ps documentation [DOCDIR] + _ACEOF + + cat <<\_ACEOF +@@ -852,126 +1289,95 @@ + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory +- CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have +- headers in a nonstandard directory ++ LIBS libraries to pass to the linker, e.g. -l ++ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if ++ you have headers in a nonstandard directory + CPP C preprocessor + + Use these variables to override the choices made by `configure' or to help + it to find libraries and programs with nonstandard names/locations. + + _ACEOF ++ac_status=$? + fi + + if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. +- ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue +- test -d $ac_dir || continue ++ test -d "$ac_dir" || continue + ac_builddir=. + +-if test "$ac_dir" != .; then ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` ++ case $ac_top_builddir_sub in ++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; ++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; ++ esac ;; ++esac ++ac_abs_top_builddir=$ac_pwd ++ac_abs_builddir=$ac_pwd$ac_dir_suffix ++# for backward compatibility: ++ac_top_builddir=$ac_top_build_prefix + + case $srcdir in +- .) # No --srcdir option. We are building in place. ++ .) # We are building in place. + ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. ++ ac_top_srcdir=$ac_top_builddir_sub ++ ac_abs_top_srcdir=$ac_pwd ;; ++ [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; +- ac_top_srcdir=$srcdir ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac +- +-# Do not use `cd foo && pwd` to compute absolute paths, because +-# the directories may not exist. +-case `pwd` in +-.) ac_abs_builddir="$ac_dir";; +-*) +- case "$ac_dir" in +- .) ac_abs_builddir=`pwd`;; +- [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; +- *) ac_abs_builddir=`pwd`/"$ac_dir";; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_builddir=${ac_top_builddir}.;; +-*) +- case ${ac_top_builddir}. in +- .) ac_abs_top_builddir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; +- *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_srcdir=$ac_srcdir;; +-*) +- case $ac_srcdir in +- .) ac_abs_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; +- *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; +- esac;; +-esac +-case $ac_abs_builddir in +-.) ac_abs_top_srcdir=$ac_top_srcdir;; +-*) +- case $ac_top_srcdir in +- .) ac_abs_top_srcdir=$ac_abs_builddir;; +- [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; +- *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; +- esac;; ++ ac_top_srcdir=$srcdir ++ ac_abs_top_srcdir=$srcdir ;; ++ *) # Relative name. ++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ++ ac_top_srcdir=$ac_top_build_prefix$srcdir ++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; + esac ++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + +- cd $ac_dir +- # Check for guested configure; otherwise get Cygnus style configure. +- if test -f $ac_srcdir/configure.gnu; then +- echo +- $SHELL $ac_srcdir/configure.gnu --help=recursive +- elif test -f $ac_srcdir/configure; then +- echo +- $SHELL $ac_srcdir/configure --help=recursive +- elif test -f $ac_srcdir/configure.ac || +- test -f $ac_srcdir/configure.in; then +- echo +- $ac_configure --help ++ cd "$ac_dir" || { ac_status=$?; continue; } ++ # Check for guested configure. ++ if test -f "$ac_srcdir/configure.gnu"; then ++ echo && ++ $SHELL "$ac_srcdir/configure.gnu" --help=recursive ++ elif test -f "$ac_srcdir/configure"; then ++ echo && ++ $SHELL "$ac_srcdir/configure" --help=recursive + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 +- fi +- cd $ac_popdir ++ fi || ac_status=$? ++ cd "$ac_pwd" || { ac_status=$?; break; } + done + fi + +-test -n "$ac_init_help" && exit 0 ++test -n "$ac_init_help" && exit $ac_status + if $ac_init_version; then + cat <<\_ACEOF ++configure ++generated by GNU Autoconf 2.61 + +-Copyright (C) 2003 Free Software Foundation, Inc. ++Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, ++2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. + This configure script is free software; the Free Software Foundation + gives unlimited permission to copy, distribute and modify it. + _ACEOF +- exit 0 ++ exit + fi +-exec 5>config.log +-cat >&5 <<_ACEOF ++cat >config.log <<_ACEOF + This file contains any messages produced by compilers while + running configure, to aid debugging if configure makes a mistake. + + It was created by $as_me, which was +-generated by GNU Autoconf 2.59. Invocation command line was ++generated by GNU Autoconf 2.61. Invocation command line was + + $ $0 $@ + + _ACEOF ++exec 5>>config.log + { + cat <<_ASUNAME + ## --------- ## +@@ -990,7 +1396,7 @@ + /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` + /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` + /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +-hostinfo = `(hostinfo) 2>/dev/null || echo unknown` ++/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` + /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` + /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` + /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` +@@ -1004,6 +1410,7 @@ + test -z "$as_dir" && as_dir=. + echo "PATH: $as_dir" + done ++IFS=$as_save_IFS + + } >&5 + +@@ -1025,7 +1432,6 @@ + ac_configure_args= + ac_configure_args0= + ac_configure_args1= +-ac_sep= + ac_must_keep_next=false + for ac_pass in 1 2 + do +@@ -1036,7 +1442,7 @@ + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; +- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) ++ *\'*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in +@@ -1058,9 +1464,7 @@ + -* ) ac_must_keep_next=true ;; + esac + fi +- ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" +- # Get rid of the leading space. +- ac_sep=" " ++ ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + esac + done +@@ -1071,8 +1475,8 @@ + # When interrupted or exit'd, cleanup temporary files, and complete + # config.log. We remove comments because anyway the quotes in there + # would cause problems or look ugly. +-# WARNING: Be sure not to use single quotes in there, as some shells, +-# such as our DU 5.0 friend, will then `close' the trap. ++# WARNING: Use '\'' to represent an apostrophe within the trap. ++# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. + trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { +@@ -1085,20 +1489,34 @@ + _ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +-{ ++( ++ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do ++ eval ac_val=\$$ac_var ++ case $ac_val in #( ++ *${as_nl}*) ++ case $ac_var in #( ++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done + (set) 2>&1 | +- case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in +- *ac_space=\ *) ++ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( ++ *${as_nl}ac_space=\ *) + sed -n \ +- "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; +- s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" +- ;; ++ "s/'\''/'\''\\\\'\'''\''/g; ++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ++ ;; #( + *) +- sed -n \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; +- esac; +-} ++ esac | ++ sort ++) + echo + + cat <<\_ASBOX +@@ -1109,22 +1527,28 @@ + echo + for ac_var in $ac_subst_vars + do +- eval ac_val=$`echo $ac_var` +- echo "$ac_var='"'"'$ac_val'"'"'" ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +-## ------------- ## +-## Output files. ## +-## ------------- ## ++## ------------------- ## ++## File substitutions. ## ++## ------------------- ## + _ASBOX + echo + for ac_var in $ac_subst_files + do +- eval ac_val=$`echo $ac_var` +- echo "$ac_var='"'"'$ac_val'"'"'" ++ eval ac_val=\$$ac_var ++ case $ac_val in ++ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; ++ esac ++ echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi +@@ -1136,26 +1560,24 @@ + ## ----------- ## + _ASBOX + echo +- sed "/^$/d" confdefs.h | sort ++ cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 +- rm -f core *.core && +- rm -rf conftest* confdefs* conf$$* $ac_clean_files && ++ rm -f core *.core core.conftest.* && ++ rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +- ' 0 ++' 0 + for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal + done + ac_signal=0 + + # confdefs.h avoids OS command line length limits that DEFS can exceed. +-rm -rf conftest* confdefs.h +-# AIX cpp loses on an empty file, so make sure it contains at least a newline. +-echo >confdefs.h ++rm -f -r conftest* confdefs.h + + # Predefined preprocessor variables. + +@@ -1186,14 +1608,17 @@ + + # Let the site file select an alternate cache file if it wants to. + # Prefer explicitly selected file to automatically selected ones. +-if test -z "$CONFIG_SITE"; then +- if test "x$prefix" != xNONE; then +- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" +- else +- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +- fi ++if test -n "$CONFIG_SITE"; then ++ set x "$CONFIG_SITE" ++elif test "x$prefix" != xNONE; then ++ set x "$prefix/share/config.site" "$prefix/etc/config.site" ++else ++ set x "$ac_default_prefix/share/config.site" \ ++ "$ac_default_prefix/etc/config.site" + fi +-for ac_site_file in $CONFIG_SITE; do ++shift ++for ac_site_file ++do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 + echo "$as_me: loading site script $ac_site_file" >&6;} +@@ -1209,8 +1634,8 @@ + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 + echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in +- [\\/]* | ?:[\\/]* ) . $cache_file;; +- *) . ./$cache_file;; ++ [\\/]* | ?:[\\/]* ) . "$cache_file";; ++ *) . "./$cache_file";; + esac + fi + else +@@ -1222,12 +1647,11 @@ + # Check that the precious variables saved in the cache have kept the same + # value. + ac_cache_corrupted=false +-for ac_var in `(set) 2>&1 | +- sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do ++for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set +- eval ac_old_val="\$ac_cv_env_${ac_var}_value" +- eval ac_new_val="\$ac_env_${ac_var}_value" ++ eval ac_old_val=\$ac_cv_env_${ac_var}_value ++ eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +@@ -1252,8 +1676,7 @@ + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in +- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) +- ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; ++ *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in +@@ -1270,12 +1693,6 @@ + { (exit 1); exit 1; }; } + fi + +-ac_ext=c +-ac_cpp='$CPP $CPPFLAGS' +-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +-ac_compiler_gnu=$ac_cv_c_compiler_gnu +- + + + +@@ -1292,88 +1709,128 @@ + + + ++ac_ext=c ++ac_cpp='$CPP $CPPFLAGS' ++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ++ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + ac_aux_dir= +-for ac_dir in ./config $srcdir/./config; do +- if test -f $ac_dir/install-sh; then ++for ac_dir in ./config "$srcdir"/./config; do ++ if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break +- elif test -f $ac_dir/install.sh; then ++ elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break +- elif test -f $ac_dir/shtool; then ++ elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi + done + if test -z "$ac_aux_dir"; then +- { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in ./config $srcdir/./config" >&5 +-echo "$as_me: error: cannot find install-sh or install.sh in ./config $srcdir/./config" >&2;} ++ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in ./config \"$srcdir\"/./config" >&5 ++echo "$as_me: error: cannot find install-sh or install.sh in ./config \"$srcdir\"/./config" >&2;} + { (exit 1); exit 1; }; } + fi +-ac_config_guess="$SHELL $ac_aux_dir/config.guess" +-ac_config_sub="$SHELL $ac_aux_dir/config.sub" +-ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. ++ ++# These three variables are undocumented and unsupported, ++# and are intended to be withdrawn in a future Autoconf release. ++# They can cause serious problems if a builder's source tree is in a directory ++# whose full name contains unusual characters. ++ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ++ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ++ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. ++ + + + + + # Make sure we can run config.sub. +-$ac_config_sub sun4 >/dev/null 2>&1 || +- { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +-echo "$as_me: error: cannot run $ac_config_sub" >&2;} ++$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || ++ { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 ++echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} + { (exit 1); exit 1; }; } + +-echo "$as_me:$LINENO: checking build system type" >&5 +-echo $ECHO_N "checking build system type... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking build system type" >&5 ++echo $ECHO_N "checking build system type... $ECHO_C" >&6; } + if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_build_alias=$build_alias +-test -z "$ac_cv_build_alias" && +- ac_cv_build_alias=`$ac_config_guess` +-test -z "$ac_cv_build_alias" && ++ ac_build_alias=$build_alias ++test "x$ac_build_alias" = x && ++ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` ++test "x$ac_build_alias" = x && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 + echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +-ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || +- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} ++ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + + fi +-echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +-echo "${ECHO_T}$ac_cv_build" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5 ++echo "${ECHO_T}$ac_cv_build" >&6; } ++case $ac_cv_build in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 ++echo "$as_me: error: invalid value of canonical build" >&2;} ++ { (exit 1); exit 1; }; };; ++esac + build=$ac_cv_build +-build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_build ++shift ++build_cpu=$1 ++build_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++build_os=$* ++IFS=$ac_save_IFS ++case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +-echo "$as_me:$LINENO: checking host system type" >&5 +-echo $ECHO_N "checking host system type... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking host system type" >&5 ++echo $ECHO_N "checking host system type... $ECHO_C" >&6; } + if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_host_alias=$host_alias +-test -z "$ac_cv_host_alias" && +- ac_cv_host_alias=$ac_cv_build_alias +-ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || +- { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +-echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} ++ if test "x$host_alias" = x; then ++ ac_cv_host=$ac_cv_build ++else ++ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || ++ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 ++echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} + { (exit 1); exit 1; }; } ++fi + + fi +-echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +-echo "${ECHO_T}$ac_cv_host" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5 ++echo "${ECHO_T}$ac_cv_host" >&6; } ++case $ac_cv_host in ++*-*-*) ;; ++*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 ++echo "$as_me: error: invalid value of canonical host" >&2;} ++ { (exit 1); exit 1; }; };; ++esac + host=$ac_cv_host +-host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +-host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +-host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` ++ac_save_IFS=$IFS; IFS='-' ++set x $ac_cv_host ++shift ++host_cpu=$1 ++host_vendor=$2 ++shift; shift ++# Remember, the first character of IFS is used to create $*, ++# except with old shells: ++host_os=$* ++IFS=$ac_save_IFS ++case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + + #AC_CANONICAL_TARGET +@@ -1391,22 +1848,22 @@ + targets="" + + +-# Check whether --with-i386 or --without-i386 was given. ++# Check whether --with-i386 was given. + if test "${with_i386+set}" = set; then +- withval="$with_i386" +- if test "withval" = "yes" ; then with_i386="i386"; else with_i386="$withval"; fi ++ withval=$with_i386; if test "withval" = "yes" ; then with_i386="i386"; else with_i386="$withval"; fi + else + with_i386="no" +-fi; ++fi + + +-# Check whether --with-ia64 or --without-ia64 was given. ++ ++# Check whether --with-ia64 was given. + if test "${with_ia64+set}" = set; then +- withval="$with_ia64" +- if test "withval" = "yes" ; then with_ia64="ia64"; else with_ia64="$withval"; fi ++ withval=$with_ia64; if test "withval" = "yes" ; then with_ia64="ia64"; else with_ia64="$withval"; fi + else + with_ia64="no" +-fi; ++fi ++ + + with_default="no" + if test "$with_i386" = "no" && +@@ -1430,8 +1887,8 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. + set dummy ${ac_tool_prefix}gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1444,32 +1901,34 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. + set dummy gcc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1482,36 +1941,51 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + ac_ct_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- CC=$ac_ct_CC ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf at gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf at gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi + else + CC="$ac_cv_prog_CC" + fi + + if test -z "$CC"; then +- if test -n "$ac_tool_prefix"; then +- # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. + set dummy ${ac_tool_prefix}cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1524,74 +1998,34 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 +-else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 +-fi +- +-fi +-if test -z "$ac_cv_prog_CC"; then +- ac_ct_CC=$CC +- # Extract the first word of "cc", so it can be a program name with args. +-set dummy cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then +- echo $ECHO_N "(cached) $ECHO_C" >&6 +-else +- if test -n "$ac_ct_CC"; then +- ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +-else +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +- ac_cv_prog_ac_ct_CC="cc" +- echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 +- break 2 +- fi +-done +-done +- +-fi +-fi +-ac_ct_CC=$ac_cv_prog_ac_ct_CC +-if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- CC=$ac_ct_CC +-else +- CC="$ac_cv_prog_CC" +-fi + ++ fi + fi + if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. + set dummy cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1605,7 +2039,7 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue +@@ -1616,6 +2050,7 @@ + fi + done + done ++IFS=$as_save_IFS + + if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. +@@ -1633,22 +2068,23 @@ + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then +- for ac_prog in cl ++ for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. + set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1661,36 +2097,38 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + CC=$ac_cv_prog_CC + if test -n "$CC"; then +- echo "$as_me:$LINENO: result: $CC" >&5 +-echo "${ECHO_T}$CC" >&6 ++ { echo "$as_me:$LINENO: result: $CC" >&5 ++echo "${ECHO_T}$CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$CC" && break + done + fi + if test -z "$CC"; then + ac_ct_CC=$CC +- for ac_prog in cl ++ for ac_prog in cl.exe + do + # Extract the first word of "$ac_prog", so it can be a program name with args. + set dummy $ac_prog; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1703,29 +2141,45 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + ac_ct_CC=$ac_cv_prog_ac_ct_CC + if test -n "$ac_ct_CC"; then +- echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +-echo "${ECHO_T}$ac_ct_CC" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 ++echo "${ECHO_T}$ac_ct_CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + test -n "$ac_ct_CC" && break + done + +- CC=$ac_ct_CC ++ if test "x$ac_ct_CC" = x; then ++ CC="" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf at gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf at gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ CC=$ac_ct_CC ++ fi + fi + + fi +@@ -1738,21 +2192,35 @@ + { (exit 1); exit 1; }; } + + # Provide some information about the compiler. +-echo "$as_me:$LINENO:" \ +- "checking for C compiler version" >&5 ++echo "$as_me:$LINENO: checking for C compiler version" >&5 + ac_compiler=`set X $ac_compile; echo $2` +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 +- (eval $ac_compiler --version &5) 2>&5 ++{ (ac_try="$ac_compiler --version >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 +- (eval $ac_compiler -v &5) 2>&5 ++{ (ac_try="$ac_compiler -v >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +-{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 +- (eval $ac_compiler -V &5) 2>&5 ++{ (ac_try="$ac_compiler -V >&5" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +@@ -1777,47 +2245,77 @@ + # Try to create an executable without -o first, disregard a.out. + # It will help us diagnose broken compilers, and finding out an intuition + # of exeext. +-echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +-echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 ++echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } + ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +-if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 +- (eval $ac_link_default) 2>&5 ++# ++# List of possible output files, starting from the most likely. ++# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) ++# only as a last resort. b.out is created by i960 compilers. ++ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' ++# ++# The IRIX 6 linker writes into existing files which may not be ++# executable, retaining their permissions. Remove them first so a ++# subsequent execution test works. ++ac_rmfiles= ++for ac_file in $ac_files ++do ++ case $ac_file in ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; ++ * ) ac_rmfiles="$ac_rmfiles $ac_file";; ++ esac ++done ++rm -f $ac_rmfiles ++ ++if { (ac_try="$ac_link_default" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link_default") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- # Find the output, starting from the most likely. This scheme is +-# not robust to junk in `.', hence go to wildcards (a.*) only as a last +-# resort. +- +-# Be careful to initialize this variable, since it used to be cached. +-# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +-ac_cv_exeext= +-# b.out is created by i960 compilers. +-for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out ++ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. ++# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' ++# in a Makefile. We should not override ac_cv_exeext if it was cached, ++# so that the user can short-circuit this test for compilers unknown to ++# Autoconf. ++for ac_file in $ac_files '' + do + test -f "$ac_file" || continue + case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) +- ;; +- conftest.$ac_ext ) +- # This is the source file. ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) +- ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` +- # FIXME: I believe we export ac_cv_exeext for Libtool, +- # but it would be cool to find out if it's true. Does anybody +- # maintain Libtool? --akim. +- export ac_cv_exeext ++ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; ++ then :; else ++ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ++ fi ++ # We set ac_cv_exeext here because the later test for it is not ++ # safe: cross compilers may not add the suffix if given an `-o' ++ # argument, so we may need to know it at that point already. ++ # Even if this section looks crufty: it has the advantage of ++ # actually working. + break;; + * ) + break;; + esac + done ++test "$ac_cv_exeext" = no && ac_cv_exeext= ++ + else ++ ac_file='' ++fi ++ ++{ echo "$as_me:$LINENO: result: $ac_file" >&5 ++echo "${ECHO_T}$ac_file" >&6; } ++if test -z "$ac_file"; then + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +@@ -1829,19 +2327,21 @@ + fi + + ac_exeext=$ac_cv_exeext +-echo "$as_me:$LINENO: result: $ac_file" >&5 +-echo "${ECHO_T}$ac_file" >&6 + +-# Check the compiler produces executables we can run. If not, either ++# Check that the compiler produces executables we can run. If not, either + # the compiler is broken, or we cross compile. +-echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +-echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5 ++echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } + # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 + # If not cross compiling, check that we can run a simple program. + if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -1860,22 +2360,27 @@ + fi + fi + fi +-echo "$as_me:$LINENO: result: yes" >&5 +-echo "${ECHO_T}yes" >&6 ++{ echo "$as_me:$LINENO: result: yes" >&5 ++echo "${ECHO_T}yes" >&6; } + + rm -f a.out a.exe conftest$ac_cv_exeext b.out + ac_clean_files=$ac_clean_files_save +-# Check the compiler produces executables we can run. If not, either ++# Check that the compiler produces executables we can run. If not, either + # the compiler is broken, or we cross compile. +-echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +-echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +-echo "$as_me:$LINENO: result: $cross_compiling" >&5 +-echo "${ECHO_T}$cross_compiling" >&6 +- +-echo "$as_me:$LINENO: checking for suffix of executables" >&5 +-echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 ++echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } ++{ echo "$as_me:$LINENO: result: $cross_compiling" >&5 ++echo "${ECHO_T}$cross_compiling" >&6; } ++ ++{ echo "$as_me:$LINENO: checking for suffix of executables" >&5 ++echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +@@ -1886,9 +2391,8 @@ + for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` +- export ac_cv_exeext + break;; + * ) break;; + esac +@@ -1902,14 +2406,14 @@ + fi + + rm -f conftest$ac_cv_exeext +-echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +-echo "${ECHO_T}$ac_cv_exeext" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 ++echo "${ECHO_T}$ac_cv_exeext" >&6; } + + rm -f conftest.$ac_ext + EXEEXT=$ac_cv_exeext + ac_exeext=$EXEEXT +-echo "$as_me:$LINENO: checking for suffix of object files" >&5 +-echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for suffix of object files" >&5 ++echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } + if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1929,14 +2433,20 @@ + } + _ACEOF + rm -f conftest.o conftest.obj +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>&5 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then +- for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do ++ for ac_file in conftest.o conftest.obj conftest.*; do ++ test -f "$ac_file" || continue; + case $ac_file in +- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; ++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +@@ -1954,12 +2464,12 @@ + + rm -f conftest.$ac_cv_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +-echo "${ECHO_T}$ac_cv_objext" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 ++echo "${ECHO_T}$ac_cv_objext" >&6; } + OBJEXT=$ac_cv_objext + ac_objext=$OBJEXT +-echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +-echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 ++echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } + if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -1982,50 +2492,49 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_compiler_gnu=no ++ ac_compiler_gnu=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cv_c_compiler_gnu=$ac_compiler_gnu + + fi +-echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +-echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 ++echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } + GCC=`test $ac_compiler_gnu = yes && echo yes` + ac_test_CFLAGS=${CFLAGS+set} + ac_save_CFLAGS=$CFLAGS +-CFLAGS="-g" +-echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +-echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 ++echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } + if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- cat >conftest.$ac_ext <<_ACEOF ++ ac_save_c_werror_flag=$ac_c_werror_flag ++ ac_c_werror_flag=yes ++ ac_cv_prog_cc_g=no ++ CFLAGS="-g" ++ cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF + cat confdefs.h >>conftest.$ac_ext +@@ -2041,38 +2550,118 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cc_g=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ CFLAGS="" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ : ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_c_werror_flag=$ac_save_c_werror_flag ++ CFLAGS="-g" ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++ ++int ++main () ++{ ++ ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_prog_cc_g=no ++ ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++ ac_c_werror_flag=$ac_save_c_werror_flag + fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 ++echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } + if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS + elif test $ac_cv_prog_cc_g = yes; then +@@ -2088,12 +2677,12 @@ + CFLAGS= + fi + fi +-echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +-echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +-if test "${ac_cv_prog_cc_stdc+set}" = set; then ++{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 ++echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } ++if test "${ac_cv_prog_cc_c89+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- ac_cv_prog_cc_stdc=no ++ ac_cv_prog_cc_c89=no + ac_save_CC=$CC + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -2127,12 +2716,17 @@ + /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated +- as 'x'. The following induces an error, until -std1 is added to get ++ as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something +- that's true only with -std1. */ ++ that's true only with -std. */ + int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + ++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters ++ inside strings and character constants. */ ++#define FOO(x) 'x' ++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; ++ + int test (int i, double x); + struct s1 {int (*f) (int a);}; + struct s2 {int (*f) (double a);}; +@@ -2147,205 +2741,57 @@ + return 0; + } + _ACEOF +-# Don't try gcc -ansi; that turns off useful extensions and +-# breaks some systems' header files. +-# AIX -qlanglvl=ansi +-# Ultrix and OSF/1 -std1 +-# HP-UX 10.20 and later -Ae +-# HP-UX older versions -Aa -D_HPUX_SOURCE +-# SVR4 -Xc -D__EXTENSIONS__ +-for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" ++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ ++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" + do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- ac_cv_prog_cc_stdc=$ac_arg +-break ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_prog_cc_c89=$ac_arg + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + ++ + fi +-rm -f conftest.err conftest.$ac_objext ++ ++rm -f core conftest.err conftest.$ac_objext ++ test "x$ac_cv_prog_cc_c89" != "xno" && break + done +-rm -f conftest.$ac_ext conftest.$ac_objext ++rm -f conftest.$ac_ext + CC=$ac_save_CC + + fi +- +-case "x$ac_cv_prog_cc_stdc" in +- x|xno) +- echo "$as_me:$LINENO: result: none needed" >&5 +-echo "${ECHO_T}none needed" >&6 ;; ++# AC_CACHE_VAL ++case "x$ac_cv_prog_cc_c89" in ++ x) ++ { echo "$as_me:$LINENO: result: none needed" >&5 ++echo "${ECHO_T}none needed" >&6; } ;; ++ xno) ++ { echo "$as_me:$LINENO: result: unsupported" >&5 ++echo "${ECHO_T}unsupported" >&6; } ;; + *) +- echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +-echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 +- CC="$CC $ac_cv_prog_cc_stdc" ;; ++ CC="$CC $ac_cv_prog_cc_c89" ++ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 ++echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; + esac + +-# Some people use a C++ compiler to compile C. Since we use `exit', +-# in C++ we need to declare it. In case someone uses the same compiler +-# for both compiling C and C++ we need to have the C++ compiler decide +-# the declaration of exit, since it's the most demanding environment. +-cat >conftest.$ac_ext <<_ACEOF +-#ifndef __cplusplus +- choke me +-#endif +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- for ac_declaration in \ +- '' \ +- 'extern "C" void std::exit (int) throw (); using std::exit;' \ +- 'extern "C" void std::exit (int); using std::exit;' \ +- 'extern "C" void exit (int) throw ();' \ +- 'extern "C" void exit (int);' \ +- 'void exit (int);' +-do +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_declaration +-#include +-int +-main () +-{ +-exit (42); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- : +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 + +-continue +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +- cat >conftest.$ac_ext <<_ACEOF +-/* confdefs.h. */ +-_ACEOF +-cat confdefs.h >>conftest.$ac_ext +-cat >>conftest.$ac_ext <<_ACEOF +-/* end confdefs.h. */ +-$ac_declaration +-int +-main () +-{ +-exit (42); +- ; +- return 0; +-} +-_ACEOF +-rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 +- ac_status=$? +- grep -v '^ *+' conftest.er1 >conftest.err +- rm -f conftest.er1 +- cat conftest.err >&5 +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then +- break +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-done +-rm -f conftest* +-if test -n "$ac_declaration"; then +- echo '#ifdef __cplusplus' >>confdefs.h +- echo $ac_declaration >>confdefs.h +- echo '#endif' >>confdefs.h +-fi +- +-else +- echo "$as_me: failed program was:" >&5 +-sed 's/^/| /' conftest.$ac_ext >&5 +- +-fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +@@ -2356,8 +2802,8 @@ + + # Extract the first word of "mkdir", so it can be a program name with args. + set dummy mkdir; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_MKDIR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2370,29 +2816,31 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_MKDIR="mkdir" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + MKDIR=$ac_cv_prog_MKDIR + if test -n "$MKDIR"; then +- echo "$as_me:$LINENO: result: $MKDIR" >&5 +-echo "${ECHO_T}$MKDIR" >&6 ++ { echo "$as_me:$LINENO: result: $MKDIR" >&5 ++echo "${ECHO_T}$MKDIR" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + # Extract the first word of "rm", so it can be a program name with args. + set dummy rm; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_RM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2405,29 +2853,31 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RM="rm" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + RM=$ac_cv_prog_RM + if test -n "$RM"; then +- echo "$as_me:$LINENO: result: $RM" >&5 +-echo "${ECHO_T}$RM" >&6 ++ { echo "$as_me:$LINENO: result: $RM" >&5 ++echo "${ECHO_T}$RM" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + # Extract the first word of "cp", so it can be a program name with args. + set dummy cp; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_CP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2440,29 +2890,31 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CP="cp" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + CP=$ac_cv_prog_CP + if test -n "$CP"; then +- echo "$as_me:$LINENO: result: $CP" >&5 +-echo "${ECHO_T}$CP" >&6 ++ { echo "$as_me:$LINENO: result: $CP" >&5 ++echo "${ECHO_T}$CP" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + # Extract the first word of "ln", so it can be a program name with args. + set dummy ln; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_LN+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2475,29 +2927,31 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_LN="ln" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + LN=$ac_cv_prog_LN + if test -n "$LN"; then +- echo "$as_me:$LINENO: result: $LN" >&5 +-echo "${ECHO_T}$LN" >&6 ++ { echo "$as_me:$LINENO: result: $LN" >&5 ++echo "${ECHO_T}$LN" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + # Extract the first word of "tar", so it can be a program name with args. + set dummy tar; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_TAR+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2510,29 +2964,31 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_TAR="tar" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + TAR=$ac_cv_prog_TAR + if test -n "$TAR"; then +- echo "$as_me:$LINENO: result: $TAR" >&5 +-echo "${ECHO_T}$TAR" >&6 ++ { echo "$as_me:$LINENO: result: $TAR" >&5 ++echo "${ECHO_T}$TAR" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + # Extract the first word of "rpm", so it can be a program name with args. + set dummy rpm; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_RPM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2545,29 +3001,31 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RPM="rpm" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + RPM=$ac_cv_prog_RPM + if test -n "$RPM"; then +- echo "$as_me:$LINENO: result: $RPM" >&5 +-echo "${ECHO_T}$RPM" >&6 ++ { echo "$as_me:$LINENO: result: $RPM" >&5 ++echo "${ECHO_T}$RPM" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + # Extract the first word of "sed", so it can be a program name with args. + set dummy sed; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_SED+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2580,29 +3038,31 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_SED="sed" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + SED=$ac_cv_prog_SED + if test -n "$SED"; then +- echo "$as_me:$LINENO: result: $SED" >&5 +-echo "${ECHO_T}$SED" >&6 ++ { echo "$as_me:$LINENO: result: $SED" >&5 ++echo "${ECHO_T}$SED" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + # Extract the first word of "find", so it can be a program name with args. + set dummy find; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_FIND+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2615,33 +3075,35 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_FIND="find" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + FIND=$ac_cv_prog_FIND + if test -n "$FIND"; then +- echo "$as_me:$LINENO: result: $FIND" >&5 +-echo "${ECHO_T}$FIND" >&6 ++ { echo "$as_me:$LINENO: result: $FIND" >&5 ++echo "${ECHO_T}$FIND" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + + ++ + ac_ext=c + ac_cpp='$CPP $CPPFLAGS' + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_c_compiler_gnu +-echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 ++echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } + # On Suns, sometimes $CPP names a directory. + if test -n "$CPP" && test -d "$CPP"; then + CPP= +@@ -2675,24 +3137,22 @@ + #endif + Syntax error + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + : + else + echo "$as_me: failed program was:" >&5 +@@ -2701,9 +3161,10 @@ + # Broken: fails on valid input. + continue + fi ++ + rm -f conftest.err conftest.$ac_ext + +- # OK, works on sane cases. Now check whether non-existent headers ++ # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -2713,24 +3174,22 @@ + /* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + # Broken: success on invalid input. + continue + else +@@ -2741,6 +3200,7 @@ + ac_preproc_ok=: + break + fi ++ + rm -f conftest.err conftest.$ac_ext + + done +@@ -2758,8 +3218,8 @@ + else + ac_cv_prog_CPP=$CPP + fi +-echo "$as_me:$LINENO: result: $CPP" >&5 +-echo "${ECHO_T}$CPP" >&6 ++{ echo "$as_me:$LINENO: result: $CPP" >&5 ++echo "${ECHO_T}$CPP" >&6; } + ac_preproc_ok=false + for ac_c_preproc_warn_flag in '' yes + do +@@ -2782,24 +3242,22 @@ + #endif + Syntax error + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + : + else + echo "$as_me: failed program was:" >&5 +@@ -2808,9 +3266,10 @@ + # Broken: fails on valid input. + continue + fi ++ + rm -f conftest.err conftest.$ac_ext + +- # OK, works on sane cases. Now check whether non-existent headers ++ # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -2820,24 +3279,22 @@ + /* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + # Broken: success on invalid input. + continue + else +@@ -2848,6 +3305,7 @@ + ac_preproc_ok=: + break + fi ++ + rm -f conftest.err conftest.$ac_ext + + done +@@ -2870,23 +3328,170 @@ + ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +-echo "$as_me:$LINENO: checking for egrep" >&5 +-echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +-if test "${ac_cv_prog_egrep+set}" = set; then ++{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 ++echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; } ++if test "${ac_cv_path_GREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ # Extract the first word of "grep ggrep" to use in msg output ++if test -z "$GREP"; then ++set dummy grep ggrep; ac_prog_name=$2 ++if test "${ac_cv_path_GREP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +- if echo a | (grep -E '(a|b)') >/dev/null 2>&1 +- then ac_cv_prog_egrep='grep -E' +- else ac_cv_prog_egrep='egrep' ++ ac_path_GREP_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in grep ggrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue ++ # Check for GNU ac_path_GREP and select it if it is found. ++ # Check for GNU $ac_path_GREP ++case `"$ac_path_GREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo 'GREP' >> "conftest.nl" ++ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_GREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_GREP="$ac_path_GREP" ++ ac_path_GREP_max=$ac_count + fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ ++ $ac_path_GREP_found && break 3 ++ done ++done ++ ++done ++IFS=$as_save_IFS ++ ++ + fi +-echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +-echo "${ECHO_T}$ac_cv_prog_egrep" >&6 +- EGREP=$ac_cv_prog_egrep + ++GREP="$ac_cv_path_GREP" ++if test -z "$GREP"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++else ++ ac_cv_path_GREP=$GREP ++fi ++ ++ ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 ++echo "${ECHO_T}$ac_cv_path_GREP" >&6; } ++ GREP="$ac_cv_path_GREP" ++ ++ ++{ echo "$as_me:$LINENO: checking for egrep" >&5 ++echo $ECHO_N "checking for egrep... $ECHO_C" >&6; } ++if test "${ac_cv_path_EGREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 ++ then ac_cv_path_EGREP="$GREP -E" ++ else ++ # Extract the first word of "egrep" to use in msg output ++if test -z "$EGREP"; then ++set dummy egrep; ac_prog_name=$2 ++if test "${ac_cv_path_EGREP+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ ac_path_EGREP_found=false ++# Loop through the user's path and test for each of PROGNAME-LIST ++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ for ac_prog in egrep; do ++ for ac_exec_ext in '' $ac_executable_extensions; do ++ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" ++ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue ++ # Check for GNU ac_path_EGREP and select it if it is found. ++ # Check for GNU $ac_path_EGREP ++case `"$ac_path_EGREP" --version 2>&1` in ++*GNU*) ++ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; ++*) ++ ac_count=0 ++ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in" ++ while : ++ do ++ cat "conftest.in" "conftest.in" >"conftest.tmp" ++ mv "conftest.tmp" "conftest.in" ++ cp "conftest.in" "conftest.nl" ++ echo 'EGREP' >> "conftest.nl" ++ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break ++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ++ ac_count=`expr $ac_count + 1` ++ if test $ac_count -gt ${ac_path_EGREP_max-0}; then ++ # Best one so far, save it but keep looking for a better one ++ ac_cv_path_EGREP="$ac_path_EGREP" ++ ac_path_EGREP_max=$ac_count ++ fi ++ # 10*(2^10) chars as input seems more than enough ++ test $ac_count -gt 10 && break ++ done ++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; ++esac ++ ++ ++ $ac_path_EGREP_found && break 3 ++ done ++done ++ ++done ++IFS=$as_save_IFS ++ ++ ++fi ++ ++EGREP="$ac_cv_path_EGREP" ++if test -z "$EGREP"; then ++ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 ++echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} ++ { (exit 1); exit 1; }; } ++fi ++ ++else ++ ac_cv_path_EGREP=$EGREP ++fi + +-echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +-echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 ++ ++ fi ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 ++echo "${ECHO_T}$ac_cv_path_EGREP" >&6; } ++ EGREP="$ac_cv_path_EGREP" ++ ++ ++{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5 ++echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; } + if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -2910,35 +3515,31 @@ + } + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_cv_header_stdc=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_header_stdc=no ++ ac_cv_header_stdc=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +@@ -2994,6 +3595,7 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + #include ++#include + #if ((' ' & 0x0FF) == 0x020) + # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') + # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +@@ -3013,18 +3615,27 @@ + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) +- exit(2); +- exit (0); ++ return 2; ++ return 0; + } + _ACEOF + rm -f conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>&5 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 ++ { (case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then +@@ -3037,12 +3648,14 @@ + ( exit $ac_status ) + ac_cv_header_stdc=no + fi +-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext ++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext + fi ++ ++ + fi + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +-echo "${ECHO_T}$ac_cv_header_stdc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 ++echo "${ECHO_T}$ac_cv_header_stdc" >&6; } + if test $ac_cv_header_stdc = yes; then + + cat >>confdefs.h <<\_ACEOF +@@ -3065,9 +3678,9 @@ + inttypes.h stdint.h unistd.h + do + as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +-echo "$as_me:$LINENO: checking for $ac_header" >&5 +-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +-if eval "test \"\${$as_ac_Header+set}\" = set"; then ++{ echo "$as_me:$LINENO: checking for $ac_header" >&5 ++echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } ++if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + cat >conftest.$ac_ext <<_ACEOF +@@ -3081,38 +3694,35 @@ + #include <$ac_header> + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + eval "$as_ac_Header=yes" + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-eval "$as_ac_Header=no" ++ eval "$as_ac_Header=no" + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + fi +-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 ++ac_res=`eval echo '${'$as_ac_Header'}'` ++ { echo "$as_me:$LINENO: result: $ac_res" >&5 ++echo "${ECHO_T}$ac_res" >&6; } + if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF + #define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +@@ -3124,17 +3734,17 @@ + + + if test "${ac_cv_header_zlib_h+set}" = set; then +- echo "$as_me:$LINENO: checking for zlib.h" >&5 +-echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for zlib.h" >&5 ++echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6; } + if test "${ac_cv_header_zlib_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 +-echo "${ECHO_T}$ac_cv_header_zlib_h" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 ++echo "${ECHO_T}$ac_cv_header_zlib_h" >&6; } + else + # Is the header compilable? +-echo "$as_me:$LINENO: checking zlib.h usability" >&5 +-echo $ECHO_N "checking zlib.h usability... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking zlib.h usability" >&5 ++echo $ECHO_N "checking zlib.h usability... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -3145,41 +3755,37 @@ + #include + _ACEOF + rm -f conftest.$ac_objext +-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 +- (eval $ac_compile) 2>conftest.er1 ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest.$ac_objext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then + ac_header_compiler=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_header_compiler=no ++ ac_header_compiler=no + fi +-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +-echo "${ECHO_T}$ac_header_compiler" >&6 ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 ++echo "${ECHO_T}$ac_header_compiler" >&6; } + + # Is the header present? +-echo "$as_me:$LINENO: checking zlib.h presence" >&5 +-echo $ECHO_N "checking zlib.h presence... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking zlib.h presence" >&5 ++echo $ECHO_N "checking zlib.h presence... $ECHO_C" >&6; } + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ + _ACEOF +@@ -3188,24 +3794,22 @@ + /* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + ac_header_preproc=yes + else + echo "$as_me: failed program was:" >&5 +@@ -3213,9 +3817,10 @@ + + ac_header_preproc=no + fi ++ + rm -f conftest.err conftest.$ac_ext +-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +-echo "${ECHO_T}$ac_header_preproc" >&6 ++{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 ++echo "${ECHO_T}$ac_header_preproc" >&6; } + + # So? What about this header? + case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in +@@ -3239,30 +3844,23 @@ + echo "$as_me: WARNING: zlib.h: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: zlib.h: in the future, the compiler will take precedence" >&5 + echo "$as_me: WARNING: zlib.h: in the future, the compiler will take precedence" >&2;} +- ( +- cat <<\_ASBOX +-## ------------------------------------------ ## +-## Report this to the AC_PACKAGE_NAME lists. ## +-## ------------------------------------------ ## +-_ASBOX +- ) | +- sed "s/^/$as_me: WARNING: /" >&2 ++ + ;; + esac +-echo "$as_me:$LINENO: checking for zlib.h" >&5 +-echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for zlib.h" >&5 ++echo $ECHO_N "checking for zlib.h... $ECHO_C" >&6; } + if test "${ac_cv_header_zlib_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + ac_cv_header_zlib_h=$ac_header_preproc + fi +-echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 +-echo "${ECHO_T}$ac_cv_header_zlib_h" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_header_zlib_h" >&5 ++echo "${ECHO_T}$ac_cv_header_zlib_h" >&6; } + + fi + if test $ac_cv_header_zlib_h = yes; then +- echo "$as_me:$LINENO: checking for inflateInit_ in -lz" >&5 +-echo $ECHO_N "checking for inflateInit_ in -lz... $ECHO_C" >&6 ++ { echo "$as_me:$LINENO: checking for inflateInit_ in -lz" >&5 ++echo $ECHO_N "checking for inflateInit_ in -lz... $ECHO_C" >&6; } + if test "${ac_cv_lib_z_inflateInit_+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3276,56 +3874,53 @@ + cat >>conftest.$ac_ext <<_ACEOF + /* end confdefs.h. */ + +-/* Override any gcc2 internal prototype to avoid an error. */ ++/* Override any GCC internal prototype to avoid an error. ++ Use char because int might match the return type of a GCC ++ builtin and then its argument prototype would still apply. */ + #ifdef __cplusplus + extern "C" + #endif +-/* We use char because int might match the return type of a gcc2 +- builtin and then its argument prototype would still apply. */ + char inflateInit_ (); + int + main () + { +-inflateInit_ (); ++return inflateInit_ (); + ; + return 0; + } + _ACEOF + rm -f conftest.$ac_objext conftest$ac_exeext +-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 +- (eval $ac_link) 2>conftest.er1 ++if { (ac_try="$ac_link" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } && +- { ac_try='test -z "$ac_c_werror_flag" +- || test ! -s conftest.err' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; } && +- { ac_try='test -s conftest$ac_exeext' +- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 +- (eval $ac_try) 2>&5 +- ac_status=$? +- echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); }; }; then ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest$ac_exeext && ++ $as_test_x conftest$ac_exeext; then + ac_cv_lib_z_inflateInit_=yes + else + echo "$as_me: failed program was:" >&5 + sed 's/^/| /' conftest.$ac_ext >&5 + +-ac_cv_lib_z_inflateInit_=no ++ ac_cv_lib_z_inflateInit_=no + fi +-rm -f conftest.err conftest.$ac_objext \ ++ ++rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$ac_check_lib_save_LIBS + fi +-echo "$as_me:$LINENO: result: $ac_cv_lib_z_inflateInit_" >&5 +-echo "${ECHO_T}$ac_cv_lib_z_inflateInit_" >&6 ++{ echo "$as_me:$LINENO: result: $ac_cv_lib_z_inflateInit_" >&5 ++echo "${ECHO_T}$ac_cv_lib_z_inflateInit_" >&6; } + if test $ac_cv_lib_z_inflateInit_ = yes; then + cat >>confdefs.h <<\_ACEOF + #define HAVE_ZLIB_H 1 +@@ -3349,8 +3944,8 @@ + ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' + ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' + ac_compiler_gnu=$ac_cv_c_compiler_gnu +-echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +-echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 ++echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; } + # On Suns, sometimes $CPP names a directory. + if test -n "$CPP" && test -d "$CPP"; then + CPP= +@@ -3384,24 +3979,22 @@ + #endif + Syntax error + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + : + else + echo "$as_me: failed program was:" >&5 +@@ -3410,9 +4003,10 @@ + # Broken: fails on valid input. + continue + fi ++ + rm -f conftest.err conftest.$ac_ext + +- # OK, works on sane cases. Now check whether non-existent headers ++ # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -3422,24 +4016,22 @@ + /* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + # Broken: success on invalid input. + continue + else +@@ -3450,6 +4042,7 @@ + ac_preproc_ok=: + break + fi ++ + rm -f conftest.err conftest.$ac_ext + + done +@@ -3467,8 +4060,8 @@ + else + ac_cv_prog_CPP=$CPP + fi +-echo "$as_me:$LINENO: result: $CPP" >&5 +-echo "${ECHO_T}$CPP" >&6 ++{ echo "$as_me:$LINENO: result: $CPP" >&5 ++echo "${ECHO_T}$CPP" >&6; } + ac_preproc_ok=false + for ac_c_preproc_warn_flag in '' yes + do +@@ -3491,24 +4084,22 @@ + #endif + Syntax error + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + : + else + echo "$as_me: failed program was:" >&5 +@@ -3517,9 +4108,10 @@ + # Broken: fails on valid input. + continue + fi ++ + rm -f conftest.err conftest.$ac_ext + +- # OK, works on sane cases. Now check whether non-existent headers ++ # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF + /* confdefs.h. */ +@@ -3529,24 +4121,22 @@ + /* end confdefs.h. */ + #include + _ACEOF +-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 +- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 ++if { (ac_try="$ac_cpp conftest.$ac_ext" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 +- (exit $ac_status); } >/dev/null; then +- if test -s conftest.err; then +- ac_cpp_err=$ac_c_preproc_warn_flag +- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag +- else +- ac_cpp_err= +- fi +-else +- ac_cpp_err=yes +-fi +-if test -z "$ac_cpp_err"; then ++ (exit $ac_status); } >/dev/null && { ++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || ++ test ! -s conftest.err ++ }; then + # Broken: success on invalid input. + continue + else +@@ -3557,6 +4147,7 @@ + ac_preproc_ok=: + break + fi ++ + rm -f conftest.err conftest.$ac_ext + + done +@@ -3587,8 +4178,8 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ld", so it can be a program name with args. + set dummy ${ac_tool_prefix}ld; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3601,32 +4192,34 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_LD="${ac_tool_prefix}ld" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + LD=$ac_cv_prog_LD + if test -n "$LD"; then +- echo "$as_me:$LINENO: result: $LD" >&5 +-echo "${ECHO_T}$LD" >&6 ++ { echo "$as_me:$LINENO: result: $LD" >&5 ++echo "${ECHO_T}$LD" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$ac_cv_prog_LD"; then + ac_ct_LD=$LD + # Extract the first word of "ld", so it can be a program name with args. + set dummy ld; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3639,27 +4232,41 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_LD="ld" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_LD" && ac_cv_prog_ac_ct_LD="no" + fi + fi + ac_ct_LD=$ac_cv_prog_ac_ct_LD + if test -n "$ac_ct_LD"; then +- echo "$as_me:$LINENO: result: $ac_ct_LD" >&5 +-echo "${ECHO_T}$ac_ct_LD" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_LD" >&5 ++echo "${ECHO_T}$ac_ct_LD" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- LD=$ac_ct_LD ++ if test "x$ac_ct_LD" = x; then ++ LD="no" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf at gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf at gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ LD=$ac_ct_LD ++ fi + else + LD="$ac_cv_prog_LD" + fi +@@ -3673,8 +4280,8 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. + set dummy ${ac_tool_prefix}as; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_AS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3687,32 +4294,34 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AS="${ac_tool_prefix}as" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + AS=$ac_cv_prog_AS + if test -n "$AS"; then +- echo "$as_me:$LINENO: result: $AS" >&5 +-echo "${ECHO_T}$AS" >&6 ++ { echo "$as_me:$LINENO: result: $AS" >&5 ++echo "${ECHO_T}$AS" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$ac_cv_prog_AS"; then + ac_ct_AS=$AS + # Extract the first word of "as", so it can be a program name with args. + set dummy as; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_AS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3725,27 +4334,41 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_AS="as" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_AS" && ac_cv_prog_ac_ct_AS="no" + fi + fi + ac_ct_AS=$ac_cv_prog_ac_ct_AS + if test -n "$ac_ct_AS"; then +- echo "$as_me:$LINENO: result: $ac_ct_AS" >&5 +-echo "${ECHO_T}$ac_ct_AS" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_AS" >&5 ++echo "${ECHO_T}$ac_ct_AS" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- AS=$ac_ct_AS ++ if test "x$ac_ct_AS" = x; then ++ AS="no" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf at gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf at gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ AS=$ac_ct_AS ++ fi + else + AS="$ac_cv_prog_AS" + fi +@@ -3759,8 +4382,8 @@ + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objcopy", so it can be a program name with args. + set dummy ${ac_tool_prefix}objcopy; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_OBJCOPY+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3773,32 +4396,34 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OBJCOPY="${ac_tool_prefix}objcopy" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + fi + fi + OBJCOPY=$ac_cv_prog_OBJCOPY + if test -n "$OBJCOPY"; then +- echo "$as_me:$LINENO: result: $OBJCOPY" >&5 +-echo "${ECHO_T}$OBJCOPY" >&6 ++ { echo "$as_me:$LINENO: result: $OBJCOPY" >&5 ++echo "${ECHO_T}$OBJCOPY" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + fi + if test -z "$ac_cv_prog_OBJCOPY"; then + ac_ct_OBJCOPY=$OBJCOPY + # Extract the first word of "objcopy", so it can be a program name with args. + set dummy objcopy; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_ac_ct_OBJCOPY+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3811,27 +4436,41 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OBJCOPY="objcopy" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + +- test -z "$ac_cv_prog_ac_ct_OBJCOPY" && ac_cv_prog_ac_ct_OBJCOPY="no" + fi + fi + ac_ct_OBJCOPY=$ac_cv_prog_ac_ct_OBJCOPY + if test -n "$ac_ct_OBJCOPY"; then +- echo "$as_me:$LINENO: result: $ac_ct_OBJCOPY" >&5 +-echo "${ECHO_T}$ac_ct_OBJCOPY" >&6 ++ { echo "$as_me:$LINENO: result: $ac_ct_OBJCOPY" >&5 ++echo "${ECHO_T}$ac_ct_OBJCOPY" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + +- OBJCOPY=$ac_ct_OBJCOPY ++ if test "x$ac_ct_OBJCOPY" = x; then ++ OBJCOPY="no" ++ else ++ case $cross_compiling:$ac_tool_warned in ++yes:) ++{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf at gnu.org." >&5 ++echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools ++whose name does not start with the host triplet. If you think this ++configuration is useful to you, please write to autoconf at gnu.org." >&2;} ++ac_tool_warned=yes ;; ++esac ++ OBJCOPY=$ac_ct_OBJCOPY ++ fi + else + OBJCOPY="$ac_cv_prog_OBJCOPY" + fi +@@ -3862,8 +4501,8 @@ + fi + # Extract the first word of "$cc", so it can be a program name with args. + set dummy $cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_I386_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3876,26 +4515,28 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_I386_CC="$cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + test -z "$ac_cv_prog_I386_CC" && ac_cv_prog_I386_CC="""" + fi + fi + I386_CC=$ac_cv_prog_I386_CC + if test -n "$I386_CC"; then +- echo "$as_me:$LINENO: result: $I386_CC" >&5 +-echo "${ECHO_T}$I386_CC" >&6 ++ { echo "$as_me:$LINENO: result: $I386_CC" >&5 ++echo "${ECHO_T}$I386_CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + if test "$I386_CC" = no; then + + { { echo "$as_me:$LINENO: error: $cc not found" >&5 +@@ -3904,8 +4545,8 @@ + fi + # Extract the first word of "$cpp", so it can be a program name with args. + set dummy $cpp; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_I386_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3918,26 +4559,28 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_I386_CPP="$cpp" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + test -z "$ac_cv_prog_I386_CPP" && ac_cv_prog_I386_CPP="""" + fi + fi + I386_CPP=$ac_cv_prog_I386_CPP + if test -n "$I386_CPP"; then +- echo "$as_me:$LINENO: result: $I386_CPP" >&5 +-echo "${ECHO_T}$I386_CPP" >&6 ++ { echo "$as_me:$LINENO: result: $I386_CPP" >&5 ++echo "${ECHO_T}$I386_CPP" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + if test "$I386_CPP" = no; then + { { echo "$as_me:$LINENO: error: $cpp not found" >&5 + echo "$as_me: error: $cpp not found" >&2;} +@@ -3945,8 +4588,8 @@ + fi + # Extract the first word of "$ld", so it can be a program name with args. + set dummy $ld; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_I386_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -3959,26 +4602,28 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_I386_LD="$ld" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + test -z "$ac_cv_prog_I386_LD" && ac_cv_prog_I386_LD="""" + fi + fi + I386_LD=$ac_cv_prog_I386_LD + if test -n "$I386_LD"; then +- echo "$as_me:$LINENO: result: $I386_LD" >&5 +-echo "${ECHO_T}$I386_LD" >&6 ++ { echo "$as_me:$LINENO: result: $I386_LD" >&5 ++echo "${ECHO_T}$I386_LD" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + if test "$I386_AS" = no; then + { { echo "$as_me:$LINENO: error: $ld not found" >&5 + echo "$as_me: error: $ld not found" >&2;} +@@ -3986,8 +4631,8 @@ + fi + # Extract the first word of "$as", so it can be a program name with args. + set dummy $as; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_I386_AS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4000,26 +4645,28 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_I386_AS="$as" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + test -z "$ac_cv_prog_I386_AS" && ac_cv_prog_I386_AS="""" + fi + fi + I386_AS=$ac_cv_prog_I386_AS + if test -n "$I386_AS"; then +- echo "$as_me:$LINENO: result: $I386_AS" >&5 +-echo "${ECHO_T}$I386_AS" >&6 ++ { echo "$as_me:$LINENO: result: $I386_AS" >&5 ++echo "${ECHO_T}$I386_AS" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + if test "$I386_AS" = no; then + { { echo "$as_me:$LINENO: error: $as not found" >&5 + echo "$as_me: error: $as not found" >&2;} +@@ -4027,8 +4674,8 @@ + fi + # Extract the first word of "$objcopy", so it can be a program name with args. + set dummy $objcopy; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_I386_OBJCOPY+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4041,26 +4688,28 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_I386_OBJCOPY="$objcopy" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + test -z "$ac_cv_prog_I386_OBJCOPY" && ac_cv_prog_I386_OBJCOPY="""" + fi + fi + I386_OBJCOPY=$ac_cv_prog_I386_OBJCOPY + if test -n "$I386_OBJCOPY"; then +- echo "$as_me:$LINENO: result: $I386_OBJCOPY" >&5 +-echo "${ECHO_T}$I386_OBJCOPY" >&6 ++ { echo "$as_me:$LINENO: result: $I386_OBJCOPY" >&5 ++echo "${ECHO_T}$I386_OBJCOPY" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + if test "$I386_OBJCOPY" = no; then + { { echo "$as_me:$LINENO: error: $objcopy not found" >&5 + echo "$as_me: error: $objcopy not found" >&2;} +@@ -4083,8 +4732,8 @@ + fi + # Extract the first word of "$cc", so it can be a program name with args. + set dummy $cc; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_IA64_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4097,26 +4746,28 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_IA64_CC="$cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + test -z "$ac_cv_prog_IA64_CC" && ac_cv_prog_IA64_CC="""" + fi + fi + IA64_CC=$ac_cv_prog_IA64_CC + if test -n "$IA64_CC"; then +- echo "$as_me:$LINENO: result: $IA64_CC" >&5 +-echo "${ECHO_T}$IA64_CC" >&6 ++ { echo "$as_me:$LINENO: result: $IA64_CC" >&5 ++echo "${ECHO_T}$IA64_CC" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + if test "$IA64_CC" = no; then + + { { echo "$as_me:$LINENO: error: $cc not found" >&5 +@@ -4125,8 +4776,8 @@ + fi + # Extract the first word of "$cpp", so it can be a program name with args. + set dummy $cpp; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_IA64_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4139,26 +4790,28 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_IA64_CPP="$cpp" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + test -z "$ac_cv_prog_IA64_CPP" && ac_cv_prog_IA64_CPP="""" + fi + fi + IA64_CPP=$ac_cv_prog_IA64_CPP + if test -n "$IA64_CPP"; then +- echo "$as_me:$LINENO: result: $IA64_CPP" >&5 +-echo "${ECHO_T}$IA64_CPP" >&6 ++ { echo "$as_me:$LINENO: result: $IA64_CPP" >&5 ++echo "${ECHO_T}$IA64_CPP" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + if test "$IA64_CPP" = no; then + { { echo "$as_me:$LINENO: error: $cpp not found" >&5 + echo "$as_me: error: $cpp not found" >&2;} +@@ -4166,8 +4819,8 @@ + fi + # Extract the first word of "$ld", so it can be a program name with args. + set dummy $ld; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_IA64_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4180,26 +4833,28 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_IA64_LD="$ld" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + test -z "$ac_cv_prog_IA64_LD" && ac_cv_prog_IA64_LD="""" + fi + fi + IA64_LD=$ac_cv_prog_IA64_LD + if test -n "$IA64_LD"; then +- echo "$as_me:$LINENO: result: $IA64_LD" >&5 +-echo "${ECHO_T}$IA64_LD" >&6 ++ { echo "$as_me:$LINENO: result: $IA64_LD" >&5 ++echo "${ECHO_T}$IA64_LD" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + if test "$IA64_AS" = no; then + { { echo "$as_me:$LINENO: error: $ld not found" >&5 + echo "$as_me: error: $ld not found" >&2;} +@@ -4207,8 +4862,8 @@ + fi + # Extract the first word of "$as", so it can be a program name with args. + set dummy $as; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_IA64_AS+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4221,26 +4876,28 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_IA64_AS="$as" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + test -z "$ac_cv_prog_IA64_AS" && ac_cv_prog_IA64_AS="""" + fi + fi + IA64_AS=$ac_cv_prog_IA64_AS + if test -n "$IA64_AS"; then +- echo "$as_me:$LINENO: result: $IA64_AS" >&5 +-echo "${ECHO_T}$IA64_AS" >&6 ++ { echo "$as_me:$LINENO: result: $IA64_AS" >&5 ++echo "${ECHO_T}$IA64_AS" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + if test "$IA64_AS" = no; then + { { echo "$as_me:$LINENO: error: $as not found" >&5 + echo "$as_me: error: $as not found" >&2;} +@@ -4248,8 +4905,8 @@ + fi + # Extract the first word of "$objcopy", so it can be a program name with args. + set dummy $objcopy; ac_word=$2 +-echo "$as_me:$LINENO: checking for $ac_word" >&5 +-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 ++{ echo "$as_me:$LINENO: checking for $ac_word" >&5 ++echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } + if test "${ac_cv_prog_IA64_OBJCOPY+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else +@@ -4262,26 +4919,28 @@ + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_IA64_OBJCOPY="$objcopy" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done ++IFS=$as_save_IFS + + test -z "$ac_cv_prog_IA64_OBJCOPY" && ac_cv_prog_IA64_OBJCOPY="""" + fi + fi + IA64_OBJCOPY=$ac_cv_prog_IA64_OBJCOPY + if test -n "$IA64_OBJCOPY"; then +- echo "$as_me:$LINENO: result: $IA64_OBJCOPY" >&5 +-echo "${ECHO_T}$IA64_OBJCOPY" >&6 ++ { echo "$as_me:$LINENO: result: $IA64_OBJCOPY" >&5 ++echo "${ECHO_T}$IA64_OBJCOPY" >&6; } + else +- echo "$as_me:$LINENO: result: no" >&5 +-echo "${ECHO_T}no" >&6 ++ { echo "$as_me:$LINENO: result: no" >&5 ++echo "${ECHO_T}no" >&6; } + fi + ++ + if test "$IA64_OBJCOPY" = no; then + { { echo "$as_me:$LINENO: error: $objcopy not found" >&5 + echo "$as_me: error: $objcopy not found" >&2;} +@@ -4292,13 +4951,13 @@ + + + HOST_CC=$CC +-HOST_CFLAGS='-O2 -Wall $(HOST_CPPFLAGS)' ++HOST_CFLAGS="$HOST_CFLAGS -O2 -Wall \$(HOST_CPPFLAGS)" + +-I386_CFLAGS='-Os -ffreestanding -Wall -W -Wno-format $(I386_CPPFLAGS)' ++I386_CFLAGS="$I386_CFLAGS -Os -ffreestanding -Wall -W -Wno-format \$(I386_CPPFLAGS)" + I386_ASFLAGS='' + I386_LDFLAGS='-static --warn-multiple-gp --warn-common' + +-IA64_CFLAGS='-Os -ffreestanding -Wall -W -Wno-format -fpic -mconstant-gp -mauto-pic -fno-unwind-tables $(IA64_CPPFLAGS)' ++IA64_CFLAGS="$IA64_CFLAGS -Os -ffreestanding -Wall -W -Wno-format -fpic -mconstant-gp -mauto-pic -fno-unwind-tables \$(IA64_CPPFLAGS)" + IA64_ASFLAGS='-mconstant-gp -mauto-pic' + IA64_LDFLAGS='-static --warn-multiple-gp --warn-common' + +@@ -4323,7 +4982,8 @@ + + + +- ac_config_files="$ac_config_files Makefile.conf" ++ac_config_files="$ac_config_files Makefile.conf" ++ + cat >confcache <<\_ACEOF + # This file is a shell script that caches the results of configure + # tests run on this system so they can be shared between configure +@@ -4342,39 +5002,58 @@ + + # The following way of writing the cache mishandles newlines in values, + # but we know of no workaround that is simple, portable, and efficient. +-# So, don't put newlines in cache variables' values. ++# So, we kill variables containing newlines. + # Ultrix sh set writes to stderr and can't be redirected directly, + # and sets the high bit in the cache file unless we assign to the vars. +-{ ++( ++ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do ++ eval ac_val=\$$ac_var ++ case $ac_val in #( ++ *${as_nl}*) ++ case $ac_var in #( ++ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 ++echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; ++ esac ++ case $ac_var in #( ++ _ | IFS | as_nl) ;; #( ++ *) $as_unset $ac_var ;; ++ esac ;; ++ esac ++ done ++ + (set) 2>&1 | +- case `(ac_space=' '; set | grep ac_space) 2>&1` in +- *ac_space=\ *) ++ case $as_nl`(ac_space=' '; set) 2>&1` in #( ++ *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" +- ;; ++ ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. +- sed -n \ +- "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; +- esac; +-} | ++ esac | ++ sort ++) | + sed ' ++ /^ac_cv_env_/b end + t clear +- : clear ++ :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end +- /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ +- : end' >>confcache +-if diff $cache_file confcache >/dev/null 2>&1; then :; else +- if test -w $cache_file; then +- test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" ++ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ ++ :end' >>confcache ++if diff "$cache_file" confcache >/dev/null 2>&1; then :; else ++ if test -w "$cache_file"; then ++ test "x$cache_file" != "x/dev/null" && ++ { echo "$as_me:$LINENO: updating cache $cache_file" >&5 ++echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else +- echo "not updating unwritable cache $cache_file" ++ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 ++echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi + fi + rm -f confcache +@@ -4383,63 +5062,48 @@ + # Let make expand exec_prefix. + test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +-# VPATH may cause trouble with some makes, so we remove $(srcdir), +-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +-# trailing colons and then remove the whole line if VPATH becomes empty +-# (actually we leave an empty line to preserve line numbers). +-if test "x$srcdir" = x.; then +- ac_vpsub='/^[ ]*VPATH[ ]*=/{ +-s/:*\$(srcdir):*/:/; +-s/:*\${srcdir}:*/:/; +-s/:*@srcdir@:*/:/; +-s/^\([^=]*=[ ]*\):*/\1/; +-s/:*$//; +-s/^[^=]*=[ ]*$//; +-}' +-fi +- + # Transform confdefs.h into DEFS. + # Protect against shell expansion while executing Makefile rules. + # Protect against Makefile macro expansion. + # + # If the first sed substitution is executed (which looks for macros that +-# take arguments), then we branch to the quote section. Otherwise, ++# take arguments), then branch to the quote section. Otherwise, + # look for a macro that doesn't take arguments. +-cat >confdef2opt.sed <<\_ACEOF ++ac_script=' + t clear +-: clear +-s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g ++:clear ++s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g + t quote +-s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g ++s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g + t quote +-d +-: quote +-s,[ `~#$^&*(){}\\|;'"<>?],\\&,g +-s,\[,\\&,g +-s,\],\\&,g +-s,\$,$$,g +-p +-_ACEOF +-# We use echo to avoid assuming a particular line-breaking character. +-# The extra dot is to prevent the shell from consuming trailing +-# line-breaks from the sub-command output. A line-break within +-# single-quotes doesn't work because, if this script is created in a +-# platform that uses two characters for line-breaks (e.g., DOS), tr +-# would break. +-ac_LF_and_DOT=`echo; echo .` +-DEFS=`sed -n -f confdef2opt.sed confdefs.h | tr "$ac_LF_and_DOT" ' .'` +-rm -f confdef2opt.sed ++b any ++:quote ++s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g ++s/\[/\\&/g ++s/\]/\\&/g ++s/\$/$$/g ++H ++:any ++${ ++ g ++ s/^\n// ++ s/\n/ /g ++ p ++} ++' ++DEFS=`sed -n "$ac_script" confdefs.h` + + + ac_libobjs= + ac_ltlibobjs= + for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. +- ac_i=`echo "$ac_i" | +- sed 's/\$U\././;s/\.o$//;s/\.obj$//'` +- # 2. Add them. +- ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" +- ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' ++ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ++ ac_i=`echo "$ac_i" | sed "$ac_script"` ++ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR ++ # will be set to the directory where LIBOBJS objects are built. ++ ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ++ ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' + done + LIBOBJS=$ac_libobjs + +@@ -4470,17 +5134,45 @@ + ## M4sh Initialization. ## + ## --------------------- ## + +-# Be Bourne compatible ++# Be more Bourne compatible ++DUALCASE=1; export DUALCASE # for MKS sh + if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' +-elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then +- set -o posix ++ setopt NO_GLOB_SUBST ++else ++ case `(set -o) 2>/dev/null` in ++ *posix*) set -o posix ;; ++esac ++ ++fi ++ ++ ++ ++ ++# PATH needs CR ++# Avoid depending upon Character Ranges. ++as_cr_letters='abcdefghijklmnopqrstuvwxyz' ++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' ++as_cr_Letters=$as_cr_letters$as_cr_LETTERS ++as_cr_digits='0123456789' ++as_cr_alnum=$as_cr_Letters$as_cr_digits ++ ++# The user is always right. ++if test "${PATH_SEPARATOR+set}" != set; then ++ echo "#! /bin/sh" >conf$$.sh ++ echo "exit 0" >>conf$$.sh ++ chmod +x conf$$.sh ++ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then ++ PATH_SEPARATOR=';' ++ else ++ PATH_SEPARATOR=: ++ fi ++ rm -f conf$$.sh + fi +-DUALCASE=1; export DUALCASE # for MKS sh + + # Support unset when possible. + if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +@@ -4490,8 +5182,43 @@ + fi + + ++# IFS ++# We need space, tab and new line, in precisely that order. Quoting is ++# there to prevent editors from complaining about space-tab. ++# (If _AS_PATH_WALK were called with IFS unset, it would disable word ++# splitting by setting IFS to empty value.) ++as_nl=' ++' ++IFS=" "" $as_nl" ++ ++# Find who we are. Look in the path if we contain no directory separator. ++case $0 in ++ *[\\/]* ) as_myself=$0 ;; ++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR ++for as_dir in $PATH ++do ++ IFS=$as_save_IFS ++ test -z "$as_dir" && as_dir=. ++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break ++done ++IFS=$as_save_IFS ++ ++ ;; ++esac ++# We did not find ourselves, most probably we were run as `sh COMMAND' ++# in which case we are not to be found in the path. ++if test "x$as_myself" = x; then ++ as_myself=$0 ++fi ++if test ! -f "$as_myself"; then ++ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 ++ { (exit 1); exit 1; } ++fi ++ + # Work around bugs in pre-3.0 UWIN ksh. +-$as_unset ENV MAIL MAILPATH ++for as_var in ENV MAIL MAILPATH ++do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var ++done + PS1='$ ' + PS2='> ' + PS4='+ ' +@@ -4505,18 +5232,19 @@ + if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else +- $as_unset $as_var ++ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + fi + done + + # Required to use basename. +-if expr a : '\(a\)' >/dev/null 2>&1; then ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr + else + as_expr=false + fi + +-if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then ++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename + else + as_basename=false +@@ -4524,159 +5252,120 @@ + + + # Name of the executable. +-as_me=`$as_basename "$0" || ++as_me=`$as_basename -- "$0" || + $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ +- X"$0" : 'X\(/\)$' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$0" : 'X\(/\)' \| . 2>/dev/null || + echo X/"$0" | +- sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } +- /^X\/\(\/\/\)$/{ s//\1/; q; } +- /^X\/\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- +- +-# PATH needs CR, and LINENO needs CR and PATH. +-# Avoid depending upon Character Ranges. +-as_cr_letters='abcdefghijklmnopqrstuvwxyz' +-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +-as_cr_Letters=$as_cr_letters$as_cr_LETTERS +-as_cr_digits='0123456789' +-as_cr_alnum=$as_cr_Letters$as_cr_digits ++ sed '/^.*\/\([^/][^/]*\)\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\/\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` + +-# The user is always right. +-if test "${PATH_SEPARATOR+set}" != set; then +- echo "#! /bin/sh" >conf$$.sh +- echo "exit 0" >>conf$$.sh +- chmod +x conf$$.sh +- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then +- PATH_SEPARATOR=';' +- else +- PATH_SEPARATOR=: +- fi +- rm -f conf$$.sh +-fi ++# CDPATH. ++$as_unset CDPATH + + +- as_lineno_1=$LINENO +- as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` +- test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" || { +- # Find who we are. Look in the path if we contain no path at all +- # relative or not. +- case $0 in +- *[\\/]* ) as_myself=$0 ;; +- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +-done + +- ;; +- esac +- # We did not find ourselves, most probably we were run as `sh COMMAND' +- # in which case we are not to be found in the path. +- if test "x$as_myself" = x; then +- as_myself=$0 +- fi +- if test ! -f "$as_myself"; then +- { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +-echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} +- { (exit 1); exit 1; }; } +- fi +- case $CONFIG_SHELL in +- '') +- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for as_base in sh bash ksh sh5; do +- case $as_dir in +- /*) +- if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO +- as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && +- test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then +- $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } +- $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } +- CONFIG_SHELL=$as_dir/$as_base +- export CONFIG_SHELL +- exec "$CONFIG_SHELL" "$0" ${1+"$@"} +- fi;; +- esac +- done +-done +-;; +- esac ++ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a +- # line-number line before each line; the second 'sed' does the real +- # work. The second script uses 'N' to pair each line-number line +- # with the numbered line, and appends trailing '-' during +- # substitution so that $LINENO is not a special case at line end. ++ # line-number line after each line using $LINENO; the second 'sed' ++ # does the real work. The second script uses 'N' to pair each ++ # line-number line with the line containing $LINENO, and appends ++ # trailing '-' during substitution so that $LINENO is not a special ++ # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the +- # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) +- sed '=' <$as_myself | ++ # scripts with optimization help from Paolo Bonzini. Blame Lee ++ # E. McMahon (1931-1989) for sed's syntax. :-) ++ sed -n ' ++ p ++ /[$]LINENO/= ++ ' <$as_myself | + sed ' ++ s/[$]LINENO.*/&-/ ++ t lineno ++ b ++ :lineno + N +- s,$,-, +- : loop +- s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, ++ :loop ++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop +- s,-$,, +- s,^['$as_cr_digits']*\n,, ++ s/-\n.*// + ' >$as_me.lineno && +- chmod +x $as_me.lineno || +- { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +-echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} ++ chmod +x "$as_me.lineno" || ++ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the +- # original and so on. Autoconf is especially sensible to this). +- . ./$as_me.lineno ++ # original and so on. Autoconf is especially sensitive to this). ++ . "./$as_me.lineno" + # Exit status is that of the last command. + exit + } + + +-case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in +- *c*,-n*) ECHO_N= ECHO_C=' +-' ECHO_T=' ' ;; +- *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; +- *) ECHO_N= ECHO_C='\c' ECHO_T= ;; ++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then ++ as_dirname=dirname ++else ++ as_dirname=false ++fi ++ ++ECHO_C= ECHO_N= ECHO_T= ++case `echo -n x` in ++-n*) ++ case `echo 'x\c'` in ++ *c*) ECHO_T=' ';; # ECHO_T is single tab character. ++ *) ECHO_C='\c';; ++ esac;; ++*) ++ ECHO_N='-n';; + esac + +-if expr a : '\(a\)' >/dev/null 2>&1; then ++if expr a : '\(a\)' >/dev/null 2>&1 && ++ test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr + else + as_expr=false + fi + + rm -f conf$$ conf$$.exe conf$$.file ++if test -d conf$$.dir; then ++ rm -f conf$$.dir/conf$$.file ++else ++ rm -f conf$$.dir ++ mkdir conf$$.dir ++fi + echo >conf$$.file + if ln -s conf$$.file conf$$ 2>/dev/null; then +- # We could just check for DJGPP; but this test a) works b) is more generic +- # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). +- if test -f conf$$.exe; then +- # Don't use ln at all; we don't have any links ++ as_ln_s='ln -s' ++ # ... but there are two gotchas: ++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. ++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. ++ # In both cases, we have to default to `cp -p'. ++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' +- else +- as_ln_s='ln -s' +- fi + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +-rm -f conf$$ conf$$.exe conf$$.file ++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file ++rmdir conf$$.dir 2>/dev/null + + if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +@@ -4685,7 +5374,28 @@ + as_mkdir_p=false + fi + +-as_executable_p="test -f" ++if test -x / >/dev/null 2>&1; then ++ as_test_x='test -x' ++else ++ if ls -dL / >/dev/null 2>&1; then ++ as_ls_L_option=L ++ else ++ as_ls_L_option= ++ fi ++ as_test_x=' ++ eval sh -c '\'' ++ if test -d "$1"; then ++ test -d "$1/."; ++ else ++ case $1 in ++ -*)set "./$1";; ++ esac; ++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ++ ???[sx]*):;;*)false;;esac;fi ++ '\'' sh ++ ' ++fi ++as_executable_p=$as_test_x + + # Sed expression to map a string onto a valid CPP name. + as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +@@ -4694,31 +5404,14 @@ + as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +-# IFS +-# We need space, tab and new line, in precisely that order. +-as_nl=' +-' +-IFS=" $as_nl" +- +-# CDPATH. +-$as_unset CDPATH +- + exec 6>&1 + +-# Open the log real soon, to keep \$[0] and so on meaningful, and to ++# Save the log message, to keep $[0] and so on meaningful, and to + # report actual input values of CONFIG_FILES etc. instead of their +-# values after options handling. Logging --version etc. is OK. +-exec 5>>config.log +-{ +- echo +- sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +-## Running $as_me. ## +-_ASBOX +-} >&5 +-cat >&5 <<_CSEOF +- ++# values after options handling. ++ac_log=" + This file was extended by $as_me, which was +-generated by GNU Autoconf 2.59. Invocation command line was ++generated by GNU Autoconf 2.61. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS +@@ -4726,30 +5419,18 @@ + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +-_CSEOF +-echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +-echo >&5 ++on `(hostname || uname -n) 2>/dev/null | sed 1q` ++" ++ + _ACEOF + ++cat >>$CONFIG_STATUS <<_ACEOF + # Files that config.status was made for. +-if test -n "$ac_config_files"; then +- echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +-fi +- +-if test -n "$ac_config_headers"; then +- echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +-fi ++config_files="$ac_config_files" + +-if test -n "$ac_config_links"; then +- echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +-fi +- +-if test -n "$ac_config_commands"; then +- echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +-fi ++_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF +- + ac_cs_usage="\ + \`$as_me' instantiates files from templates according to the + current configuration. +@@ -4757,7 +5438,7 @@ + Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit +- -V, --version print version number, then exit ++ -V, --version print version number and configuration settings, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions +@@ -4768,18 +5449,20 @@ + $config_files + + Report bugs to ." +-_ACEOF + ++_ACEOF + cat >>$CONFIG_STATUS <<_ACEOF + ac_cs_version="\\ + config.status +-configured by $0, generated by GNU Autoconf 2.59, +- with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" ++configured by $0, generated by GNU Autoconf 2.61, ++ with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" + +-Copyright (C) 2003 Free Software Foundation, Inc. ++Copyright (C) 2006 Free Software Foundation, Inc. + This config.status script is free software; the Free Software Foundation + gives unlimited permission to copy, distribute and modify it." +-srcdir=$srcdir ++ ++ac_pwd='$ac_pwd' ++srcdir='$srcdir' + _ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF +@@ -4790,60 +5473,42 @@ + do + case $1 in + --*=*) +- ac_option=`expr "x$1" : 'x\([^=]*\)='` +- ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` ++ ac_option=`expr "X$1" : 'X\([^=]*\)='` ++ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; +- -*) ++ *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; +- *) # This is not an option, so the user has probably given explicit +- # arguments. +- ac_option=$1 +- ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +-_ACEOF +-cat >>$CONFIG_STATUS <<\_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; +- --version | --vers* | -V ) +- echo "$ac_cs_version"; exit 0 ;; +- --he | --h) +- # Conflict between --help and --header +- { { echo "$as_me:$LINENO: error: ambiguous option: $1 +-Try \`$0 --help' for more information." >&5 +-echo "$as_me: error: ambiguous option: $1 +-Try \`$0 --help' for more information." >&2;} +- { (exit 1); exit 1; }; };; +- --help | --hel | -h ) +- echo "$ac_cs_usage"; exit 0 ;; +- --debug | --d* | -d ) ++ --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) ++ echo "$ac_cs_version"; exit ;; ++ --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; +- --header | --heade | --head | --hea ) +- $ac_shift +- CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" +- ac_need_defaults=false;; ++ --he | --h | --help | --hel | -h ) ++ echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. +- -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +-Try \`$0 --help' for more information." >&5 +-echo "$as_me: error: unrecognized option: $1 +-Try \`$0 --help' for more information." >&2;} ++ -*) { echo "$as_me: error: unrecognized option: $1 ++Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } ;; + +- *) ac_config_targets="$ac_config_targets $1" ;; ++ *) ac_config_targets="$ac_config_targets $1" ++ ac_need_defaults=false ;; + + esac + shift +@@ -4859,28 +5524,42 @@ + _ACEOF + cat >>$CONFIG_STATUS <<_ACEOF + if \$ac_cs_recheck; then +- echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 +- exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion ++ echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 ++ CONFIG_SHELL=$SHELL ++ export CONFIG_SHELL ++ exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + fi + + _ACEOF ++cat >>$CONFIG_STATUS <<\_ACEOF ++exec 5>>config.log ++{ ++ echo ++ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ++## Running $as_me. ## ++_ASBOX ++ echo "$ac_log" ++} >&5 + +- +- +- ++_ACEOF ++cat >>$CONFIG_STATUS <<_ACEOF ++_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF ++ ++# Handling of arguments. + for ac_config_target in $ac_config_targets + do +- case "$ac_config_target" in +- # Handling of arguments. +- "Makefile.conf" ) CONFIG_FILES="$CONFIG_FILES Makefile.conf" ;; ++ case $ac_config_target in ++ "Makefile.conf") CONFIG_FILES="$CONFIG_FILES Makefile.conf" ;; ++ + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 + echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac + done + ++ + # If the user did not use the arguments to specify the items to instantiate, + # then the envvar interface is used. Set only those that are not. + # We use the long form for the default assignment because of an extremely +@@ -4890,360 +5569,436 @@ + fi + + # Have a temporary directory for convenience. Make it in the build tree +-# simply because there is no reason to put it here, and in addition, ++# simply because there is no reason against having it here, and in addition, + # creating and moving files from /tmp can sometimes cause problems. +-# Create a temporary directory, and hook for its removal unless debugging. ++# Hook for its removal unless debugging. ++# Note that there is a small window in which the directory will not be cleaned: ++# after its creation but before its name has been assigned to `$tmp'. + $debug || + { +- trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 ++ tmp= ++ trap 'exit_status=$? ++ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ++' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 + } +- + # Create a (secure) tmp directory for tmp files. + + { +- tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && ++ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" + } || + { +- tmp=./confstat$$-$RANDOM +- (umask 077 && mkdir $tmp) ++ tmp=./conf$$-$RANDOM ++ (umask 077 && mkdir "$tmp") + } || + { + echo "$me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } + } + +-_ACEOF +- +-cat >>$CONFIG_STATUS <<_ACEOF +- + # +-# CONFIG_FILES section. ++# Set up the sed scripts for CONFIG_FILES section. + # + + # No need to generate the scripts if there are no CONFIG_FILES. + # This happens for instance when ./config.status config.h +-if test -n "\$CONFIG_FILES"; then +- # Protect against being on the right side of a sed subst in config.status. +- sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; +- s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +-s, at SHELL@,$SHELL,;t t +-s, at PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +-s, at PACKAGE_NAME@,$PACKAGE_NAME,;t t +-s, at PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +-s, at PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +-s, at PACKAGE_STRING@,$PACKAGE_STRING,;t t +-s, at PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +-s, at exec_prefix@,$exec_prefix,;t t +-s, at prefix@,$prefix,;t t +-s, at program_transform_name@,$program_transform_name,;t t +-s, at bindir@,$bindir,;t t +-s, at sbindir@,$sbindir,;t t +-s, at libexecdir@,$libexecdir,;t t +-s, at datadir@,$datadir,;t t +-s, at sysconfdir@,$sysconfdir,;t t +-s, at sharedstatedir@,$sharedstatedir,;t t +-s, at localstatedir@,$localstatedir,;t t +-s, at libdir@,$libdir,;t t +-s, at includedir@,$includedir,;t t +-s, at oldincludedir@,$oldincludedir,;t t +-s, at infodir@,$infodir,;t t +-s, at mandir@,$mandir,;t t +-s, at build_alias@,$build_alias,;t t +-s, at host_alias@,$host_alias,;t t +-s, at target_alias@,$target_alias,;t t +-s, at DEFS@,$DEFS,;t t +-s, at ECHO_C@,$ECHO_C,;t t +-s, at ECHO_N@,$ECHO_N,;t t +-s, at ECHO_T@,$ECHO_T,;t t +-s, at LIBS@,$LIBS,;t t +-s, at build@,$build,;t t +-s, at build_cpu@,$build_cpu,;t t +-s, at build_vendor@,$build_vendor,;t t +-s, at build_os@,$build_os,;t t +-s, at host@,$host,;t t +-s, at host_cpu@,$host_cpu,;t t +-s, at host_vendor@,$host_vendor,;t t +-s, at host_os@,$host_os,;t t +-s, at CC@,$CC,;t t +-s, at CFLAGS@,$CFLAGS,;t t +-s, at LDFLAGS@,$LDFLAGS,;t t +-s, at CPPFLAGS@,$CPPFLAGS,;t t +-s, at ac_ct_CC@,$ac_ct_CC,;t t +-s, at EXEEXT@,$EXEEXT,;t t +-s, at OBJEXT@,$OBJEXT,;t t +-s, at MKDIR@,$MKDIR,;t t +-s, at RM@,$RM,;t t +-s, at CP@,$CP,;t t +-s, at LN@,$LN,;t t +-s, at TAR@,$TAR,;t t +-s, at RPM@,$RPM,;t t +-s, at SED@,$SED,;t t +-s, at FIND@,$FIND,;t t +-s, at CPP@,$CPP,;t t +-s, at EGREP@,$EGREP,;t t +-s, at LD@,$LD,;t t +-s, at ac_ct_LD@,$ac_ct_LD,;t t +-s, at AS@,$AS,;t t +-s, at ac_ct_AS@,$ac_ct_AS,;t t +-s, at OBJCOPY@,$OBJCOPY,;t t +-s, at ac_ct_OBJCOPY@,$ac_ct_OBJCOPY,;t t +-s, at I386_CC@,$I386_CC,;t t +-s, at I386_CPP@,$I386_CPP,;t t +-s, at I386_LD@,$I386_LD,;t t +-s, at I386_AS@,$I386_AS,;t t +-s, at I386_OBJCOPY@,$I386_OBJCOPY,;t t +-s, at IA64_CC@,$IA64_CC,;t t +-s, at IA64_CPP@,$IA64_CPP,;t t +-s, at IA64_LD@,$IA64_LD,;t t +-s, at IA64_AS@,$IA64_AS,;t t +-s, at IA64_OBJCOPY@,$IA64_OBJCOPY,;t t +-s, at HOST_CC@,$HOST_CC,;t t +-s, at HOST_CFLAGS@,$HOST_CFLAGS,;t t +-s, at I386_CFLAGS@,$I386_CFLAGS,;t t +-s, at I386_ASFLAGS@,$I386_ASFLAGS,;t t +-s, at I386_LDFLAGS@,$I386_LDFLAGS,;t t +-s, at IA64_CFLAGS@,$IA64_CFLAGS,;t t +-s, at IA64_ASFLAGS@,$IA64_ASFLAGS,;t t +-s, at IA64_LDFLAGS@,$IA64_LDFLAGS,;t t +-s, at LIBOBJS@,$LIBOBJS,;t t +-s, at LTLIBOBJS@,$LTLIBOBJS,;t t +-CEOF +- +-_ACEOF +- +- cat >>$CONFIG_STATUS <<\_ACEOF +- # Split the substitutions into bite-sized pieces for seds with +- # small command number limits, like on Digital OSF/1 and HP-UX. +- ac_max_sed_lines=48 +- ac_sed_frag=1 # Number of current file. +- ac_beg=1 # First line for current file. +- ac_end=$ac_max_sed_lines # Line after last line for current file. +- ac_more_lines=: +- ac_sed_cmds= +- while $ac_more_lines; do +- if test $ac_beg -gt 1; then +- sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag +- else +- sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag +- fi +- if test ! -s $tmp/subs.frag; then +- ac_more_lines=false +- else +- # The purpose of the label and of the branching condition is to +- # speed up the sed processing (if there are no `@' at all, there +- # is no need to browse any of the substitutions). +- # These are the two extra sed commands mentioned above. +- (echo ':t +- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed +- if test -z "$ac_sed_cmds"; then +- ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" +- else +- ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" +- fi +- ac_sed_frag=`expr $ac_sed_frag + 1` +- ac_beg=$ac_end +- ac_end=`expr $ac_end + $ac_max_sed_lines` +- fi +- done +- if test -z "$ac_sed_cmds"; then +- ac_sed_cmds=cat ++if test -n "$CONFIG_FILES"; then ++ ++_ACEOF ++ ++ ++ ++ac_delim='%!_!# ' ++for ac_last_try in false false false false false :; do ++ cat >conf$$subs.sed <<_ACEOF ++SHELL!$SHELL$ac_delim ++PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim ++PACKAGE_NAME!$PACKAGE_NAME$ac_delim ++PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim ++PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim ++PACKAGE_STRING!$PACKAGE_STRING$ac_delim ++PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim ++exec_prefix!$exec_prefix$ac_delim ++prefix!$prefix$ac_delim ++program_transform_name!$program_transform_name$ac_delim ++bindir!$bindir$ac_delim ++sbindir!$sbindir$ac_delim ++libexecdir!$libexecdir$ac_delim ++datarootdir!$datarootdir$ac_delim ++datadir!$datadir$ac_delim ++sysconfdir!$sysconfdir$ac_delim ++sharedstatedir!$sharedstatedir$ac_delim ++localstatedir!$localstatedir$ac_delim ++includedir!$includedir$ac_delim ++oldincludedir!$oldincludedir$ac_delim ++docdir!$docdir$ac_delim ++infodir!$infodir$ac_delim ++htmldir!$htmldir$ac_delim ++dvidir!$dvidir$ac_delim ++pdfdir!$pdfdir$ac_delim ++psdir!$psdir$ac_delim ++libdir!$libdir$ac_delim ++localedir!$localedir$ac_delim ++mandir!$mandir$ac_delim ++DEFS!$DEFS$ac_delim ++ECHO_C!$ECHO_C$ac_delim ++ECHO_N!$ECHO_N$ac_delim ++ECHO_T!$ECHO_T$ac_delim ++LIBS!$LIBS$ac_delim ++build_alias!$build_alias$ac_delim ++host_alias!$host_alias$ac_delim ++target_alias!$target_alias$ac_delim ++build!$build$ac_delim ++build_cpu!$build_cpu$ac_delim ++build_vendor!$build_vendor$ac_delim ++build_os!$build_os$ac_delim ++host!$host$ac_delim ++host_cpu!$host_cpu$ac_delim ++host_vendor!$host_vendor$ac_delim ++host_os!$host_os$ac_delim ++CC!$CC$ac_delim ++CFLAGS!$CFLAGS$ac_delim ++LDFLAGS!$LDFLAGS$ac_delim ++CPPFLAGS!$CPPFLAGS$ac_delim ++ac_ct_CC!$ac_ct_CC$ac_delim ++EXEEXT!$EXEEXT$ac_delim ++OBJEXT!$OBJEXT$ac_delim ++MKDIR!$MKDIR$ac_delim ++RM!$RM$ac_delim ++CP!$CP$ac_delim ++LN!$LN$ac_delim ++TAR!$TAR$ac_delim ++RPM!$RPM$ac_delim ++SED!$SED$ac_delim ++FIND!$FIND$ac_delim ++CPP!$CPP$ac_delim ++GREP!$GREP$ac_delim ++EGREP!$EGREP$ac_delim ++LD!$LD$ac_delim ++AS!$AS$ac_delim ++OBJCOPY!$OBJCOPY$ac_delim ++I386_CC!$I386_CC$ac_delim ++I386_CPP!$I386_CPP$ac_delim ++I386_LD!$I386_LD$ac_delim ++I386_AS!$I386_AS$ac_delim ++I386_OBJCOPY!$I386_OBJCOPY$ac_delim ++IA64_CC!$IA64_CC$ac_delim ++IA64_CPP!$IA64_CPP$ac_delim ++IA64_LD!$IA64_LD$ac_delim ++IA64_AS!$IA64_AS$ac_delim ++IA64_OBJCOPY!$IA64_OBJCOPY$ac_delim ++HOST_CC!$HOST_CC$ac_delim ++HOST_CFLAGS!$HOST_CFLAGS$ac_delim ++I386_CFLAGS!$I386_CFLAGS$ac_delim ++I386_ASFLAGS!$I386_ASFLAGS$ac_delim ++I386_LDFLAGS!$I386_LDFLAGS$ac_delim ++IA64_CFLAGS!$IA64_CFLAGS$ac_delim ++IA64_ASFLAGS!$IA64_ASFLAGS$ac_delim ++IA64_LDFLAGS!$IA64_LDFLAGS$ac_delim ++LIBOBJS!$LIBOBJS$ac_delim ++LTLIBOBJS!$LTLIBOBJS$ac_delim ++_ACEOF ++ ++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 86; then ++ break ++ elif $ac_last_try; then ++ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 ++echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} ++ { (exit 1); exit 1; }; } ++ else ++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +-fi # test -n "$CONFIG_FILES" ++done ++ ++ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` ++if test -n "$ac_eof"; then ++ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` ++ ac_eof=`expr $ac_eof + 1` ++fi + ++cat >>$CONFIG_STATUS <<_ACEOF ++cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof ++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end + _ACEOF ++sed ' ++s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g ++s/^/s,@/; s/!/@,|#_!!_#|/ ++:n ++t n ++s/'"$ac_delim"'$/,g/; t ++s/$/\\/; p ++N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n ++' >>$CONFIG_STATUS >$CONFIG_STATUS <<_ACEOF ++:end ++s/|#_!!_#|//g ++CEOF$ac_eof ++_ACEOF ++ ++ ++# VPATH may cause trouble with some makes, so we remove $(srcdir), ++# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and ++# trailing colons and then remove the whole line if VPATH becomes empty ++# (actually we leave an empty line to preserve line numbers). ++if test "x$srcdir" = x.; then ++ ac_vpsub='/^[ ]*VPATH[ ]*=/{ ++s/:*\$(srcdir):*/:/ ++s/:*\${srcdir}:*/:/ ++s/:*@srcdir@:*/:/ ++s/^\([^=]*=[ ]*\):*/\1/ ++s/:*$// ++s/^[^=]*=[ ]*$// ++}' ++fi ++ + cat >>$CONFIG_STATUS <<\_ACEOF +-for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue +- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". +- case $ac_file in +- - | *:- | *:-:* ) # input from stdin +- cat >$tmp/stdin +- ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` +- ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; +- * ) ac_file_in=$ac_file.in ;; ++fi # test -n "$CONFIG_FILES" ++ ++ ++for ac_tag in :F $CONFIG_FILES ++do ++ case $ac_tag in ++ :[FHLC]) ac_mode=$ac_tag; continue;; + esac ++ case $ac_mode$ac_tag in ++ :[FHL]*:*);; ++ :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 ++echo "$as_me: error: Invalid tag $ac_tag." >&2;} ++ { (exit 1); exit 1; }; };; ++ :[FH]-) ac_tag=-:-;; ++ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; ++ esac ++ ac_save_IFS=$IFS ++ IFS=: ++ set x $ac_tag ++ IFS=$ac_save_IFS ++ shift ++ ac_file=$1 ++ shift ++ ++ case $ac_mode in ++ :L) ac_source=$1;; ++ :[FH]) ++ ac_file_inputs= ++ for ac_f ++ do ++ case $ac_f in ++ -) ac_f="$tmp/stdin";; ++ *) # Look for the file first in the build tree, then in the source tree ++ # (if the path is not absolute). The absolute path cannot be DOS-style, ++ # because $ac_f cannot contain `:'. ++ test -f "$ac_f" || ++ case $ac_f in ++ [\\/$]*) false;; ++ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; ++ esac || ++ { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 ++echo "$as_me: error: cannot find input file: $ac_f" >&2;} ++ { (exit 1); exit 1; }; };; ++ esac ++ ac_file_inputs="$ac_file_inputs $ac_f" ++ done + +- # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. +- ac_dir=`(dirname "$ac_file") 2>/dev/null || ++ # Let's still pretend it is `configure' which instantiates (i.e., don't ++ # use $as_me), people would be surprised to read: ++ # /* config.h. Generated by config.status. */ ++ configure_input="Generated from "`IFS=: ++ echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure." ++ if test x"$ac_file" != x-; then ++ configure_input="$ac_file. $configure_input" ++ { echo "$as_me:$LINENO: creating $ac_file" >&5 ++echo "$as_me: creating $ac_file" >&6;} ++ fi ++ ++ case $ac_tag in ++ *:-:* | *:-) cat >"$tmp/stdin";; ++ esac ++ ;; ++ esac ++ ++ ac_dir=`$as_dirname -- "$ac_file" || + $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ +- X"$ac_file" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || + echo X"$ac_file" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` +- { if $as_mkdir_p; then +- mkdir -p "$ac_dir" +- else +- as_dir="$ac_dir" ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ { as_dir="$ac_dir" ++ case $as_dir in #( ++ -*) as_dir=./$as_dir;; ++ esac ++ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= +- while test ! -d "$as_dir"; do +- as_dirs="$as_dir $as_dirs" +- as_dir=`(dirname "$as_dir") 2>/dev/null || ++ while :; do ++ case $as_dir in #( ++ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #( ++ *) as_qdir=$as_dir;; ++ esac ++ as_dirs="'$as_qdir' $as_dirs" ++ as_dir=`$as_dirname -- "$as_dir" || + $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ +- X"$as_dir" : 'X\(/\)' \| \ +- . : '\(.\)' 2>/dev/null || ++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || + echo X"$as_dir" | +- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } +- /^X\(\/\/\)[^/].*/{ s//\1/; q; } +- /^X\(\/\/\)$/{ s//\1/; q; } +- /^X\(\/\).*/{ s//\1/; q; } +- s/.*/./; q'` ++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)[^/].*/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\/\)$/{ ++ s//\1/ ++ q ++ } ++ /^X\(\/\).*/{ ++ s//\1/ ++ q ++ } ++ s/.*/./; q'` ++ test -d "$as_dir" && break + done +- test ! -n "$as_dirs" || mkdir $as_dirs +- fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +-echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} ++ test -z "$as_dirs" || eval "mkdir $as_dirs" ++ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 ++echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } +- + ac_builddir=. + +-if test "$ac_dir" != .; then ++case "$ac_dir" in ++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; ++*) + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` +- # A "../" for each directory in $ac_dir_suffix. +- ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +-else +- ac_dir_suffix= ac_top_builddir= +-fi ++ # A ".." for each directory in $ac_dir_suffix. ++ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'` ++ case $ac_top_builddir_sub in ++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; ++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; ++ esac ;; ++esac ++ac_abs_top_builddir=$ac_pwd ++ac_abs_builddir=$ac_pwd$ac_dir_suffix ++# for backward compatibility: ++ac_top_builddir=$ac_top_build_prefix + + case $srcdir in +- .) # No --srcdir option. We are building in place. ++ .) # We are building in place. + ac_srcdir=. +- if test -z "$ac_top_builddir"; then +- ac_top_srcdir=. +- else +- ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` +- fi ;; +- [\\/]* | ?:[\\/]* ) # Absolute path. ++ ac_top_srcdir=$ac_top_builddir_sub ++ ac_abs_top_srcdir=$ac_pwd ;; ++ [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; +- ac_top_srcdir=$srcdir ;; +- *) # Relative path. +- ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix +- ac_top_srcdir=$ac_top_builddir$srcdir ;; +-esac +- +-# Do not use `cd foo && pwd` to compute absolute paths, because +-# the directories may not exist. +-case `pwd` in +-.) ac_abs_builddir="$ac_dir";; +-*) +- case "$ac_dir" in +- .) ac_abs_builddir=`pwd`;; +-