本文根据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 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 " ";
而几个字符串定义分别是:
#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: ");
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 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