[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH NOTFORMERGE v3 16/16] tests/acceptance: Test U-boot on the Raspbe
From: |
Philippe Mathieu-Daudé |
Subject: |
[PATCH NOTFORMERGE v3 16/16] tests/acceptance: Test U-boot on the Raspberry Pi 3 |
Date: |
Sun, 20 Oct 2019 01:47:15 +0200 |
This is a proof-of-concept for the '-smp cores=1' feature which
restricts the cores brought online on reset.
The u-boot binary is old and from an untrusted source, but I
don't want to add the build machinery in QEMU, so it is enough
to demonstrate the feature works reliably.
By default this test is not run:
$ avocado run -t machine:raspi3 tests/acceptance/
(1/1)
tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_arm_raspi3_uboot:
SKIP: untrusted code
RESULTS : PASS 0 | ERROR 0 | FAIL 0 | SKIP 1 | WARN 0 | INTERRUPT 0 |
CANCEL 0
JOB TIME : 0.23 s
We can run it setting the AVOCADO_ALLOW_UNTRUSTED_CODE variable:
$ AVOCADO_ALLOW_UNTRUSTED_CODE=1 ./tests/venv/bin/avocado --show=app,console
run -t machine:raspi3 tests/acceptance/
(1/1)
tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_arm_raspi3_uboot:
console: U-Boot 2016.05-rc1-gd36dcaf (Apr 28 2016 - 23:29:29 +0200)
console: DRAM: 960 MiB
console: RPI 3 Model B (0xa02082)
console: boot regs: 0x00000000 0x00000000 0x00000000 0x00000000
console: MMC: bcm2835_sdhci: 0
console: Card did not respond to voltage select!
console: ** Bad device mmc 0 **
console: Using default environment
console: In: serial
console: Out: lcd
console: Err: lcd
console: Net: Net Initialization Skipped
console: No ethernet found.
PASS (0.30 s)
Then test QEMU:
$ qemu-system-aarch64 \
-M raspi3 -smp 4,cores=1 \
-kernel u-boot.bin \
-serial null -serial stdio
U-Boot 2016.05-rc1-gd36dcaf (Apr 28 2016 - 23:29:29 +0200)
DRAM: 960 MiB
RPI 3 Model B (0xa02082)
boot regs: 0x00000000 0x00000000 0x00000000 0x00000000
MMC: bcm2835_sdhci: 0
Card did not respond to voltage select!
** Bad device mmc 0 **
Using default environment
In: serial
Out: lcd
Err: lcd
Net: Net Initialization Skipped
No ethernet found.
starting USB...
USB0: Core Release: 0.000
SNPSID invalid (not DWC2 OTG device): 00000000
Port not available.
Autoboot in 2 seconds
Card did not respond to voltage select!
starting USB...
USB0: Core Release: 0.000
SNPSID invalid (not DWC2 OTG device): 00000000
Port not available.
USB is stopped. Please issue 'usb start' first.
starting USB...
USB0: Core Release: 0.000
SNPSID invalid (not DWC2 OTG device): 00000000
Port not available.
No ethernet found.
missing environment variable: pxeuuid
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/00000000
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/0000000
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/000000
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/00000
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/0000
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/000
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/00
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/0
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/default-arm-bcm283x
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/default-arm
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/default
No ethernet found.
Config file not found
starting USB...
USB0: Core Release: 0.000
SNPSID invalid (not DWC2 OTG device): 00000000
Port not available.
No ethernet found.
U-Boot> version
U-Boot 2016.05-rc1-gd36dcaf (Apr 28 2016 - 23:29:29 +0200)
aarch64-unknown-linux-gnu-gcc (Gentoo 5.3.0 p1.0, pie-0.6.5) 5.3.0
GNU ld (Gentoo 2.25.1 p1.1) 2.25.1
U-Boot> ^C
qemu-system-aarch64: terminating on signal 2
We can also build a recent U-boot with:
u-boot$ export CROSS_COMPILE=aarch64-linux-gnu-
u-boot$ make rpi_3_defconfig
u-boot$ make -j8
And test it:
$ qemu-system-aarch64 \
-M raspi3 -smp 4,cores=1 \
-kernel u-boot.bin \
-serial null -serial stdio
MMC: mmc@7e202000: 0, sdhci@7e300000: 1
Loading Environment from FAT... WARNING at
drivers/mmc/bcm2835_sdhost.c:410/bcm2835_send_command()!
WARNING at drivers/mmc/bcm2835_sdhost.c:410/bcm2835_send_command()!
Card did not respond to voltage select!
In: serial
Out: vidconsole
Err: vidconsole
Net: No ethernet found.
starting USB...
Bus usb@7e980000: Port not available.
Hit any key to stop autoboot: 0
WARNING at drivers/mmc/bcm2835_sdhost.c:410/bcm2835_send_command()!
WARNING at drivers/mmc/bcm2835_sdhost.c:410/bcm2835_send_command()!
WARNING at drivers/mmc/bcm2835_sdhost.c:410/bcm2835_send_command()!
Card did not respond to voltage select!
MMC: no card present
starting USB...
Bus usb@7e980000: Port not available.
USB is stopped. Please issue 'usb start' first.
starting USB...
Bus usb@7e980000: Port not available.
No ethernet found.
missing environment variable: pxeuuid
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/00000000
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/0000000
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/000000
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/00000
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/0000
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/000
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/00
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/0
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/default-arm-bcm283x-rpi
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/default-arm-bcm283x
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/default-arm
No ethernet found.
missing environment variable: bootfile
Retrieving file: pxelinux.cfg/default
No ethernet found.
Config file not found
starting USB...
Bus usb@7e980000: Port not available.
No ethernet found.
No ethernet found.
U-Boot> version
U-Boot 2019.10-rc4-dirty (Oct 19 2019 - 22:02:10 +0000)
aarch64-linux-gnu-gcc (Debian 8.3.0-2) 8.3.0
GNU ld (GNU Binutils for Debian) 2.31.1
U-Boot> reset
resetting ...
U-Boot> ^C
qemu-system-aarch64: terminating on signal 2
Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
---
tests/acceptance/boot_linux_console.py | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/tests/acceptance/boot_linux_console.py
b/tests/acceptance/boot_linux_console.py
index 8a9a314ab4..7c73051a9a 100644
--- a/tests/acceptance/boot_linux_console.py
+++ b/tests/acceptance/boot_linux_console.py
@@ -14,6 +14,7 @@ import lzma
import gzip
import shutil
+from avocado import skipUnless
from avocado_qemu import Test
from avocado.utils import process
from avocado.utils import archive
@@ -316,6 +317,28 @@ class BootLinuxConsole(Test):
self.vm.launch()
self.wait_for_console_pattern('init started: BusyBox')
+ @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
+ def test_arm_raspi3_uboot(self):
+ """
+ :avocado: tags=arch:aarch64
+ :avocado: tags=machine:raspi3
+ :avocado: tags=endian:little
+ """
+ uboot_url = ('https://github.com/poinck/piii64/raw/bf3e070d/'
+ 'boot/u-boot.bin')
+ uboot_hash = 'cd2ab2a24589a5b9d177af172af8b39998e5f93f'
+ uboot_path = self.fetch_asset(uboot_url, asset_hash=uboot_hash)
+
+ self.vm.set_machine('raspi3')
+ self.vm.set_console(console_index=1)
+ kernel_command_line = self.KERNEL_COMMON_COMMAND_LINE
+ self.vm.add_args('-kernel', uboot_path,
+ '-smp', '4,cores=1', # start 3 cores disabled
+ '-no-reboot')
+ self.vm.launch()
+ self.wait_for_console_pattern('RPI 3 Model B')
+ self.wait_for_console_pattern('No ethernet found.')
+
def test_s390x_s390_ccw_virtio(self):
"""
:avocado: tags=arch:s390x
--
2.21.0
- [PATCH v3 10/16] hw/arm/raspi: Use AddressSpace when using arm_boot::write_secondary_boot, (continued)
- [PATCH v3 10/16] hw/arm/raspi: Use AddressSpace when using arm_boot::write_secondary_boot, Philippe Mathieu-Daudé, 2019/10/19
- [PATCH v3 11/16] hw/arm/raspi: Use -smp cores=<N> option to restrict enabled cores, Philippe Mathieu-Daudé, 2019/10/19
- [PATCH v3 12/16] hw/arm/bcm2836: Rename enabled_cpus -> enabled_cores, Philippe Mathieu-Daudé, 2019/10/19
- [PATCH v3 13/16] hw/arm/raspi: Make the board code modular, Philippe Mathieu-Daudé, 2019/10/19
- [PATCH v3 15/16] python/qemu/machine: Allow to use other serial consoles than default, Philippe Mathieu-Daudé, 2019/10/19
- [PATCH v3 14/16] hw/arm/highbank: Use AddressSpace when using write_secondary_boot(), Philippe Mathieu-Daudé, 2019/10/19
- [PATCH NOTFORMERGE v3 16/16] tests/acceptance: Test U-boot on the Raspberry Pi 3,
Philippe Mathieu-Daudé <=
- Re: [PATCH v3 00/16] hw/arm/raspi: Add thermal/timer, improve address space, run U-boot, Peter Maydell, 2019/10/24
- Re: [PATCH v3 00/16] hw/arm/raspi: Add thermal/timer, improve address space, run U-boot, Peter Maydell, 2019/10/24