本文根据debian开机信息来查看内核源代码。
系统使用《debian下配置dynamic printk以及重新编译内核》中内核源码来查看执行流程。
使用dmesg命令,得到下面的开机信息:
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Linux version 3.2.57 (host@debian) (gcc version 4.7.2 (Debian 4.7.2-5) ) #1 SMP Fri Jun 20 10:02:51 CST 2014
[ 0.000000] BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
[ 0.000000] BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
[ 0.000000] BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
[ 0.000000] BIOS-e820: 0000000000100000 - 000000007f590000 (usable)
[ 0.000000] BIOS-e820: 000000007f590000 - 000000007f5e3000 (ACPI NVS)
[ 0.000000] BIOS-e820: 000000007f5e3000 - 000000007f5f0000 (ACPI data)
[ 0.000000] BIOS-e820: 000000007f5f0000 - 000000007f600000 (reserved)
[ 0.000000] BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
[ 0.000000] BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved)
[ 0.000000] NX (Execute Disable) protection: active
[ 0.000000] SMBIOS 2.5 present.
[ 0.000000] DMI: OEM OEM/SY-I5G31-L V2.0, BIOS 6.00 PG 09/28/2009
[ 0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved)
[ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable)
[ 0.000000] last_pfn = 0x7f590 max_arch_pfn = 0x1000000
[ 0.000000] MTRR default type: uncachable
[ 0.000000] MTRR fixed ranges enabled:
[ 0.000000] 00000-9FFFF write-back
[ 0.000000] A0000-BFFFF uncachable
[ 0.000000] C0000-CAFFF write-protect
[ 0.000000] CB000-EFFFF uncachable
[ 0.000000] F0000-FFFFF write-through
[ 0.000000] MTRR variable ranges enabled:
[ 0.000000] 0 base 000000000 mask F80000000 write-back
[ 0.000000] 1 base 07F700000 mask FFFF00000 uncachable
[ 0.000000] 2 base 07F800000 mask FFF800000 uncachable
[ 0.000000] 3 base 07F600000 mask FFFF00000 uncachable
[ 0.000000] 4 disabled
[ 0.000000] 5 disabled
[ 0.000000] 6 disabled
[ 0.000000] 7 disabled
[ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
[ 0.000000] found SMP MP-table at [c00f3b50] f3b50
[ 0.000000] initial memory mapped : 0 - 01a00000
[ 0.000000] Base memory trampoline at [c009b000] 9b000 size 16384
[ 0.000000] init_memory_mapping: 0000000000000000-00000000379fe000
[ 0.000000] 0000000000 - 0000200000 page 4k
[ 0.000000] 0000200000 - 0037800000 page 2M
[ 0.000000] 0037800000 - 00379fe000 page 4k
[ 0.000000] kernel direct mapping tables up to 379fe000 @ 19f9000-1a00000
[ 0.000000] RAMDISK: 29bdc000 - 30de6000
[ 0.000000] ACPI: RSDP 000f7d20 00014 (v00 IntelR)
[ 0.000000] ACPI: RSDT 7f5e3000 00038 (v01 IntelR AWRDACPI 42302E31 AWRD 00000000)
[ 0.000000] ACPI: FACP 7f5e3080 00074 (v01 IntelR AWRDACPI 42302E31 AWRD 00000000)
[ 0.000000] ACPI: DSDT 7f5e3100 04A18 (v01 INTELR AWRDACPI 00001000 MSFT 03000000)
[ 0.000000] ACPI: FACS 7f590000 00040
[ 0.000000] ACPI: HPET 7f5e7c00 00038 (v01 IntelR AWRDACPI 42302E31 AWRD 00000098)
[ 0.000000] ACPI: MCFG 7f5e7c40 0003C (v01 IntelR AWRDACPI 42302E31 AWRD 00000000)
[ 0.000000] ACPI: APIC 7f5e7b40 00084 (v01 IntelR AWRDACPI 42302E31 AWRD 00000000)
[ 0.000000] ACPI: SSDT 7f5e83a0 009FF (v01 PmRef CpuPm 00003000 INTL 20060912)
[ 0.000000] ACPI: Local APIC address 0xfee00000
[ 0.000000] 1147MB HIGHMEM available.
[ 0.000000] 889MB LOWMEM available.
[ 0.000000] mapped low ram: 0 - 379fe000
[ 0.000000] low ram: 0 - 379fe000
[ 0.000000] Zone PFN ranges:
[ 0.000000] DMA 0x00000010 -> 0x00001000
[ 0.000000] Normal 0x00001000 -> 0x000379fe
[ 0.000000] HighMem 0x000379fe -> 0x0007f590
[ 0.000000] Movable zone start PFN for each node
[ 0.000000] early_node_map[2] active PFN ranges
[ 0.000000] 0: 0x00000010 -> 0x0000009f
[ 0.000000] 0: 0x00000100 -> 0x0007f590
[ 0.000000] On node 0 totalpages: 521503
[ 0.000000] free_area_init_node: node 0, pgdat c141e800, node_mem_map f6a0d200
[ 0.000000] DMA zone: 32 pages used for memmap
[ 0.000000] DMA zone: 0 pages reserved
[ 0.000000] DMA zone: 3951 pages, LIFO batch:0
[ 0.000000] Normal zone: 1748 pages used for memmap
[ 0.000000] Normal zone: 221994 pages, LIFO batch:31
[ 0.000000] HighMem zone: 2296 pages used for memmap
[ 0.000000] HighMem zone: 291482 pages, LIFO batch:31
[ 0.000000] Using APIC driver default
[ 0.000000] ACPI: PM-Timer IO Port: 0x408
[ 0.000000] ACPI: Local APIC address 0xfee00000
[ 0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x02] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x03] disabled)
[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1])
[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x03] high edge lint[0x1])
[ 0.000000] ACPI: IOAPIC (id[0x04] address[0xfec00000] gsi_base[0])
[ 0.000000] IOAPIC[0]: apic_id 4, version 32, address 0xfec00000, GSI 0-23
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[ 0.000000] ACPI: IRQ0 used by override.
[ 0.000000] ACPI: IRQ2 used by override.
[ 0.000000] ACPI: IRQ9 used by override.
[ 0.000000] Using ACPI (MADT) for SMP configuration information
[ 0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[ 0.000000] SMP: Allowing 4 CPUs, 2 hotplug CPUs
[ 0.000000] nr_irqs_gsi: 40
[ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000
[ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000f0000
[ 0.000000] PM: Registered nosave memory: 00000000000f0000 - 0000000000100000
[ 0.000000] Allocating PCI resources starting at 7f600000 (gap: 7f600000:60a00000)
[ 0.000000] Booting paravirtualized kernel on bare hardware
[ 0.000000] setup_percpu: NR_CPUS:32 nr_cpumask_bits:32 nr_cpu_ids:4 nr_node_ids:1
[ 0.000000] PERCPU: Embedded 14 pages/cpu @f69c9000 s33280 r0 d24064 u57344
[ 0.000000] pcpu-alloc: s33280 r0 d24064 u57344 alloc=14*4096
[ 0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 517427
[ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.2.57 root=UUID=c6cb3b0a-3215-46d4-9ac7-6835d0a12e47 ro initrd=/install/initrd.gz quiet
[ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
[ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
[ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
[ 0.000000] Initializing CPU#0
[ 0.000000] xsave/xrstor: enabled xstate_bv 0x3, cntxt size 0x240
[ 0.000000] Initializing HighMem for node 0 (000379fe:0007f590)
[ 0.000000] Memory: 1946540k/2086464k available (2881k kernel code, 139472k reserved, 1380k data, 428k init, 1175112k highmem)
[ 0.000000] virtual kernel memory layout:
[ 0.000000] fixmap : 0xffd36000 - 0xfffff000 (2852 kB)
[ 0.000000] pkmap : 0xffa00000 - 0xffc00000 (2048 kB)
[ 0.000000] vmalloc : 0xf81fe000 - 0xff9fe000 ( 120 MB)
[ 0.000000] lowmem : 0xc0000000 - 0xf79fe000 ( 889 MB)
[ 0.000000] .init : 0xc142a000 - 0xc1495000 ( 428 kB)
[ 0.000000] .data : 0xc12d07ac - 0xc1429a40 (1380 kB)
[ 0.000000] .text : 0xc1000000 - 0xc12d07ac (2881 kB)
[ 0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok.
[ 0.000000] Hierarchical RCU implementation.
[ 0.000000] RCU dyntick-idle grace-period acceleration is enabled.
[ 0.000000] NR_IRQS:2304 nr_irqs:712 16
[ 0.000000] CPU 0 irqstacks, hard=f6406000 soft=f6408000
[ 0.000000] Console: colour VGA+ 80x25
[ 0.000000] console [tty0] enabled
[ 0.000000] hpet clockevent registered
[ 0.000000] Fast TSC calibration using PIT
[ 0.000000] Detected 2510.571 MHz processor.
[ 0.004002] Calibrating delay loop (skipped), value calculated using timer frequency.. 5021.14 BogoMIPS (lpj=10042284)
[ 0.004006] pid_max: default: 32768 minimum: 301
[ 0.004038] Security Framework initialized
[ 0.004054] AppArmor: AppArmor disabled by boot time parameter
[ 0.004067] Mount-cache hash table entries: 512
[ 0.004187] Initializing cgroup subsys cpuacct
[ 0.004192] Initializing cgroup subsys memory
[ 0.004200] Initializing cgroup subsys devices
[ 0.004202] Initializing cgroup subsys freezer
[ 0.004204] Initializing cgroup subsys net_cls
[ 0.004205] Initializing cgroup subsys blkio
[ 0.004211] Initializing cgroup subsys perf_event
[ 0.004239] CPU: Physical Processor ID: 0
[ 0.004240] CPU: Processor Core ID: 0
[ 0.004243] mce: CPU supports 6 MCE banks
[ 0.004250] CPU0: Thermal monitoring enabled (TM2)
[ 0.004253] using mwait in idle threads.
[ 0.004638] ACPI: Core revision 20110623
[ 0.009086] Enabling APIC mode: Flat. Using 1 I/O APICs
[ 0.009444] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[ 0.049139] CPU0: Intel Pentium(R) Dual-Core CPU E5200 @ 2.50GHz stepping 0a
[ 0.052002] Performance Events: PEBS fmt0+, Core2 events, Intel PMU driver.
[ 0.052002] ... version: 2
[ 0.052002] ... bit width: 40
[ 0.052002] ... generic registers: 2
[ 0.052002] ... value mask: 000000ffffffffff
[ 0.052002] ... max period: 000000007fffffff
[ 0.052002] ... fixed-purpose events: 3
[ 0.052002] ... event mask: 0000000700000003
[ 0.052002] NMI watchdog enabled, takes one hw-pmu counter.
[ 0.052002] CPU 1 irqstacks, hard=f64d4000 soft=f64d6000
[ 0.052002] Booting Node 0, Processors #1
[ 0.052002] smpboot cpu 1: start_ip = 9b000
[ 0.008000] Initializing CPU#1
[ 0.140036] NMI watchdog enabled, takes one hw-pmu counter.
[ 0.140070] Brought up 2 CPUs
[ 0.140072] Total of 2 processors activated (10041.88 BogoMIPS).
[ 0.141484] devtmpfs: initialized
[ 0.141484] PM: Registering ACPI NVS region at 7f590000 (339968 bytes)
[ 0.141484] print_constraints: dummy:
[ 0.141484] NET: Registered protocol family 16
[ 0.141484] ACPI: bus type pci registered
[ 0.141484] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000)
[ 0.141484] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820
[ 0.141484] PCI: Using MMCONFIG for extended config space
[ 0.141484] PCI: Using configuration type 1 for base access
[ 0.141484] bio: create slab <bio-0> at 0
[ 0.141484] ACPI: Added _OSI(Module Device)
[ 0.141484] ACPI: Added _OSI(Processor Device)
[ 0.141484] ACPI: Added _OSI(3.0 _SCP Extensions)
[ 0.141484] ACPI: Added _OSI(Processor Aggregator Device)
[ 0.141484] ACPI: EC: Look up EC in DSDT
[ 0.147393] ACPI: SSDT 7f5e7cc0 0030F (v01 PmRef Cpu0Ist 00003000 INTL 20060912)
[ 0.147566] ACPI: Dynamic OEM Table Load:
[ 0.147569] ACPI: SSDT (null) 0030F (v01 PmRef Cpu0Ist 00003000 INTL 20060912)
[ 0.148012] ACPI: SSDT 7f5e81e0 001B3 (v01 PmRef Cpu1Ist 00003000 INTL 20060912)
[ 0.148176] ACPI: Dynamic OEM Table Load:
[ 0.148178] ACPI: SSDT (null) 001B3 (v01 PmRef Cpu1Ist 00003000 INTL 20060912)
[ 0.148366] ACPI: Interpreter enabled
[ 0.148372] ACPI: (supports S0 S1 S4 S5)
[ 0.148389] ACPI: Using IOAPIC for interrupt routing
[ 0.152327] ACPI: No dock devices found.
[ 0.152329] HEST: Table not found.
[ 0.152333] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug
[ 0.152382] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[ 0.152491] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7]
[ 0.152494] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff]
[ 0.152496] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff]
[ 0.152498] pci_root PNP0A08:00: host bridge window [mem 0x000c0000-0x000dffff]
[ 0.152501] pci_root PNP0A08:00: host bridge window [mem 0x7f600000-0xfebfffff]
[ 0.152514] pci 0000:00:00.0: [8086:29c0] type 0 class 0x000600
[ 0.152556] pci 0000:00:02.0: [8086:29c2] type 0 class 0x000300
[ 0.152565] pci 0000:00:02.0: reg 10: [mem 0xfdf00000-0xfdf7ffff]
[ 0.152571] pci 0000:00:02.0: reg 14: [io 0xff00-0xff07]
[ 0.152576] pci 0000:00:02.0: reg 18: [mem 0xd0000000-0xdfffffff pref]
[ 0.152582] pci 0000:00:02.0: reg 1c: [mem 0xfd600000-0xfd6fffff]
[ 0.152645] pci 0000:00:1b.0: [8086:27d8] type 0 class 0x000403
[ 0.152660] pci 0000:00:1b.0: reg 10: [mem 0xfdff8000-0xfdffbfff 64bit]
[ 0.152723] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold
[ 0.152744] pci 0000:00:1c.0: [8086:27d0] type 1 class 0x000604
[ 0.152808] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold
[ 0.152830] pci 0000:00:1c.1: [8086:27d2] type 1 class 0x000604
[ 0.152894] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold
[ 0.152916] pci 0000:00:1c.2: [8086:27d4] type 1 class 0x000604
[ 0.152979] pci 0000:00:1c.2: PME# supported from D0 D3hot D3cold
[ 0.153001] pci 0000:00:1c.3: [8086:27d6] type 1 class 0x000604
[ 0.153065] pci 0000:00:1c.3: PME# supported from D0 D3hot D3cold
[ 0.153087] pci 0000:00:1d.0: [8086:27c8] type 0 class 0x000c03
[ 0.153124] pci 0000:00:1d.0: reg 20: [io 0xfe00-0xfe1f]
[ 0.153154] pci 0000:00:1d.1: [8086:27c9] type 0 class 0x000c03
[ 0.153192] pci 0000:00:1d.1: reg 20: [io 0xfd00-0xfd1f]
[ 0.153221] pci 0000:00:1d.2: [8086:27ca] type 0 class 0x000c03
[ 0.153258] pci 0000:00:1d.2: reg 20: [io 0xfc00-0xfc1f]
[ 0.153287] pci 0000:00:1d.3: [8086:27cb] type 0 class 0x000c03
[ 0.153324] pci 0000:00:1d.3: reg 20: [io 0xfb00-0xfb1f]
[ 0.153362] pci 0000:00:1d.7: [8086:27cc] type 0 class 0x000c03
[ 0.153379] pci 0000:00:1d.7: reg 10: [mem 0xfdfff000-0xfdfff3ff]
[ 0.153455] pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold
[ 0.153474] pci 0000:00:1e.0: [8086:244e] type 1 class 0x000604
[ 0.153532] pci 0000:00:1f.0: [8086:27b8] type 0 class 0x000601
[ 0.153609] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 1 PIO at 0800 (mask 003f)
[ 0.153652] pci 0000:00:1f.1: [8086:27df] type 0 class 0x000101
[ 0.153664] pci 0000:00:1f.1: reg 10: [io 0x0000-0x0007]
[ 0.153673] pci 0000:00:1f.1: reg 14: [io 0x0000-0x0003]
[ 0.153681] pci 0000:00:1f.1: reg 18: [io 0x0000-0x0007]
[ 0.153690] pci 0000:00:1f.1: reg 1c: [io 0x0000-0x0003]
[ 0.153698] pci 0000:00:1f.1: reg 20: [io 0xfa00-0xfa0f]
[ 0.153731] pci 0000:00:1f.2: [8086:27c0] type 0 class 0x000101
[ 0.153744] pci 0000:00:1f.2: reg 10: [io 0xf900-0xf907]
[ 0.153751] pci 0000:00:1f.2: reg 14: [io 0xf800-0xf803]
[ 0.153759] pci 0000:00:1f.2: reg 18: [io 0xf700-0xf707]
[ 0.153767] pci 0000:00:1f.2: reg 1c: [io 0xf600-0xf603]
[ 0.153774] pci 0000:00:1f.2: reg 20: [io 0xf500-0xf50f]
[ 0.153806] pci 0000:00:1f.2: PME# supported from D3hot
[ 0.153820] pci 0000:00:1f.3: [8086:27da] type 0 class 0x000c05
[ 0.153868] pci 0000:00:1f.3: reg 20: [io 0x0500-0x051f]
[ 0.153935] pci 0000:00:1c.0: PCI bridge to [bus 01-01]
[ 0.153939] pci 0000:00:1c.0: bridge window [io 0xb000-0xbfff]
[ 0.153943] pci 0000:00:1c.0: bridge window [mem 0xfde00000-0xfdefffff]
[ 0.153949] pci 0000:00:1c.0: bridge window [mem 0xfdd00000-0xfddfffff 64bit pref]
[ 0.153985] pci 0000:00:1c.1: PCI bridge to [bus 02-02]
[ 0.153988] pci 0000:00:1c.1: bridge window [io 0xa000-0xafff]
[ 0.153992] pci 0000:00:1c.1: bridge window [mem 0xfdc00000-0xfdcfffff]
[ 0.153998] pci 0000:00:1c.1: bridge window [mem 0xfdb00000-0xfdbfffff 64bit pref]
[ 0.154034] pci 0000:00:1c.2: PCI bridge to [bus 03-03]
[ 0.154037] pci 0000:00:1c.2: bridge window [io 0xe000-0xefff]
[ 0.154041] pci 0000:00:1c.2: bridge window [mem 0xfda00000-0xfdafffff]
[ 0.154047] pci 0000:00:1c.2: bridge window [mem 0xfd900000-0xfd9fffff 64bit pref]
[ 0.154099] pci 0000:04:00.0: [10ec:8136] type 0 class 0x000200
[ 0.154115] pci 0000:04:00.0: reg 10: [io 0xde00-0xdeff]
[ 0.154143] pci 0000:04:00.0: reg 18: [mem 0xfd7ff000-0xfd7fffff 64bit pref]
[ 0.154160] pci 0000:04:00.0: reg 20: [mem 0xfd7e0000-0xfd7effff 64bit pref]
[ 0.154172] pci 0000:04:00.0: reg 30: [mem 0x00000000-0x0001ffff pref]
[ 0.154233] pci 0000:04:00.0: supports D1 D2
[ 0.154235] pci 0000:04:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[ 0.160032] pci 0000:00:1c.3: PCI bridge to [bus 04-04]
[ 0.160039] pci 0000:00:1c.3: bridge window [io 0xd000-0xdfff]
[ 0.160046] pci 0000:00:1c.3: bridge window [mem 0xfd800000-0xfd8fffff]
[ 0.160056] pci 0000:00:1c.3: bridge window [mem 0xfd700000-0xfd7fffff 64bit pref]
[ 0.160134] pci 0000:00:1e.0: PCI bridge to [bus 05-05] (subtractive decode)
[ 0.160141] pci 0000:00:1e.0: bridge window [io 0xc000-0xcfff]
[ 0.160148] pci 0000:00:1e.0: bridge window [mem 0xfd500000-0xfd5fffff]
[ 0.160157] pci 0000:00:1e.0: bridge window [mem 0xfd400000-0xfd4fffff 64bit pref]
[ 0.160162] pci 0000:00:1e.0: bridge window [io 0x0000-0x0cf7] (subtractive decode)
[ 0.160167] pci 0000:00:1e.0: bridge window [io 0x0d00-0xffff] (subtractive decode)
[ 0.160173] pci 0000:00:1e.0: bridge window [mem 0x000a0000-0x000bffff] (subtractive decode)
[ 0.160178] pci 0000:00:1e.0: bridge window [mem 0x000c0000-0x000dffff] (subtractive decode)
[ 0.160183] pci 0000:00:1e.0: bridge window [mem 0x7f600000-0xfebfffff] (subtractive decode)
[ 0.160216] pci_bus 0000:00: on NUMA node 0
[ 0.160219] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT]
[ 0.160338] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEX0._PRT]
[ 0.160373] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEX1._PRT]
[ 0.160406] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEX2._PRT]
[ 0.160438] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEX3._PRT]
[ 0.160475] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.HUB0._PRT]
[ 0.160616] pci0000:00: Requesting ACPI _OSC control (0x1d)
[ 0.160619] pci0000:00: ACPI _OSC request failed (AE_NOT_FOUND), returned control mask: 0x1d
[ 0.160621] ACPI _OSC control for PCIe not granted, disabling ASPM
[ 0.167979] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 7 9 10 *11 12 14 15)
[ 0.168037] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
[ 0.168081] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 *5 7 9 10 11 12 14 15)
[ 0.168124] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 7 9 10 11 12 14 *15)
[ 0.168167] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
[ 0.168210] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
[ 0.168253] ACPI: PCI Interrupt Link [LNK0] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled.
[ 0.168297] ACPI: PCI Interrupt Link [LNK1] (IRQs 3 4 5 7 9 *10 11 12 14 15)
[ 0.168380] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none
[ 0.168380] vgaarb: loaded
[ 0.168380] vgaarb: bridge control possible 0000:00:02.0
[ 0.168380] PCI: Using ACPI for IRQ routing
[ 0.174067] PCI: pci_cache_line_size set to 64 bytes
[ 0.174129] reserve RAM buffer: 000000000009f800 - 000000000009ffff
[ 0.174132] reserve RAM buffer: 000000007f590000 - 000000007fffffff
[ 0.174232] HPET: 3 timers in total, 0 timers will be used for per-cpu timer
[ 0.174237] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0
[ 0.174241] hpet0: 3 comparators, 64-bit 14.318180 MHz counter
[ 0.180130] Switching to clocksource hpet
[ 0.181748] pnp: PnP ACPI init
[ 0.181760] ACPI: bus type pnp registered
[ 0.181827] pnp 00:00: [bus 00-ff]
[ 0.181830] pnp 00:00: [io 0x0cf8-0x0cff]
[ 0.181832] pnp 00:00: [io 0x0000-0x0cf7 window]
[ 0.181835] pnp 00:00: [io 0x0d00-0xffff window]
[ 0.181837] pnp 00:00: [mem 0x000a0000-0x000bffff window]
[ 0.181839] pnp 00:00: [mem 0x000c0000-0x000dffff window]
[ 0.181841] pnp 00:00: [mem 0x7f600000-0xfebfffff window]
[ 0.181885] pnp 00:00: Plug and Play ACPI device, IDs PNP0a08 PNP0a03 (active)
[ 0.181940] pnp 00:01: [io 0x0010-0x001f]
[ 0.181942] pnp 00:01: [io 0x0022-0x003f]
[ 0.181944] pnp 00:01: [io 0x0044-0x005f]
[ 0.181945] pnp 00:01: [io 0x0062-0x0063]
[ 0.181947] pnp 00:01: [io 0x0065-0x006f]
[ 0.181949] pnp 00:01: [io 0x0074-0x007f]
[ 0.181951] pnp 00:01: [io 0x0091-0x0093]
[ 0.181953] pnp 00:01: [io 0x00a2-0x00bf]
[ 0.181954] pnp 00:01: [io 0x00e0-0x00ef]
[ 0.181956] pnp 00:01: [io 0x04d0-0x04d1]
[ 0.181958] pnp 00:01: [io 0x0800-0x087f]
[ 0.181960] pnp 00:01: [io 0x0880-0x088f]
[ 0.182013] system 00:01: [io 0x04d0-0x04d1] has been reserved
[ 0.182016] system 00:01: [io 0x0800-0x087f] has been reserved
[ 0.182018] system 00:01: [io 0x0880-0x088f] has been reserved
[ 0.182021] system 00:01: Plug and Play ACPI device, IDs PNP0c02 (active)
[ 0.182032] pnp 00:02: [dma 4]
[ 0.182034] pnp 00:02: [io 0x0000-0x000f]
[ 0.182036] pnp 00:02: [io 0x0080-0x0090]
[ 0.182037] pnp 00:02: [io 0x0094-0x009f]
[ 0.182039] pnp 00:02: [io 0x00c0-0x00df]
[ 0.182067] pnp 00:02: Plug and Play ACPI device, IDs PNP0200 (active)
[ 0.182110] pnp 00:03: [irq 0 disabled]
[ 0.182121] pnp 00:03: [irq 8]
[ 0.182123] pnp 00:03: [mem 0xfed00000-0xfed003ff]
[ 0.182152] pnp 00:03: Plug and Play ACPI device, IDs PNP0103 (active)
[ 0.182177] pnp 00:04: [io 0x0070-0x0073]
[ 0.182205] pnp 00:04: Plug and Play ACPI device, IDs PNP0b00 (active)
[ 0.182214] pnp 00:05: [io 0x0061]
[ 0.182240] pnp 00:05: Plug and Play ACPI device, IDs PNP0800 (active)
[ 0.182249] pnp 00:06: [io 0x00f0-0x00ff]
[ 0.182254] pnp 00:06: [irq 13]
[ 0.182283] pnp 00:06: Plug and Play ACPI device, IDs PNP0c04 (active)
[ 0.182409] pnp 00:07: [io 0x03f0-0x03f5]
[ 0.182412] pnp 00:07: [io 0x03f7]
[ 0.182416] pnp 00:07: [irq 6]
[ 0.182418] pnp 00:07: [dma 2]
[ 0.182457] pnp 00:07: Plug and Play ACPI device, IDs PNP0700 (active)
[ 0.182627] pnp 00:08: [io 0x03f8-0x03ff]
[ 0.182632] pnp 00:08: [irq 4]
[ 0.182689] pnp 00:08: Plug and Play ACPI device, IDs PNP0501 (active)
[ 0.182872] pnp 00:09: [io 0x02f8-0x02ff]
[ 0.182876] pnp 00:09: [irq 3]
[ 0.182933] pnp 00:09: Plug and Play ACPI device, IDs PNP0501 (active)
[ 0.183180] pnp 00:0a: [io 0x0378-0x037f]
[ 0.183185] pnp 00:0a: [irq 7]
[ 0.183233] pnp 00:0a: Plug and Play ACPI device, IDs PNP0400 (active)
[ 0.183348] pnp 00:0b: [io 0x0400-0x04bf]
[ 0.183394] system 00:0b: [io 0x0400-0x04bf] has been reserved
[ 0.183397] system 00:0b: Plug and Play ACPI device, IDs PNP0c02 (active)
[ 0.183415] pnp 00:0c: [mem 0xffb80000-0xffbfffff]
[ 0.183445] pnp 00:0c: Plug and Play ACPI device, IDs INT0800 (active)
[ 0.183612] pnp 00:0d: [mem 0xe0000000-0xefffffff]
[ 0.183666] system 00:0d: [mem 0xe0000000-0xefffffff] has been reserved
[ 0.183669] system 00:0d: Plug and Play ACPI device, IDs PNP0c02 (active)
[ 0.183732] pnp 00:0e: [mem 0x000f0000-0x000fffff]
[ 0.183734] pnp 00:0e: [mem 0x7f600000-0x7f6fffff]
[ 0.183736] pnp 00:0e: [mem 0xfed00000-0xfed000ff]
[ 0.183739] pnp 00:0e: [mem 0x7f590000-0x7f5fffff]
[ 0.183740] pnp 00:0e: [mem 0x00000000-0x0009ffff]
[ 0.183742] pnp 00:0e: [mem 0x00100000-0x7f58ffff]
[ 0.183744] pnp 00:0e: [mem 0xfec00000-0xfec00fff]
[ 0.183746] pnp 00:0e: [mem 0xfed13000-0xfed1dfff]
[ 0.183748] pnp 00:0e: [mem 0xfed20000-0xfed8ffff]
[ 0.183750] pnp 00:0e: [mem 0xfee00000-0xfee00fff]
[ 0.183752] pnp 00:0e: [mem 0xffb00000-0xffb7ffff]
[ 0.183754] pnp 00:0e: [mem 0xfff00000-0xffffffff]
[ 0.183756] pnp 00:0e: [mem 0x000e0000-0x000effff]
[ 0.183817] system 00:0e: [mem 0x000f0000-0x000fffff] could not be reserved
[ 0.183820] system 00:0e: [mem 0x7f600000-0x7f6fffff] has been reserved
[ 0.183823] system 00:0e: [mem 0xfed00000-0xfed000ff] has been reserved
[ 0.183825] system 00:0e: [mem 0x7f590000-0x7f5fffff] could not be reserved
[ 0.183828] system 00:0e: [mem 0x00000000-0x0009ffff] could not be reserved
[ 0.183831] system 00:0e: [mem 0x00100000-0x7f58ffff] could not be reserved
[ 0.183834] system 00:0e: [mem 0xfec00000-0xfec00fff] could not be reserved
[ 0.183836] system 00:0e: [mem 0xfed13000-0xfed1dfff] has been reserved
[ 0.183839] system 00:0e: [mem 0xfed20000-0xfed8ffff] has been reserved
[ 0.183842] system 00:0e: [mem 0xfee00000-0xfee00fff] has been reserved
[ 0.183844] system 00:0e: [mem 0xffb00000-0xffb7ffff] has been reserved
[ 0.183847] system 00:0e: [mem 0xfff00000-0xffffffff] has been reserved
[ 0.183847] system 00:0e: [mem 0x000e0000-0x000effff] has been reserved
[ 0.183847] system 00:0e: Plug and Play ACPI device, IDs PNP0c01 (active)
[ 0.183847] pnp: PnP ACPI: found 15 devices
[ 0.183848] ACPI: ACPI bus type pnp unregistered
[ 0.183851] PnPBIOS: Disabled by ACPI PNP
[ 0.220622] PCI: max bus depth: 1 pci_try_num: 2
[ 0.220656] pci 0000:00:1c.0: PCI bridge to [bus 01-01]
[ 0.220659] pci 0000:00:1c.0: bridge window [io 0xb000-0xbfff]
[ 0.220664] pci 0000:00:1c.0: bridge window [mem 0xfde00000-0xfdefffff]
[ 0.220668] pci 0000:00:1c.0: bridge window [mem 0xfdd00000-0xfddfffff 64bit pref]
[ 0.220674] pci 0000:00:1c.1: PCI bridge to [bus 02-02]
[ 0.220677] pci 0000:00:1c.1: bridge window [io 0xa000-0xafff]
[ 0.220682] pci 0000:00:1c.1: bridge window [mem 0xfdc00000-0xfdcfffff]
[ 0.220686] pci 0000:00:1c.1: bridge window [mem 0xfdb00000-0xfdbfffff 64bit pref]
[ 0.220691] pci 0000:00:1c.2: PCI bridge to [bus 03-03]
[ 0.220694] pci 0000:00:1c.2: bridge window [io 0xe000-0xefff]
[ 0.220699] pci 0000:00:1c.2: bridge window [mem 0xfda00000-0xfdafffff]
[ 0.220703] pci 0000:00:1c.2: bridge window [mem 0xfd900000-0xfd9fffff 64bit pref]
[ 0.220711] pci 0000:04:00.0: BAR 6: assigned [mem 0xfd700000-0xfd71ffff pref]
[ 0.220713] pci 0000:00:1c.3: PCI bridge to [bus 04-04]
[ 0.220716] pci 0000:00:1c.3: bridge window [io 0xd000-0xdfff]
[ 0.220721] pci 0000:00:1c.3: bridge window [mem 0xfd800000-0xfd8fffff]
[ 0.220724] pci 0000:00:1c.3: bridge window [mem 0xfd700000-0xfd7fffff 64bit pref]
[ 0.220730] pci 0000:00:1e.0: PCI bridge to [bus 05-05]
[ 0.220733] pci 0000:00:1e.0: bridge window [io 0xc000-0xcfff]
[ 0.220738] pci 0000:00:1e.0: bridge window [mem 0xfd500000-0xfd5fffff]
[ 0.220742] pci 0000:00:1e.0: bridge window [mem 0xfd400000-0xfd4fffff 64bit pref]
[ 0.220761] pci 0000:00:1c.0: setting latency timer to 64
[ 0.220773] pci 0000:00:1c.1: setting latency timer to 64
[ 0.220784] pci 0000:00:1c.2: setting latency timer to 64
[ 0.220794] pci 0000:00:1c.3: setting latency timer to 64
[ 0.220801] pci 0000:00:1e.0: setting latency timer to 64
[ 0.220804] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7]
[ 0.220806] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff]
[ 0.220809] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff]
[ 0.220811] pci_bus 0000:00: resource 7 [mem 0x000c0000-0x000dffff]
[ 0.220813] pci_bus 0000:00: resource 8 [mem 0x7f600000-0xfebfffff]
[ 0.220815] pci_bus 0000:01: resource 0 [io 0xb000-0xbfff]
[ 0.220818] pci_bus 0000:01: resource 1 [mem 0xfde00000-0xfdefffff]
[ 0.220820] pci_bus 0000:01: resource 2 [mem 0xfdd00000-0xfddfffff 64bit pref]
[ 0.220822] pci_bus 0000:02: resource 0 [io 0xa000-0xafff]
[ 0.220824] pci_bus 0000:02: resource 1 [mem 0xfdc00000-0xfdcfffff]
[ 0.220827] pci_bus 0000:02: resource 2 [mem 0xfdb00000-0xfdbfffff 64bit pref]
[ 0.220829] pci_bus 0000:03: resource 0 [io 0xe000-0xefff]
[ 0.220831] pci_bus 0000:03: resource 1 [mem 0xfda00000-0xfdafffff]
[ 0.220833] pci_bus 0000:03: resource 2 [mem 0xfd900000-0xfd9fffff 64bit pref]
[ 0.220835] pci_bus 0000:04: resource 0 [io 0xd000-0xdfff]
[ 0.220837] pci_bus 0000:04: resource 1 [mem 0xfd800000-0xfd8fffff]
[ 0.220840] pci_bus 0000:04: resource 2 [mem 0xfd700000-0xfd7fffff 64bit pref]
[ 0.220842] pci_bus 0000:05: resource 0 [io 0xc000-0xcfff]
[ 0.220844] pci_bus 0000:05: resource 1 [mem 0xfd500000-0xfd5fffff]
[ 0.220847] pci_bus 0000:05: resource 2 [mem 0xfd400000-0xfd4fffff 64bit pref]
[ 0.220849] pci_bus 0000:05: resource 4 [io 0x0000-0x0cf7]
[ 0.220851] pci_bus 0000:05: resource 5 [io 0x0d00-0xffff]
[ 0.220853] pci_bus 0000:05: resource 6 [mem 0x000a0000-0x000bffff]
[ 0.220855] pci_bus 0000:05: resource 7 [mem 0x000c0000-0x000dffff]
[ 0.220857] pci_bus 0000:05: resource 8 [mem 0x7f600000-0xfebfffff]
[ 0.220902] NET: Registered protocol family 2
[ 0.220961] IP route cache hash table entries: 32768 (order: 5, 131072 bytes)
[ 0.221172] TCP established hash table entries: 131072 (order: 8, 1048576 bytes)
[ 0.221641] TCP bind hash table entries: 65536 (order: 7, 524288 bytes)
[ 0.221873] TCP: Hash tables configured (established 131072 bind 65536)
[ 0.221875] TCP reno registered
[ 0.221878] UDP hash table entries: 512 (order: 2, 16384 bytes)
[ 0.221886] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes)
[ 0.221963] NET: Registered protocol family 1
[ 0.221980] pci 0000:00:02.0: Boot video device
[ 0.222136] PCI: CLS 32 bytes, default 64
[ 0.222187] Unpacking initramfs...
[ 2.772396] Freeing initrd memory: 116776k freed
[ 2.837035] audit: initializing netlink socket (disabled)
[ 2.837049] type=2000 audit(1403510217.832:1): initialized
[ 2.853523] highmem bounce pool size: 64 pages
[ 2.853528] HugeTLB registered 2 MB page size, pre-allocated 0 pages
[ 2.853968] VFS: Disk quotas dquot_6.5.2
[ 2.854000] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[ 2.854069] msgmni has been set to 1734
[ 2.854228] alg: No test for stdrng (krng)
[ 2.854253] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253)
[ 2.854256] io scheduler noop registered
[ 2.854258] io scheduler deadline registered
[ 2.854269] io scheduler cfq registered (default)
[ 2.854355] pcieport 0000:00:1c.0: setting latency timer to 64
[ 2.854395] pcieport 0000:00:1c.0: irq 40 for MSI/MSI-X
[ 2.854451] pcieport 0000:00:1c.1: setting latency timer to 64
[ 2.854484] pcieport 0000:00:1c.1: irq 41 for MSI/MSI-X
[ 2.854541] pcieport 0000:00:1c.2: setting latency timer to 64
[ 2.854573] pcieport 0000:00:1c.2: irq 42 for MSI/MSI-X
[ 2.854628] pcieport 0000:00:1c.3: setting latency timer to 64
[ 2.854661] pcieport 0000:00:1c.3: irq 43 for MSI/MSI-X
[ 2.854741] pci_hotplug: PCI Hot Plug PCI Core version: 0.5
[ 2.854761] pciehp: PCI Express Hot Plug Controller Driver version: 0.4
[ 2.854763] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
[ 2.855076] intel_idle: does not run on family 6 model 23
[ 2.855100] ERST: Table is not found!
[ 2.855101] GHES: HEST is not enabled!
[ 2.855114] isapnp: Scanning for PnP cards...
[ 3.208006] isapnp: No Plug & Play device found
[ 3.208065] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[ 3.228404] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 3.248775] serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
[ 3.272684] 00:08: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
[ 3.293099] 00:09: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
[ 3.293354] Linux agpgart interface v0.103
[ 3.293461] agpgart-intel 0000:00:00.0: Intel G33 Chipset
[ 3.293522] agpgart-intel 0000:00:00.0: detected gtt size: 524288K total, 262144K mappable
[ 3.294055] agpgart-intel 0000:00:00.0: detected 8192K stolen memory
[ 3.294182] agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xd0000000
[ 3.294348] i8042: PNP: No PS/2 controller found. Probing ports directly.
[ 3.294708] serio: i8042 KBD port at 0x60,0x64 irq 1
[ 3.294714] serio: i8042 AUX port at 0x60,0x64 irq 12
[ 3.294847] mousedev: PS/2 mouse device common for all mice
[ 3.294893] rtc_cmos 00:04: RTC can wake from S4
[ 3.294995] rtc_cmos 00:04: rtc core: registered rtc_cmos as rtc0
[ 3.295017] rtc0: alarms up to one month, 242 bytes nvram, hpet irqs
[ 3.295029] cpuidle: using governor ladder
[ 3.295031] cpuidle: using governor menu
[ 3.295221] TCP cubic registered
[ 3.295256] NET: Registered protocol family 10
[ 3.295692] Mobile IPv6
[ 3.295695] NET: Registered protocol family 17
[ 3.295699] Registering the dns_resolver key type
[ 3.295718] Using IPI No-Shortcut mode
[ 3.295829] PM: Hibernation image not present or could not be loaded.
[ 3.295839] registered taskstats version 1
[ 3.296264] rtc_cmos 00:04: setting system clock to 2014-06-23 07:56:58 UTC (1403510218)
[ 3.296298] Initializing network drop monitor service
[ 3.296382] Freeing unused kernel memory: 428k freed
[ 3.296529] Write protecting the kernel text: 2884k
[ 3.296559] Write protecting the kernel read-only data: 1104k
[ 3.296560] NX-protecting the kernel data: 3260k
[ 3.306217] udevd[49]: starting version 175
[ 3.346446] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded
[ 3.346496] r8169 0000:04:00.0: setting latency timer to 64
[ 3.346550] r8169 0000:04:00.0: irq 44 for MSI/MSI-X
[ 3.346995] r8169 0000:04:00.0: eth0: RTL8102e at 0xf821a000, 00:e0:4c:26:51:75, XID 14c00000 IRQ 44
[ 3.372657] SCSI subsystem initialized
[ 3.384633] usbcore: registered new interface driver usbfs
[ 3.384665] usbcore: registered new interface driver hub
[ 3.384694] usbcore: registered new device driver usb
[ 3.385735] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[ 3.385794] ehci_hcd 0000:00:1d.7: setting latency timer to 64
[ 3.385798] ehci_hcd 0000:00:1d.7: EHCI Host Controller
[ 3.385826] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 1
[ 3.385849] ehci_hcd 0000:00:1d.7: using broken periodic workaround
[ 3.385859] ehci_hcd 0000:00:1d.7: debug port 1
[ 3.389747] ehci_hcd 0000:00:1d.7: cache line size of 32 is not supported
[ 3.408370] ehci_hcd 0000:00:1d.7: irq 23, io mem 0xfdfff000
[ 3.412309] libata version 3.00 loaded.
[ 3.412721] uhci_hcd: USB Universal Host Controller Interface driver
[ 3.423746] FDC 0 is a post-1991 82077
[ 3.424024] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00
[ 3.424090] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[ 3.424095] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 3.424100] usb usb1: Product: EHCI Host Controller
[ 3.424104] usb usb1: Manufacturer: Linux 3.2.57 ehci_hcd
[ 3.424107] usb usb1: SerialNumber: 0000:00:1d.7
[ 3.424288] hub 1-0:1.0: USB hub found
[ 3.424294] hub 1-0:1.0: 8 ports detected
[ 3.425261] uhci_hcd 0000:00:1d.0: setting latency timer to 64
[ 3.425267] uhci_hcd 0000:00:1d.0: UHCI Host Controller
[ 3.425283] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 2
[ 3.425315] uhci_hcd 0000:00:1d.0: irq 23, io base 0x0000fe00
[ 3.425351] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001
[ 3.425353] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 3.425355] usb usb2: Product: UHCI Host Controller
[ 3.425357] usb usb2: Manufacturer: Linux 3.2.57 uhci_hcd
[ 3.425359] usb usb2: SerialNumber: 0000:00:1d.0
[ 3.425647] hub 2-0:1.0: USB hub found
[ 3.425653] hub 2-0:1.0: 2 ports detected
[ 3.425743] uhci_hcd 0000:00:1d.1: setting latency timer to 64
[ 3.425746] uhci_hcd 0000:00:1d.1: UHCI Host Controller
[ 3.425753] uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 3
[ 3.425790] uhci_hcd 0000:00:1d.1: irq 19, io base 0x0000fd00
[ 3.425824] usb usb3: New USB device found, idVendor=1d6b, idProduct=0001
[ 3.425826] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 3.425828] usb usb3: Product: UHCI Host Controller
[ 3.425830] usb usb3: Manufacturer: Linux 3.2.57 uhci_hcd
[ 3.425832] usb usb3: SerialNumber: 0000:00:1d.1
[ 3.425938] hub 3-0:1.0: USB hub found
[ 3.425942] hub 3-0:1.0: 2 ports detected
[ 3.426010] uhci_hcd 0000:00:1d.2: setting latency timer to 64
[ 3.426014] uhci_hcd 0000:00:1d.2: UHCI Host Controller
[ 3.426020] uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 4
[ 3.426051] uhci_hcd 0000:00:1d.2: irq 18, io base 0x0000fc00
[ 3.426082] usb usb4: New USB device found, idVendor=1d6b, idProduct=0001
[ 3.426085] usb usb4: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 3.426087] usb usb4: Product: UHCI Host Controller
[ 3.426089] usb usb4: Manufacturer: Linux 3.2.57 uhci_hcd
[ 3.426091] usb usb4: SerialNumber: 0000:00:1d.2
[ 3.426198] hub 4-0:1.0: USB hub found
[ 3.426202] hub 4-0:1.0: 2 ports detected
[ 3.426273] uhci_hcd 0000:00:1d.3: setting latency timer to 64
[ 3.426276] uhci_hcd 0000:00:1d.3: UHCI Host Controller
[ 3.426283] uhci_hcd 0000:00:1d.3: new USB bus registered, assigned bus number 5
[ 3.426314] uhci_hcd 0000:00:1d.3: irq 16, io base 0x0000fb00
[ 3.426344] usb usb5: New USB device found, idVendor=1d6b, idProduct=0001
[ 3.426347] usb usb5: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[ 3.426349] usb usb5: Product: UHCI Host Controller
[ 3.426351] usb usb5: Manufacturer: Linux 3.2.57 uhci_hcd
[ 3.426353] usb usb5: SerialNumber: 0000:00:1d.3
[ 3.426454] hub 5-0:1.0: USB hub found
[ 3.426457] hub 5-0:1.0: 2 ports detected
[ 3.426522] ata_piix 0000:00:1f.1: version 2.13
[ 3.426578] ata_piix 0000:00:1f.1: setting latency timer to 64
[ 3.427370] scsi0 : ata_piix
[ 3.427473] scsi1 : ata_piix
[ 3.427936] ata1: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0xfa00 irq 14
[ 3.427939] ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0xfa08 irq 15
[ 3.427974] ata_piix 0000:00:1f.2: MAP [ P0 P2 P1 P3 ]
[ 3.428046] ata_piix 0000:00:1f.2: setting latency timer to 64
[ 3.428496] ata2: port disabled--ignoring
[ 3.428513] scsi2 : ata_piix
[ 3.428907] scsi3 : ata_piix
[ 3.429356] ata3: SATA max UDMA/133 cmd 0xf900 ctl 0xf800 bmdma 0xf500 irq 19
[ 3.429359] ata4: SATA max UDMA/133 cmd 0xf700 ctl 0xf600 bmdma 0xf508 irq 19
[ 3.600351] ata3.00: ATA-8: ST3250318AS, CC38, max UDMA/133
[ 3.600358] ata3.00: 488397168 sectors, multi 16: LBA48 NCQ (depth 0/32)
[ 3.616337] ata3.00: configured for UDMA/133
[ 3.736020] usb 1-1: new high-speed USB device number 2 using ehci_hcd
[ 3.760302] ata1.01: ATAPI: ATAPI iHDP118 4, GL05, max UDMA/33
[ 3.776191] ata1.01: configured for UDMA/33
[ 3.778163] scsi 0:0:1:0: CD-ROM ATAPI iHDP118 4 GL05 PQ: 0 ANSI: 5
[ 3.778453] scsi 2:0:0:0: Direct-Access ATA ST3250318AS CC38 PQ: 0 ANSI: 5
[ 3.783064] sd 2:0:0:0: [sda] 488397168 512-byte logical blocks: (250 GB/232 GiB)
[ 3.783126] sd 2:0:0:0: [sda] Write Protect is off
[ 3.783128] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00
[ 3.783148] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[ 3.785910] sr0: scsi3-mmc drive: 48x/48x cd/rw xa/form2 cdda tray
[ 3.785915] cdrom: Uniform CD-ROM driver Revision: 3.20
[ 3.786106] sr 0:0:1:0: Attached scsi CD-ROM sr0
[ 3.836020] Refined TSC clocksource calibration: 2510.403 MHz.
[ 3.836028] Switching to clocksource tsc
[ 3.842587] sda: sda1 sda2 < sda5 sda6 sda7 sda8 > sda3
[ 3.843109] sd 2:0:0:0: [sda] Attached SCSI disk
[ 3.845469] sr 0:0:1:0: Attached scsi generic sg0 type 5
[ 3.845545] sd 2:0:0:0: Attached scsi generic sg1 type 0
[ 3.868682] usb 1-1: New USB device found, idVendor=1a40, idProduct=0101
[ 3.868685] usb 1-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[ 3.868687] usb 1-1: Product: USB 2.0 Hub
[ 3.868967] hub 1-1:1.0: USB hub found
[ 3.869062] hub 1-1:1.0: 4 ports detected
[ 4.092020] usb 1-4: new high-speed USB device number 5 using ehci_hcd
[ 4.224322] usb 1-4: New USB device found, idVendor=0b1e, idProduct=0006
[ 4.224328] usb 1-4: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[ 4.464020] usb 2-2: new low-speed USB device number 2 using uhci_hcd
[ 4.633397] PM: Starting manual resume from disk
[ 4.633400] PM: Hibernation image partition 8:8 present
[ 4.633401] PM: Looking for hibernation image.
[ 4.639360] usb 2-2: New USB device found, idVendor=046d, idProduct=c05a
[ 4.639365] usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 4.639370] usb 2-2: Product: USB Optical Mouse
[ 4.639373] usb 2-2: Manufacturer: Logitech
[ 4.642104] PM: Image not found (code -22)
[ 4.642108] PM: Hibernation image not present or could not be loaded.
[ 4.660932] input: Logitech USB Optical Mouse as /devices/pci0000:00/0000:00:1d.0/usb2/2-2/2-2:1.0/input/input0
[ 4.661130] generic-usb 0003:046D:C05A.0001: input,hidraw0: USB HID v1.11 Mouse [Logitech USB Optical Mouse] on usb-0000:00:1d.0-2/input0
[ 4.661410] usbcore: registered new interface driver usbhid
[ 4.661414] usbhid: USB HID core driver
[ 4.697910] EXT4-fs (sda3): mounted filesystem with ordered data mode. Opts: (null)
[ 4.880034] usb 3-1: new low-speed USB device number 2 using uhci_hcd
[ 5.054840] usb 3-1: New USB device found, idVendor=413c, idProduct=2003
[ 5.054846] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 5.054851] usb 3-1: Product: Dell USB Keyboard
[ 5.054855] usb 3-1: Manufacturer: Dell
[ 5.073163] input: Dell Dell USB Keyboard as /devices/pci0000:00/0000:00:1d.1/usb3/3-1/3-1:1.0/input/input1
[ 5.073218] generic-usb 0003:413C:2003.0002: input,hidraw1: USB HID v1.10 Keyboard [Dell Dell USB Keyboard] on usb-0000:00:1d.1-1/input0
[ 5.160076] usb 1-1.2: new full-speed USB device number 6 using ehci_hcd
[ 5.286065] usb 1-1.2: New USB device found, idVendor=0a12, idProduct=0001
[ 5.286071] usb 1-1.2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[ 5.286076] usb 1-1.2: Product: CSR8510 A10
[ 6.269206] udevd[336]: starting version 175
[ 7.039765] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input2
[ 7.039771] ACPI: Power Button [PWRB]
[ 7.039844] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input3
[ 7.039847] ACPI: Power Button [PWRF]
[ 7.324496] parport_pc 00:0a: reported by Plug and Play ACPI
[ 7.324543] parport0: PC-style at 0x378, irq 7 [PCSPP,TRISTATE]
[ 7.404696] input: PC Speaker as /devices/platform/pcspkr/input/input4
[ 7.617971] intel_rng: FWH not detected
[ 7.634755] ACPI: Requesting acpi_cpufreq
[ 7.853073] iTCO_vendor_support: vendor-support=0
[ 8.052264] iTCO_wdt: Intel TCO WatchDog Timer Driver v1.07
[ 8.052389] iTCO_wdt: Found a ICH7 or ICH7R TCO device (Version=2, TCOBASE=0x0460)
[ 8.053003] iTCO_wdt: initialized. heartbeat=30 sec (nowayout=0)
[ 8.076816] leds_ss4200: no LED devices found
[ 8.370595] [drm] Initialized drm 1.1.0 20060810
[ 8.747593] i915 0000:00:02.0: setting latency timer to 64
[ 8.760313] i915 0000:00:02.0: irq 45 for MSI/MSI-X
[ 8.760319] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010).
[ 8.760320] [drm] Driver supports precise vblank timestamp query.
[ 8.760356] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem
[ 8.776641] [drm] initialized overlay support
[ 8.816602] fbcon: inteldrmfb (fb0) is primary device
[ 8.835633] Bluetooth: Core ver 2.16
[ 8.835655] NET: Registered protocol family 31
[ 8.835657] Bluetooth: HCI device and connection manager initialized
[ 8.835660] Bluetooth: HCI socket layer initialized
[ 8.835662] Bluetooth: L2CAP socket layer initialized
[ 8.835667] Bluetooth: SCO socket layer initialized
[ 8.865022] Console: switching to colour frame buffer device 170x48
[ 8.866983] Bluetooth: Generic Bluetooth USB driver ver 0.6
[ 8.867154] usbcore: registered new interface driver btusb
[ 8.870725] fb0: inteldrmfb frame buffer device
[ 8.870727] drm: registered panic notifier
[ 8.870768] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0
[ 8.870925] snd_hda_intel 0000:00:1b.0: irq 46 for MSI/MSI-X
[ 8.870950] snd_hda_intel 0000:00:1b.0: setting latency timer to 64
[ 8.935263] hda_codec: ALC883: BIOS auto-probing.
[ 10.846909] Adding 3903756k swap on /dev/sda8. Priority:-1 extents:1 across:3903756k
[ 10.869521] EXT4-fs (sda3): re-mounted. Opts: (null)
[ 11.071475] EXT4-fs (sda3): re-mounted. Opts: errors=remount-ro
[ 11.167181] loop: module loaded
[ 12.550865] RPC: Registered named UNIX socket transport module.
[ 12.550867] RPC: Registered udp transport module.
[ 12.550869] RPC: Registered tcp transport module.
[ 12.550871] RPC: Registered tcp NFSv4.1 backchannel transport module.
[ 12.643563] FS-Cache: Loaded
[ 12.805036] FS-Cache: Netfs 'nfs' registered for caching
[ 12.868680] Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
[ 14.619193] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory
[ 14.626912] NFSD: starting 90-second grace period
[ 14.737908] input: ACPI Virtual Keyboard Device as /devices/virtual/input/input5
[ 16.545242] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 16.545247] Bluetooth: BNEP filters: protocol multicast
[ 16.726667] Bluetooth: RFCOMM TTY layer initialized
[ 16.726672] Bluetooth: RFCOMM socket layer initialized
[ 16.726674] Bluetooth: RFCOMM ver 1.11
[ 18.628542] lp0: using parport0 (interrupt-driven).
[ 18.655965] ppdev: user-space parallel port driver
[ 19.367106] r8169 0000:04:00.0: eth0: link down
[ 19.367112] r8169 0000:04:00.0: eth0: link down
[ 19.367264] ADDRCONF(NETDEV_UP): eth0: link is not ready
[ 21.042351] r8169 0000:04:00.0: eth0: link up
[ 21.042587] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
start_kernel(init/main.c)是入口函数,先从这个函数开始看代码。
start_kernel调用cpugroup_early_init,然后cpugroup_early_init(kernel/cgroup.c)中对于每个subsys输出信息。
include/linux/cgroup_subsys.h中定义了SUBSYS(cpuset)和SUBSYS(cpu_cgroup)。
查看cpuset_subsys和cpu_cgroup的定义可以知道其名称分别是cpuset和cpu。
所以会输出下面信息:
[ 0.000000] Initializing cgroup subsys cpuset
[ 0.000000] Initializing cgroup subsys cpu
然后在start_kernel中输出linux_banner的信息,linux_banner定义如下(init/version.c):
const char linux_banner[] =
"Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@"
LINUX_COMPILE_HOST ") (" LINUX_COMPILER ") " UTS_VERSION "\n";
而几个字符串定义分别是:
#define UTS_RELEASE "3.2.57"
#define LINUX_COMPILE_BY "host"
#define LINUX_COMPILE_HOST "debian"
#define LINUX_COMPILER "gcc version 4.7.2 (Debian 4.7.2-5) "
#define UTS_VERSION "#1 SMP Fri Jun 20 10:02:51 CST 2014"
所以输出linux_banner得到下面输出:
[ 0.000000] Linux version 3.2.57 (host@debian) (gcc version 4.7.2 (Debian 4.7.2-5) ) #1 SMP Fri Jun 20 10:02:51 CST 2014
在linux内核源代码下搜索:
find . -name '*.[ch]' -exec grep -rnHi 'BIOS-provided' {} \;
./arch/x86/kernel/e820.c:32: * The e820_saved is directly saved after the BIOS-provided memory map is
./arch/x86/kernel/e820.c:1079: printk(KERN_INFO "BIOS-provided physical RAM map:\n");
start_kernel函数中接下来执行setup_arch(command_line).
setup_arch(arch/x86/kernel/setup.c)执行setup_memory_map函数。在setup_memory_map中输出下面信息:
[ 0.000000] BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
[ 0.000000] BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
[ 0.000000] BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
[ 0.000000] BIOS-e820: 0000000000100000 - 000000007f590000 (usable)
[ 0.000000] BIOS-e820: 000000007f590000 - 000000007f5e3000 (ACPI NVS)
[ 0.000000] BIOS-e820: 000000007f5e3000 - 000000007f5f0000 (ACPI data)
[ 0.000000] BIOS-e820: 000000007f5f0000 - 000000007f600000 (reserved)
[ 0.000000] BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
[ 0.000000] BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved)
setup_arch中调用x86_report_nx, 在该函数中输出下面信息:
[ 0.000000] NX (Execute Disable) protection: active
setup_arch接下来调用dmi_scan_machine,dmi_scan_machine(drivers/firmware/dmi_scan.c)调用dmi_present.
dmi_present函数中输出下面信息:
[ 0.000000] SMBIOS 2.5 present.
dmi_present还调用dmi_dump_ids函数,输出下面信息:
DMI: OEM OEM/SY-I5G31-L V2.0, BIOS 6.00 PG 09/28/2009
setup_arch函数继续调用trim_bios_range,trim_bios_range调用e820_update_range.e820_update_range调用__e820_update_range。
在__e820_update_range函数输出下面信息:
[ 0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved)
trim_bios_range接下来调用e820_remove_range,在e820_remove_range中输出下面信息:
[ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable)
setup_arch中接着调用e820_end_of_ran_pfn.e820_end_of_ram_pfn调用e820_end_fn,在此函数中输出下面信息:
[ 0.000000] last_pfn = 0x7f590 max_arch_pfn = 0x1000000
setup_arch中接着调用mtrr_bp_init,mtrr_bp_init中调用get_mtrr_state,get_mtrr_state中调用print_mtrr_state,print_mtrr_state中输出下面信息:
[ 0.000000] MTRR default type: uncachable
[ 0.000000] MTRR fixed ranges enabled:
[ 0.000000] 00000-9FFFF write-back
[ 0.000000] A0000-BFFFF uncachable
[ 0.000000] C0000-CAFFF write-protect
[ 0.000000] CB000-EFFFF uncachable
[ 0.000000] F0000-FFFFF write-through
[ 0.000000] MTRR variable ranges enabled:
[ 0.000000] 0 base 000000000 mask F80000000 write-back
[ 0.000000] 1 base 07F700000 mask FFFF00000 uncachable
[ 0.000000] 2 base 07F800000 mask FFF800000 uncachable
[ 0.000000] 3 base 07F600000 mask FFFF00000 uncachable
[ 0.000000] 4 disabled
[ 0.000000] 5 disabled
[ 0.000000] 6 disabled
[ 0.000000] 7 disabled
get_mtrr_state中接着调用pat_init,在pat_init函数输出下面信息:
[ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
setup_arch中接下来执行find_smp_config,find_smp_config执行x86_init.mpparse.find_smp_config.
而x86_init.mmparse.find_smp_config=default_find_smp_config(arch/x86/kernel/x86_init.c),所以此时执行default_find_smp_config函数。
default_find_smp_config函数执行smp_scan_config,在smp_scan_config中输出下面信息:
[ 0.000000] found SMP MP-table at [c00f3b50] f3b50
setup_arch中接着输出下面信息:
[ 0.000000] initial memory mapped : 0 - 01a00000
setup_arch接着调用setup_trampolines函数,在此函数中输出下面信息:
[ 0.000000] Base memory trampoline at [c009b000] 9b000 size 16384
setup_arch中接着调用init_memory_mapping,在此函数中输出下面信息:
[ 0.000000] init_memory_mapping: 0000000000000000-00000000379fe000
[ 0.000000] 0000000000 - 0000200000 page 4k
[ 0.000000] 0000200000 - 0037800000 page 2M
[ 0.000000] 0037800000 - 00379fe000 page 4k
在init_memory_mapping中接着调用find_early_table_space,在此函数中输出下面信息:
[ 0.000000] kernel direct mapping tables up to 379fe000 @ 19f9000-1a00000
setup_arch中接着调用reserve_initrd,在此函数中输出下面信息:
[ 0.000000] RAMDISK: 29bdc000 - 30de6000
setup_arch接着调用acpi_boot_table_init,acpi_boot_table_init调用acpi_table_init,acpi_table_init调用acpi_initialize_tables,
acpi_initialize_tables调用acpi_tb_parse_root_table,acpi_tb_parse_root_table调用acpi_tb_print_table_header,在此函数输出信息:
[ 0.000000] ACPI: RSDP 000f7d20 00014 (v00 IntelR)
acpi_boot_table_init中输出其它信息(有点复杂,不再详细分析):
[ 0.000000] ACPI: RSDT 7f5e3000 00038 (v01 IntelR AWRDACPI 42302E31 AWRD 00000000)
[ 0.000000] ACPI: FACP 7f5e3080 00074 (v01 IntelR AWRDACPI 42302E31 AWRD 00000000)
[ 0.000000] ACPI: DSDT 7f5e3100 04A18 (v01 INTELR AWRDACPI 00001000 MSFT 03000000)
[ 0.000000] ACPI: FACS 7f590000 00040
[ 0.000000] ACPI: HPET 7f5e7c00 00038 (v01 IntelR AWRDACPI 42302E31 AWRD 00000098)
[ 0.000000] ACPI: MCFG 7f5e7c40 0003C (v01 IntelR AWRDACPI 42302E31 AWRD 00000000)
[ 0.000000] ACPI: APIC 7f5e7b40 00084 (v01 IntelR AWRDACPI 42302E31 AWRD 00000000)
[ 0.000000] ACPI: SSDT 7f5e83a0 009FF (v01 PmRef CpuPm 00003000 INTL 20060912)
setup_arch接着调用early_acpi_boot_init,early_acpi_boot_init调用early_acpi_process_madt,early_acpi_process_madt调用acpi_table_parse。
acpi_table_parse(ACPI_SIG_MADT,acpi_parse_madt),从而会调用acpi_parse_madt,输出下面信息:
[ 0.000000] ACPI: Local APIC address 0xfee00000
setup_arch中接着调用initmem_init,此函数中输出下面信息:
[ 0.000000] 1147MB HIGHMEM available.
[ 0.000000] 889MB LOWMEM available.
initmem_init中还调用setup_bootmem_allocator函数,输出下面信息:
[ 0.000000] 1147MB HIGHMEM available.
[ 0.000000] 889MB LOWMEM available.
setup_arch接着调用paging_init,paging_init中调用zone_sizes_init,zone_sizes_init调用free_area_init_nodes, 此函数中输出:
[ 0.000000] Zone PFN ranges:
[ 0.000000] DMA 0x00000010 -> 0x00001000
[ 0.000000] Normal 0x00001000 -> 0x000379fe
[ 0.000000] HighMem 0x000379fe -> 0x0007f590
[ 0.000000] Movable zone start PFN for each node
[ 0.000000] early_node_map[2] active PFN ranges
[ 0.000000] 0: 0x00000010 -> 0x0000009f
[ 0.000000] 0: 0x00000100 -> 0x0007f590
free_area_init_nodes中还会调用free_area_init_node,free_area_init_node调用calculate_node_totalpages,输出下面信息:
[ 0.000000] On node 0 totalpages: 521503
free_area_init_node中调用free_area_init_core,此函数对DMA、HIGHMEM、LOWMEM分别输出信息:
[ 0.000000] free_area_init_node: node 0, pgdat c141e800, node_mem_map f6a0d200
[ 0.000000] DMA zone: 32 pages used for memmap
[ 0.000000] DMA zone: 0 pages reserved
[ 0.000000] DMA zone: 3951 pages, LIFO batch:0
[ 0.000000] Normal zone: 1748 pages used for memmap
[ 0.000000] Normal zone: 221994 pages, LIFO batch:31
[ 0.000000] HighMem zone: 2296 pages used for memmap
[ 0.000000] HighMem zone: 291482 pages, LIFO batch:31
setup_arch中继续调用generic_apic_probe,在此函数中输出下面信息:
[ 0.000000] Using APIC driver default
setup_arch中接着调用acpi_boot_init,acpi_boot_init调用acpi_parse_fadt,该函数输出信息:
[ 0.000000] ACPI: PM-Timer IO Port: 0x408
acpi_boot_init中接着调用acpi_process_madt, acpi_process_madt调用acpi_parse_madt,输出下面信息:
[ 0.000000] ACPI: Local APIC address 0xfee00000
acpi_process_madt中接着调用acpi_parse_madt_lapic_entries,acpi_parse_madt_lapic_entries对表中每一项调用acpi_parse_lapic,
acpi_parse_lapic调用acpi_table_print_madt_entry,多次调用该函数输出下面信息:
[ 0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x02] disabled)
[ 0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x03] disabled)
[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1])
[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1])
[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1])
[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x03] high edge lint[0x1])
[ 0.000000] ACPI: IOAPIC (id[0x04] address[0xfec00000] gsi_base[0])
acpic_process_madt接着调用acpi_parse_madt_ioapic_entries,acpi_parse_madt_ioapic_entries执行下面语句:
count =acpi_table_parse_madt(ACPI_MADT_TYPE_IO_APIC, acpi_parse_ioapic,
MAX_IO_APICS);
acpi_parse_ioapic调用mp_register_ioapic函数,输出下面信息:
[ 0.000000] IOAPIC[0]: apic_id 4, version 32, address 0xfec00000, GSI 0-23
acpi_parse_madt_ioapic_entries中执行下面代码:
count = acpi_table_parse_madt(ACPI_MADT_TYPE_INTERRUPT_OVERRIDE, acpi_parse_int_src_ovr,
nr_irqs);
acpi_parse_int_src_ovr中执行acpi_table_print_madt_entry,输出下面信息:
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
acpi_parse_madt_ioapic_entries接着调用mp_config_acpi_legacy_irqs,输出下面信息:
[ 0.000000] ACPI: IRQ0 used by override.
[ 0.000000] ACPI: IRQ2 used by override.
[ 0.000000] ACPI: IRQ9 used by override.
acpi_process_madt接着输出下面信息:
[ 0.000000] Using ACPI (MADT) for SMP configuration information
acpi_boot_init中接着调用acpi_parse_hpet,输出下面信息:
[ 0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000
setup_arch中接着调用prefill_possible_map,此函数中输出下面信息:
[ 0.000000] SMP: Allowing 4 CPUs, 2 hotplug CPUs
setup_arch中接着调用ioapic_and_gsi_init, ioapic_and_gsi_init调用probe_nr_irqs_gsi,输出下面信息:
[ 0.000000] nr_irqs_gsi: 40
setup_arch中将诶这调用e820_mark_nosave_regions,e820_mark_nosave_region多次调用register_nosave_region,
register_nosave_region调用__register_nosave_region,输出下面信息:
[ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000
[ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000f0000
[ 0.000000] PM: Registered nosave memory: 00000000000f0000 - 0000000000100000
setup_arch中继续调用e820_setup_gap,该函数中输出信息:
[ 0.000000] Allocating PCI resources starting at 7f600000 (gap: 7f600000:60a00000)
setup_arch中接着调用x86_init.oem.banner,即default_banner,输出下面信息:
[ 0.000000] Booting paravirtualized kernel on bare hardware
回到start_kernel函数,start_kernel调用setup_per_cpu_areas,输出下面信息:
[ 0.000000] setup_percpu: NR_CPUS:32 nr_cpumask_bits:32 nr_cpu_ids:4 nr_node_ids:1
setup_per_cpu_areas调用pcpu_embed_first_chunk,输出下面信息:
[ 0.000000] PERCPU: Embedded 14 pages/cpu @f69c9000 s33280 r0 d24064 u57344
setup_per_cpu_areas接着调用pcpu_setup_first_chunk,pcpu_setup_first_chunk调用pcpu_dump_alloc_info,输出下面信息:
[ 0.000000] pcpu-alloc: s33280 r0 d24064 u57344 alloc=14*4096
[ 0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3
start_kernel中接着调用build_all_zonelists,在该函数中输出下面信息:
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 517427
start_kernel中输出下面信息:
[ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.2.57 root=UUID=c6cb3b0a-3215-46d4-9ac7-6835d0a12e47 ro initrd=/install/initrd.gz quiet
start_kernel中接着调用pidhash_init,pidhash_init调用alloc_large_system_hash,此函数输出下面信息:
[ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
start_kernel中接着调用vfs_caches_init_early,vfs_caches_init_early调用dcache_init_early,输出下面信息:
[ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
vfs_caches_init_early还调用inode_init_early,输出下面信息:
[ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
start_kernel接着执行trap_init,trap_init调用cpu_init,cpu_init中输出下面信息:
[ 0.000000] Initializing CPU#0
cpu_init中调用xsave_init, xsave_init调用xstate_enable_boot_cpu,输出下面信息:
[ 0.000000] xsave/xrstor: enabled xstate_bv 0x3, cntxt size 0x240
start_kernel中调用mm_init,mm_init中调用mem_init,mem_init调用set_highmem_pages_init,在该函数中输出下面信息:
[ 0.000000] Initializing HighMem for node 0 (000379fe:0007f590)
mem_init接着输出下面信息:
[ 0.000000] Memory: 1946540k/2086464k available (2881k kernel code, 139472k reserved, 1380k data, 428k init, 1175112k highmem)
[ 0.000000] virtual kernel memory layout:
[ 0.000000] fixmap : 0xffd36000 - 0xfffff000 (2852 kB)
[ 0.000000] pkmap : 0xffa00000 - 0xffc00000 (2048 kB)
[ 0.000000] vmalloc : 0xf81fe000 - 0xff9fe000 ( 120 MB)
[ 0.000000] lowmem : 0xc0000000 - 0xf79fe000 ( 889 MB)
[ 0.000000] .init : 0xc142a000 - 0xc1495000 ( 428 kB)
[ 0.000000] .data : 0xc12d07ac - 0xc1429a40 (1380 kB)
[ 0.000000] .text : 0xc1000000 - 0xc12d07ac (2881 kB)
mem_init中调用test_wp_init,输出下面信息:
[ 0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok.
start_kernel接着调用rcu_init,rcu_init调用rcu_bootup_announce,输出下面信息:
[ 0.000000] Hierarchical RCU implementation.
rcu_bootup_announce调用rcu_bootup_announce_oddness,该函数中输出下面信息:
[ 0.000000] RCU dyntick-idle grace-period acceleration is enabled.
start_kernel接着调用early_irq_init,该函数中输出下面信息:
[ 0.000000] NR_IRQS:2304 nr_irqs:712 16
start_kernel调用init_IRQ,init_IRQ调用x86_init.irqs.intr_init,即native_init_IRQ,native_init_IRQ调用irq_ctx_init,在此函数中输出下面信息:
[ 0.000000] CPU 0 irqstacks, hard=f6406000 soft=f6408000
start_kernel接着调用console_init,console_init执行下面语句:
call = __con_initcall_start;
while (call < __con_initcall_end) {
(*call)();
call++;
}
这些语句将__con_initcall_start和__con_init_end之间的所有函数全部执行一遍。
文件drivers/tty/vt/vt.c中有下面一行代码:
console_initcall(con_init);
console_initcall的定义如下:
#define console_initcall(fn) \
static initcall_t __initcall_##fn \ __used __section(.con_initcall.init) = fn
所以前一行console_initcall(con_init)可以展开成:
static initcall_t __initcall_con_init __used __section(.con_initcall.init) = con_init
即将con_init函数代码放入到目标文件的.con_initcall.init段中。
在arch/x86/kernel/vmlinux.lds中有一行内容:
__con_initcall_start = .; *(.con_initcall.init) __con_initcall_end = .;
所以会执行con_init函数,在con_init中输出信息:
[ 0.000000] Console: colour VGA+ 80x25
con_init还调用register_console函数,输出下面信息:
[ 0.000000] console [tty0] enabled
start_kernel中接着调用late_time_init,之前已经调用了time_init函数将late_time_init赋值为x86_late_time_init,此处调用x86_late_time_init。
x86_late_time_init调用x86.timers_timer_init,即hpet_timer_init函数。hpet_time_init调用hpet_enable,
hpet_enable调用hpet_legacy_clockevent_register,在此函数中输出下面信息:
[ 0.000000] hpet clockevent registered
x86_late_time_init接着调用tsc_init函数,tsc_init调用
x86_platform.calibrate_tsc函数,即native_calibrate_tsc函数,native_calibrate_tsc调用quick_pit_calibrate函数,输出下面信息:
[ 0.000000] Fast TSC calibration using PIT
tsc_init中接着输出下面信息:
[ 0.000000] Detected 2510.571 MHz processor.
start_kernel中接着调用calibrate_delay函数,calibrate_delay中输出下面信息:
[ 0.004002] Calibrating delay loop (skipped), value calculated using timer frequency.. 5021.14 BogoMIPS (lpj=10042284)
start_kernel中接着调用pid_max,输出下面信息:
[ 0.004006] pid_max: default: 32768 minimum: 301
start_kernel中接着调用security_init,输出下面信息:
[ 0.004038] Security Framework initialized
start_kernel中调用security_init,security_init中调用do_security_initcalls,和前面的console_init类似,此处代码如下:
call = __security_initcall_start;
while (call < __security_initcall_end) {
(*call) ();
call++;
}
security/apparmor/lsm.c中最后一行代码如下:
security_initcall(apparmor_init);
security_initcall定义如下:
#define security_initcall(fn) \
static initcall_t __initcall_##fn \
__used __section(.security_initcall.init) = fn
所以这里会执行apparmor_init函数。在该函数中输出下面信息:
[ 0.004054] AppArmor: AppArmor disabled by boot time parameter
start_kernel中接着调用vfs_caches_init函数,vfs_caches_init调用mnt_init,在其中输出下面信息:
[ 0.004067] Mount-cache hash table entries: 512
start_kernel接着调用cgroup_init,cgroup_init中对其中每个subsys执行cgroup_init_subsy,输出下面信息:
[ 0.004187] Initializing cgroup subsys cpuacct
[ 0.004192] Initializing cgroup subsys memory
[ 0.004200] Initializing cgroup subsys devices
[ 0.004202] Initializing cgroup subsys freezer
[ 0.004204] Initializing cgroup subsys net_cls
[ 0.004205] Initializing cgroup subsys blkio
[ 0.004211] Initializing cgroup subsys perf_event
start_kernel接着调用check_bugs,check_bugs接着调用identify_boot_cpu,identify_boot_cpu调用identify_cpu,
identify_cpu调用this_cpu->c_init,即init_intel,init_intel中调用detect_ht,在此函数中输出下面信息:
[ 0.004239] CPU: Physical Processor ID: 0
[ 0.004240] CPU: Processor Core ID: 0
init_intel中接着调用mcheck_cpu_init,mcheck_cpu_init调用__mcheck_cpu_cap_init函数,此函数中输出下面信息:
[ 0.004243] mce: CPU supports 6 MCE banks
mcheck_cpu_init接着调用__mcheck_cpu_init_vendor,__mcheck_cpu_init_vendor调用mce_intel_feature_init,
mce_intel_feature_init调用intel_init_thermal,输出下面信息:
[ 0.004250] CPU0: Thermal monitoring enabled (TM2)
identify_cpu接着调用select_idle_routine,输出下面信息:
[ 0.004253] using mwait in idle threads.
回到start_kernel函数,调用acpi_early_init,输出下面信息:
[ 0.004638] ACPI: Core revision 20110623
start_kernel调用rest_init.
rest_init创建内核线程,其执行函数是kernel_init.
kernel_init调用smp_init, smp_init调用APIC_init_uniprocessor,APIC_init_uniprocesor调用default_setup_apic_routing,
default_setup_apic_routing调用apic->setup_apic_routing,即setup_apic_flat_routing。
setup_apic_flat_routing输出下面信息:
[ 0.009086] Enabling APIC mode: Flat. Using 1 I/O APICs
APIC_init_uniprocessor中接着调用setup_IO_APIC,setup_IO_APIC调用check_timer,check_timer中输出信息:
[ 0.009444] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
下面信息我没搜索到对应代码:
[ 0.049139] CPU0: Intel Pentium(R) Dual-Core CPU E5200 @ 2.50GHz stepping 0a
kernel_init中接着调用do_pre_smp_initcalls,与前面类似,该函数中有下面代码:
for (fn = __initcall_start; fn < __early_initcall_end; fn++)
do_one_initcall(*fn);
do_one_initcall中主要功能是调用fn。
上面代码是将__initcall_start和__early_initcall_end之间所有函数全部执行一遍。
arch/x86/kernel/cpu/perf_event中有下面代码:
early_initcall(init_hw_perf_events);
early_initcall定义如下:
#define early_initcall(fn) __define_initcall("early",fn,early)
__define_initcall定义如下:
#define __define_initcall(level,fn,id) \
static initcall_t __initcall_##fn##id __used \
__attribute__((__section__(".initcall" level ".init"))) = fn
上面定义扩展成:
static initcall_t __initcall_init_hw_perf_events_early __used __attributes__((__section (.initcallearly.init)))=init_hw_perf_events
在arch/x86/kernel/vmlinux.lds中有下面定义:
__initcall_start = .; *(.initcallearly.init) __early_initcall_end = .;
此处会调用init_hw_pref_events_early,在此函数中输出下面信息:
[ 0.052002] Performance Events: PEBS fmt0+, Core2 events, Intel PMU driver.
[ 0.052002] ... version: 2
[ 0.052002] ... bit width: 40
[ 0.052002] ... generic registers: 2
[ 0.052002] ... value mask: 000000ffffffffff
[ 0.052002] ... max period: 000000007fffffff
[ 0.052002] ... fixed-purpose events: 3
[ 0.052002] ... event mask: 0000000700000003
kernel_init中接着调用lockup_detector_init,lockup_detector_init调用cpu_callback,cpu_callback调用watchdog_enable.
watchdog_enable调用 watchdog_nmi_enable,输出下面信息:
[ 0.052002] NMI watchdog enabled, takes one hw-pmu counter.
kernel_init接着调用smp_init,smp_init调用cpu_up,cpu_up此处等于native_cpu_up,native_cpu_up调用do_boot_cpu,
do_boot_cpu 调用irq_ctx_init,其中输出下面信息:
[ 0.052002] CPU 1 irqstacks, hard=f64d4000 soft=f64d6000
do_boot_cpu中接着调用announce_cpu,输出下面信息:
[ 0.052002] Booting Node 0, Processors #1
do_boot_cpu中接着输出下面信息:
[ 0.052002] smpboot cpu 1: start_ip = 9b000
do_boot_cpu中initial_code=start_secondary(但不清楚如何调用start_secondary),调用start_secondary,
start_secondary调用cpu_init,cpu_init中输出下面信息:
[ 0.008000] Initializing CPU#1
不知道怎么输出下面信息:
[ 0.140036] NMI watchdog enabled, takes one hw-pmu counter.
smp_init输出下面信息:
[ 0.140070] Brought up 2 CPUs
smp_init调用smp_cpus_done,smp_cpus_done调用smp_ops.smp_cpus_done,即native_smp_cpus_done函数。
native_smp_cpus_done调用impress_friends,此函数输出下面信息:
[ 0.140072] Total of 2 processors activated (10041.88 BogoMIPS).
回到kernel_init,调用do_basic_setup,do_basic_setup调用driver_init,driver_init调用devtmpfs_init,
devtmpfs_init中创建内核线程kdevtmpfs,线程函数是devtmpfsd。
在当前系统下可以搜索到该线程:
$ ps aux | grep kdevtmpfs
root 15 0.0 0.0 0 0 ? S 08:00 0:00 [kdevtmpfs]
host 29974 0.0 0.0 3784 788 pts/2 S+ 16:44 0:00 grep kdevtmpfs
只有第一行信息与该线程有关,第二行信息是我搜索时产生的进程。
devtmpfsd函数内容如下:
static int devtmpfsd(void *p)
{
char options[] = "mode=0755";
int *err = p;
*err = sys_unshare(CLONE_NEWNS);
if (*err)
goto out;
*err = sys_mount("devtmpfs", "/", "devtmpfs", MS_SILENT, options);
if (*err)
goto out;
sys_chdir("/.."); /* will traverse into overmounted root */
sys_chroot(".");
complete(&setup_done);
while (1) {
spin_lock(&req_lock);
while (requests) {
struct req *req = requests;
requests = NULL;
spin_unlock(&req_lock);
while (req) {
struct req *next = req->next;
req->err = handle(req->name, req->mode, req->dev);
complete(&req->done);
req = next;
}
spin_lock(&req_lock);
}
set_current_state(TASK_INTERRUPTIBLE);
spin_unlock(&req_lock);
schedule();
__set_current_state(TASK_RUNNING);
}
return 0;
out:
complete(&setup_done);
return *err;
}
devtmpfsd挂载/文件夹,循环处理request中的每个请求,如果没请求,请求处理后就会调度其他进程来执行。
devtmpfs_init中还输出下面信息:
[ 0.141484] devtmpfs: initialized
driver_init中还调用了devices_init,该函数创建/sys/devices,/dev/以及/dev/block和/dev/char。
driver_init中接着调用buses_init,该函数创建/sys/bus以及/sys/devices/syste
driver_init接着调用classes_init,该函数创建/sys/class.
driver_init接着调用firmware_init,该函数创建/sys/firmware.
driver_init接着调用hipervisor_init,该函数创建/sys/hipervisor
driver_init接着调用platform_bus_init,该函数创建/sys/devices/platform和/sys/bus/platform
driver_init接着调用cpu_dev_init,该函数注册cpu_subsys,创建/sys/devices/cpu和/sys/bus/cpu。
driver_init接着调用memory_dev_init,该函数创建/sys/bus/mem.
do_basic_setup中接着调用init_irq_proc,创建/proc/irq,并为所有中断在/proc/irq下创建相应的文件夹。
do_basic_setup接着调用do_initcalls,与前面类似,其函数定义如下:
static void __init do_initcalls(void)
{
initcall_t *fn;
for (fn = __early_initcall_end; fn < __initcall_end; fn++)
do_one_initcall(*fn);
}
arch/x86/kernel/vmlinux.lds中有下面定义:
__early_initcall_end = .; *(.initcall0. init) *(.initcall0s.init) *(.initcall1.init) *(.initcall1s.init) *(.initcall2.init) *(.initcall2s.init) *(.initcall3.init) *(.init call3s.init) *(.initcall4.init) *(.initcall4s.init) *(.initcall5.init) *(.initcall5s.init) *(.initcallrootfs.init) *(.initcall6.in it) *(.initcall6s.init) *(.initcall7.init) *(.initcall7s.init) __initcall_end = .;
include/linux/init.h中有下面定义:
#define __define_initcall(level,fn,id) \
static initcall_t __initcall_##fn##id __used \
__attribute__((__section__(".initcall" level ".init"))) = fn
#define pure_initcall(fn) __define_initcall("0",fn,0)
#define core_initcall(fn) __define_initcall("1",fn,1)
#define core_initcall_sync(fn) __define_initcall("1s",fn,1s)
#define postcore_initcall(fn) __define_initcall("2",fn,2)
#define postcore_initcall_sync(fn) __define_initcall("2s",fn,2s)
#define arch_initcall(fn) __define_initcall("3",fn,3)
#define arch_initcall_sync(fn) __define_initcall("3s",fn,3s)
#define subsys_initcall(fn) __define_initcall("4",fn,4)
#define subsys_initcall_sync(fn) __define_initcall("4s",fn,4s)
#define fs_initcall(fn) __define_initcall("5",fn,5)
#define fs_initcall_sync(fn) __define_initcall("5s",fn,5s)
#define rootfs_initcall(fn) __define_initcall("rootfs",fn,rootfs)
#define device_initcall(fn) __define_initcall("6",fn,6)
#define device_initcall_sync(fn) __define_initcall("6s",fn,6s)
#define late_initcall(fn) __define_initcall("7",fn,7)
#define late_initcall_sync(fn) __define_initcall("7s",fn,7s)
所以所有与上面定义的从pure_initcall到late_initcall_sync所有宏定义的函数都会在此处被执行。
arch/x86/kernel/e820.c中有下面代码:
core_initcall(e820_mark_nvs_memory);
所以e820_mark_nvs_memory会被调用,e820_mark_nvs_memory调用suspend_nvs_register,输出下面信息:
[ 0.141484] PM: Registering ACPI NVS region at 7f590000 (339968 bytes)
drivers/regulator/core.c中有下面代码:
core_initcall(regulator_init);
此处会执行regulator_init,创建/sys/class/regulator,在debugfs下创建regulator文件夹,然后执行regulator_dummy_init,
添加dummy设备以及驱动,输出下面信息:
[ 0.141484] print_constraints: dummy:
net/netlink/af_netlink.c中有下面代码:
core_initcall(netlink_proto_init);
此处会执行netlink_proto_init函数,netlink_proto_init调用sock_register(&netlink_family_ops),输出下面信息:
[ 0.141484] NET: Registered protocol family 16
include/linux/socket.h中有AF_NETLINK协议簇的定义:
#define AF_NETLINK 16
drives/pci/pci-acpi.c中有下面代码:
arch_initcall(acpi_pci_init);
此处会执行acpi_pci_init函数,该函数中调用register_acpi_bus_type(&apci_pci_bus),输出下面信息:
[ 0.141484] ACPI: bus type pci registered
arch/x86/pci/init.c中有下面代码:
arch_initcall(pci_arch_init);
此处会执行pci_arch_init函数,pci_arch_init调用pci_mmcfg_early_init,然后调用几个函数后会调用pci_mmconfig_add,
输出下面信息:
[ 0.141484] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000)
经过多次调用后会调用is_mmconfig_reserved,输出下面信息:
[ 0.141484] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820
经过多次调用后会调用pci_mmconfig_arch_init,输出下面信息:
[ 0.141484] PCI: Using MMCONFIG for extended config space
pci_arch_init还调用了pci_direct_init,该函数输出下面信息:
[ 0.141484] PCI: Using configuration type 1 for base access
fs/bio.c中有下面代码:
subsys_initcall(init_bio);
此处会执行init_bio,init_bio调用bioset_create,bioset_create调用bio_find_or_create_slab,此函数中输出下面信息:
[ 0.141484] bio: create slab <bio-0> at 0
drivers/acpi/bus中有下面代码:
subsys_initcall(acpi_init);
此处会调用acpi_init,acpi_init调用acpi_bus_init,acpi_bus_init调用acpi_os_initialize1,acpi_os_initialize1调用acpi_osi_setup_late,
acpi_osi_setup_late输出下面信息:
[ 0.141484] ACPI: Added _OSI(Module Device)
[ 0.141484] ACPI: Added _OSI(Processor Device)
[ 0.141484] ACPI: Added _OSI(3.0 _SCP Extensions)
[ 0.141484] ACPI: Added _OSI(Processor Aggregator Device)
acpi_bus_init中调用acpi_ec_ecdt_probe,该函数输出下面信息:
[ 0.141484] ACPI: EC: Look up EC in DSDT