Re: [PATCH] x86: extend e820 ealy_res support 32bit - fix v2

From: Yinghai Lu
Date: Fri May 23 2008 - 19:08:50 EST


On Thu, May 22, 2008 at 3:20 PM, Yinghai Lu <yhlu.kernel@xxxxxxxxx> wrote:
> [PATCH] x86: extend e820 ealy_res support 32bit - fix v2
>
> use find_e820_area to find addess for new RAMDISK, instead of using ram blindly
>
> also print out low ram and bootmap info
>
> v2: remove extra -1 in reaseve_early calling
> panic if can not find space for new RAMDISK
>

Jeremy,

your config works on XEN of 5.2 as domU
( I added ext2 support...)

YH
Linux version 2.6.26-rc3-sched-devel.git (yhlu@mpk12-office-77-136) (gcc version 4.2.1 (SUSE Linux)) #65 SMP PREEMPT Fri May 23 15:55:55 PDT 2008
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 000000001fffac00 (usable)
BIOS-e820: 000000001fffac00 - 0000000020000000 (reserved)
Early serial console at I/O port 0x3f8 (options '9600n8')
console [uart0] enabled
x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
0MB HIGHMEM available.
511MB LOWMEM available.
low ram: 00622000 - 1fffa000
bootmap 00622000 - 00626000
early res: 0 [0-fff] BIOS data page
early res: 1 [1000-1fff] EX TRAMPOLINE
early res: 2 [6000-6fff] TRAMPOLINE
early res: 3 [100000-619487] TEXT DATA BSS
early res: 4 [1ea1f000-1ffe9e56] RAMDISK
early res: 5 [619488-621fff] INIT_PG_TABLE
early res: 6 [9fc00-fffff] BIOS reserved
early res: 7 [622000-625fff] BOOTMAP
Scan SMP from c0000000 for 1024 bytes.
Scan SMP from c009fc00 for 1024 bytes.
Scan SMP from c00f0000 for 65536 bytes.
found SMP MP-table at [c00fccd0] 000fccd0
NX (Execute Disable) protection: active
Entering add_active_range(0, 0, 131066) 0 entries of 256 used
Zone PFN ranges:
DMA 0 -> 4096
Normal 4096 -> 131066
HighMem 131066 -> 131066
Movable zone start PFN for each node
early_node_map[1] active PFN ranges
0: 0 -> 131066
On node 0 totalpages: 131066
DMA zone: 32 pages used for memmap
DMA zone: 0 pages reserved
DMA zone: 4064 pages, LIFO batch:0
Normal zone: 991 pages used for memmap
Normal zone: 125979 pages, LIFO batch:31
HighMem zone: 0 pages used for memmap
Movable zone: 0 pages used for memmap
DMI 2.4 present.
ACPI: RSDP 000EB0B0, 0024 (r2 Xen)
ACPI: XSDT 000EB020, 0044 (r1 Xen HVM 0 HVML 0)
ACPI: FACP 000EAE30, 00F4 (r4 Xen HVM 0 HVML 0)
ACPI: DSDT 000EA040, 0D67 (r2 Xen HVM 0 INTL 20060707)
ACPI: FACS 000EA000, 0040
ACPI: APIC 000EAF30, 0072 (r2 Xen HVM 0 HVML 0)
ACPI: HPET 000EAFB0, 0038 (r1 Xen HVM 0 HVML 0)
ACPI: SSDT 000EAFE8, 0038 (r2 Xen HVM 0 HVML 0)
ACPI: DMI BIOS year==0, assuming ACPI-capable machine
ACPI: PM-Timer IO Port: 0x1f48
ACPI: Local APIC address 0xfee00000
ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0])
IOAPIC[0]: apic_id 1, version 17, address 0xfec00000, GSI 0-47
ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
ACPI: INT_SRC_OVR (bus 0 bus_irq 5 global_irq 5 low level)
ACPI: INT_SRC_OVR (bus 0 bus_irq 7 global_irq 7 low level)
ACPI: INT_SRC_OVR (bus 0 bus_irq 10 global_irq 10 low level)
ACPI: INT_SRC_OVR (bus 0 bus_irq 11 global_irq 11 low level)
ACPI: IRQ0 used by override.
ACPI: IRQ2 used by override.
ACPI: IRQ5 used by override.
ACPI: IRQ7 used by override.
ACPI: IRQ9 used by override.
ACPI: IRQ10 used by override.
ACPI: IRQ11 used by override.
Enabling APIC mode: Flat. Using 1 I/O APICs
ACPI: HPET id: 0x8086a201 base: 0xfed00000
Using ACPI (MADT) for SMP configuration information
Allocating PCI resources starting at 30000000 (gap: 20000000:e0000000)
SMP: Allowing 1 CPUs, 0 hotplug CPUs
PERCPU: Allocating 37096 bytes of per cpu data
NR_CPUS: 4, nr_cpu_ids: 1, nr_node_ids 1
Built 1 zonelists in Zone order, mobility grouping on. Total pages: 130043
Kernel command line: rw root=/dev/ram0 console=tty0 console=uart8250,io,0x3f8,9600n8 apic=verbose pci=routeirq ip=dhcp ramdisk_size=131072
mapped APIC to ffffb000 (fee00000)
mapped IOAPIC to ffffa000 (fec00000)
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 2493.395 MHz processor.
Console: colour VGA+ 80x25
console [tty0] enabled
console handover: boot [uart0] -> real [ttyS0]
Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
Memory: 491344k/524264k available (3066k kernel code, 32304k reserved, 1436k data, 280k init, 0k highmem)
virtual kernel memory layout:
fixmap : 0xfff84000 - 0xfffff000 ( 492 kB)
pkmap : 0xffa00000 - 0xffc00000 (2048 kB)
vmalloc : 0xe0800000 - 0xff9fe000 ( 497 MB)
lowmem : 0xc0000000 - 0xdfffa000 ( 511 MB)
.init : 0xc056c000 - 0xc05b2000 ( 280 kB)
.data : 0xc03febff - 0xc0565ffc (1436 kB)
.text : 0xc0100000 - 0xc03febff (3066 kB)
Checking if this processor honours the WP bit even in supervisor mode...Ok.
CPA: page pool initialized 1 of 1 pages preallocated
SLUB: Genslabs=12, HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
hpet clockevent registered
Calibrating delay using timer specific routine.. 5014.51 BogoMIPS (lpj=10029037)
Security Framework initialized
Capability LSM initialized
Mount-cache hash table entries: 512
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 512K (64 bytes/line)
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
Checking 'hlt' instruction... OK.
SMP alternatives: switching to UP code
Freeing SMP alternatives: 14k freed
ACPI: Core revision 20080321
enabled ExtINT on CPU#0
ENABLING IO-APIC IRQs
init IO_APIC IRQs
IO-APIC (apicid-pin) 1-0 not connected.
IO-APIC (apicid-pin) 1-16, 1-17, 1-18, 1-19, 1-20, 1-21, 1-22, 1-23, 1-24, 1-25, 1-26, 1-27, 1-28, 1-29, 1-30, 1-31, 1-32, 1-33, 1-34, 1-35, 1-36, 1-37, 1-38, 1-39, 1-40, 1-41, 1-42, 1-43, 1-44, 1-45, 1-46, 1-47 not connected.
..TIMER: vector=0x31 apic1=0 pin1=2 apic2=-1 pin2=-1
CPU0: AMD Quad-Core AMD Opteron(tm) Processor 8360 SE stepping 03
Using local APIC timer interrupts.
calibrating APIC timer ...
... lapic delta = 625666
... PM timer delta = 358317
... PM timer result ok
..... delta 625666
..... mult: 26870470
..... calibration result: 400426
..... CPU clock speed is 2496.0229 MHz.
..... host bus clock speed is 100.0426 MHz.
Brought up 1 CPUs
Total of 1 processors activated (5014.51 BogoMIPS).
CPU0 attaching NULL sched-domain.
net_namespace: 632 bytes
Booting paravirtualized kernel on bare hardware
NET: Registered protocol family 16
No dock devices found.
ACPI: bus type pci registered
PCI: PCI BIOS revision 2.10 entry at 0xfa3b0, last bus=0
PCI: Using configuration type 1 for base access
Setting up standard PCI resources
ACPI: EC: Look up EC in DSDT
ACPI: Interpreter enabled
ACPI: (supports S0 S5)
ACPI: Using IOAPIC for interrupt routing
ACPI: PCI Root Bridge [PCI0] (0000:00)
PCI: 0000:00:01.1 reg 20 io port: [c000, c00f]
* Found PM-Timer Bug on the chipset. Due to workarounds for a bug,
* this clock source is slow. Consider trying other clock sources
pci 0000:00:01.2: quirk: region 1f40-1f7f claimed by PIIX4 ACPI
PCI: 0000:00:01.3 reg 20 io port: [c020, c03f]
PCI: 0000:00:02.0 reg 10 32bit mmio: [f0000000, f1ffffff]
PCI: 0000:00:02.0 reg 14 32bit mmio: [f2000000, f2000fff]
PCI: 0000:00:03.0 reg 10 io port: [c100, c1ff]
PCI: 0000:00:03.0 reg 14 32bit mmio: [f3000000, f3ffffff]
PCI: 0000:00:04.0 reg 10 io port: [c200, c2ff]
PCI: 0000:00:04.0 reg 14 32bit mmio: [f4000000, f40000ff]
bus 00 -> node 0
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
ACPI: PCI Interrupt Link [LNKA] (IRQs *5 7 10 11)
ACPI: PCI Interrupt Link [LNKB] (IRQs 5 *7 10 11)
ACPI: PCI Interrupt Link [LNKC] (IRQs 5 7 *10 11)
ACPI: PCI Interrupt Link [LNKD] (IRQs 5 7 10 *11)
Linux Plug and Play Support v0.97 (c) Adam Belay
pnp: PnP ACPI init
ACPI: bus type pnp registered
pnp: PnP ACPI: found 11 devices
ACPI: ACPI bus type pnp unregistered
SCSI subsystem initialized
libata version 3.00 loaded.
usbcore: registered new interface driver usbfs
usbcore: registered new interface driver hub
usbcore: registered new device driver usb
PCI: Using ACPI for IRQ routing
PCI: Routing PCI interrupts for all devices because "pci=routeirq" specified
ACPI: PCI Interrupt 0000:00:01.2[A] -> GSI 20 (level, low) -> IRQ 20
Int: type 0, pol 3, trig 3, bus 00, IRQ 04, APIC ID 1, APIC INT 14
ACPI: PCI Interrupt 0000:00:01.3[D] -> GSI 23 (level, low) -> IRQ 23
Int: type 0, pol 3, trig 3, bus 00, IRQ 07, APIC ID 1, APIC INT 17
ACPI: PCI Interrupt 0000:00:03.0[A] -> GSI 28 (level, low) -> IRQ 28
Int: type 0, pol 3, trig 3, bus 00, IRQ 0c, APIC ID 1, APIC INT 1c
ACPI: PCI Interrupt 0000:00:04.0[A] -> GSI 32 (level, low) -> IRQ 32
Int: type 0, pol 3, trig 3, bus 00, IRQ 10, APIC ID 1, APIC INT 20
number of MP IRQ sources: 19.
number of IO-APIC #1 registers: 48.
testing the IO APIC.......................
IO APIC #1......
.... register #00: 00000000
....... : physical APIC id: 00
....... : Delivery Type: 0
....... : LTS : 0
.... register #01: 002F0011
....... : max redirection entries: 002F
....... : PRQ implemented: 0
....... : IO APIC version: 0011
.... register #02: 00000000
....... : arbitration: 00
.... IRQ redirection table:
NR Log Phy Mask Trig IRR Pol Stat Dest Deli Vect:
00 000 00 1 0 0 0 0 0 0 00
01 001 01 1 0 0 0 0 1 1 39
02 001 01 0 0 0 0 0 1 1 31
03 001 01 0 0 0 0 0 1 1 41
04 001 01 1 0 0 0 0 1 1 49
05 001 01 1 1 0 1 0 1 1 51
06 001 01 1 0 0 0 0 1 1 59
07 001 01 1 1 0 1 0 1 1 61
08 001 01 1 0 0 0 0 1 1 69
09 001 01 0 1 0 1 0 1 1 71
0a 001 01 1 1 0 1 0 1 1 79
0b 001 01 1 1 0 1 0 1 1 81
0c 001 01 1 0 0 0 0 1 1 89
0d 001 01 0 0 0 0 0 1 1 91
0e 001 01 0 0 0 0 0 1 1 99
0f 001 01 0 0 0 0 0 1 1 A1
10 000 00 1 0 0 0 0 0 0 00
11 000 00 1 0 0 0 0 0 0 00
12 000 00 1 0 0 0 0 0 0 00
13 000 00 1 0 0 0 0 0 0 00
14 001 01 1 1 0 1 0 1 1 A9
15 000 00 1 0 0 0 0 0 0 00
16 000 00 1 0 0 0 0 0 0 00
17 001 01 1 1 0 1 0 1 1 B1
18 000 00 1 0 0 0 0 0 0 00
19 000 00 1 0 0 0 0 0 0 00
1a 000 00 1 0 0 0 0 0 0 00
1b 000 00 1 0 0 0 0 0 0 00
1c 001 01 1 1 0 1 0 1 1 B9
1d 000 00 1 0 0 0 0 0 0 00
1e 000 00 1 0 0 0 0 0 0 00
1f 000 00 1 0 0 0 0 0 0 00
20 001 01 1 1 0 1 0 1 1 C1
21 000 00 1 0 0 0 0 0 0 00
22 000 00 1 0 0 0 0 0 0 00
23 000 00 1 0 0 0 0 0 0 00
24 000 00 1 0 0 0 0 0 0 00
25 000 00 1 0 0 0 0 0 0 00
26 000 00 1 0 0 0 0 0 0 00
27 000 00 1 0 0 0 0 0 0 00
28 000 00 1 0 0 0 0 0 0 00
29 000 00 1 0 0 0 0 0 0 00
2a 000 00 1 0 0 0 0 0 0 00
2b 000 00 1 0 0 0 0 0 0 00
2c 000 00 1 0 0 0 0 0 0 00
2d 000 00 1 0 0 0 0 0 0 00
2e 000 00 1 0 0 0 0 0 0 00
2f 000 00 1 0 0 0 0 0 0 00
IRQ to pin mappings:
IRQ0 -> 0:2
IRQ1 -> 0:1
IRQ3 -> 0:3
IRQ4 -> 0:4
IRQ5 -> 0:5
IRQ6 -> 0:6
IRQ7 -> 0:7
IRQ8 -> 0:8
IRQ9 -> 0:9
IRQ10 -> 0:10
IRQ11 -> 0:11
IRQ12 -> 0:12
IRQ13 -> 0:13
IRQ14 -> 0:14
IRQ15 -> 0:15
IRQ20 -> 0:20
IRQ23 -> 0:23
IRQ28 -> 0:28
IRQ32 -> 0:32
.................................... done.
hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0
hpet0: 3 64-bit timers, 77918844 Hz
system 00:00: iomem range 0x0-0x9ffff could not be reserved
Switched to high resolution mode on CPU 0
system 00:03: ioport range 0x8a0-0x8a3 has been reserved
system 00:03: ioport range 0xcc0-0xccf has been reserved
system 00:03: ioport range 0x4d0-0x4d1 has been reserved
bus: 00 index 0 io port: [0, ffff]
bus: 00 index 1 mmio: [0, ffffffffffffffff]
NET: Registered protocol family 2
IP route cache hash table entries: 4096 (order: 2, 16384 bytes)
TCP established hash table entries: 16384 (order: 5, 131072 bytes)
TCP bind hash table entries: 16384 (order: 5, 131072 bytes)
TCP: Hash tables configured (established 16384 bind 16384)
TCP reno registered
NET: Registered protocol family 1
checking if image is initramfs...it isn't (no cpio magic); looks like an initrd
Freeing initrd memory: 22315k freed
kvm: no hardware support
Machine check exception polling timer started.
Total HugeTLB memory allocated, 0
SGI XFS with security attributes, no debug enabled
msgmni has been set to 1003 for ipc namespace c053cec8
Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered (default)
pci 0000:00:00.0: Limiting direct PCI/PCI transfers
pci 0000:00:01.0: PIIX3: Enabling Passive Release
pci 0000:00:01.0: Activating ISA DMA hang workarounds
pci 0000:00:02.0: Boot video device
pci_hotplug: PCI Hot Plug PCI Core version: 0.5
acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
acpiphp_ibm: ibm_acpiphp_init: acpi_walk_namespace failed
pciehp: PCI Express Hot Plug Controller Driver version: 0.4
ACPI: ACPI0007:00 is registered as cooling_device0
hpet_resources: 0xfed00000 is busy
Non-volatile memory driver v1.2
Linux agpgart interface v0.103
Serial: 8250/16550 driver $Revision: 1.90 $ 4 ports, IRQ sharing disabled
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16450
00:0a: ttyS0 at I/O 0x3f8 (irq = 4) is a 16450
brd: module loaded
pcnet32.c:v1.35 21.Apr.2008 tsbogend@xxxxxxxxxxxxxxxx
PPP generic driver version 2.4.2
PPP Deflate Compression module registered
PPP BSD Compression module registered
8139too Fast Ethernet driver 0.9.28
8139too 0000:00:04.0: This (id 10ec:8139 rev 20) is an enhanced 8139C+ chip
8139too 0000:00:04.0: Use the "8139cp" driver for improved performance and stability.
ACPI: PCI Interrupt 0000:00:04.0[A] -> GSI 32 (level, low) -> IRQ 32
Int: type 0, pol 3, trig 3, bus 00, IRQ 10, APIC ID 1, APIC INT 20
PCI: Setting latency timer of device 0000:00:04.0 to 64
8139too 0000:00:04.0: unknown chip version, assuming RTL-8139
8139too 0000:00:04.0: TxConfig = 0x74800000
eth0: RealTek RTL8139 at 0xc200, 00:16:3e:23:81:db, IRQ 32
eth0: Identified 8139 chip type 'RTL-8139'
Driver 'sd' needs updating - please use bus_type methods
usbcore: registered new interface driver libusual
PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,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
input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0
rtc_cmos 00:05: rtc core: registered rtc_cmos as rtc0
rtc0: alarms up to one day
device-mapper: uevent: version 1.0.3
device-mapper: ioctl: 4.13.0-ioctl (2007-10-18) initialised: dm-devel@xxxxxxxxxx
usbcore: registered new interface driver hiddev
usbcore: registered new interface driver usbhid
usbhid: v2.6:USB HID core driver
TCP cubic registered
Initializing XFRM netlink socket
NET: Registered protocol family 10
lo: Disabled Privacy Extensions
IPv6 over IPv4 tunneling driver
sit0: Disabled Privacy Extensions
NET: Registered protocol family 17
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
Using IPI No-Shortcut mode
registered taskstats version 1
rtc_cmos 00:05: setting system clock to 2008-05-23 22:50:51 UTC (1211583051)
input: ImExPS/2 Generic Explorer Mouse as /devices/platform/i8042/serio1/input/input1
RAMDISK: Compressed image found at block 0
VFS: Mounted root (ext2 filesystem).
Freeing unused kernel memory: 280k freed