首页 > 代码库 > debian内核代码执行流程(一)

debian内核代码执行流程(一)

 本文根据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, doesnt 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 kdevtmpfsroot        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