qemu-stable
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] memory: Revert "memory: accept mismatching sizes in memory_r


From: Nathan Chancellor
Subject: Re: [PATCH] memory: Revert "memory: accept mismatching sizes in memory_region_access_valid"
Date: Wed, 26 Aug 2020 18:19:10 -0700

On Wed, Jun 10, 2020 at 09:47:49AM -0400, Michael S. Tsirkin wrote:
> Memory API documentation documents valid .min_access_size and .max_access_size
> fields and explains that any access outside these boundaries is blocked.
> 
> This is what devices seem to assume.
> 
> However this is not what the implementation does: it simply
> ignores the boundaries unless there's an "accepts" callback.
> 
> Naturally, this breaks a bunch of devices.
> 
> Revert to the documented behaviour.
> 
> Devices that want to allow any access can just drop the valid field,
> or add the impl field to have accesses converted to appropriate
> length.
> 
> Cc: qemu-stable@nongnu.org
> Reviewed-by: Richard Henderson <rth@twiddle.net>
> Fixes: CVE-2020-13754
> Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1842363
> Fixes: a014ed07bd5a ("memory: accept mismatching sizes in 
> memory_region_access_valid")
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
>  memory.c | 29 +++++++++--------------------
>  1 file changed, 9 insertions(+), 20 deletions(-)
> 
> diff --git a/memory.c b/memory.c
> index 91ceaf9fcf..3e9388fb74 100644
> --- a/memory.c
> +++ b/memory.c
> @@ -1352,35 +1352,24 @@ bool memory_region_access_valid(MemoryRegion *mr,
>                                  bool is_write,
>                                  MemTxAttrs attrs)
>  {
> -    int access_size_min, access_size_max;
> -    int access_size, i;
> +    if (mr->ops->valid.accepts
> +        && !mr->ops->valid.accepts(mr->opaque, addr, size, is_write, attrs)) 
> {
> +        return false;
> +    }
>  
>      if (!mr->ops->valid.unaligned && (addr & (size - 1))) {
>          return false;
>      }
>  
> -    if (!mr->ops->valid.accepts) {
> +    /* Treat zero as compatibility all valid */
> +    if (!mr->ops->valid.max_access_size) {
>          return true;
>      }
>  
> -    access_size_min = mr->ops->valid.min_access_size;
> -    if (!mr->ops->valid.min_access_size) {
> -        access_size_min = 1;
> +    if (size > mr->ops->valid.max_access_size
> +        || size < mr->ops->valid.min_access_size) {
> +        return false;
>      }
> -
> -    access_size_max = mr->ops->valid.max_access_size;
> -    if (!mr->ops->valid.max_access_size) {
> -        access_size_max = 4;
> -    }
> -
> -    access_size = MAX(MIN(size, access_size_max), access_size_min);
> -    for (i = 0; i < size; i += access_size) {
> -        if (!mr->ops->valid.accepts(mr->opaque, addr + i, access_size,
> -                                    is_write, attrs)) {
> -            return false;
> -        }
> -    }
> -
>      return true;
>  }
>  
> -- 
> MST
> 
> 

Hi all,

I just ran into a regression with booting RISC-V kernels due to this
commit. I can reproduce it with QEMU 5.1.0 and latest tip of tree
(25f6dc28a3a8dd231c2c092a0e65bd796353c769 at the time of writing this.)

I have attached the rootfs and kernel image used for these tests. If for
some reason there is a problem receiving them, the kernel is just an
arch/riscv/configs/defconfig kernel at Linux 5.9-rc2 and the rootfs is
available here:

https://github.com/ClangBuiltLinux/boot-utils/blob/3b21a5b71451742866349ba4f18638c5a754e660/images/riscv/rootfs.cpio.zst

Please let me know if I can provide any follow up information or if I am
doing something wrong.

$ git bisect log
# bad: [d0ed6a69d399ae193959225cdeaa9382746c91cc] Update version for v5.1.0 
release
# good: [fdd76fecdde1ad444ff4deb7f1c4f7e4a1ef97d6] Update version for v5.0.0 
release
git bisect start 'v5.1.0' 'v5.0.0'
# good: [5c24bce3056ff209a1ecc50ff4b7e65b85ad8e74] Merge remote-tracking branch 
'remotes/stsquad/tags/pull-testing-and-plugin-160620-2' into staging
git bisect good 5c24bce3056ff209a1ecc50ff4b7e65b85ad8e74
# bad: [cd9557616fe30a1926a57b516ee2ceb07faf1cb7] Merge remote-tracking branch 
'remotes/rth/tags/pull-tcg-20200706' into staging
git bisect bad cd9557616fe30a1926a57b516ee2ceb07faf1cb7
# good: [bba87d0a0f480805223a6428a7942a51733c488a] target/arm: Use mte_checkN 
for sve unpredicated stores
git bisect good bba87d0a0f480805223a6428a7942a51733c488a
# bad: [2843420a562c107801bae20f74579e4fe540316f] target/riscv: floating-point 
scalar move instructions
git bisect bad 2843420a562c107801bae20f74579e4fe540316f
# bad: [9bc6bfdf67287fcf5435f22f68e902bb19831243] qdev: Drop 
qbus_set_hotplug_handler() parameter @errp
git bisect bad 9bc6bfdf67287fcf5435f22f68e902bb19831243
# bad: [3591ddd39987cbdaa0cfa344a262f315abd97582] Merge remote-tracking branch 
'remotes/bonzini/tags/for-upstream' into staging
git bisect bad 3591ddd39987cbdaa0cfa344a262f315abd97582
# bad: [1f18a1e6ab8368a4eab2d22894d3b2ae75250cd3] target/i386: reimplement 
fyl2x using floatx80 operations
git bisect bad 1f18a1e6ab8368a4eab2d22894d3b2ae75250cd3
# bad: [ee760ac80ac1f130138e8eb4eba263a4d48ace51] hw/scsi/megasas: Fix possible 
out-of-bounds array access in tracepoints
git bisect bad ee760ac80ac1f130138e8eb4eba263a4d48ace51
# bad: [5d971f9e672507210e77d020d89e0e89165c8fc9] memory: Revert "memory: 
accept mismatching sizes in memory_region_access_valid"
git bisect bad 5d971f9e672507210e77d020d89e0e89165c8fc9
# good: [ae2b72072bc401114ebb9f46abd67d07d4cabf10] util/getauxval: Porting to 
FreeBSD getauxval feature
git bisect good ae2b72072bc401114ebb9f46abd67d07d4cabf10
# good: [4b7c06837ae0b1ff56473202a42e7e386f53d6db] libqos: pci-pc: use 32-bit 
write for EJ register
git bisect good 4b7c06837ae0b1ff56473202a42e7e386f53d6db
# first bad commit: [5d971f9e672507210e77d020d89e0e89165c8fc9] memory: Revert 
"memory: accept mismatching sizes in memory_region_access_valid"

$ timeout --foreground 15s unbuffer qemu-5.0.0/bin/qemu-system-riscv64 -bios 
default -M virt -display none -initrd rootfs.cpio -kernel Image -m 512m 
-nodefaults -serial mon:stdio

OpenSBI v0.6
   ____                    _____ ____ _____
  / __ \                  / ____|  _ \_   _|
 | |  | |_ __   ___ _ __ | (___ | |_) || |
 | |  | | '_ \ / _ \ '_ \ \___ \|  _ < | |
 | |__| | |_) |  __/ | | |____) | |_) || |_
  \____/| .__/ \___|_| |_|_____/|____/_____|
        | |
        |_|

