I'm lost here, with the factory BIOS IRQs are handled through IOAPIC, but it seems that LinuxBIOS keeps disabling it. I've got both ACPI tables and irq tables (modified to be somewhat correct), and ioapic should be enabled through the vt8237r. The ioapic base seems to be right, and so do all the registers, but there's probably something I'm missing.
What it pretty much boils down to is, what's required to set up APIC/IOAPIC in LinuxBIOS? I've tried using both my vt8237r stuff (originally posted here: http://www.linuxbios.org/pipermail/linuxbios/2007-August/023553.html, cn700 code has changed but vt8237r hasn't for the most part) and with Rudolf Marek's vt8237r_lpc.c (here: http://linuxbios.org/pipermail/linuxbios/2007-July/023023.html). No matter what I do though, LinuxBIOS pops up with this message just before going to the payload:
Disabling local apic...done.
Full boot log, with info from the running system, attached. Any help greatly appreciated, let me know if you need anything else!
-Corey
Forgot the boot log, here it is.
-Corey
Corey Osgood wrote:
I'm lost here, with the factory BIOS IRQs are handled through IOAPIC, but it seems that LinuxBIOS keeps disabling it. I've got both ACPI tables and irq tables (modified to be somewhat correct), and ioapic should be enabled through the vt8237r. The ioapic base seems to be right, and so do all the registers, but there's probably something I'm missing.
What it pretty much boils down to is, what's required to set up APIC/IOAPIC in LinuxBIOS? I've tried using both my vt8237r stuff (originally posted here: http://www.linuxbios.org/pipermail/linuxbios/2007-August/023553.html, cn700 code has changed but vt8237r hasn't for the most part) and with Rudolf Marek's vt8237r_lpc.c (here: http://linuxbios.org/pipermail/linuxbios/2007-July/023023.html). No matter what I do though, LinuxBIOS pops up with this message just before going to the payload:
Disabling local apic...done.
Full boot log, with info from the running system, attached. Any help greatly appreciated, let me know if you need anything else!
-Corey
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
You have undefined NEED_LAPIC
#if NEED_LAPIC == 1 ... #else printk_info("Disabling local apic..."); #endif...
RTFS ;)
Rudolf
Rudolf Marek wrote:
You have undefined NEED_LAPIC
#if NEED_LAPIC == 1 ... #else printk_info("Disabling local apic..."); #endif...
RTFS ;)
Rudolf
Yep, I suppose adding the CONFIG_IOAPIC option MIGHT help things a little bit (not sure how I missed it, checked the Options page in the wiki). Now the kernel's going nuts with ACPI Errors, even with no ACPI. *sigh*
If you're curious the errors is
VIA RNG detected .ACPI Error (evevent-0314): No installed handler for fixed event [00000000] [20060707] ACPI Error (evevent-0314): No installed handler for fixed event [00000002] [20060707] ACPI Error (evevent-0314): No installed handler for fixed event [00000003] [20060707] ACPI Error (evevent-0314): No installed handler for fixed event [00000004] [20060707] ACPI Error (evgpe-0711): No handler or method for GPE[ 0], disabling event [20060707] ACPI Error (evgpe-0711): No handler or method for GPE[ 1], disabling event [20060707] ACPI Error (evgpe-0711): No handler or method for GPE[ 2], disabling event [20060707] ACPI Error (evgpe-0711): No handler or method for GPE[ 4], disabling event [20060707] ACPI Error (evgpe-0711): No handler or method for GPE[ 6], disabling event [20060707] ACPI Error (evgpe-0711): No handler or method for GPE[ 7], disabling event [20060707] ACPI Error (evgpe-0711): No handler or method for GPE[ A], disabling event [20060707] ACPI Error (evgpe-0711): No handler or method for GPE[ B], disabling event [20060707] ACPI Error (evgpe-0711): No handler or method for GPE[ C], disabling event [20060707] ACPI Error (evgpe-0711): No handler or method for GPE[ F], disabling event [20060707] .
Between the periods is printed in an unending loop. Seems my ACPI tables are junk.
-Corey
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Hi again,
I'm attaching my ACPI/IRQ related files, ACPI on my machine works (I'm getting power button events) and all IRQ are working too. I'm not supporting the PIC at all.
You need to compile the dsdt.asl with iasl -tc and then rename it from dsdt.hex to dsdt.c.
You need to have PMIO at 0x500 and free IRQ9.
Please consider those files as work in progress, they may lack correct copyright header, or expose some no good mess ;) Good news is that they DO work.
I will release them all in some point in the future, now I'm fixing the AMD K8 DDR setup.
For example I dont know if vt8237_lpc.c is clean enough to be released? (I think all it needs is just indent -kr -i8)
Rudolf
/* * Minimalist ACPI DSDT table for EPIA-M / MII * (C) Copyright 2004 Nick Barker Nick.Barker9@btinternet.com * (C) Rudolf Marek r.marek@assembler.cz * * ISA portions taken from QEMU acpi-dsdt.dsl * GPLv2 */
DefinitionBlock ("DSDT.aml", "DSDT", 1, "LXBIOS", "LXB-DSDT", 1) { /* * Define the main processor */ Scope (_PR) { Processor (_PR.CPU0, 0x00, 0x000000, 0x00) {} Processor (_PR.CPU1, 0x01, 0x000000, 0x00) {} }
/* For now only define 2 power states: * - S0 which is fully on * - S5 which is soft off * any others would involve declaring the wake up methods */ Name (_S0, Package () {0x00, 0x00, 0x00, 0x00 }) Name (_S5, Package () {0x02, 0x02, 0x00, 0x00 })
/* Root of the bus hierarchy */ Scope (_SB) { /* top PCI device */ Device (PCI0) { Name (_HID, EisaId ("PNP0A03")) Name (_ADR, 0x00) Name (_UID, 0x00) Name (_BBN, 0x00) /* PCI Routing Table */ //aaa Name (_PRT, Package () { Package (0x04) { 0x000BFFFF, 0x00, 0x00, 0x10 }, //slot 0xB Package (0x04) { 0x000BFFFF, 0x01, 0x00, 0x11 }, Package (0x04) { 0x000BFFFF, 0x02, 0x00, 0x12 }, Package (0x04) { 0x000BFFFF, 0x03, 0x00, 0x13 }, Package (0x04) { 0x000CFFFF, 0x00, 0x00, 0x11 }, //Slot 0xC Package (0x04) { 0x000CFFFF, 0x01, 0x00, 0x12 }, Package (0x04) { 0x000CFFFF, 0x02, 0x00, 0x13 }, Package (0x04) { 0x000CFFFF, 0x03, 0x00, 0x10 }, Package (0x04) { 0x000DFFFF, 0x00, 0x00, 0x12 }, //Slot 0xD Package (0x04) { 0x000DFFFF, 0x01, 0x00, 0x13 }, Package (0x04) { 0x000DFFFF, 0x02, 0x00, 0x10 }, Package (0x04) { 0x000DFFFF, 0x03, 0x00, 0x11 }, Package (0x04) { 0x000F0000, 0x01, 0x00, 0x14 }, //0xf SATA IRQ 20 Package (0x04) { 0x000F0001, 0x00, 0x00, 0x14 }, //0xf NAtive IDE IRQ 20 Package (0x04) { 0x0010FFFF, 0x00, 0x00, 0x15 }, //USB routing Package (0x04) { 0x0010FFFF, 0x01, 0x00, 0x15 }, Package (0x04) { 0x0010FFFF, 0x02, 0x00, 0x15 }, Package (0x04) { 0x0010FFFF, 0x03, 0x00, 0x15 }, Package (0x04) { 0x0011FFFF, 0x02, 0x00, 0x16 }, //AC97 MC97 Package (0x04) { 0x0002FFFF, 0x00, 0x00, 0x1B }, //PCIE16 bridge IRQ27 Package (0x04) { 0x0002FFFF, 0x01, 0x00, 0x1B }, Package (0x04) { 0x0002FFFF, 0x02, 0x00, 0x1B }, Package (0x04) { 0x0002FFFF, 0x03, 0x00, 0x1B }, Package (0x04) { 0x0003FFFF, 0x00, 0x00, 0x1F }, //PCIE bridge IRQ31 Package (0x04) { 0x0003FFFF, 0x01, 0x00, 0x23 }, //IRQ36 Package (0x04) { 0x0003FFFF, 0x02, 0x00, 0x27 }, //IRQ39 Package (0x04) { 0x0003FFFF, 0x03, 0x00, 0x2B } //IRQ43 })
Device (PEGG) { Name (_ADR, 0x00020000) Name (_UID, 0x00) Name (_BBN, 0x02) Name (_PRT, Package () { Package (0x04) { 0x0000FFFF, 0x00, 0x00, 0x18 }, //PCIE IRQ24-IRQ27 Package (0x04) { 0x0000FFFF, 0x01, 0x00, 0x19 }, Package (0x04) { 0x0000FFFF, 0x02, 0x00, 0x1A }, Package (0x04) { 0x0000FFFF, 0x03, 0x00, 0x1B }, }) } //end of PCIEG
Device (PEX0) { Name (_ADR, 0x00030000) Name (_UID, 0x00) Name (_BBN, 0x03) Name (_PRT, Package () { Package (0x04) { 0x0000FFFF, 0x00, 0x00, 0x1C }, //PCIE IRQ28-IRQ31 Package (0x04) { 0x0000FFFF, 0x01, 0x00, 0x1D }, Package (0x04) { 0x0000FFFF, 0x02, 0x00, 0x1E }, Package (0x04) { 0x0000FFFF, 0x03, 0x00, 0x1F }, }) } //end of PEX0
Device (PEX1) { Name (_ADR, 0x00030001) Name (_UID, 0x00) Name (_BBN, 0x04) Name (_PRT, Package () { Package (0x04) { 0x0000FFFF, 0x00, 0x00, 0x20 }, //PCIE IRQ32-IRQ35 Package (0x04) { 0x0000FFFF, 0x01, 0x00, 0x21 }, Package (0x04) { 0x0000FFFF, 0x02, 0x00, 0x22 }, Package (0x04) { 0x0000FFFF, 0x03, 0x00, 0x23 }, }) } //end f PEX1
Device (PEX2) { Name (_ADR, 0x00030002) Name (_UID, 0x00) Name (_BBN, 0x05) Name (_PRT, Package () { Package (0x04) { 0x0000FFFF, 0x00, 0x00, 0x24 }, //PCIE IRQ36-IRQ39 Package (0x04) { 0x0000FFFF, 0x01, 0x00, 0x25 }, Package (0x04) { 0x0000FFFF, 0x02, 0x00, 0x26 }, Package (0x04) { 0x0000FFFF, 0x03, 0x00, 0x27 }, }) } //end f PEX2
Device (PEX3) { Name (_ADR, 0x00030003) Name (_UID, 0x00) Name (_BBN, 0x06) Name (_PRT, Package () { Package (0x04) { 0x0000FFFF, 0x00, 0x00, 0x28 }, //PCIE IRQ40-IRQ43 Package (0x04) { 0x0000FFFF, 0x01, 0x00, 0x29 }, Package (0x04) { 0x0000FFFF, 0x02, 0x00, 0x2A }, Package (0x04) { 0x0000FFFF, 0x03, 0x00, 0x2B }, }) } //end f PEX3
Device (ISA) { Name (_ADR, 0x00110000)
/* Keyboard seems to be important for WinXP install */ Device (KBD) { Name (_HID, EisaId ("PNP0303")) Method (_STA, 0, NotSerialized) { Return (0x0f) }
Method (_CRS, 0, NotSerialized) { Name (TMP, ResourceTemplate () { IO (Decode16, 0x0060, // Address Range Minimum 0x0060, // Address Range Maximum 0x01, // Address Alignment 0x01, // Address Length ) IO (Decode16, 0x0064, // Address Range Minimum 0x0064, // Address Range Maximum 0x01, // Address Alignment 0x01, // Address Length ) IRQNoFlags () {1} }) Return (TMP) } }
/* PS/2 mouse */ Device (MOU) { Name (_HID, EisaId ("PNP0F13")) Method (_STA, 0, NotSerialized) { Return (0x0f) }
Method (_CRS, 0, NotSerialized) { Name (TMP, ResourceTemplate () { IRQNoFlags () {12} }) Return (TMP) } }
/* PS/2 floppy controller */ Device (FDC0) { Name (_HID, EisaId ("PNP0700")) Method (_STA, 0, NotSerialized) { Return (0x0F) } Method (_CRS, 0, NotSerialized) { Name (BUF0, ResourceTemplate () { IO (Decode16, 0x03F2, 0x03F2, 0x00, 0x04) IO (Decode16, 0x03F7, 0x03F7, 0x00, 0x01) IRQNoFlags () {6} DMA (Compatibility, NotBusMaster, Transfer8) {2} }) Return (BUF0) } } //FD END
} //ISA END
} // End of PCI0 } // End of _SB
} // End of Definition Block
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Oh sorry one more table for a shiny morning ;)
Rudolf
Rudolf Marek wrote:
Hi again,
I'm attaching my ACPI/IRQ related files, ACPI on my machine works (I'm getting power button events) and all IRQ are working too. I'm not supporting the PIC at all.
You need to compile the dsdt.asl with iasl -tc and then rename it from dsdt.hex to dsdt.c.
You need to have PMIO at 0x500 and free IRQ9.
Please consider those files as work in progress, they may lack correct copyright header, or expose some no good mess ;) Good news is that they DO work.
I will release them all in some point in the future, now I'm fixing the AMD K8 DDR setup.
For example I dont know if vt8237_lpc.c is clean enough to be released? (I think all it needs is just indent -kr -i8)
Rudolf
Thanks, I'll have a look at these tomorrow. For some reason, ACPI on my system doesn't work (produces the error I had before) if the base is set to 0x500, but it does work with 0x400 (the factory slot). Also, a quick peak at your irq_tables.c tells me they're probably no good, the correct IRQ router is 0x3227, not 0x596. I'm not sure if your acpi tables would do any good on my system or not, where they're entirely different northbridges, but can't hurt to give it a whirl.
-Corey
Thanks, I'll have a look at these tomorrow. For some reason, ACPI on my
system doesn't work (produces the error I had before) if the base is set to 0x500, but it does work with 0x400 (the factory slot). Also, a quick
Maybe you have something at 0x500, use the isadump -f 0x500 from lm-sensors package to find out.
peak at your irq_tables.c tells me they're probably no good, the correct IRQ router is 0x3227, not 0x596.
Yep correct, I never tried those, I used MP table for the IRQ routing. You may try to use the MP table or the ACPI, all you need is to remove all PCI DEVS you dont have. I suppose you have VT8237 at 0:11.0 so you need to leave all lines with 0x11XXXX.
Rudolf
Rudolf Marek wrote:
Thanks, I'll have a look at these tomorrow. For some reason, ACPI on my
system doesn't work (produces the error I had before) if the base is set to 0x500, but it does work with 0x400 (the factory slot). Also, a quick
Maybe you have something at 0x500, use the isadump -f 0x500 from lm-sensors package to find out.
Just realized thats where my smbus IO base is. I'll try moving things around a bit, I don't even need smbus at the moment.
peak at your irq_tables.c tells me they're probably no good, the correct IRQ router is 0x3227, not 0x596.
Yep correct, I never tried those, I used MP table for the IRQ routing. You may try to use the MP table or the ACPI, all you need is to remove all PCI DEVS you dont have. I suppose you have VT8237 at 0:11.0 so you need to leave all lines with 0x11XXXX.
Rudolf
Heh, I went ahead and dumped my mptable, even though this is a single processor system. The mptable is for a supermicro P4DPE (with intel e7500 chipset). Just one more reason factory bios's suck.
I'm having a bit of trouble with your acpi tables, they just don't seem to work right on my board, so I'm working on patching up the factory tables. Just out of curiosity, do you now have a device 10.5, which linux detects as a network card? This is a USB direct device comminucation device, but Linux seems to think it's a NIC, and I think that trying to initialize it is what's hanging my system at the moment, but I can't be sure.
Thanks! Corey
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Corey Osgood wrote:
Just realized thats where my smbus IO base is. I'll try moving things around a bit, I don't even need smbus at the moment.
Heh, I went ahead and dumped my mptable, even though this is a single processor system. The mptable is for a supermicro P4DPE (with intel e7500 chipset). Just one more reason factory bios's suck.
Yeah mine table looked like if I wrote it from scratch myself not knowing much about it ;)
I'm having a bit of trouble with your acpi tables, they just don't seem to work right on my board, so I'm working on patching up the factory tables. Just out of curiosity, do you now have a device 10.5, which linux detects as a network card? This is a USB direct device comminucation device, but Linux seems to think it's a NIC, and I think that trying to initialize it is what's hanging my system at the moment, but I can't be sure.
I have this disabled. Check the code. All you need from acpi is to set it to 0x500 and then use the tables. For IRQ routing information from acpi you just need to take a look how the PRT object is defined. Thats all.
Rudolf
Can you send your vt8237r.c as well?
Thanks, Corey
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Yes.
R.
Okay, finally managed to get the kernel panic out to go to the serial console, and I'm not sure what's going on. This happens with the ACPI base either at 0x400 or 0x500, with either a fixed factory dsdt or Rudolf's modified, or without any ACPI at all. This kernel boots with the factory BIOS, and another kernel (gentoo's genkernel) boots as far as registering the NIC before it hangs, with ACPI disabled (via acpi=off), but does the same thing as here with ACPI enabled. This kernel does the same thing, hang at NIC registration, with the noapic and nolapic parameters. Note the "No local APIC present or hardware disabled" line, although apic is enabled, as far as I can tell, in LinuxBIOS. I've also attached APIC.dsl, dumped out of the factory BIOS. Perhaps you can make something out of it? I'm lost.
Setting up local apic... apic_id: 0x00 done. CPU #0 Initialized PCI: 00:0a.0 init PCI: 00:10.4 init Devices initialized Copying IRQ routing tables to 0xf0000...done. Verifing copy of IRQ routing tables at 0xf0000...done Checking IRQ routing table consistency... check_pirq_routing_table() - irq_routing_table located at: 0x000f0000 done. ACPI: Writing ACPI tables at f0400... ACPI: * FACS ACPI: * DSDT @ 000f04a2 Length 58a0 ACPI: * FADT ACPI: added table 1/6 Length now 40 ACPI: done. Moving GDT to 0x500...ok Wrote linuxbios table at: 00000530 - 00000b68 checksum 9790
Welcome to elfboot, the open sourced starter. January 2002, Eric Biederman. Version 1.3
rom_stream: 0xfffd0000 - 0xfffe7fff Found ELF candidate at offset 0 header_offset is 0 Try to load at offset 0x0 malloc Enter, size 32, free_mem_ptr 00020538 malloc 0x00020538 New segment addr 0x100000 size 0x486e0 offset 0xc0 filesize 0xb268 (cleaned up) New segment addr 0x100000 size 0x486e0 offset 0xc0 filesize 0xb268 lb: [0x0000000000004000, 0x0000000000024000) malloc Enter, size 32, free_mem_ptr 00020558 malloc 0x00020558 New segment addr 0x1486e0 size 0x48 offset 0xb340 filesize 0x48 (cleaned up) New segment addr 0x1486e0 size 0x48 offset 0xb340 filesize 0x48 lb: [0x0000000000004000, 0x0000000000024000) Dropping non PT_LOAD segment Dropping non PT_LOAD segment Loading Segment: addr: 0x0000000000100000 memsz: 0x00000000000486e0 filesz: 0x000000000000b268 [ 0x0000000000100000, 000000000010b268, 0x00000000001486e0) <- 00000000000000c0 Clearing Segment: addr: 0x000000000010b268 memsz: 0x000000000003d478 Loading Segment: addr: 0x00000000001486e0 memsz: 0x0000000000000048 filesz: 0x0000000000000048 [ 0x00000000001486e0, 0000000000148728, 0x0000000000148728) <- 000000000000b340 Loaded segments verified segments closed down stream Jumping to boot code at 0x1091d4 entry = 0x001091d4 lb_start = 0x00004000 lb_size = 0x00020000 adjust = 0x1bfdc000 buffer = 0x1bfc0000 elf_boot_notes = 0x00019f40 adjusted_boot_notes = 0x1bff5f40 FILO version 0.5 (amp@ampmobile) Fri Sep 21 00:10:24 EDT 2007 boot: hda1:/vmlinuz root=/dev/hda2 ide=nodma console=ttyS0,115200 earlyprintk=ttyS0,115200 hda: LBA 2079MB: CF 2GB Mounted ext2fs Found Linux version 2.6.22-gentoo-r5 (root@carpc) #1 Thu Sep 20 19:52:09 EDT 2007 bzImage. Loading kernel... ok Jumping to entry point... Linux version 2.6.22-gentoo-r5 (root@carpc) (gcc version 4.1.2 (Gentoo 4.1.2 p1.0.1)) #1 Thu Sep 20 19:52:09 EDT 2007 BIOS-provided physical RAM map: BIOS-e820: 0000000000000bcc - 00000000000a0000 (usable) BIOS-e820: 0000000000100000 - 000000001c000000 (usable) 448MB LOWMEM available. Zone PFN ranges: DMA 0 -> 4096 Normal 4096 -> 114688 early_node_map[1] active PFN ranges 0: 0 -> 114688 DMI not present or invalid. ACPI: RSDP 000F0400, 0014 (r0 LXBIOS) ACPI: RSDT 000F0424, 0028 (r1 LXBIOS RSDT 0 NONE 0) ACPI: FACP 000F5D42, 00F4 (r1 LXBIOS LXBACPI 0 LXB 0) ACPI: DSDT 000F04A2, 58A0 (r1 CN700 AWRDACPI 1000 INTL 20060912) ACPI: FACS 000F0460, 0042 ACPI: PM-Timer IO Port: 0x508 Allocating PCI resources starting at 20000000 (gap: 1c000000:e4000000) Built 1 zonelists. Total pages: 113792 Kernel command line: root=/dev/hda2 ide=nodma console=ttyS0,115200 earlyprintk=ttyS0,115200 ide_setup: ide=nodma : Prevented DMA No local APIC present or hardware disabled Enabling fast FPU save and restore... done. Enabling unmasked SIMD FPU exception support... done. Initializing CPU#0 PID hash table entries: 2048 (order: 11, 8192 bytes) Detected 800.025 MHz processor. Console: colour VGA+ 80x25 Dentry cache hash table entries: 65536 (order: 6, 262144 bytes) Inode-cache hash table entries: 32768 (order: 5, 131072 bytes) Memory: 450212k/458752k available (2247k kernel code, 8052k reserved, 1052k data, 168k init, 0k highmem) virtual kernel memory layout: fixmap : 0xfffb7000 - 0xfffff000 ( 288 kB) vmalloc : 0xdc800000 - 0xfffb5000 ( 567 MB) lowmem : 0xc0000000 - 0xdc000000 ( 448 MB) .init : 0xc043c000 - 0xc0466000 ( 168 kB) .data : 0xc0331d1b - 0xc0438fec (1052 kB) .text : 0xc0100000 - 0xc0331d1b (2247 kB) Checking if this processor honours the WP bit even in supervisor mode... Ok. Calibrating delay using timer specific routine.. 1601.85 BogoMIPS (lpj=800929) Mount-cache hash table entries: 512 CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line) CPU: L2 Cache: 128K (64 bytes/line) Compat vDSO mapped to ffffe000. CPU: Centaur VIA Esther processor 1000MHz stepping 09 Checking 'hlt' instruction... OK. ACPI: Core revision 20070126 Parsing all Control Methods: Table [DSDT](id 0001) - 759 Objects with 65 Devices 211 Methods 40 Regions tbxface-0587 [02] tb_load_namespace : ACPI Tables successfully acquired ACPI: setting ELCR to 0200 (from 0000) evxfevnt-0079 [02] enable : System is already in ACPI mode divide error: 0000 [#1] Modules linked in: CPU: 0 EIP: 0060:[<c012b83d>] Not tainted VLI EFLAGS: 00010046 (2.6.22-gentoo-r5 #1) EIP is at clockevent_delta2ns+0x35/0x6e eax: 007fffff ebx: 00000000 ecx: 007fffff edx: 00000000 esi: 00000000 edi: 00000000 ebp: 007fffff esp: c1441ef4 ds: 007b es: 007b fs: 0000 gs: 0000 ss: 0068 Process swapper (pid: 1, ti=c1440000 task=c1432a30 task.ti=c1440000) Stack: 00000000 05f5a5a0 00000000 00000000 00000000 c04431df c1436bfc 00441f34 0000000a c1436c0c ffffffff c0110e22 00000000 c1441f64 00000000 c1441f64 c0462b14 c04434c4 0000000f 00000000 00000001 00000000 00000000 00000000 Call Trace: [<c04431df>] setup_boot_APIC_clock+0x211/0x420 [<c0110e22>] setup_local_APIC+0x1ff/0x22d [<c04434c4>] APIC_init_uniprocessor+0xd6/0xe0 [<c043c5ce>] kernel_init+0x0/0x217 [<c043c612>] kernel_init+0x44/0x217 [<c01039e2>] ret_from_fork+0x6/0x1c [<c043c5ce>] kernel_init+0x0/0x217 [<c043c5ce>] kernel_init+0x0/0x217 [<c0104657>] kernel_thread_helper+0x7/0x10 ======================= Code: 83 ec 04 8b 42 14 8b 72 10 88 c1 0f a5 fd d3 e7 a8 20 0f 45 ef 0f 45 fb 89 f8 89 ea 89 d1 31 d2 85 c9 89 04 24 74 08 8 EIP: [<c012b83d>] clockevent_delta2ns+0x35/0x6e SS:ESP 0068:c1441ef4 Kernel panic - not syncing: Attempted to kill init!
Help?
-Corey
* Corey Osgood corey.osgood@gmail.com [070922 00:49]:
ACPI: Writing ACPI tables at f0400... ACPI: * FACS ACPI: * DSDT @ 000f04a2 Length 58a0 ACPI: * FADT ACPI: added table 1/6 Length now 40
You don't have a MADT? Check acpi_tables.c from agami/aruma.c
Linux never knows about your APICs...
Stefan Reinauer wrote:
- Corey Osgood corey.osgood@gmail.com [070922 00:49]:
ACPI: Writing ACPI tables at f0400... ACPI: * FACS ACPI: * DSDT @ 000f04a2 Length 58a0 ACPI: * FADT ACPI: added table 1/6 Length now 40
You don't have a MADT? Check acpi_tables.c from agami/aruma.c
Linux never knows about your APICs...
Odd, you need a Multiple APIC Descriptor Table for a single cpu? Looking at the spec, that seems to be the case, will get to work on it.
have you tried booting acpi=off ?
yes. But APIC doesn't work without ACPI (by design?).
So you need to enable CONFIG_IOAPIC or CONFIG_SMP in your Options.lb.
Already taken care of, just CONFIG_IOAPIC since this is a uniprocessor system.
Thanks, Corey
* Corey Osgood corey.osgood@gmail.com [070922 21:59]:
Linux never knows about your APICs...
Odd, you need a Multiple APIC Descriptor Table for a single cpu? Looking at the spec, that seems to be the case, will get to work on it.
yes, because you have two apics ;)
have you tried booting acpi=off ?
yes. But APIC doesn't work without ACPI (by design?).
Aw. right. I think there is no way of describing "Use these APICs" to the OS with PIRQ and MP table.
In Linux, once you use ACPI for some things, you need to play the full game or you will run into _weird_ code paths.
So you need to enable CONFIG_IOAPIC or CONFIG_SMP in your Options.lb.
Already taken care of, just CONFIG_IOAPIC since this is a uniprocessor system.
You caught me disobeying the "read thread first, then answer" rule while catching up on emails.
Stefan
Okay, on the MADT, I'm having a bit of trouble, LinuxBIOS is hanging while creating the checksum. I've attached my acpi_tables.c (and Rudolf, I'm sorry for not looking through yours more, I simply overlooked the entire MADT portion of them and when they didn't build for me discarded them). To be specific, it's these lines of acpi_create_madt() (in arch/i386/boot/acpi.c) that are hanging:
/* recalculate length */ header->length= current - (unsigned long)madt; print_debug("calculating checksum\n"); <-last line I see header->checksum = acpi_checksum((void *)madt, header->length); print_debug("leaving acpi_create_madt\n");
A couple differences in my acpi tables, first off I couldn't find a gsi base. Reading through the standard, it's optional, so I'm assuming it should just be discarded if not present? Also, I couldn't find anything about a northbridge apic in the stock bios MADT dump, is that maybe only on k8?
Thanks, Corey
Heh, oops, forgot a couple plus signs. Need to get some sleep, sorry!
-Corey
Corey Osgood wrote:
Okay, on the MADT, I'm having a bit of trouble, LinuxBIOS is hanging while creating the checksum. I've attached my acpi_tables.c (and Rudolf, I'm sorry for not looking through yours more, I simply overlooked the entire MADT portion of them and when they didn't build for me discarded them). To be specific, it's these lines of acpi_create_madt() (in arch/i386/boot/acpi.c) that are hanging:
/* recalculate length */ header->length= current - (unsigned long)madt; print_debug("calculating checksum\n"); <-last line I see header->checksum = acpi_checksum((void *)madt, header->length); print_debug("leaving acpi_create_madt\n");
A couple differences in my acpi tables, first off I couldn't find a gsi base. Reading through the standard, it's optional, so I'm assuming it should just be discarded if not present? Also, I couldn't find anything about a northbridge apic in the stock bios MADT dump, is that maybe only on k8?
Thanks, Corey
* Corey Osgood corey.osgood@gmail.com [070921 01:32]:
.ACPI Error (evevent-0314): No installed handler for fixed event [00000000] [20060707] ACPI Error (evevent-0314): No installed handler for fixed event [00000002] [20060707] ACPI Error (evevent-0314): No installed handler for fixed event [00000003] [20060707] ACPI Error (evevent-0314): No installed handler for fixed event [00000004] [20060707] ACPI Error (evgpe-0711): No handler or method for GPE[ 0], disabling event [20060707] ACPI Error (evgpe-0711): No handler or method for GPE[ 1], disabling event [20060707] ACPI Error (evgpe-0711): No handler or method for GPE[ 2], disabling event [20060707] ACPI Error (evgpe-0711): No handler or method for GPE[ 4], disabling event [20060707] ACPI Error (evgpe-0711): No handler or method for GPE[ 6], disabling event [20060707] ACPI Error (evgpe-0711): No handler or method for GPE[ 7], disabling event [20060707] ACPI Error (evgpe-0711): No handler or method for GPE[ A], disabling event [20060707] ACPI Error (evgpe-0711): No handler or method for GPE[ B], disabling event [20060707] ACPI Error (evgpe-0711): No handler or method for GPE[ C], disabling event [20060707] ACPI Error (evgpe-0711): No handler or method for GPE[ F], disabling event [20060707] .
Between the periods is printed in an unending loop. Seems my ACPI tables are junk.
have you tried booting acpi=off ?
* Corey Osgood corey.osgood@gmail.com [070920 23:51]:
What it pretty much boils down to is, what's required to set up APIC/IOAPIC in LinuxBIOS? I've tried using both my vt8237r stuff (originally posted here: http://www.linuxbios.org/pipermail/linuxbios/2007-August/023553.html, cn700 code has changed but vt8237r hasn't for the most part) and with Rudolf Marek's vt8237r_lpc.c (here: http://linuxbios.org/pipermail/linuxbios/2007-July/023023.html). No matter what I do though, LinuxBIOS pops up with this message just before going to the payload:
Disabling local apic...done.
The stuff you set up in the southbridge is the IOAPIC -- It belongs to the bridge.
The stuff you see disabled is the Local Apic -- this one is part of the CPU. And enabled/disabled in cpu/x86/lapic/lapic.c depending on the setting of NEED_LAPIC
lapic.h say: #if CONFIG_SMP || CONFIG_IOAPIC # define NEED_LAPIC 1 #endif
So you need to enable CONFIG_IOAPIC or CONFIG_SMP in your Options.lb.
Stefan