[LinuxBIOS] [PATCH] probe_superio: Cosmetics, cleanup, better structure

Carl-Daniel Hailfinger c-d.hailfinger.devel.2006 at gmx.net
Fri Sep 28 22:41:00 CEST 2007


On 28.09.2007 21:14, Robert Millan wrote:
> On Thu, Sep 27, 2007 at 03:56:20PM +0200, Carl-Daniel Hailfinger wrote:
>> Please provide a diff between dmesg under LB and proprietary BIOS. I
>> suspect some keyboard init is done differently.
> 
> Here.

There's quite some stuff broken. Comments below.

> 
> --- dmesg_lb	2007-09-28 21:13:12.000000000 +0200
> +++ dmesg_bios	2007-09-28 21:13:12.000000000 +0200
> @@ -1,50 +1,76 @@
>  Linux version 2.6.22-2-686 (Debian 2.6.22-4) (waldi at debian.org) (gcc version 4.1.3 20070812 (prerelease) (Debian 4.1.2-15)) #1 SMP Fri Aug 31 00:24:01 UTC 2007
>  BIOS-provided physical RAM map:
> - BIOS-e820: 0000000000001000 - 00000000000a0000 (usable)
> - BIOS-e820: 0000000000100000 - 0000000060000000 (usable)
> -640MB HIGHMEM available.
> + BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
> + BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
> + BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
> + BIOS-e820: 0000000000100000 - 000000005fff0000 (usable)
> + BIOS-e820: 000000005fff0000 - 000000005fff3000 (ACPI NVS)
> + BIOS-e820: 000000005fff3000 - 0000000060000000 (ACPI data)
> + BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
> + BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved)
> +639MB HIGHMEM available.
>  896MB LOWMEM available.
> -found SMP MP-table at 00000010
> -Entering add_active_range(0, 0, 393216) 0 entries of 256 used
> +found SMP MP-table at 000f5650
> +Entering add_active_range(0, 0, 393200) 0 entries of 256 used
>  Zone PFN ranges:
>    DMA             0 ->     4096
>    Normal       4096 ->   229376
> -  HighMem    229376 ->   393216
> +  HighMem    229376 ->   393200
>  early_node_map[1] active PFN ranges
> -    0:        0 ->   393216
> -On node 0 totalpages: 393216
> +    0:        0 ->   393200
> +On node 0 totalpages: 393200
>    DMA zone: 32 pages used for memmap
>    DMA zone: 0 pages reserved
>    DMA zone: 4064 pages, LIFO batch:0
>    Normal zone: 1760 pages used for memmap
>    Normal zone: 223520 pages, LIFO batch:31
> -  HighMem zone: 1280 pages used for memmap
> -  HighMem zone: 162560 pages, LIFO batch:31
> -DMI not present or invalid.
> +  HighMem zone: 1279 pages used for memmap
> +  HighMem zone: 162545 pages, LIFO batch:31
> +DMI 2.3 present.
> +ACPI: RSDP 000F76C0, 0014 (r0 Nvidia)
> +ACPI: RSDT 5FFF3040, 0034 (r1 Nvidia AWRDACPI 42302E31 AWRD        0)
> +ACPI: FACP 5FFF30C0, 0074 (r1 Nvidia AWRDACPI 42302E31 AWRD        0)
> +ACPI: DSDT 5FFF3180, 6264 (r1 NVIDIA AWRDACPI     1000 MSFT  100000E)
> +ACPI: FACS 5FFF0000, 0040
> +ACPI: SRAT 5FFF9500, 0090 (r1 AMD    HAMMER          1 AMD         1)
> +ACPI: MCFG 5FFF9600, 003C (r1 Nvidia AWRDACPI 42302E31 AWRD        0)
> +ACPI: APIC 5FFF9440, 007C (r1 Nvidia AWRDACPI 42302E31 AWRD        0)
>  Nvidia board detected. Ignoring ACPI timer override.
>  If you got timer trouble try acpi_use_timer_override
> -Intel MultiProcessor Specification v1.4
> -    Virtual Wire compatibility mode.
> -OEM ID: ASUS     Product ID: A8NE        APIC at: 0xFEE00000
> +ACPI: PM-Timer IO Port: 0x4008
> +ACPI: Local APIC address 0xfee00000
> +ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
>  Processor #0 15:15 APIC version 16
> -I/O APIC #1 Version 17 at 0xFC900000.
> +ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] disabled)
> +ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
> +ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
> +ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
> +IOAPIC[0]: apic_id 2, version 17, address 0xfec00000, GSI 0-23
> +ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
> +ACPI: BIOS IRQ0 pin2 override ignored.
> +ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
> +ACPI: INT_SRC_OVR (bus 0 bus_irq 14 global_irq 14 high edge)
> +ACPI: INT_SRC_OVR (bus 0 bus_irq 15 global_irq 15 high edge)
> +ACPI: IRQ9 used by override.
> +ACPI: IRQ14 used by override.
> +ACPI: IRQ15 used by override.
>  Enabling APIC mode:  Flat.  Using 1 I/O APICs
> -Processors: 1
> -Allocating PCI resources starting at 70000000 (gap: 60000000:a0000000)
> -Built 1 zonelists.  Total pages: 390144
> -Kernel command line: root=/dev/hda3 ro
> +Using ACPI (MADT) for SMP configuration information
> +Allocating PCI resources starting at 68000000 (gap: 60000000:80000000)
> +Built 1 zonelists.  Total pages: 390129
> +Kernel command line: root=/dev/hda3 ro 
>  mapped APIC to ffffd000 (fee00000)
> -mapped IOAPIC to ffffc000 (fc900000)
> +mapped IOAPIC to ffffc000 (fec00000)
>  Enabling fast FPU save and restore... done.
>  Enabling unmasked SIMD FPU exception support... done.
>  Initializing CPU#0
>  PID hash table entries: 4096 (order: 12, 16384 bytes)
> -Detected 2211.367 MHz processor.
> +Detected 2211.369 MHz processor.
>  spurious 8259A interrupt: IRQ7.
>  Console: colour VGA+ 80x25
>  Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
>  Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
> -Memory: 1550348k/1572864k available (1688k kernel code, 21364k reserved, 653k data, 244k init, 655360k highmem)
> +Memory: 1550220k/1572800k available (1688k kernel code, 21368k reserved, 653k data, 244k init, 655296k highmem)
>  virtual kernel memory layout:
>      fixmap  : 0xfff4e000 - 0xfffff000   ( 708 kB)
>      pkmap   : 0xff800000 - 0xffc00000   (4096 kB)
> @@ -54,7 +80,7 @@
>        .data : 0xc02a62bf - 0xc03497e4   ( 653 kB)
>        .text : 0xc0100000 - 0xc02a62bf   (1688 kB)
>  Checking if this processor honours the WP bit even in supervisor mode... Ok.
> -Calibrating delay using timer specific routine.. 4429.03 BogoMIPS (lpj=8858066)
> +Calibrating delay using timer specific routine.. 4425.47 BogoMIPS (lpj=8850948)
>  Security Framework v1.0.0 initialized
>  SELinux:  Disabled at boot.
>  Capability LSM initialized
> @@ -70,50 +96,86 @@
>  SMP alternatives: switching to UP code
>  Freeing SMP alternatives: 11k freed
>  ACPI: Core revision 20070126
> -ACPI Exception (tbxface-0618): AE_NO_ACPI_TABLES, While loading namespace from ACPI tables [20070126]
> -ACPI: Unable to load the System Description Tables
>  CPU0: AMD Athlon(tm) 64 Processor 3500+ stepping 02
> -Total of 1 processors activated (4429.03 BogoMIPS).
> +Total of 1 processors activated (4425.47 BogoMIPS).
>  ENABLING IO-APIC IRQs
> -..TIMER: vector=0x31 apic1=0 pin1=2 apic2=0 pin2=0
> -..MP-BIOS bug: 8254 timer not connected to IO-APIC