Platform Name          : QEMU Virt Machine
Platform HART Features : RV64ACDFIMSU
Platform Max HARTs     : 8
Current Hart           : 0
Firmware Base          : 0x80000000
Firmware Size          : 120 KB
Runtime SBI Version    : 0.2

MIDELEG : 0x0000000000000222
MEDELEG : 0x000000000000b109
PMP0    : 0x0000000080000000-0x000000008001ffff (A)
PMP1    : 0x0000000000000000-0xffffffffffffffff (A,R,W,X)
[    0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
[    0.000000] Linux version 5.9.0-rc2 (nathan@ubuntu-n2-xlarge-x86) 
(riscv64-linux-gcc (GCC) 10.2.0, GNU ld (GNU Binutils) 2.35) #1 SMP Wed Aug 26 
17:11:49 MST 2020
[    0.000000] Initial ramdisk at: 0x(____ptrval____) (5447680 bytes)
[    0.000000] Zone ranges:
[    0.000000]   DMA32    [mem 0x0000000080200000-0x000000009fffffff]
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000080200000-0x000000009fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x000000009fffffff]
[    0.000000] software IO TLB: mapped [mem 0x9b8fa000-0x9f8fa000] (64MB)
[    0.000000] SBI specification v0.2 detected
[    0.000000] SBI implementation ID=0x1 Version=0x6
[    0.000000] SBI v0.2 TIME extension detected
[    0.000000] SBI v0.2 IPI extension detected
[    0.000000] SBI v0.2 RFENCE extension detected
[    0.000000] riscv: ISA extensions acdfimsu
[    0.000000] riscv: ELF capabilities acdfim
[    0.000000] percpu: Embedded 17 pages/cpu s32040 r8192 d29400 u69632
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 128775
[    0.000000] Kernel command line: 
[    0.000000] Dentry cache hash table entries: 65536 (order: 7, 524288 bytes, 
linear)
[    0.000000] Inode-cache hash table entries: 32768 (order: 6, 262144 bytes, 
linear)
[    0.000000] Sorting __ex_table...
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 425804K/522240K available (8799K kernel code, 3795K 
rwdata, 4096K rodata, 243K init, 318K bss, 96436K reserved, 0K cma-reserved)
[    0.000000] Virtual kernel memory layout:
[    0.000000]       fixmap : 0xffffffcefee00000 - 0xffffffceff000000   (2048 
kB)
[    0.000000]       pci io : 0xffffffceff000000 - 0xffffffcf00000000   (  16 
MB)
[    0.000000]      vmemmap : 0xffffffcf00000000 - 0xffffffcfffffffff   (4095 
MB)
[    0.000000]      vmalloc : 0xffffffd000000000 - 0xffffffdfffffffff   (65535 
MB)
[    0.000000]       lowmem : 0xffffffe000000000 - 0xffffffe01fe00000   ( 510 
MB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=1.
[    0.000000] rcu:     RCU debug extended QS entry/exit.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 
jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] riscv-intc: 64 local interrupts mapped
[    0.000000] plic: interrupt-controller@c000000: mapped 53 interrupts with 1 
handlers for 2 contexts.
[    0.000000] random: get_random_bytes called from start_kernel+0x312/0x48a 
with crng_init=0
[    0.000000] riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [0]
[    0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff 
max_cycles: 0x24e6a1710, max_idle_ns: 440795202120 ns
[    0.000111] sched_clock: 64 bits at 10MHz, resolution 100ns, wraps every 
4398046511100ns
[    0.002812] Console: colour dummy device 80x25
[    0.004295] printk: console [tty0] enabled
[    0.007884] Calibrating delay loop (skipped), value calculated using timer 
frequency.. 20.00 BogoMIPS (lpj=40000)
[    0.008051] pid_max: default: 32768 minimum: 301
[    0.009556] Mount-cache hash table entries: 1024 (order: 1, 8192 bytes, 
linear)
[    0.009613] Mountpoint-cache hash table entries: 1024 (order: 1, 8192 bytes, 
linear)
[    0.029798] rcu: Hierarchical SRCU implementation.
[    0.032854] smp: Bringing up secondary CPUs ...
[    0.032953] smp: Brought up 1 node, 1 CPU
[    0.041015] devtmpfs: initialized
[    0.045998] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, 
max_idle_ns: 7645041785100000 ns
[    0.046186] futex hash table entries: 256 (order: 2, 16384 bytes, linear)
[    0.050322] NET: Registered protocol family 16
[    0.095544] vgaarb: loaded
[    0.096578] SCSI subsystem initialized
[    0.097843] usbcore: registered new interface driver usbfs
[    0.098081] usbcore: registered new interface driver hub
[    0.098692] usbcore: registered new device driver usb
[    0.106594] clocksource: Switched to clocksource riscv_clocksource
[    0.118863] NET: Registered protocol family 2
[    0.121760] tcp_listen_portaddr_hash hash table entries: 256 (order: 1, 
10240 bytes, linear)
[    0.121872] TCP established hash table entries: 4096 (order: 3, 32768 bytes, 
linear)
[    0.122057] TCP bind hash table entries: 4096 (order: 5, 131072 bytes, 
linear)
[    0.122910] TCP: Hash tables configured (established 4096 bind 4096)
[    0.123745] UDP hash table entries: 256 (order: 2, 24576 bytes, linear)
[    0.124895] UDP-Lite hash table entries: 256 (order: 2, 24576 bytes, linear)
[    0.125946] NET: Registered protocol family 1
[    0.127848] RPC: Registered named UNIX socket transport module.
[    0.127910] RPC: Registered udp transport module.
[    0.127938] RPC: Registered tcp transport module.
[    0.127963] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.128064] PCI: CLS 0 bytes, default 64
[    0.130395] Unpacking initramfs...
[    0.174011] Freeing initrd memory: 5316K
[    0.175781] workingset: timestamp_bits=62 max_order=17 bucket_order=0
[    0.185425] NFS: Registering the id_resolver key type
[    0.186044] Key type id_resolver registered
[    0.186090] Key type id_legacy registered
[    0.186474] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    0.187497] 9p: Installing v9fs 9p2000 file system support
[    0.188540] NET: Registered protocol family 38
[    0.188778] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 
252)
[    0.188902] io scheduler mq-deadline registered
[    0.188976] io scheduler kyber registered
[    0.195742] pci-host-generic 30000000.pci: host bridge /soc/pci@30000000 
ranges:
[    0.196358] pci-host-generic 30000000.pci:       IO 
0x0003000000..0x000300ffff -> 0x0000000000
[    0.196718] pci-host-generic 30000000.pci:      MEM 
0x0040000000..0x007fffffff -> 0x0040000000
[    0.198338] pci-host-generic 30000000.pci: ECAM at [mem 
0x30000000-0x3fffffff] for [bus 00-ff]
[    0.199107] pci-host-generic 30000000.pci: PCI host bridge to bus 0000:00
[    0.199288] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.199416] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
[    0.199446] pci_bus 0000:00: root bus resource [mem 0x40000000-0x7fffffff]
[    0.200326] pci 0000:00:00.0: [1b36:0008] type 00 class 0x060000
[    0.253471] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    0.259623] 10000000.uart: ttyS0 at MMIO 0x10000000 (irq = 2, base_baud = 
230400) is a 16550A
[    0.282012] printk: console [ttyS0] enabled
[    0.284000] [drm] radeon kernel modesetting enabled.
[    0.297541] loop: module loaded
[    0.300688] libphy: Fixed MDIO Bus: probed
[    0.301655] e1000e: Intel(R) PRO/1000 Network Driver
[    0.301844] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[    0.302400] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.302718] ehci-pci: EHCI PCI platform driver
[    0.303069] ehci-platform: EHCI generic platform driver
[    0.303404] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    0.303739] ohci-pci: OHCI PCI platform driver
[    0.304066] ohci-platform: OHCI generic platform driver
[    0.304982] usbcore: registered new interface driver uas
[    0.305322] usbcore: registered new interface driver usb-storage
[    0.306166] mousedev: PS/2 mouse device common for all mice
[    0.308881] goldfish_rtc 101000.rtc: registered as rtc0
[    0.309574] goldfish_rtc 101000.rtc: setting system clock to 
2020-08-27T01:04:51 UTC (1598490291)
[    0.311771] syscon-poweroff poweroff: pm_power_off already claimed 
(____ptrval____) sbi_shutdown
[    0.312192] syscon-poweroff: probe of poweroff failed with error -16
[    0.313292] usbcore: registered new interface driver usbhid
[    0.313536] usbhid: USB HID core driver
[    0.315258] NET: Registered protocol family 10
[    0.321054] Segment Routing with IPv6
[    0.321475] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[    0.323905] NET: Registered protocol family 17
[    0.325061] 9pnet: Installing 9P2000 support
[    0.325463] Key type dns_resolver registered
[    0.326067] debug_vm_pgtable: [debug_vm_pgtable         ]: Validating 
architecture page table helpers
[    0.353184] Freeing unused kernel memory: 240K
[    0.355289] Run /init as init process
Starting syslogd: OK
Starting klogd: OK
Running sysctl: OK
Saving random seed: [    1.124844] random: dd: uninitialized urandom read (512 
bytes read)
OK
Starting network: OK
Linux version 5.9.0-rc2 (nathan@ubuntu-n2-xlarge-x86) (riscv64-linux-gcc (GCC) 
10.2.0, GNU ld (GNU Binutils) 2.35) #1 SMP Wed Aug 26 17:11:49 MST 2020
Linux version 5.9.0-rc2 (nathan@ubuntu-n2-xlarge-x86) (riscv64-linux-gcc (GCC) 
10.2.0, GNU ld (GNU Binutils) 2.35) #1 SMP Wed Aug 26 17:11:49 MST 2020
Stopping network: OK
Saving random seed: [    1.919063] random: dd: uninitialized urandom read (512 
bytes read)
OK
Stopping klogd: OK
Stopping syslogd: OK
umount: devtmpfs busy - remounted read-only
umount: can't unmount /: Invalid argument
The system is going down NOW!
Sent SIGTERM to all processes
Sent SIGKILL to all processes
Requesting system poweroff
[    4.145990] reboot: Power down

