On Mon, Dec 3, 2018 at 4:44 PM Rob Bradford <[email protected]> wrote:
>
> Hi Stefano, thanks for capturing all these numbers,
>
> On Mon, 2018-12-03 at 15:27 +0100, Stefano Garzarella wrote:
> > Hi Rob,
> > I continued to investigate the boot time, and as you suggested I
> > looked also at qemu-lite 2.11.2
> > (https://github.com/kata-containers/qemu) and NEMU "virt" machine. I
> > did the following tests using the Kata kernel configuration
> > (
> > https://github.com/kata-containers/packaging/blob/master/kernel/configs/x86_64_kata_kvm_4.14.x
> > )
> >
> > To compare the results with qemu-lite direct kernel load, I added
> > another tracepoint:
> > - linux_start_kernel: first entry of the Linux kernel
> > (start_kernel())
> >
>
> Great, do you have a set of patches available that all these trace
> points. It would be great for reproduction.
For sure! I'm attaching a set of patches for qboot, seabios, ovmf,
nemu/qemu/qemu-lite and linux 4.14 whit the tracepoints.
I'm also sharing a python script that I'm using with perf to extract
the numbers in this way:
$ perf record -a -e kvm:kvm_entry -e kvm:kvm_pio -e
sched:sched_process_exec -o /tmp/qemu_perf.data &
$ # start qemu/nemu multiple times
$ killall perf
$ perf script -s qemu-perf-script.py -i /tmp/qemu_perf.data
>
> > As you can see, NEMU is faster to jump to the kernel
> > (linux_start_kernel) than qemu-lite when uses qboot or seabios with
> > virt support, but the time to the user space is strangely high, maybe
> > the kernel configuration that I used is not the best one.
> > Do you suggest another kernel configuration?
> >
>
> This looks very bad. This isn't the kernel configuration we normally
> test with in our automated test system but is definitely one we support
> as part of our partnernship with the Kata team. It's a high priority
> for me to try and investigate that. Have you saved the kernel messages
> as they might be helpful?
Yes, I'm attaching the dmesg output with nemu and qemu.
>
> > Anyway, I obtained the best boot time with qemu-lite and direct
> > kernel
> > load (vmlinux ELF image). I think because the kernel was not
> > compressed. Indeed, looking to the others test, the kernel
> > decompression (bzImage) takes about 80 ms (linux_start_kernel -
> > linux_start_boot). (I'll investigate better)
> >
>
> Yup being able to load an uncompressed kernel is one of the big
> advantages of qemu-lite. I wonder if we could bring that feature into
> qemu itself to supplement the existing firmware based kernel loading.
I think so, I'll try to understand if we can merge the qemu-lite
direct kernel loading in qemu.
Thanks,
Stefano
--
Stefano Garzarella
Red Hat
[ 0.000000] Linux version 4.14.67 (stefano@stelenovo) (gcc version 7.3.0
(Buildroot 2018.11-rc1-00017-g6a74acb6fb)) #3 SMP Mon Dec 3 15:56:35 CET 2018
[ 0.000000] Command line: root=/dev/pmem0 ro console=hvc0
[ 0.000000] KERNEL supported cpus:
[ 0.000000] Intel GenuineIntel
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point
registers'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
[ 0.000000] x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256
[ 0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes,
using 'standard' format.
[ 0.000000] e820: BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
[ 0.000000] BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000001ffdefff] usable
[ 0.000000] BIOS-e820: [mem 0x000000001ffdf000-0x000000001fffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000feffc000-0x00000000feffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved
[ 0.000000] NX (Execute Disable) protection: active
[ 0.000000] Hypervisor detected: KVM
[ 0.000000] tsc: Fast TSC calibration using PIT
[ 0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[ 0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[ 0.000000] e820: last_pfn = 0x1ffdf max_arch_pfn = 0x400000000
[ 0.000000] MTRR default type: write-back
[ 0.000000] MTRR fixed ranges enabled:
[ 0.000000] 00000-9FFFF write-back
[ 0.000000] A0000-BFFFF uncachable
[ 0.000000] C0000-FFFFF write-protect
[ 0.000000] MTRR variable ranges enabled:
[ 0.000000] 0 base 0080000000 mask FF80000000 uncachable
[ 0.000000] 1 disabled
[ 0.000000] 2 disabled
[ 0.000000] 3 disabled
[ 0.000000] 4 disabled
[ 0.000000] 5 disabled
[ 0.000000] 6 disabled
[ 0.000000] 7 disabled
[ 0.000000] x86/PAT: Configuration [0-7]: WB WT UC- UC WB WT UC- UC
[ 0.000000] found SMP MP-table at [mem 0x000f3ee0-0x000f3eef] mapped at
[ffffffffff200ee0]
[ 0.000000] Base memory trampoline at [ffff880000099000] 99000 size 24576
[ 0.000000] Using GB pages for direct mapping
[ 0.000000] BRK [0x024f3000, 0x024f3fff] PGTABLE
[ 0.000000] BRK [0x024f4000, 0x024f4fff] PGTABLE
[ 0.000000] BRK [0x024f5000, 0x024f5fff] PGTABLE
[ 0.000000] BRK [0x024f6000, 0x024f6fff] PGTABLE
[ 0.000000] ACPI: Early table checksum verification disabled
[ 0.000000] ACPI: RSDP 0x00000000000F3D80 000014 (v00 BOCHS )
[ 0.000000] ACPI: RSDT 0x000000001FFE0E17 00003C (v01 BOCHS BXPCRSDT
00000001 BXPC 00000001)
[ 0.000000] ACPI: FACP 0x000000001FFE089E 000074 (v01 BOCHS BXPCFACP
00000001 BXPC 00000001)
[ 0.000000] ACPI: DSDT 0x000000001FFDF040 00185E (v01 BOCHS BXPCDSDT
00000001 BXPC 00000001)
[ 0.000000] ACPI: FACS 0x000000001FFDF000 000040
[ 0.000000] ACPI: APIC 0x000000001FFE0912 000078 (v01 BOCHS BXPCAPIC
00000001 BXPC 00000001)
[ 0.000000] ACPI: HPET 0x000000001FFE098A 000038 (v01 BOCHS BXPCHPET
00000001 BXPC 00000001)
[ 0.000000] ACPI: SRAT 0x000000001FFE09C2 000108 (v01 BOCHS BXPCSRAT
00000001 BXPC 00000001)
[ 0.000000] ACPI: SSDT 0x000000001FFE0ACA 00026D (v01 BOCHS NVDIMM
00000001 BXPC 00000001)
[ 0.000000] ACPI: NFIT 0x000000001FFE0D37 0000E0 (v01 BOCHS BXPCNFIT
00000001 BXPC 00000001)
[ 0.000000] ACPI: Local APIC address 0xfee00000
[ 0.000000] kvm-clock: Using msrs 4b564d01 and 4b564d00
[ 0.000000] kvm-clock: cpu 0, msr 0:1ffdb001, primary cpu clock
[ 0.000000] kvm-clock: using sched offset of 134980024 cycles
[ 0.000000] clocksource: kvm-clock: mask: 0xffffffffffffffff max_cycles:
0x1cd42e4dffb, max_idle_ns: 881590591483 ns
[ 0.000000] Zone ranges:
[ 0.000000] DMA [mem 0x0000000000001000-0x0000000000ffffff]
[ 0.000000] DMA32 [mem 0x0000000001000000-0x000000001ffdefff]
[ 0.000000] Normal empty
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000000001000-0x000000000009efff]
[ 0.000000] node 0: [mem 0x0000000000100000-0x000000001ffdefff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000000001000-0x000000001ffdefff]
[ 0.000000] On node 0 totalpages: 130941
[ 0.000000] DMA zone: 64 pages used for memmap
[ 0.000000] DMA zone: 21 pages reserved
[ 0.000000] DMA zone: 3998 pages, LIFO batch:0
[ 0.000000] DMA32 zone: 1984 pages used for memmap
[ 0.000000] DMA32 zone: 126943 pages, LIFO batch:31
[ 0.000000] ACPI: Local APIC address 0xfee00000
[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0xff] dfl dfl lint[0x1])
[ 0.000000] IOAPIC[0]: apic_id 0, version 17, 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 5 global_irq 5 high level)
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 10 global_irq 10 high level)
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 11 global_irq 11 high level)
[ 0.000000] ACPI: IRQ0 used by override.
[ 0.000000] ACPI: IRQ5 used by override.
[ 0.000000] ACPI: IRQ9 used by override.
[ 0.000000] ACPI: IRQ10 used by override.
[ 0.000000] ACPI: IRQ11 used by override.
[ 0.000000] Using ACPI (MADT) for SMP configuration information
[ 0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000
[ 0.000000] smpboot: Allowing 1 CPUs, 0 hotplug CPUs
[ 0.000000] e820: [mem 0x20000000-0xfeffbfff] available for PCI devices
[ 0.000000] Booting paravirtualized kernel on KVM
[ 0.000000] clocksource: refined-jiffies: mask: 0xffffffff max_cycles:
0xffffffff, max_idle_ns: 1910969940391419 ns
[ 0.000000] setup_percpu: NR_CPUS:240 nr_cpumask_bits:240 nr_cpu_ids:1
nr_node_ids:1
[ 0.000000] percpu: Embedded 42 pages/cpu @ffff88001fc00000 s131800 r8192
d32040 u2097152
[ 0.000000] pcpu-alloc: s131800 r8192 d32040 u2097152 alloc=1*2097152
[ 0.000000] pcpu-alloc: [0] 0
[ 0.000000] KVM setup async PF for cpu 0
[ 0.000000] kvm-stealtime: cpu 0, msr 1fc14e80
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 128872
[ 0.000000] Kernel command line: root=/dev/pmem0 ro console=hvc0
[ 0.000000] PID hash table entries: 2048 (order: 2, 16384 bytes)
[ 0.000000] Dentry cache hash table entries: 65536 (order: 7, 524288 bytes)
[ 0.000000] Inode-cache hash table entries: 32768 (order: 6, 262144 bytes)
[ 0.000000] Memory: 492988K/523764K available (10248K kernel code, 601K
rwdata, 2812K rodata, 832K init, 524K bss, 30776K reserved, 0K cma-reserved)
[ 0.000000] Kernel/User page tables isolation: enabled
[ 0.001000] Hierarchical RCU implementation.
[ 0.001000] RCU restricting CPUs from NR_CPUS=240 to nr_cpu_ids=1.
[ 0.001000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
[ 0.001000] NR_IRQS: 15616, nr_irqs: 256, preallocated irqs: 16
[ 0.001000] Offload RCU callbacks from CPUs: .
[ 0.001000] Console: colour *CGA 80x25
[ 0.001000] clocksource: hpet: mask: 0xffffffff max_cycles: 0xffffffff,
max_idle_ns: 19112604467 ns
[ 0.001000] hpet clockevent registered
[ 0.001008] tsc: Detected 2494.222 MHz processor
[ 0.001012] Calibrating delay loop (skipped) preset value.. 4988.44 BogoMIPS
(lpj=2494222)
[ 0.001012] pid_max: default: 32768 minimum: 301
[ 0.001021] ACPI: Core revision 20170728
[ 0.001826] ACPI: 2 ACPI AML tables successfully acquired and loaded
[ 0.001875] Security Framework initialized
[ 0.001888] Mount-cache hash table entries: 1024 (order: 1, 8192 bytes)
[ 0.001890] Mountpoint-cache hash table entries: 1024 (order: 1, 8192 bytes)
[ 0.002135] Last level iTLB entries: 4KB 0, 2MB 0, 4MB 0
[ 0.002136] Last level dTLB entries: 4KB 0, 2MB 0, 4MB 0, 1GB 0
[ 0.002139] Spectre V2 : Mitigation: Full generic retpoline
[ 0.002140] Spectre V2 : Spectre v2 / SpectreRSB mitigation: Filling RSB on
context switch
[ 0.002140] Spectre V2 : Spectre v2 mitigation: Enabling Indirect Branch
Prediction Barrier
[ 0.002141] Spectre V2 : Enabling Restricted Speculation for firmware calls
[ 0.002142] Speculative Store Bypass: Mitigation: Speculative Store Bypass
disabled via prctl and seccomp
[ 0.007969] Freeing SMP alternatives memory: 32K
[ 0.008509] smpboot: Max logical packages: 1
[ 0.008860] x2apic enabled
[ 0.009006] Switched APIC routing to physical x2apic.
[ 0.011000] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[ 0.011000] TSC deadline timer enabled
[ 0.011000] smpboot: CPU0: Intel(R) Core(TM) i5-4200M CPU @ 2.50GHz (family:
0x6, model: 0x3c, stepping: 0x3)
[ 0.011000] Performance Events: Haswell events, Intel PMU driver.
[ 0.011000] ... version: 2
[ 0.011000] ... bit width: 48
[ 0.011000] ... generic registers: 4
[ 0.011000] ... value mask: 0000ffffffffffff
[ 0.011000] ... max period: 000000007fffffff
[ 0.011000] ... fixed-purpose events: 3
[ 0.011000] ... event mask: 000000070000000f
[ 0.011000] Hierarchical SRCU implementation.
[ 0.011000] smp: Bringing up secondary CPUs ...
[ 0.011000] smp: Brought up 1 node, 1 CPU
[ 0.011000] smpboot: Total of 1 processors activated (4988.44 BogoMIPS)
[ 0.011000] devtmpfs: initialized
[ 0.011000] x86/mm: Memory block size: 128MB
[ 0.011082] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff,
max_idle_ns: 1911260446275000 ns
[ 0.011087] futex hash table entries: 256 (order: 2, 16384 bytes)
[ 0.011241] NET: Registered protocol family 16
[ 0.011381] cpuidle: using governor menu
[ 0.011399] ACPI: bus type PCI registered
[ 0.011401] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
[ 0.011525] PCI: Using configuration type 1 for base access
[ 0.011550] core: PMU erratum BJ122, BV98, HSD29 workaround disabled, HT off
[ 0.012658] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
[ 0.012660] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[ 0.012746] ACPI: Added _OSI(Module Device)
[ 0.012747] ACPI: Added _OSI(Processor Device)
[ 0.012748] ACPI: Added _OSI(3.0 _SCP Extensions)
[ 0.012749] ACPI: Added _OSI(Processor Aggregator Device)
[ 0.013820] ACPI: Interpreter enabled
[ 0.013825] ACPI: (supports S0 S5)
[ 0.013826] ACPI: Using IOAPIC for interrupt routing
[ 0.013833] PCI: Using host bridge windows from ACPI; if necessary, use
"pci=nocrs" and report a bug
[ 0.014000] ACPI: Enabled 4 GPEs in block 00 to 0F
[ 0.015809] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[ 0.015813] acpi PNP0A03:00: _OSC: OS supports [ASPM ClockPM Segments MSI]
[ 0.015817] acpi PNP0A03:00: _OSC failed (AE_NOT_FOUND); disabling ASPM
[ 0.015820] acpi PNP0A03:00: fail to add MMCONFIG information, can't access
extended PCI configuration space under this bridge.
[ 0.016059] acpiphp: Slot [2] registered
[ 0.016095] acpiphp: Slot [3] registered
[ 0.016130] acpiphp: Slot [4] registered
[ 0.016166] acpiphp: Slot [5] registered
[ 0.016201] acpiphp: Slot [6] registered
[ 0.016236] acpiphp: Slot [7] registered
[ 0.016272] acpiphp: Slot [8] registered
[ 0.016307] acpiphp: Slot [9] registered
[ 0.016342] acpiphp: Slot [10] registered
[ 0.016377] acpiphp: Slot [11] registered
[ 0.016414] acpiphp: Slot [12] registered
[ 0.016450] acpiphp: Slot [13] registered
[ 0.016485] acpiphp: Slot [14] registered
[ 0.016519] acpiphp: Slot [15] registered
[ 0.016555] acpiphp: Slot [16] registered
[ 0.016589] acpiphp: Slot [17] registered
[ 0.016626] acpiphp: Slot [18] registered
[ 0.016661] acpiphp: Slot [19] registered
[ 0.016696] acpiphp: Slot [20] registered
[ 0.016732] acpiphp: Slot [21] registered
[ 0.016766] acpiphp: Slot [22] registered
[ 0.016801] acpiphp: Slot [23] registered
[ 0.016837] acpiphp: Slot [24] registered
[ 0.016901] acpiphp: Slot [25] registered
[ 0.016936] acpiphp: Slot [26] registered
[ 0.016971] acpiphp: Slot [27] registered
[ 0.017006] acpiphp: Slot [28] registered
[ 0.017042] acpiphp: Slot [29] registered
[ 0.017076] acpiphp: Slot [30] registered
[ 0.017112] acpiphp: Slot [31] registered
[ 0.017125] PCI host bridge to bus 0000:00
[ 0.017127] pci_bus 0000:00: root bus resource [io 0x0000-0x0cf7 window]
[ 0.017129] pci_bus 0000:00: root bus resource [io 0x0d00-0xffff window]
[ 0.017130] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff
window]
[ 0.017132] pci_bus 0000:00: root bus resource [mem 0x20000000-0xfebfffff
window]
[ 0.017133] pci_bus 0000:00: root bus resource [mem 0x180000000-0x1ffffffff
window]
[ 0.017135] pci_bus 0000:00: root bus resource [bus 00-ff]
[ 0.017179] pci 0000:00:00.0: [8086:1237] type 00 class 0x060000
[ 0.017695] pci 0000:00:01.0: [8086:7000] type 00 class 0x060100
[ 0.018434] pci 0000:00:01.1: [8086:7010] type 00 class 0x010180
[ 0.020223] pci 0000:00:01.1: reg 0x20: [io 0xc040-0xc04f]
[ 0.021037] pci 0000:00:01.1: legacy IDE quirk: reg 0x10: [io 0x01f0-0x01f7]
[ 0.021039] pci 0000:00:01.1: legacy IDE quirk: reg 0x14: [io 0x03f6]
[ 0.021040] pci 0000:00:01.1: legacy IDE quirk: reg 0x18: [io 0x0170-0x0177]
[ 0.021042] pci 0000:00:01.1: legacy IDE quirk: reg 0x1c: [io 0x0376]
[ 0.021230] pci 0000:00:01.3: [8086:7113] type 00 class 0x068000
[ 0.021834] pci 0000:00:01.3: quirk: [io 0x0600-0x063f] claimed by PIIX4
ACPI
[ 0.021856] pci 0000:00:01.3: quirk: [io 0x0700-0x070f] claimed by PIIX4 SMB
[ 0.022179] pci 0000:00:02.0: [1af4:1003] type 00 class 0x078000
[ 0.023936] pci 0000:00:02.0: reg 0x10: [io 0xc000-0xc03f]
[ 0.024490] pci 0000:00:02.0: reg 0x14: [mem 0xfebff000-0xfebfffff]
[ 0.027009] pci 0000:00:02.0: reg 0x20: [mem 0xfebf8000-0xfebfbfff 64bit
pref]
[ 0.028925] pci_bus 0000:00: on NUMA node 0
[ 0.029186] ACPI: PCI Interrupt Link [LNKA] (IRQs 5 *10 11)
[ 0.029286] ACPI: PCI Interrupt Link [LNKB] (IRQs 5 *10 11)
[ 0.029374] ACPI: PCI Interrupt Link [LNKC] (IRQs 5 10 *11)
[ 0.029459] ACPI: PCI Interrupt Link [LNKD] (IRQs 5 10 *11)
[ 0.029508] ACPI: PCI Interrupt Link [LNKS] (IRQs *9)
[ 0.029713] SCSI subsystem initialized
[ 0.029722] pps_core: LinuxPPS API ver. 1 registered
[ 0.029723] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo
Giometti <[email protected]>
[ 0.029725] PTP clock support registered
[ 0.029727] PCI: Using ACPI for IRQ routing
[ 0.029728] PCI: pci_cache_line_size set to 64 bytes
[ 0.029855] e820: reserve RAM buffer [mem 0x0009fc00-0x0009ffff]
[ 0.029856] e820: reserve RAM buffer [mem 0x1ffdf000-0x1fffffff]
[ 0.029968] clocksource: Switched to clocksource kvm-clock
[ 0.029976] pnp: PnP ACPI init
[ 0.029976] pnp 00:00: Plug and Play ACPI device, IDs PNP0b00 (active)
[ 0.029976] pnp 00:01: Plug and Play ACPI device, IDs PNP0303 (active)
[ 0.029976] pnp 00:02: Plug and Play ACPI device, IDs PNP0f13 (active)
[ 0.029976] pnp 00:03: [dma 2]
[ 0.029976] pnp 00:03: Plug and Play ACPI device, IDs PNP0700 (active)
[ 0.029976] pnp: PnP ACPI: found 4 devices
[ 0.029976] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7 window]
[ 0.029976] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff window]
[ 0.029976] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff window]
[ 0.029976] pci_bus 0000:00: resource 7 [mem 0x20000000-0xfebfffff window]
[ 0.029976] pci_bus 0000:00: resource 8 [mem 0x180000000-0x1ffffffff window]
[ 0.029993] NET: Registered protocol family 2
[ 0.030091] TCP established hash table entries: 4096 (order: 3, 32768 bytes)
[ 0.030097] TCP bind hash table entries: 4096 (order: 4, 65536 bytes)
[ 0.030104] TCP: Hash tables configured (established 4096 bind 4096)
[ 0.030113] UDP hash table entries: 256 (order: 1, 8192 bytes)
[ 0.030116] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
[ 0.030142] NET: Registered protocol family 1
[ 0.030148] pci 0000:00:00.0: Limiting direct PCI/PCI transfers
[ 0.030167] pci 0000:00:01.0: PIIX3: Enabling Passive Release
[ 0.030189] pci 0000:00:01.0: Activating ISA DMA hang workarounds
[ 0.030231] PCI: CLS 0 bytes, default 64
[ 0.030275] clocksource: tsc: mask: 0xffffffffffffffff max_cycles:
0x23f3e76dd04, max_idle_ns: 440795285707 ns
[ 0.030481] workingset: timestamp_bits=46 max_order=17 bucket_order=0
[ 0.030559] SGI XFS with security attributes, no debug enabled
[ 0.030647] 9p: Installing v9fs 9p2000 file system support
[ 0.031884] NET: Registered protocol family 38
[ 0.031898] Block layer SCSI generic (bsg) driver version 0.4 loaded (major
249)
[ 0.031900] io scheduler noop registered
[ 0.031901] io scheduler deadline registered (default)
[ 0.031912] io scheduler cfq registered
[ 0.031913] io scheduler mq-deadline registered
[ 0.031914] io scheduler kyber registered
[ 0.031964] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
[ 0.032005] input: Power Button as
/devices/LNXSYSTM:00/LNXPWRBN:00/input/input0
[ 0.032021] ACPI: Power Button [PWRF]
[ 0.055432] ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 10
[ 0.057373] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[ 0.073838] console [hvc0] enabled
[ 0.074847] brd: module loaded
[ 0.081127] loop: module loaded
[ 0.081466] pmem0: detected capacity change from 0 to 62914560
[ 0.081628] tun: Universal TUN/TAP device driver, 1.6
[ 0.081715] ixgbe: Intel(R) 10 Gigabit PCI Express Network Driver - version
5.1.0-k
[ 0.081789] ixgbe: Copyright (c) 1999-2016 Intel Corporation.
[ 0.081917] ixgbevf: Intel(R) 10 Gigabit PCI Express Virtual Function
Network Driver - version 4.1.0-k
[ 0.082019] ixgbevf: Copyright (c) 2009 - 2015 Intel Corporation.
[ 0.082112] i40e: Intel(R) Ethernet Connection XL710 Network Driver -
version 2.1.14-k
[ 0.082184] i40e: Copyright (c) 2013 - 2014 Intel Corporation.
[ 0.082275] i40evf: Intel(R) 40-10 Gigabit Virtual Function Network Driver -
version 3.0.0-k
[ 0.082358] Copyright (c) 2013 - 2015 Intel Corporation.
[ 0.082462] VFIO - User Level meta-driver version: 0.3
[ 0.082567] IR NEC protocol handler initialized
[ 0.082618] IR RC5(x/sz) protocol handler initialized
[ 0.082670] IR RC6 protocol handler initialized
[ 0.082712] IR JVC protocol handler initialized
[ 0.082764] IR Sony protocol handler initialized
[ 0.082807] IR SANYO protocol handler initialized
[ 0.082850] IR Sharp protocol handler initialized
[ 0.082910] IR MCE Keyboard/mouse protocol handler initialized
[ 0.082972] IR XMP protocol handler initialized
[ 0.083094] device-mapper: ioctl: 4.37.0-ioctl (2017-09-20) initialised:
[email protected]
[ 0.083236] Netfilter messages via NETLINK v0.30.
[ 0.083290] nfnl_acct: registering with nfnetlink.
[ 0.083372] nf_conntrack version 0.5.0 (4096 buckets, 16384 max)
[ 0.083467] ctnetlink v0.93: registering with nfnetlink.
[ 0.083571] xt_time: kernel timezone is -0000
[ 0.083622] ip_set: protocol 6
[ 0.083669] IPVS: Registered protocols (TCP, UDP, SCTP, AH, ESP)
[ 0.083739] IPVS: Connection hash table configured (size=4096,
memory=64Kbytes)
[ 0.083821] random: get_random_bytes called from ip_vs_conn_init+0xec/0xf1
with crng_init=0
[ 0.083972] IPVS: ipvs loaded.
[ 0.084036] IPVS: [rr] scheduler registered.
[ 0.084089] IPVS: [wrr] scheduler registered.
[ 0.084133] IPVS: [lc] scheduler registered.
[ 0.084175] IPVS: [wlc] scheduler registered.
[ 0.084218] IPVS: [fo] scheduler registered.
[ 0.084263] IPVS: [ovf] scheduler registered.
[ 0.084308] IPVS: [lblc] scheduler registered.
[ 0.084358] IPVS: [lblcr] scheduler registered.
[ 0.084408] IPVS: [dh] scheduler registered.
[ 0.084451] IPVS: [sh] scheduler registered.
[ 0.084493] IPVS: [sed] scheduler registered.
[ 0.084544] IPVS: [nq] scheduler registered.
[ 0.084597] IPVS: ftp: loaded support on port[0] = 21
[ 0.084646] IPVS: [sip] pe registered.
[ 0.084750] ip_tables: (C) 2000-2006 Netfilter Core Team
[ 0.084823] ipt_CLUSTERIP: ClusterIP Version 0.8 loaded successfully
[ 0.084916] arp_tables: arp_tables: (C) 2002 David S. Miller
[ 0.084981] Initializing XFRM netlink socket
[ 0.085069] NET: Registered protocol family 10
[ 0.085254] Segment Routing with IPv6
[ 0.085305] NET: Registered protocol family 17
[ 0.085365] 9pnet: Installing 9P2000 support
[ 0.085446] sched_clock: Marking stable (85033745, 0)->(175671879, -90638134)
[ 0.085569] registered taskstats version 1
[ 0.085994] EXT4-fs (pmem0): mounting ext2 file system using the ext4
subsystem
[ 0.086259] EXT4-fs (pmem0): mounted filesystem without journal. Opts: (null)
[ 0.086333] VFS: Mounted root (ext2 filesystem) readonly on device 259:0.
[ 0.086449] devtmpfs: mounted
[ 0.086835] Freeing unused kernel memory: 832K
[ 0.089055] Write protecting the kernel read-only data: 16384k
[ 0.089521] Freeing unused kernel memory: 2020K
[ 0.091785] Freeing unused kernel memory: 1284K
[ 0.094677] EXT4-fs (pmem0): warning: mounting unchecked fs, running e2fsck
is recommended
[ 0.094952] EXT4-fs (pmem0): re-mounted. Opts:
block_validity,barrier,user_xattr,acl
[ 0.105154] random: dd: uninitialized urandom read (512 bytes read)
[ 0.000000] Linux version 4.14.67 (stefano@stelenovo) (gcc version 7.3.0
(Buildroot 2018.11-rc1-00017-g6a74acb6fb)) #3 SMP Mon Dec 3 15:56:35 CET 2018
[ 0.000000] Command line: root=/dev/pmem0 ro console=hvc0
[ 0.000000] KERNEL supported cpus:
[ 0.000000] Intel GenuineIntel
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point
registers'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
[ 0.000000] x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256
[ 0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 bytes,
using 'standard' format.
[ 0.000000] e820: BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
[ 0.000000] BIOS-e820: [mem 0x000000000009fc00-0x000000000009ffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000000f0000-0x00000000000fffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000001fffcfff] usable
[ 0.000000] BIOS-e820: [mem 0x000000001fffd000-0x000000001fffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000080000000-0x000000008fffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000feffc000-0x00000000feffffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000fffc0000-0x00000000ffffffff] reserved
[ 0.000000] NX (Execute Disable) protection: active
[ 0.000000] Hypervisor detected: KVM
[ 0.000000] tsc: Fast TSC calibration failed
[ 0.000000] tsc: Unable to calibrate against PIT
[ 0.000000] tsc: No reference (HPET/PMTIMER) available
[ 0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[ 0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[ 0.000000] e820: last_pfn = 0x1fffd max_arch_pfn = 0x400000000
[ 0.000000] MTRR default type: write-back
[ 0.000000] MTRR fixed ranges enabled:
[ 0.000000] 00000-9FFFF write-back
[ 0.000000] A0000-BFFFF uncachable
[ 0.000000] C0000-FFFFF write-protect
[ 0.000000] MTRR variable ranges enabled:
[ 0.000000] 0 base 0020000000 mask FF20000000 uncachable
[ 0.000000] 1 disabled
[ 0.000000] 2 disabled
[ 0.000000] 3 disabled
[ 0.000000] 4 disabled
[ 0.000000] 5 disabled
[ 0.000000] 6 disabled
[ 0.000000] 7 disabled
[ 0.000000] x86/PAT: Configuration [0-7]: WB WT UC- UC WB WT UC- UC
[ 0.000000] found SMP MP-table at [mem 0x000f3ee0-0x000f3eef] mapped at
[ffffffffff200ee0]
[ 0.000000] Base memory trampoline at [ffff880000099000] 99000 size 24576
[ 0.000000] Using GB pages for direct mapping
[ 0.000000] BRK [0x024f3000, 0x024f3fff] PGTABLE
[ 0.000000] BRK [0x024f4000, 0x024f4fff] PGTABLE
[ 0.000000] BRK [0x024f5000, 0x024f5fff] PGTABLE
[ 0.000000] BRK [0x024f6000, 0x024f6fff] PGTABLE
[ 0.000000] ACPI: Early table checksum verification disabled
[ 0.000000] ACPI: RSDP 0x00000000000F3D80 000024 (v02 BOCHS )
[ 0.000000] ACPI: XSDT 0x000000001FFFEF7C 000054 (v01 BOCHS BXPCXSDT
00000001 BXPC 00000001)
[ 0.000000] ACPI: FACP 0x000000001FFFE967 00010C (v05 BOCHS BXPCFACP
00000001 BXPC 00000001)
[ 0.000000] ACPI: DSDT 0x000000001FFFD7C0 0011A7 (v02 BOCHS BXPCDSDT
00000001 BXPC 00000001)
[ 0.000000] ACPI: APIC 0x000000001FFFEA73 000078 (v01 BOCHS BXPCAPIC
00000001 BXPC 00000001)
[ 0.000000] ACPI: SRAT 0x000000001FFFEAEB 000108 (v01 BOCHS BXPCSRAT
00000001 BXPC 00000001)
[ 0.000000] ACPI: MCFG 0x000000001FFFEBF3 00003C (v01 BOCHS BXPCMCFG
00000001 BXPC 00000001)
[ 0.000000] ACPI: SSDT 0x000000001FFFEC2F 00026D (v01 BOCHS NVDIMM
00000001 BXPC 00000001)
[ 0.000000] ACPI: NFIT 0x000000001FFFEE9C 0000E0 (v01 BOCHS BXPCNFIT
00000001 BXPC 00000001)
[ 0.000000] ACPI: Local APIC address 0xfee00000
[ 0.000000] kvm-clock: Using msrs 4b564d01 and 4b564d00
[ 0.000000] kvm-clock: cpu 0, msr 0:1fff9001, primary cpu clock
[ 0.000000] kvm-clock: using sched offset of 577000846 cycles
[ 0.000000] clocksource: kvm-clock: mask: 0xffffffffffffffff max_cycles:
0x1cd42e4dffb, max_idle_ns: 881590591483 ns
[ 0.000000] Zone ranges:
[ 0.000000] DMA [mem 0x0000000000001000-0x0000000000ffffff]
[ 0.000000] DMA32 [mem 0x0000000001000000-0x000000001fffcfff]
[ 0.000000] Normal empty
[ 0.000000] Movable zone start for each node
[ 0.000000] Early memory node ranges
[ 0.000000] node 0: [mem 0x0000000000001000-0x000000000009efff]
[ 0.000000] node 0: [mem 0x0000000000100000-0x000000001fffcfff]
[ 0.000000] Initmem setup node 0 [mem 0x0000000000001000-0x000000001fffcfff]
[ 0.000000] On node 0 totalpages: 130971
[ 0.000000] DMA zone: 64 pages used for memmap
[ 0.000000] DMA zone: 21 pages reserved
[ 0.000000] DMA zone: 3998 pages, LIFO batch:0
[ 0.000000] DMA32 zone: 1984 pages used for memmap
[ 0.000000] DMA32 zone: 126973 pages, LIFO batch:31
[ 0.000000] ACPI: Local APIC address 0xfee00000
[ 0.000000] ACPI: LAPIC_NMI (acpi_id[0xff] dfl dfl lint[0x1])
[ 0.000000] IOAPIC[0]: apic_id 0, version 17, 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 5 global_irq 5 high level)
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 10 global_irq 10 high level)
[ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 11 global_irq 11 high level)
[ 0.000000] Using ACPI (MADT) for SMP configuration information
[ 0.000000] smpboot: Allowing 1 CPUs, 0 hotplug CPUs
[ 0.000000] e820: [mem 0x90000000-0xfeffbfff] available for PCI devices
[ 0.000000] Booting paravirtualized kernel on KVM
[ 0.000000] clocksource: refined-jiffies: mask: 0xffffffff max_cycles:
0xffffffff, max_idle_ns: 1910969940391419 ns
[ 0.000000] setup_percpu: NR_CPUS:240 nr_cpumask_bits:240 nr_cpu_ids:1
nr_node_ids:1
[ 0.000000] percpu: Embedded 42 pages/cpu @ffff88001fc00000 s131800 r8192
d32040 u2097152
[ 0.000000] pcpu-alloc: s131800 r8192 d32040 u2097152 alloc=1*2097152
[ 0.000000] pcpu-alloc: [0] 0
[ 0.000000] KVM setup async PF for cpu 0
[ 0.000000] kvm-stealtime: cpu 0, msr 1fc14e80
[ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 128902
[ 0.000000] Kernel command line: root=/dev/pmem0 ro console=hvc0
[ 0.000000] PID hash table entries: 2048 (order: 2, 16384 bytes)
[ 0.000000] Dentry cache hash table entries: 65536 (order: 7, 524288 bytes)
[ 0.000000] Inode-cache hash table entries: 32768 (order: 6, 262144 bytes)
[ 0.000000] Memory: 493108K/523884K available (10248K kernel code, 601K
rwdata, 2812K rodata, 832K init, 524K bss, 30776K reserved, 0K cma-reserved)
[ 0.000000] Kernel/User page tables isolation: enabled
[ 0.001000] Hierarchical RCU implementation.
[ 0.001000] RCU restricting CPUs from NR_CPUS=240 to nr_cpu_ids=1.
[ 0.001000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
[ 0.001000] NR_IRQS: 15616, nr_irqs: 256, preallocated irqs: 0
[ 0.001000] Offload RCU callbacks from CPUs: .
[ 0.001000] Console: colour *CGA 80x25
[ 0.001000] tsc: Detected 2494.222 MHz processor
[ 0.001000] Calibrating delay loop (skipped) preset value.. 4988.44 BogoMIPS
(lpj=2494222)
[ 0.001000] pid_max: default: 32768 minimum: 301
[ 0.001000] ACPI: Core revision 20170728
[ 0.001000] ACPI: 2 ACPI AML tables successfully acquired and loaded
[ 0.001000] Security Framework initialized
[ 0.001000] Mount-cache hash table entries: 1024 (order: 1, 8192 bytes)
[ 0.001000] Mountpoint-cache hash table entries: 1024 (order: 1, 8192 bytes)
[ 0.001000] Last level iTLB entries: 4KB 0, 2MB 0, 4MB 0
[ 0.001000] Last level dTLB entries: 4KB 0, 2MB 0, 4MB 0, 1GB 0
[ 0.001000] Spectre V2 : Mitigation: Full generic retpoline
[ 0.001000] Spectre V2 : Spectre v2 / SpectreRSB mitigation: Filling RSB on
context switch
[ 0.001000] Spectre V2 : Spectre v2 mitigation: Enabling Indirect Branch
Prediction Barrier
[ 0.001000] Spectre V2 : Enabling Restricted Speculation for firmware calls
[ 0.001000] Speculative Store Bypass: Mitigation: Speculative Store Bypass
disabled via prctl and seccomp
[ 0.001000] Freeing SMP alternatives memory: 32K
[ 0.001000] smpboot: Max logical packages: 1
[ 0.001000] x2apic enabled
[ 0.001000] Switched APIC routing to physical x2apic.
[ 0.001000] TSC deadline timer enabled
[ 0.001000] smpboot: CPU0: Intel(R) Core(TM) i5-4200M CPU @ 2.50GHz (family:
0x6, model: 0x3c, stepping: 0x3)
[ 0.001000] Performance Events: Haswell events, Intel PMU driver.
[ 0.001000] ... version: 2
[ 0.001000] ... bit width: 48
[ 0.001000] ... generic registers: 4
[ 0.001000] ... value mask: 0000ffffffffffff
[ 0.001000] ... max period: 000000007fffffff
[ 0.001000] ... fixed-purpose events: 3
[ 0.001000] ... event mask: 000000070000000f
[ 0.001000] Hierarchical SRCU implementation.
[ 0.001000] smp: Bringing up secondary CPUs ...
[ 0.001000] smp: Brought up 1 node, 1 CPU
[ 0.001000] smpboot: Total of 1 processors activated (4988.44 BogoMIPS)
[ 0.001000] devtmpfs: initialized
[ 0.001000] x86/mm: Memory block size: 128MB
[ 0.001000] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff,
max_idle_ns: 1911260446275000 ns
[ 0.001000] futex hash table entries: 256 (order: 2, 16384 bytes)
[ 0.001000] NET: Registered protocol family 16
[ 0.001000] cpuidle: using governor menu
[ 0.001000] ACPI: bus type PCI registered
[ 0.001000] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
[ 0.001000] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem
0x80000000-0x8fffffff] (base 0x80000000)
[ 0.001000] PCI: MMCONFIG at [mem 0x80000000-0x8fffffff] reserved in E820
[ 0.001000] PCI: Using configuration type 1 for base access
[ 0.001000] core: PMU erratum BJ122, BV98, HSD29 workaround disabled, HT off
[ 0.001638] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
[ 0.001640] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[ 0.001725] ACPI: Added _OSI(Module Device)
[ 0.001726] ACPI: Added _OSI(Processor Device)
[ 0.001727] ACPI: Added _OSI(3.0 _SCP Extensions)
[ 0.001728] ACPI: Added _OSI(Processor Aggregator Device)
[ 0.002039] ACPI: Interpreter enabled
[ 0.002043] ACPI: (supports S0 S5)
[ 0.002044] ACPI: Using IOAPIC for interrupt routing
[ 0.002051] PCI: Using host bridge windows from ACPI; if necessary, use
"pci=nocrs" and report a bug
[ 0.003159] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[ 0.003163] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM
Segments MSI]
[ 0.003244] acpi PNP0A08:00: _OSC: OS now controls [PCIeHotplug PME AER
PCIeCapability]
[ 0.003428] acpiphp: Slot [1] registered
[ 0.003464] acpiphp: Slot [2] registered
[ 0.003498] acpiphp: Slot [3] registered
[ 0.003536] acpiphp: Slot [4] registered
[ 0.003592] acpiphp: Slot [5] registered
[ 0.003650] acpiphp: Slot [6] registered
[ 0.003705] acpiphp: Slot [7] registered
[ 0.003747] acpiphp: Slot [8] registered
[ 0.003781] acpiphp: Slot [9] registered
[ 0.003816] acpiphp: Slot [10] registered
[ 0.003851] acpiphp: Slot [11] registered
[ 0.003886] acpiphp: Slot [12] registered
[ 0.003920] acpiphp: Slot [13] registered
[ 0.003955] acpiphp: Slot [14] registered
[ 0.003989] acpiphp: Slot [15] registered
[ 0.004027] acpiphp: Slot [16] registered
[ 0.004062] acpiphp: Slot [17] registered
[ 0.004097] acpiphp: Slot [18] registered
[ 0.004131] acpiphp: Slot [19] registered
[ 0.004187] acpiphp: Slot [20] registered
[ 0.004221] acpiphp: Slot [21] registered
[ 0.004256] acpiphp: Slot [22] registered
[ 0.004290] acpiphp: Slot [23] registered
[ 0.004325] acpiphp: Slot [24] registered
[ 0.004360] acpiphp: Slot [25] registered
[ 0.004404] acpiphp: Slot [26] registered
[ 0.004443] acpiphp: Slot [27] registered
[ 0.004490] acpiphp: Slot [28] registered
[ 0.004538] acpiphp: Slot [29] registered
[ 0.004576] acpiphp: Slot [30] registered
[ 0.004636] acpiphp: Slot [31] registered
[ 0.004649] PCI host bridge to bus 0000:00
[ 0.004651] pci_bus 0000:00: root bus resource [io 0x0000-0x0cf7 window]
[ 0.004652] pci_bus 0000:00: root bus resource [io 0x0d00-0xffff window]
[ 0.004654] pci_bus 0000:00: root bus resource [mem 0x000a0000-0x000bffff
window]
[ 0.004655] pci_bus 0000:00: root bus resource [mem 0x90000000-0xfec00000
window]
[ 0.004657] pci_bus 0000:00: root bus resource [mem 0x180000000-0x97fffffff
window]
[ 0.004658] pci_bus 0000:00: root bus resource [bus 00-ff]
[ 0.004701] pci 0000:00:00.0: [8086:0d57] type 00 class 0x060000
[ 0.005378] pci 0000:00:01.0: [1af4:1003] type 00 class 0x078000
[ 0.006010] pci 0000:00:01.0: reg 0x10: [io 0xc000-0xc03f]
[ 0.006732] pci 0000:00:01.0: reg 0x14: [mem 0xfebff000-0xfebfffff]
[ 0.008394] pci 0000:00:01.0: reg 0x20: [mem 0xfebf8000-0xfebfbfff 64bit
pref]
[ 0.009833] pci_bus 0000:00: on NUMA node 0
[ 0.010103] SCSI subsystem initialized
[ 0.010114] pps_core: LinuxPPS API ver. 1 registered
[ 0.010115] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo
Giometti <[email protected]>
[ 0.010117] PTP clock support registered
[ 0.010118] PCI: Using ACPI for IRQ routing
[ 0.089044] PCI: pci_cache_line_size set to 64 bytes
[ 0.089092] e820: reserve RAM buffer [mem 0x0009fc00-0x0009ffff]
[ 0.089094] e820: reserve RAM buffer [mem 0x1fffd000-0x1fffffff]
[ 0.089209] clocksource: Switched to clocksource kvm-clock
[ 0.089278] pnp: PnP ACPI init
[ 0.089404] pnp: PnP ACPI: found 0 devices
[ 0.089888] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7 window]
[ 0.089889] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff window]
[ 0.089890] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff window]
[ 0.089891] pci_bus 0000:00: resource 7 [mem 0x90000000-0xfec00000 window]
[ 0.089892] pci_bus 0000:00: resource 8 [mem 0x180000000-0x97fffffff window]
[ 0.089932] NET: Registered protocol family 2
[ 0.089959] TCP established hash table entries: 4096 (order: 3, 32768 bytes)
[ 0.089959] TCP bind hash table entries: 4096 (order: 4, 65536 bytes)
[ 0.089959] TCP: Hash tables configured (established 4096 bind 4096)
[ 0.089959] UDP hash table entries: 256 (order: 1, 8192 bytes)
[ 0.089959] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes)
[ 0.089959] NET: Registered protocol family 1
[ 0.089959] PCI: CLS 0 bytes, default 64
[ 0.089965] clocksource: tsc: mask: 0xffffffffffffffff max_cycles:
0x23f3e76dd04, max_idle_ns: 440795285707 ns
[ 0.089984] platform rtc_cmos: registered platform RTC device (no PNP device
found)
[ 0.090198] workingset: timestamp_bits=46 max_order=17 bucket_order=0
[ 0.090273] SGI XFS with security attributes, no debug enabled
[ 0.090354] 9p: Installing v9fs 9p2000 file system support
[ 0.091348] NET: Registered protocol family 38
[ 0.091356] Block layer SCSI generic (bsg) driver version 0.4 loaded (major
249)
[ 0.091357] io scheduler noop registered
[ 0.091358] io scheduler deadline registered (default)
[ 0.091367] io scheduler cfq registered
[ 0.091368] io scheduler mq-deadline registered
[ 0.091369] io scheduler kyber registered
[ 0.091396] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
[ 0.093467] nfit ACPI0012:00: found a zero length table '0' parsing nfit
[ 0.093817] virtio-pci 0000:00:01.0: can't derive routing for PCI INT A
[ 0.093819] virtio-pci 0000:00:01.0: PCI INT A: not connected
[ 0.095027] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[ 0.107672] console [hvc0] enabled
[ 0.110137] brd: module loaded
[ 0.112387] loop: module loaded
[ 0.112695] pmem0: detected capacity change from 0 to 62914560
[ 0.112844] tun: Universal TUN/TAP device driver, 1.6
[ 0.112943] ixgbe: Intel(R) 10 Gigabit PCI Express Network Driver - version
5.1.0-k
[ 0.113085] ixgbe: Copyright (c) 1999-2016 Intel Corporation.
[ 0.113231] ixgbevf: Intel(R) 10 Gigabit PCI Express Virtual Function
Network Driver - version 4.1.0-k
[ 0.113335] ixgbevf: Copyright (c) 2009 - 2015 Intel Corporation.
[ 0.113424] i40e: Intel(R) Ethernet Connection XL710 Network Driver -
version 2.1.14-k
[ 0.113511] i40e: Copyright (c) 2013 - 2014 Intel Corporation.
[ 0.113602] i40evf: Intel(R) 40-10 Gigabit Virtual Function Network Driver -
version 3.0.0-k
[ 0.113703] Copyright (c) 2013 - 2015 Intel Corporation.
[ 0.113804] VFIO - User Level meta-driver version: 0.3
[ 0.113899] IR NEC protocol handler initialized
[ 0.114026] IR RC5(x/sz) protocol handler initialized
[ 0.114089] IR RC6 protocol handler initialized
[ 0.114143] IR JVC protocol handler initialized
[ 0.114203] IR Sony protocol handler initialized
[ 0.114257] IR SANYO protocol handler initialized
[ 0.114311] IR Sharp protocol handler initialized
[ 0.114365] IR MCE Keyboard/mouse protocol handler initialized
[ 0.114439] IR XMP protocol handler initialized
[ 0.114562] device-mapper: ioctl: 4.37.0-ioctl (2017-09-20) initialised:
[email protected]
[ 0.114730] Netfilter messages via NETLINK v0.30.
[ 0.114794] nfnl_acct: registering with nfnetlink.
[ 0.114874] nf_conntrack version 0.5.0 (4096 buckets, 16384 max)
[ 0.114996] ctnetlink v0.93: registering with nfnetlink.
[ 0.115120] xt_time: kernel timezone is -0000
[ 0.115185] ip_set: protocol 6
[ 0.115237] IPVS: Registered protocols (TCP, UDP, SCTP, AH, ESP)
[ 0.115308] IPVS: Connection hash table configured (size=4096,
memory=64Kbytes)
[ 0.115396] random: get_random_bytes called from ip_vs_conn_init+0xec/0xf1
with crng_init=0
[ 0.115509] IPVS: ipvs loaded.
[ 0.115558] IPVS: [rr] scheduler registered.
[ 0.115617] IPVS: [wrr] scheduler registered.
[ 0.115675] IPVS: [lc] scheduler registered.
[ 0.115735] IPVS: [wlc] scheduler registered.
[ 0.115794] IPVS: [fo] scheduler registered.
[ 0.115852] IPVS: [ovf] scheduler registered.
[ 0.115913] IPVS: [lblc] scheduler registered.
[ 0.115982] IPVS: [lblcr] scheduler registered.
[ 0.116070] IPVS: [dh] scheduler registered.
[ 0.116132] IPVS: [sh] scheduler registered.
[ 0.116190] IPVS: [sed] scheduler registered.
[ 0.116249] IPVS: [nq] scheduler registered.
[ 0.116309] IPVS: ftp: loaded support on port[0] = 21
[ 0.116370] IPVS: [sip] pe registered.
[ 0.116481] ip_tables: (C) 2000-2006 Netfilter Core Team
[ 0.116564] ipt_CLUSTERIP: ClusterIP Version 0.8 loaded successfully
[ 0.116639] arp_tables: arp_tables: (C) 2002 David S. Miller
[ 0.116712] Initializing XFRM netlink socket
[ 0.116793] NET: Registered protocol family 10
[ 0.116986] Segment Routing with IPv6
[ 0.117071] NET: Registered protocol family 17
[ 0.117147] 9pnet: Installing 9P2000 support
[ 0.117236] sched_clock: Marking stable (117048932, 0)->(211518473,
-94469541)
[ 0.117371] registered taskstats version 1
[ 0.117675] EXT4-fs (pmem0): mounting ext2 file system using the ext4
subsystem
[ 0.117901] EXT4-fs (pmem0): mounted filesystem without journal. Opts: (null)
[ 0.118037] VFS: Mounted root (ext2 filesystem) readonly on device 259:0.
[ 0.118198] devtmpfs: mounted
[ 0.118610] Freeing unused kernel memory: 832K
[ 0.120031] Write protecting the kernel read-only data: 16384k
[ 0.120451] Freeing unused kernel memory: 2020K
[ 0.122936] Freeing unused kernel memory: 1284K
[ 0.125789] EXT4-fs (pmem0): warning: mounting unchecked fs, running e2fsck
is recommended
[ 0.126217] EXT4-fs (pmem0): re-mounted. Opts:
block_validity,barrier,user_xattr,acl
[ 0.134829] random: dd: uninitialized urandom read (512 bytes read)
# perf script event handlers, generated by perf script -g python
# Licensed under the terms of the GNU GPL License version 2
# The common_* event handler fields are the most useful fields common to
# all events. They don't necessarily correspond to the 'common_*' fields
# in the format files. Those fields not available as handler params can
# be retrieved using Python functions of the form common_*(context).
# See the perf-script-python Documentation for the list of available functions.
from __future__ import print_function
import os
import sys
import collections
sys.path.append(os.environ['PERF_EXEC_PATH'] + \
'/scripts/python/Perf-Trace-Util/lib/Perf/Trace')
from perf_trace_context import *
from Core import *
from Util import *
class QemuTrace:
APP_NAME = "qemu-system-x86"
# IO ports for different exit points
LINUX_EXIT_PORT = 0xf4
FW_EXIT_PORT = 0xf5
# Exit point values
EXIT_POINTS = { 1 : 'fw_start',
2 : 'linux_start_fwcfg',
3 : 'linux_start_boot',
4 : 'fw_do_boot',
5 : 'linux_start_kernel',
6 : 'linux_start_user'}
def __init__(self):
self.start = 0
self.qemu_init_end = 0
self.probes = []
def print(self, div = 1):
print(" qemu_init_end: %f" % \
((self.qemu_init_end - float(self.start))/div))
pre_ep = 0
pre_ts = self.qemu_init_end
for ep, ts in self.probes:
if ep == pre_ep:
continue
if ep in QemuTrace.EXIT_POINTS:
ep_name = QemuTrace.EXIT_POINTS[ep]
else:
ep_name = "Exit point " + str(ep)
print(" {}: {} (+{})".format(ep_name, (ts - float(self.start))/div, \
(ts - float(pre_ts))/div))
pre_ts = ts
pre_ep = ep
@staticmethod
def stats(pids, traces, div):
avgQT = QemuTrace()
minQT = QemuTrace()
maxQT = QemuTrace()
count = 0
for pid in pids:
count += 1
print("%d) pid %d" % (count, pid))
traces[pid].print(div)
qit = traces[pid].qemu_init_end - traces[pid].start
avgQT.qemu_init_end += qit
maxQT.qemu_init_end = max(maxQT.qemu_init_end, qit)
if (count == 1):
minQT.qemu_init_end = qit
else:
minQT.qemu_init_end = min(minQT.qemu_init_end, qit)
i = 0
for ep, ts in traces[pid].probes:
rel_ts = ts - traces[pid].start
if (count == 1):
avgQT.probes.append((ep, rel_ts))
minQT.probes.append((ep, rel_ts))
maxQT.probes.append((ep, 0))
else:
avgQT.probes[i] = (ep, avgQT.probes[i][1] + rel_ts)
minQT.probes[i] = (ep, min(minQT.probes[i][1], rel_ts))
maxQT.probes[i] = (ep, max(maxQT.probes[i][1], rel_ts))
i+=1
if count > 1:
avgQT.qemu_init_end /= count
i = 0
for ep, ts in avgQT.probes:
avgQT.probes[i] = (ep, avgQT.probes[i][1] / count)
i+=1
print("\nAvg")
avgQT.print(div)
print("\nMin")
minQT.print(div)
print("\nMax")
maxQT.print(div)
class Events:
def __init__(self, ClassTrace):
self.ClassTrace = ClassTrace
self.app_name = ClassTrace.APP_NAME
self.pids = []
self.traces = autodict()
def stats(self, div):
self.ClassTrace.stats(self.pids, self.traces, div)
events = Events(QemuTrace)
def trace_begin():
print("in trace_begin")
def trace_end():
print("in trace_end")
print("Trace %s" % (events.app_name))
events.stats(1000000)
def sched__sched_process_exec(event_name, context, common_cpu,
common_secs, common_nsecs, common_pid, common_comm,
common_callchain, filename, pid, old_pid, perf_sample_dict):
if (events.app_name != common_comm):
return
events.traces[pid] = QemuTrace()
events.traces[pid].start = perf_sample_dict["sample"]["time"]
events.pids.append(pid)
print_header(event_name, common_cpu, common_secs, common_nsecs,
common_pid, common_comm)
print()
def kvm__kvm_pio(event_name, context, common_cpu,
common_secs, common_nsecs, common_pid, common_comm,
common_callchain, rw, port, size, count,
val, perf_sample_dict):
if (events.app_name != common_comm):
return
ts = perf_sample_dict["sample"]["time"]
pid = perf_sample_dict["sample"]["pid"]
if (port == QemuTrace.FW_EXIT_PORT or port == QemuTrace.LINUX_EXIT_PORT):
events.traces[pid].probes.append((val, ts))
else:
return
print_header(event_name, common_cpu, common_secs, common_nsecs,
common_pid, common_comm)
print("rw=%u, port=0x%x, size=%u, count=%u, val=%u" % \
(rw, port, size, count, val))
print()
def kvm__kvm_entry(event_name, context, common_cpu,
common_secs, common_nsecs, common_pid, common_comm,
common_callchain, vcpu_id, perf_sample_dict):
if (events.app_name != common_comm):
return
ts = perf_sample_dict["sample"]["time"]
pid = perf_sample_dict["sample"]["pid"]
if (events.traces[pid].qemu_init_end != 0):
return
events.traces[pid].qemu_init_end = ts
print_header(event_name, common_cpu, common_secs, common_nsecs,
common_pid, common_comm)
print()
def trace_unhandled(event_name, context, event_fields_dict, perf_sample_dict):
pass
def print_header(event_name, cpu, secs, nsecs, pid, comm):
print("%-20s %5u %05u.%09u %8u %-20s " % \
(event_name, cpu, secs, nsecs, pid, comm), end="")
def get_dict_as_string(a_dict, delimiter=' '):
return delimiter.join(['%s=%s'%(k,str(v))for k,v in sorted(a_dict.items())])
From 95d5bdb27fd6ca63356a618dc89820e5611b8497 Mon Sep 17 00:00:00 2001
From: Stefano Garzarella <[email protected]>
Date: Mon, 3 Dec 2018 17:04:04 +0100
Subject: [PATCH] benchmark: add exit points
---
pc-bios/optionrom/benchmark.h | 14 ++++++++++++++
pc-bios/optionrom/linuxboot_dma.c | 3 +++
2 files changed, 17 insertions(+)
create mode 100644 pc-bios/optionrom/benchmark.h
diff --git a/pc-bios/optionrom/benchmark.h b/pc-bios/optionrom/benchmark.h
new file mode 100644
index 0000000000..38d0d88798
--- /dev/null
+++ b/pc-bios/optionrom/benchmark.h
@@ -0,0 +1,14 @@
+#ifndef BENCHMARK_H
+#define BENCHMARK_H
+
+/* IO ports for different exit points */
+#define LINUX_EXIT_PORT 0xf4
+#define FW_EXIT_PORT 0xf5
+
+/* Exit point values */
+#define FW_START 1
+#define LINUX_START_FWCFG 2
+#define LINUX_START_BOOT 3
+#define FW_DO_BOOT 4
+
+#endif
diff --git a/pc-bios/optionrom/linuxboot_dma.c b/pc-bios/optionrom/linuxboot_dma.c
index 4754282ad7..577199388f 100644
--- a/pc-bios/optionrom/linuxboot_dma.c
+++ b/pc-bios/optionrom/linuxboot_dma.c
@@ -59,6 +59,7 @@ asm(
);
#include "../../include/hw/nvram/fw_cfg_keys.h"
+#include "benchmark.h"
/* QEMU_CFG_DMA_CONTROL bits */
#define BIOS_CFG_DMA_CTL_ERROR 0x01
@@ -265,6 +266,8 @@ void load_kernel(void)
segment_addr = ((uint32_t)setup_addr >> 4);
stack_addr = (uint32_t)(cmdline_addr - setup_addr - 16);
+ outl(LINUX_START_BOOT, LINUX_EXIT_PORT);
+
/* As we are changing critical registers, we cannot leave freedom to the
* compiler.
*/
--
2.19.2
From 9064e438f6d11cad9d50d110009fa8871b3d91a9 Mon Sep 17 00:00:00 2001
From: Stefano Garzarella <[email protected]>
Date: Mon, 3 Dec 2018 16:52:16 +0100
Subject: [PATCH] benchmark: add exit points
---
src/Kconfig | 7 +++++++
src/benchmark.h | 14 ++++++++++++++
src/boot.c | 5 +++++
src/post.c | 5 +++++
4 files changed, 31 insertions(+)
create mode 100644 src/benchmark.h
diff --git a/src/Kconfig b/src/Kconfig
index 55a87cb..7db0f9c 100644
--- a/src/Kconfig
+++ b/src/Kconfig
@@ -566,6 +566,13 @@ menu "Debugging"
information by outputing strings in a special port present in the
IO space.
+ config DEBUG_BENCHMARK
+ depends on QEMU_HARDWARE
+ bool "benchmark IO port debugging"
+ default y
+ help
+ Benchmark debug
+
config DEBUG_COREBOOT
depends on COREBOOT && DEBUG_LEVEL != 0
bool "coreboot cbmem debug logging"
diff --git a/src/benchmark.h b/src/benchmark.h
new file mode 100644
index 0000000..38d0d88
--- /dev/null
+++ b/src/benchmark.h
@@ -0,0 +1,14 @@
+#ifndef BENCHMARK_H
+#define BENCHMARK_H
+
+/* IO ports for different exit points */
+#define LINUX_EXIT_PORT 0xf4
+#define FW_EXIT_PORT 0xf5
+
+/* Exit point values */
+#define FW_START 1
+#define LINUX_START_FWCFG 2
+#define LINUX_START_BOOT 3
+#define FW_DO_BOOT 4
+
+#endif
diff --git a/src/boot.c b/src/boot.c
index 9f82f3c..c6d8cc1 100644
--- a/src/boot.c
+++ b/src/boot.c
@@ -21,6 +21,7 @@
#include "string.h" // memset
#include "util.h" // irqtimer_calc
#include "tcgbios.h" // tpm_*
+#include "benchmark.h"
/****************************************************************
@@ -739,6 +740,10 @@ do_boot(int seq_nr)
if (seq_nr >= BEVCount)
boot_fail();
+#if CONFIG_DEBUG_BENCHMARK
+ outb(FW_DO_BOOT, FW_EXIT_PORT);
+#endif
+
// Boot the given BEV type.
struct bev_s *ie = &BEV[seq_nr];
switch (ie->type) {
diff --git a/src/post.c b/src/post.c
index f93106a..7636d41 100644
--- a/src/post.c
+++ b/src/post.c
@@ -23,6 +23,7 @@
#include "string.h" // memset
#include "util.h" // kbd_init
#include "tcgbios.h" // tpm_*
+#include "benchmark.h"
/****************************************************************
@@ -323,6 +324,10 @@ handle_post(void)
if (!CONFIG_QEMU && !CONFIG_COREBOOT)
return;
+#if CONFIG_DEBUG_BENCHMARK
+ outb(FW_START, FW_EXIT_PORT);
+#endif
+
serial_debug_preinit();
debug_banner();
--
2.19.2
From f00bbd8da79e4c99bbc96efdf80805e16cf90ecc Mon Sep 17 00:00:00 2001
From: Stefano Garzarella <[email protected]>
Date: Mon, 3 Dec 2018 16:50:47 +0100
Subject: [PATCH] benchmark: add more trace point
---
Makefile | 2 +-
benchmark.h | 3 +++
main.c | 5 ++++-
3 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index 937b277..47e93ea 100644
--- a/Makefile
+++ b/Makefile
@@ -5,7 +5,7 @@ obj-y += pci.o
all-y = bios.bin
all: $(all-y)
-CFLAGS := -O2 -g
+CFLAGS := -O2 -g -DBENCHMARK_HACK
BIOS_CFLAGS += $(autodepend-flags) -Wall
BIOS_CFLAGS += -m32
diff --git a/benchmark.h b/benchmark.h
index 089c549..372a26b 100644
--- a/benchmark.h
+++ b/benchmark.h
@@ -9,5 +9,8 @@
#define FW_START 1
#define LINUX_START_FWCFG 2
#define LINUX_START_BOOT 3
+#define FW_DO_BOOT 4
+#define LINUX_START_KERNEL 5
+#define LINUX_START_USER 6
#endif
diff --git a/main.c b/main.c
index 699cc1a..0bc3707 100644
--- a/main.c
+++ b/main.c
@@ -91,7 +91,7 @@ static bool detect_cbfs_and_boot(void)
int __attribute__ ((section (".text.startup"))) main(void)
{
#ifdef BENCHMARK_HACK
- outb(FW_EXIT_PORT, FW_START);
+ outb(FW_EXIT_PORT, FW_START);
#endif
setup_hw();
@@ -106,6 +106,9 @@ int __attribute__ ((section (".text.startup"))) main(void)
extract_acpi();
extract_e820();
// extract_smbios();
+#ifdef BENCHMARK_HACK
+ outb(FW_EXIT_PORT, FW_DO_BOOT);
+#endif
if (!detect_cbfs_and_boot())
boot_from_fwcfg();
panic();
--
2.19.2
From 5ffc99a9a0293cb68c34894201d54d86b6561906 Mon Sep 17 00:00:00 2001
From: Stefano Garzarella <[email protected]>
Date: Fri, 30 Nov 2018 16:56:28 +0100
Subject: [PATCH] boot: add debug port write to trace boot times
---
init/benchmark.h | 16 ++++++++++++++++
init/main.c | 5 +++++
2 files changed, 21 insertions(+)
create mode 100644 init/benchmark.h
diff --git a/init/benchmark.h b/init/benchmark.h
new file mode 100644
index 000000000000..372a26b05ab1
--- /dev/null
+++ b/init/benchmark.h
@@ -0,0 +1,16 @@
+#ifndef BENCHMARK_H
+#define BENCHMARK_H
+
+/* IO ports for different exit points */
+#define LINUX_EXIT_PORT 0xf4
+#define FW_EXIT_PORT 0xf5
+
+/* Exit point values */
+#define FW_START 1
+#define LINUX_START_FWCFG 2
+#define LINUX_START_BOOT 3
+#define FW_DO_BOOT 4
+#define LINUX_START_KERNEL 5
+#define LINUX_START_USER 6
+
+#endif
diff --git a/init/main.c b/init/main.c
index c4a45145e102..05f9cc85d07d 100644
--- a/init/main.c
+++ b/init/main.c
@@ -10,6 +10,7 @@
*/
#define DEBUG /* Enable initcall_debug */
+#include "benchmark.h"
#include <linux/types.h>
#include <linux/extable.h>
@@ -515,6 +516,8 @@ asmlinkage __visible void __init start_kernel(void)
char *command_line;
char *after_dashes;
+ outb(LINUX_START_KERNEL, LINUX_EXIT_PORT);
+
set_task_stack_end_magic(&init_task);
smp_setup_processor_id();
debug_objects_early_init();
@@ -1008,6 +1011,8 @@ static int __ref kernel_init(void *unused)
rcu_end_inkernel_boot();
+ outb(LINUX_START_USER, LINUX_EXIT_PORT);
+
if (ramdisk_execute_command) {
ret = run_init_process(ramdisk_execute_command);
if (!ret)
--
2.19.2