Bad. Can we perform that work in LB?

> -...trying to set up timer (IRQ0) through the 8259A ... 
> -..... (found pin 0) ...works.
> +..TIMER: vector=0x31 apic1=0 pin1=0 apic2=-1 pin2=-1
>  Brought up 1 CPUs
>  Booting paravirtualized kernel on bare hardware
>  NET: Registered protocol family 16
> -PCI: Using configuration type 1
> +ACPI: bus type pci registered
> +PCI: Using MMCONFIG
> +PCI: No mmconfig possible on device 00:18
>  Setting up standard PCI resources
> -ACPI: Interpreter disabled.
> -Linux Plug and Play Support v0.97 (c) Adam Belay
> -pnp: PnP ACPI: disabled
> -PnPBIOS: Scanning system for PnP BIOS support...
> -PnPBIOS: PnP BIOS support was not detected.
> -PCI: Probing PCI hardware
> +ACPI: Interpreter enabled
> +ACPI: (supports S0 S1 S3 S4 S5)
> +ACPI: Using IOAPIC for interrupt routing
> +ACPI: PCI Root Bridge [PCI0] (0000:00)
>  PCI: Probing PCI hardware (bus 00)
>  PCI: Transparent bridge - 0000:00:09.0
> -PCI: Unable to handle 64-bit address space for bridge 0000:00:0b.0
> -PCI: Unable to handle 64-bit address space for bridge 0000:00:0c.0
> -PCI: Unable to handle 64-bit address space for bridge 0000:00:0d.0
> -PCI: Unable to handle 64-bit address space for bridge 0000:00:0e.0