$ timeout --foreground 15s unbuffer qemu-5.1.0/bin/qemu-system-riscv64 -bios 
default -M virt -display none -initrd rootfs.cpio -kernel Image -m 512m 
-nodefaults -serial mon:stdio

OpenSBI v0.7
   ____                    _____ ____ _____
  / __ \                  / ____|  _ \_   _|
 | |  | |_ __   ___ _ __ | (___ | |_) || |
 | |  | | '_ \ / _ \ '_ \ \___ \|  _ < | |
 | |__| | |_) |  __/ | | |____) | |_) || |_
  \____/| .__/ \___|_| |_|_____/|____/_____|
        | |
        |_|

Platform Name          : QEMU Virt Machine
Platform HART Features : RV64ACDFIMSU
Current Hart           : 0
Firmware Base          : 0x80000000
Firmware Size          : 128 KB
Runtime SBI Version    : 0.2

MIDELEG : 0x0000000000000222
MEDELEG : 0x000000000000b109
PMP0    : 0x0000000080000000-0x000000008001ffff (A)
PMP1    : 0x0000000000000000-0xffffffffffffffff (A,R,W,X)
[    0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
[    0.000000] Linux version 5.9.0-rc2 (nathan@ubuntu-n2-xlarge-x86) 
(riscv64-linux-gcc (GCC) 10.2.0, GNU ld (GNU Binutils) 2.35) #1 SMP Wed Aug 26 
17:11:49 MST 2020
[    0.000000] Initial ramdisk at: 0x(____ptrval____) (5447680 bytes)
[    0.000000] Zone ranges:
[    0.000000]   DMA32    [mem 0x0000000080200000-0x000000009fffffff]
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000080200000-0x000000009fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x000000009fffffff]
[    0.000000] software IO TLB: mapped [mem 0x9b8fa000-0x9f8fa000] (64MB)
[    0.000000] SBI specification v0.2 detected
[    0.000000] SBI implementation ID=0x1 Version=0x7
[    0.000000] SBI v0.2 TIME extension detected
[    0.000000] SBI v0.2 IPI extension detected
[    0.000000] SBI v0.2 RFENCE extension detected
[    0.000000] SBI v0.2 HSM extension detected
[    0.000000] riscv: ISA extensions acdfimsu
[    0.000000] riscv: ELF capabilities acdfim
[    0.000000] percpu: Embedded 17 pages/cpu s32040 r8192 d29400 u69632
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 128775
[    0.000000] Kernel command line: 
[    0.000000] Dentry cache hash table entries: 65536 (order: 7, 524288 bytes, 
linear)
[    0.000000] Inode-cache hash table entries: 32768 (order: 6, 262144 bytes, 
linear)
[    0.000000] Sorting __ex_table...
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 425804K/522240K available (8799K kernel code, 3795K 
rwdata, 4096K rodata, 243K init, 318K bss, 96436K reserved, 0K cma-reserved)
[    0.000000] Virtual kernel memory layout:
[    0.000000]       fixmap : 0xffffffcefee00000 - 0xffffffceff000000   (2048 
kB)
[    0.000000]       pci io : 0xffffffceff000000 - 0xffffffcf00000000   (  16 
MB)
[    0.000000]      vmemmap : 0xffffffcf00000000 - 0xffffffcfffffffff   (4095 
MB)
[    0.000000]      vmalloc : 0xffffffd000000000 - 0xffffffdfffffffff   (65535 
MB)
[    0.000000]       lowmem : 0xffffffe000000000 - 0xffffffe01fe00000   ( 510 
MB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=1.
[    0.000000] rcu:     RCU debug extended QS entry/exit.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 
jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] riscv-intc: 64 local interrupts mapped
[    0.000000] plic: interrupt-controller@c000000: mapped 53 interrupts with 1 
handlers for 2 contexts.
[    0.000000] random: get_random_bytes called from start_kernel+0x312/0x48a 
with crng_init=0
[    0.000000] riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [0]
[    0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff 
max_cycles: 0x24e6a1710, max_idle_ns: 440795202120 ns
[    0.000142] sched_clock: 64 bits at 10MHz, resolution 100ns, wraps every 
4398046511100ns
[    0.002923] Console: colour dummy device 80x25
[    0.004341] printk: console [tty0] enabled
[    0.008521] Calibrating delay loop (skipped), value calculated using timer 
frequency.. 20.00 BogoMIPS (lpj=40000)
[    0.008715] pid_max: default: 32768 minimum: 301
[    0.009813] Mount-cache hash table entries: 1024 (order: 1, 8192 bytes, 
linear)
[    0.009872] Mountpoint-cache hash table entries: 1024 (order: 1, 8192 bytes, 
linear)
[    0.030207] rcu: Hierarchical SRCU implementation.
[    0.033662] smp: Bringing up secondary CPUs ...
[    0.033757] smp: Brought up 1 node, 1 CPU
[    0.040804] devtmpfs: initialized
[    0.046291] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, 
max_idle_ns: 7645041785100000 ns
[    0.046463] futex hash table entries: 256 (order: 2, 16384 bytes, linear)
[    0.050524] NET: Registered protocol family 16
[    0.095625] vgaarb: loaded
[    0.096762] SCSI subsystem initialized
[    0.098502] usbcore: registered new interface driver usbfs
[    0.098749] usbcore: registered new interface driver hub
[    0.098891] usbcore: registered new device driver usb
[    0.107026] clocksource: Switched to clocksource riscv_clocksource
[    0.119888] NET: Registered protocol family 2
[    0.124025] tcp_listen_portaddr_hash hash table entries: 256 (order: 1, 
10240 bytes, linear)
[    0.124164] TCP established hash table entries: 4096 (order: 3, 32768 bytes, 
linear)
[    0.124393] TCP bind hash table entries: 4096 (order: 5, 131072 bytes, 
linear)
[    0.125189] TCP: Hash tables configured (established 4096 bind 4096)
[    0.125964] UDP hash table entries: 256 (order: 2, 24576 bytes, linear)
[    0.126204] UDP-Lite hash table entries: 256 (order: 2, 24576 bytes, linear)
[    0.127304] NET: Registered protocol family 1
[    0.129298] RPC: Registered named UNIX socket transport module.
[    0.129356] RPC: Registered udp transport module.
[    0.129382] RPC: Registered tcp transport module.
[    0.129406] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.129509] PCI: CLS 0 bytes, default 64
[    0.131899] Unpacking initramfs...
[    0.177785] Freeing initrd memory: 5316K
[    0.179496] workingset: timestamp_bits=62 max_order=17 bucket_order=0
[    0.190603] NFS: Registering the id_resolver key type
[    0.191352] Key type id_resolver registered
[    0.191404] Key type id_legacy registered
[    0.191678] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    0.192232] 9p: Installing v9fs 9p2000 file system support
[    0.193411] NET: Registered protocol family 38
[    0.193633] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 
252)
[    0.193758] io scheduler mq-deadline registered
[    0.193837] io scheduler kyber registered
[    0.198746] pci-host-generic 30000000.pci: host bridge /soc/pci@30000000 
ranges:
[    0.199463] pci-host-generic 30000000.pci:       IO 
0x0003000000..0x000300ffff -> 0x0000000000
[    0.199847] pci-host-generic 30000000.pci:      MEM 
0x0040000000..0x007fffffff -> 0x0040000000
[    0.201689] pci-host-generic 30000000.pci: ECAM at [mem 
0x30000000-0x3fffffff] for [bus 00-ff]
[    0.202343] pci-host-generic 30000000.pci: PCI host bridge to bus 0000:00
[    0.202507] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.202615] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
[    0.202643] pci_bus 0000:00: root bus resource [mem 0x40000000-0x7fffffff]
[    0.203620] pci 0000:00:00.0: [1b36:0008] type 00 class 0x060000
[    0.257126] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    0.262656] 10000000.uart: ttyS0 at MMIO 0x10000000 (irq = 2, base_baud = 
230400) is a 16550A
[    0.284823] printk: console [ttyS0] enabled
[    0.286564] [drm] radeon kernel modesetting enabled.
[    0.300368] loop: module loaded
[    0.302947] libphy: Fixed MDIO Bus: probed
[    0.303939] e1000e: Intel(R) PRO/1000 Network Driver
[    0.304150] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[    0.304613] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.304900] ehci-pci: EHCI PCI platform driver
[    0.305254] ehci-platform: EHCI generic platform driver
[    0.305549] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    0.305812] ohci-pci: OHCI PCI platform driver
[    0.306095] ohci-platform: OHCI generic platform driver
[    0.307034] usbcore: registered new interface driver uas
[    0.307375] usbcore: registered new interface driver usb-storage
[    0.308225] mousedev: PS/2 mouse device common for all mice
[    0.310752] goldfish_rtc 101000.rtc: registered as rtc0
[    0.311581] goldfish_rtc 101000.rtc: setting system clock to 
2020-08-27T01:06:41 UTC (1598490401)
[    0.313677] syscon-poweroff poweroff: pm_power_off already claimed 
(____ptrval____) sbi_shutdown
[    0.314023] syscon-poweroff: probe of poweroff failed with error -16
[    0.315212] usbcore: registered new interface driver usbhid
[    0.315458] usbhid: USB HID core driver
[    0.317052] NET: Registered protocol family 10
[    0.322935] Segment Routing with IPv6
[    0.323337] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[    0.325733] NET: Registered protocol family 17
[    0.326996] 9pnet: Installing 9P2000 support
[    0.327308] Key type dns_resolver registered
[    0.327841] debug_vm_pgtable: [debug_vm_pgtable         ]: Validating 
architecture page table helpers
[    0.355064] Freeing unused kernel memory: 240K
[    0.360583] Run /init as init process
Starting syslogd: OK
Starting klogd: OK
Running sysctl: OK
Saving random seed: [    1.137074] random: dd: uninitialized urandom read (512 
bytes read)
OK
Starting network: OK
Linux version 5.9.0-rc2 (nathan@ubuntu-n2-xlarge-x86) (riscv64-linux-gcc (GCC) 
10.2.0, GNU ld (GNU Binutils) 2.35) #1 SMP Wed Aug 26 17:11:49 MST 2020
Linux version 5.9.0-rc2 (nathan@ubuntu-n2-xlarge-x86) (riscv64-linux-gcc (GCC) 
10.2.0, GNU ld (GNU Binutils) 2.35) #1 SMP Wed Aug 26 17:11:49 MST 2020
Stopping network: OK
Saving random seed: [    1.932392] random: dd: uninitialized urandom read (512 
bytes read)
OK
Stopping klogd: OK
Stopping syslogd: OK
umount: devtmpfs busy - remounted read-only
umount: can't unmount /: Invalid argument
The system is going down NOW!
Sent SIGTERM to all processes
Sent SIGKILL to all processes
Requesting system poweroff
[    4.162049] reboot: Power down
sbi_trap_error: hart0: trap handler failed (error -2)
sbi_trap_error: hart0: mcause=0x0000000000000007 mtval=0x0000000000100000
sbi_trap_error: hart0: mepc=0x0000000080003d3e mstatus=0x0000000000001822
sbi_trap_error: hart0: ra=0x0000000080008228 sp=0x000000008001ec98
sbi_trap_error: hart0: gp=0xffffffe001070b90 tp=0xffffffe0081d8000
sbi_trap_error: hart0: s0=0x000000008001eca8 s1=0x0000000000000040
sbi_trap_error: hart0: a0=0x0000000000000000 a1=0x0000000080003d2a
sbi_trap_error: hart0: a2=0x0000000080003d2a a3=0x0000000080003d2a
sbi_trap_error: hart0: a4=0x0000000000100000 a5=0x0000000000005555
sbi_trap_error: hart0: a6=0x0000000000003d2a a7=0x000000008000e0e0
sbi_trap_error: hart0: s2=0x0000000000000000 s3=0x000000008001f000
sbi_trap_error: hart0: s4=0x0000000000000000 s5=0x0000000000000000
sbi_trap_error: hart0: s6=0x0000000000000001 s7=0x0000000000000000
sbi_trap_error: hart0: s8=0x0000000000000000 s9=0x0000000000000000
sbi_trap_error: hart0: s10=0x0000000000000000 s11=0x0000000000000008
sbi_trap_error: hart0: t0=0x0000000000000000 t1=0x0000000000000000
sbi_trap_error: hart0: t2=0x0000000000000000 t3=0x0000000000000000
sbi_trap_error: hart0: t4=0x0000000000000000 t5=0x0000000000000000
sbi_trap_error: hart0: t6=0x0000000000000000