This is not 64bit space, but a ranges going backwards. Not keyboard related.

> -PCI: Using IRQ router default [10de/005c] at 0000:00:09.0
> -PCI->APIC IRQ transform: 0000:00:01.1[A] -> IRQ 10
> -PCI->APIC IRQ transform: 0000:00:02.0[A] -> IRQ 21
> -PCI->APIC IRQ transform: 0000:00:02.1[B] -> IRQ 20
> -PCI->APIC IRQ transform: 0000:00:07.0[A] -> IRQ 23
> -PCI->APIC IRQ transform: 0000:00:08.0[A] -> IRQ 22
> -PCI->APIC IRQ transform: 0000:00:0a.0[A] -> IRQ 23
> -PCI BIOS passed nonexistent PCI bus 1!

Must fix, but also not keyboard related.

> -PCI: Cannot allocate resource region 5 of device 0000:00:01.1
> +ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
> +ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.HUB0._PRT]
> +ACPI: PCI Interrupt Link [LNK1] (IRQs *3 4 5 7 9 10 11 12 14 15)
> +ACPI: PCI Interrupt Link [LNK2] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
> +ACPI: PCI Interrupt Link [LNK3] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
> +ACPI: PCI Interrupt Link [LNK4] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
> +ACPI: PCI Interrupt Link [LNK5] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
> +ACPI: PCI Interrupt Link [LUBA] (IRQs *3 4 5 7 9 10 11 12 14 15)
> +ACPI: PCI Interrupt Link [LUBB] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
> +ACPI: PCI Interrupt Link [LMAC] (IRQs 3 4 *5 7 9 10 11 12 14 15)
> +ACPI: PCI Interrupt Link [LACI] (IRQs 3 4 5 7 9 10 *11 12 14 15)
> +ACPI: PCI Interrupt Link [LMCI] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
> +ACPI: PCI Interrupt Link [LSMB] (IRQs 3 4 *5 7 9 10 11 12 14 15)
> +ACPI: PCI Interrupt Link [LUB2] (IRQs 3 4 5 7 9 10 *11 12 14 15)
> +ACPI: PCI Interrupt Link [LIDE] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
> +ACPI: PCI Interrupt Link [LSID] (IRQs 3 4 5 7 9 10 *11 12 14 15)
> +ACPI: PCI Interrupt Link [LFID] (IRQs 3 4 *5 7 9 10 11 12 14 15)
> +ACPI: PCI Interrupt Link [LPCA] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
> +ACPI: PCI Interrupt Link [APC1] (IRQs 16) *0
> +ACPI: PCI Interrupt Link [APC2] (IRQs 17) *0, disabled.
> +ACPI: PCI Interrupt Link [APC3] (IRQs 18) *0, disabled.
> +ACPI: PCI Interrupt Link [APC4] (IRQs 19) *0, disabled.
> +ACPI: PCI Interrupt Link [APC5] (IRQs *16), disabled.
> +ACPI: PCI Interrupt Link [APCF] (IRQs 20 21 22 23) *0
> +ACPI: PCI Interrupt Link [APCG] (IRQs 20 21 22 23) *0, disabled.
> +ACPI: PCI Interrupt Link [APCH] (IRQs 20 21 22 23) *0
> +ACPI: PCI Interrupt Link [APCJ] (IRQs 20 21 22 23) *0
> +ACPI: PCI Interrupt Link [APCK] (IRQs 20 21 22 23) *0, disabled.
> +ACPI: PCI Interrupt Link [APCS] (IRQs 20 21 22 23) *0
> +ACPI: PCI Interrupt Link [APCL] (IRQs 20 21 22 23) *0
> +ACPI: PCI Interrupt Link [APCZ] (IRQs 20 21 22 23) *0, disabled.
> +ACPI: PCI Interrupt Link [APSI] (IRQs 20 21 22 23) *0
> +ACPI: PCI Interrupt Link [APSJ] (IRQs 20 21 22 23) *0
> +ACPI: PCI Interrupt Link [APCP] (IRQs 20 21 22 23) *0, disabled.
> +Linux Plug and Play Support v0.97 (c) Adam Belay
> +pnp: PnP ACPI init
> +ACPI: bus type pnp registered
> +pnp: PnP ACPI: found 15 devices
> +ACPI: ACPI bus type pnp unregistered
> +PnPBIOS: Disabled by ACPI PNP
> +PCI: Using ACPI for IRQ routing
> +PCI: If a device doesn't work, try "pci=routeirq".  If it helps, post a report
>  NET: Registered protocol family 8
>  NET: Registered protocol family 20
> +ACPI: RTC can wake from S4
> +pnp: 00:01: ioport range 0x4000-0x407f has been reserved
> +pnp: 00:01: ioport range 0x4080-0x40ff has been reserved
> +pnp: 00:01: ioport range 0x4400-0x447f has been reserved
> +pnp: 00:01: ioport range 0x4480-0x44ff has been reserved
> +pnp: 00:01: ioport range 0x4800-0x487f has been reserved
> +pnp: 00:01: ioport range 0x4880-0x48ff has been reserved
> +pnp: 00:0d: iomem range 0xe0000000-0xefffffff could not be reserved
> +pnp: 00:0e: iomem range 0xf0000-0xf3fff could not be reserved
> +pnp: 00:0e: iomem range 0xf4000-0xf7fff could not be reserved
> +pnp: 00:0e: iomem range 0xf8000-0xfbfff could not be reserved
> +pnp: 00:0e: iomem range 0xfc000-0xfffff could not be reserved
> +Time: tsc clocksource has been installed.
>  PCI: Bridge: 0000:00:09.0
>    IO window: disabled.
> -  MEM window: fc000000-fc8fffff
> -  PREFETCH window: 70000000-700fffff
> +  MEM window: d0000000-d1ffffff
> +  PREFETCH window: 68000000-680fffff
>  PCI: Bridge: 0000:00:0b.0
>    IO window: disabled.
> -Time: tsc clocksource has been installed.
>    MEM window: disabled.
>    PREFETCH window: disabled.
>  PCI: Bridge: 0000:00:0c.0
> @@ -142,7 +204,7 @@
>  checking if image is initramfs... it is
>  Freeing initrd memory: 5286k freed
>  audit: initializing netlink socket (disabled)
> -audit(1191006556.256:1): initialized
> +audit(1191006861.244:1): initialized
>  highmem bounce pool size: 64 pages
>  VFS: Disk quotas dquot_6.5.1
>  Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
> @@ -151,121 +213,149 @@
>  io scheduler deadline registered
>  io scheduler cfq registered (default)
>  PCI: Found disabled HT MSI Mapping on 0000:00:0b.0
> -PCI: Found disabled HT MSI Mapping on 0000:00:00.0
> -PCI: MSI quirk detected. MSI disabled on chipset 0000:00:0b.0.