$ timeout --foreground 15s unbuffer qemu-master/bin/qemu-system-riscv64 -bios 
default -M virt -display none -initrd rootfs.cpio -kernel Image -m 512m 
-nodefaults -serial mon:stdio

OpenSBI v0.8
   ____                    _____ ____ _____
  / __ \                  / ____|  _ \_   _|
 | |  | |_ __   ___ _ __ | (___ | |_) || |
 | |  | | '_ \ / _ \ '_ \ \___ \|  _ < | |
 | |__| | |_) |  __/ | | |____) | |_) || |_
  \____/| .__/ \___|_| |_|_____/|____/_____|
        | |
        |_|

Platform Name       : riscv-virtio,qemu
Platform Features   : timer,mfdeleg
Platform HART Count : 1
Boot HART ID        : 0
Boot HART ISA       : rv64imafdcsu
BOOT HART Features  : pmp,scounteren,mcounteren,time
BOOT HART PMP Count : 16
Firmware Base       : 0x80000000
Firmware Size       : 92 KB
Runtime SBI Version : 0.2

MIDELEG : 0x0000000000000222
MEDELEG : 0x000000000000b109
PMP0    : 0x0000000080000000-0x000000008001ffff (A)
PMP1    : 0x0000000000000000-0xffffffffffffffff (A,R,W,X)
[    0.000000] OF: fdt: Ignoring memory range 0x80000000 - 0x80200000
[    0.000000] Linux version 5.9.0-rc2 (nathan@ubuntu-n2-xlarge-x86) 
(riscv64-linux-gcc (GCC) 10.2.0, GNU ld (GNU Binutils) 2.35) #1 SMP Wed Aug 26 
17:11:49 MST 2020
[    0.000000] Initial ramdisk at: 0x(____ptrval____) (5447680 bytes)
[    0.000000] Zone ranges:
[    0.000000]   DMA32    [mem 0x0000000080200000-0x000000009fffffff]
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000080200000-0x000000009fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000080200000-0x000000009fffffff]
[    0.000000] software IO TLB: mapped [mem 0x9b700000-0x9f700000] (64MB)
[    0.000000] SBI specification v0.2 detected
[    0.000000] SBI implementation ID=0x1 Version=0x8
[    0.000000] SBI v0.2 TIME extension detected
[    0.000000] SBI v0.2 IPI extension detected
[    0.000000] SBI v0.2 RFENCE extension detected
[    0.000000] SBI v0.2 HSM extension detected
[    0.000000] riscv: ISA extensions acdfimsu
[    0.000000] riscv: ELF capabilities acdfim
[    0.000000] percpu: Embedded 17 pages/cpu s32040 r8192 d29400 u69632
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 128775
[    0.000000] Kernel command line: 
[    0.000000] Dentry cache hash table entries: 65536 (order: 7, 524288 bytes, 
linear)
[    0.000000] Inode-cache hash table entries: 32768 (order: 6, 262144 bytes, 
linear)
[    0.000000] Sorting __ex_table...
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 425804K/522240K available (8799K kernel code, 3795K 
rwdata, 4096K rodata, 243K init, 318K bss, 96436K reserved, 0K cma-reserved)
[    0.000000] Virtual kernel memory layout:
[    0.000000]       fixmap : 0xffffffcefee00000 - 0xffffffceff000000   (2048 
kB)
[    0.000000]       pci io : 0xffffffceff000000 - 0xffffffcf00000000   (  16 
MB)
[    0.000000]      vmemmap : 0xffffffcf00000000 - 0xffffffcfffffffff   (4095 
MB)
[    0.000000]      vmalloc : 0xffffffd000000000 - 0xffffffdfffffffff   (65535 
MB)
[    0.000000]       lowmem : 0xffffffe000000000 - 0xffffffe01fe00000   ( 510 
MB)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=1.
[    0.000000] rcu:     RCU debug extended QS entry/exit.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 
jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] riscv-intc: 64 local interrupts mapped
[    0.000000] plic: plic@c000000: mapped 53 interrupts with 1 handlers for 2 
contexts.
[    0.000000] random: get_random_bytes called from start_kernel+0x312/0x48a 
with crng_init=0
[    0.000000] riscv_timer_init_dt: Registering clocksource cpuid [0] hartid [0]
[    0.000000] clocksource: riscv_clocksource: mask: 0xffffffffffffffff 
max_cycles: 0x24e6a1710, max_idle_ns: 440795202120 ns
[    0.000131] sched_clock: 64 bits at 10MHz, resolution 100ns, wraps every 
4398046511100ns
[    0.003499] Console: colour dummy device 80x25
[    0.005104] printk: console [tty0] enabled
[    0.008915] Calibrating delay loop (skipped), value calculated using timer 
frequency.. 20.00 BogoMIPS (lpj=40000)
[    0.009116] pid_max: default: 32768 minimum: 301
[    0.010195] Mount-cache hash table entries: 1024 (order: 1, 8192 bytes, 
linear)
[    0.010250] Mountpoint-cache hash table entries: 1024 (order: 1, 8192 bytes, 
linear)
[    0.032399] rcu: Hierarchical SRCU implementation.
[    0.035350] smp: Bringing up secondary CPUs ...
[    0.035450] smp: Brought up 1 node, 1 CPU
[    0.042577] devtmpfs: initialized
[    0.048069] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, 
max_idle_ns: 7645041785100000 ns
[    0.048237] futex hash table entries: 256 (order: 2, 16384 bytes, linear)
[    0.052210] NET: Registered protocol family 16
[    0.098511] vgaarb: loaded
[    0.100074] SCSI subsystem initialized
[    0.101668] usbcore: registered new interface driver usbfs
[    0.101926] usbcore: registered new interface driver hub
[    0.102191] usbcore: registered new device driver usb
[    0.110051] clocksource: Switched to clocksource riscv_clocksource
[    0.123876] NET: Registered protocol family 2
[    0.127511] tcp_listen_portaddr_hash hash table entries: 256 (order: 1, 
10240 bytes, linear)
[    0.127634] TCP established hash table entries: 4096 (order: 3, 32768 bytes, 
linear)
[    0.127857] TCP bind hash table entries: 4096 (order: 5, 131072 bytes, 
linear)
[    0.128121] TCP: Hash tables configured (established 4096 bind 4096)
[    0.129571] UDP hash table entries: 256 (order: 2, 24576 bytes, linear)
[    0.129879] UDP-Lite hash table entries: 256 (order: 2, 24576 bytes, linear)
[    0.131008] NET: Registered protocol family 1
[    0.132967] RPC: Registered named UNIX socket transport module.
[    0.133042] RPC: Registered udp transport module.
[    0.133076] RPC: Registered tcp transport module.
[    0.133106] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.133233] PCI: CLS 0 bytes, default 64
[    0.135643] Unpacking initramfs...
[    0.183058] Freeing initrd memory: 5316K
[    0.184728] workingset: timestamp_bits=62 max_order=17 bucket_order=0
[    0.195696] NFS: Registering the id_resolver key type
[    0.196399] Key type id_resolver registered
[    0.196458] Key type id_legacy registered
[    0.196785] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    0.197373] 9p: Installing v9fs 9p2000 file system support
[    0.198583] NET: Registered protocol family 38
[    0.198835] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 
252)
[    0.198981] io scheduler mq-deadline registered
[    0.199057] io scheduler kyber registered
[    0.205065] pci-host-generic 30000000.pci: host bridge /soc/pci@30000000 
ranges:
[    0.205839] pci-host-generic 30000000.pci:       IO 
0x0003000000..0x000300ffff -> 0x0000000000
[    0.206249] pci-host-generic 30000000.pci:      MEM 
0x0040000000..0x007fffffff -> 0x0040000000
[    0.207936] pci-host-generic 30000000.pci: ECAM at [mem 
0x30000000-0x3fffffff] for [bus 00-ff]
[    0.208679] pci-host-generic 30000000.pci: PCI host bridge to bus 0000:00
[    0.208868] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.208998] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
[    0.209030] pci_bus 0000:00: root bus resource [mem 0x40000000-0x7fffffff]
[    0.210064] pci 0000:00:00.0: [1b36:0008] type 00 class 0x060000
[    0.263742] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
[    0.269844] 10000000.uart: ttyS0 at MMIO 0x10000000 (irq = 2, base_baud = 
230400) is a 16550A
[    0.293344] printk: console [ttyS0] enabled
[    0.295718] [drm] radeon kernel modesetting enabled.
[    0.309502] loop: module loaded
[    0.312030] libphy: Fixed MDIO Bus: probed
[    0.313155] e1000e: Intel(R) PRO/1000 Network Driver
[    0.313359] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[    0.313919] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.314250] ehci-pci: EHCI PCI platform driver
[    0.314576] ehci-platform: EHCI generic platform driver
[    0.314893] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    0.315161] ohci-pci: OHCI PCI platform driver
[    0.315465] ohci-platform: OHCI generic platform driver
[    0.316381] usbcore: registered new interface driver uas
[    0.316810] usbcore: registered new interface driver usb-storage
[    0.317836] mousedev: PS/2 mouse device common for all mice
[    0.320420] goldfish_rtc 101000.rtc: registered as rtc0
[    0.321252] goldfish_rtc 101000.rtc: setting system clock to 
2020-08-27T01:07:48 UTC (1598490468)
[    0.323371] syscon-poweroff soc:poweroff: pm_power_off already claimed 
(____ptrval____) sbi_shutdown
[    0.323806] syscon-poweroff: probe of soc:poweroff failed with error -16
[    0.325064] usbcore: registered new interface driver usbhid
[    0.325331] usbhid: USB HID core driver
[    0.327015] NET: Registered protocol family 10
[    0.333244] Segment Routing with IPv6
[    0.333688] sit: IPv6, IPv4 and MPLS over IPv4 tunneling driver
[    0.336318] NET: Registered protocol family 17
[    0.337774] 9pnet: Installing 9P2000 support
[    0.338190] Key type dns_resolver registered
[    0.338797] debug_vm_pgtable: [debug_vm_pgtable         ]: Validating 
architecture page table helpers
[    0.367698] Freeing unused kernel memory: 240K
[    0.370891] Run /init as init process
Starting syslogd: OK
Starting klogd: OK
Running sysctl: OK
Saving random seed: [    1.196728] random: dd: uninitialized urandom read (512 
bytes read)
OK
Starting network: OK
Linux version 5.9.0-rc2 (nathan@ubuntu-n2-xlarge-x86) (riscv64-linux-gcc (GCC) 
10.2.0, GNU ld (GNU Binutils) 2.35) #1 SMP Wed Aug 26 17:11:49 MST 2020
Linux version 5.9.0-rc2 (nathan@ubuntu-n2-xlarge-x86) (riscv64-linux-gcc (GCC) 
10.2.0, GNU ld (GNU Binutils) 2.35) #1 SMP Wed Aug 26 17:11:49 MST 2020
Stopping network: OK
Saving random seed: [    2.057696] random: dd: uninitialized urandom read (512 
bytes read)
OK
Stopping klogd: OK
Stopping syslogd: OK
umount: devtmpfs busy - remounted read-only
umount: can't unmount /: Invalid argument
The system is going down NOW!
Sent SIGTERM to all processes
Sent SIGKILL to all processes
Requesting system poweroff
[    4.304032] reboot: Power down
sbi_trap_error: hart0: trap handler failed (error -2)
sbi_trap_error: hart0: mcause=0x0000000000000007 mtval=0x0000000000100000
sbi_trap_error: hart0: mepc=0x000000008000d4cc mstatus=0x0000000000001822
sbi_trap_error: hart0: ra=0x000000008000999e sp=0x0000000080015c78
sbi_trap_error: hart0: gp=0xffffffe001070b90 tp=0xffffffe0081c8000
sbi_trap_error: hart0: s0=0x0000000080015c88 s1=0x0000000000000040
sbi_trap_error: hart0: a0=0x0000000000000000 a1=0x0000000080004024
sbi_trap_error: hart0: a2=0x0000000080004024 a3=0x0000000080004024
sbi_trap_error: hart0: a4=0x0000000000100000 a5=0x0000000000005555
sbi_trap_error: hart0: a6=0x0000000000004024 a7=0x0000000080011158
sbi_trap_error: hart0: s2=0x0000000000000000 s3=0x0000000080016000
sbi_trap_error: hart0: s4=0x0000000000000000 s5=0x0000000000000000
sbi_trap_error: hart0: s6=0x0000000000000001 s7=0x0000000000000000
sbi_trap_error: hart0: s8=0x0000000000000000 s9=0x0000000000000000
sbi_trap_error: hart0: s10=0x0000000000000000 s11=0x0000000000000008
sbi_trap_error: hart0: t0=0x0000000000000000 t1=0x0000000000000000
sbi_trap_error: hart0: t2=0x0000000000000000 t3=0x0000000000000000
sbi_trap_error: hart0: t4=0x0000000000000000 t5=0x0000000000000000
sbi_trap_error: hart0: t6=0x0000000000000000

Cheers,
Nathan

Attachment: rootfs.cpio
Description: CPIO file

Attachment: Image
Description: Binary data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]