Why not enable HT MSI?

> +PCI: Found enabled HT MSI Mapping on 0000:00:00.0
> +PCI: Linking AER extended capability on 0000:00:0b.0
>  PCI: Found disabled HT MSI Mapping on 0000:00:0c.0
> -PCI: Found disabled HT MSI Mapping on 0000:00:00.0
> -PCI: MSI quirk detected. MSI disabled on chipset 0000:00:0c.0.
> +PCI: Found enabled HT MSI Mapping on 0000:00:00.0
> +PCI: Linking AER extended capability on 0000:00:0c.0
>  PCI: Found disabled HT MSI Mapping on 0000:00:0d.0
> -PCI: Found disabled HT MSI Mapping on 0000:00:00.0
> -PCI: MSI quirk detected. MSI disabled on chipset 0000:00:0d.0.
> +PCI: Found enabled HT MSI Mapping on 0000:00:00.0
> +PCI: Linking AER extended capability on 0000:00:0d.0
>  PCI: Found disabled HT MSI Mapping on 0000:00:0e.0
> -PCI: Found disabled HT MSI Mapping on 0000:00:00.0
> -PCI: MSI quirk detected. MSI disabled on chipset 0000:00:0e.0.
> -Boot video device is 0000:01:06.0

Look at the boot video device.

> +PCI: Found enabled HT MSI Mapping on 0000:00:00.0
> +PCI: Linking AER extended capability on 0000:00:0e.0
> +Boot video device is 0000:05:06.0

The bus numbering difference can probably be explained.

>  PCI: Setting latency timer of device 0000:00:0b.0 to 64
>  assign_interrupt_mode Found MSI capability
>  Allocate Port Service[0000:00:0b.0:pcie00]
> +Allocate Port Service[0000:00:0b.0:pcie03]
>  PCI: Setting latency timer of device 0000:00:0c.0 to 64
>  assign_interrupt_mode Found MSI capability
>  Allocate Port Service[0000:00:0c.0:pcie00]
> +Allocate Port Service[0000:00:0c.0:pcie03]
>  PCI: Setting latency timer of device 0000:00:0d.0 to 64
>  assign_interrupt_mode Found MSI capability
>  Allocate Port Service[0000:00:0d.0:pcie00]
> +Allocate Port Service[0000:00:0d.0:pcie03]
>  PCI: Setting latency timer of device 0000:00:0e.0 to 64
>  assign_interrupt_mode Found MSI capability
>  Allocate Port Service[0000:00:0e.0:pcie00]
> +Allocate Port Service[0000:00:0e.0:pcie03]
>  isapnp: Scanning for PnP cards...
> +Switched to high resolution mode on CPU 0
>  isapnp: No Plug & Play device found
>  Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing enabled
>  serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
> +00:08: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
>  RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize
> -PNP: No PS/2 controller found. Probing ports directly.
> -i8042.c: Can't read CTR while initializing i8042.
> -i8042: probe of i8042 failed with error -5

Now that one is really really bad. You could try to make sure port
0x60,0x64 irq 1 are used as default ports in probing.

> +PNP: PS/2 Controller [PNP0303:PS2K] at 0x60,0x64 irq 1
> +PNP: PS/2 controller doesn't have AUX irq; using default 12
> +serio: i8042 KBD port at 0x60,0x64 irq 1
> +serio: i8042 AUX port at 0x60,0x64 irq 12
>  mice: PS/2 mouse device common for all mice
>  TCP bic registered
>  NET: Registered protocol family 1
>  NET: Registered protocol family 17
>  Using IPI No-Shortcut mode
>  Freeing unused kernel memory: 244k freed
> -thermal: Unknown symbol acpi_processor_set_thermal_limit
> -Clocksource tsc unstable (delta = 504074564 ns)
> -Time: pit clocksource has been installed.

And that's the missing PM timer.

/proc/interrups /proc/ioports /proc/iomem
would also be useful to compare.

Carl-Daniel




More information about the coreboot mailing list