This test boots a Linux kernel on a OrangePi PC board and verify
the serial output is working.
The kernel image and DeviceTree blob are built by the Raspbian
project (based on Debian):
https://www.raspbian.org/RaspbianImages
If ARM is a target being built, "make check-acceptance" will
automatically include this test by the use of the "arch:arm" tags.
Alternatively, this test can be run using:
$ make check-venv
$ ./tests/venv/bin/avocado --show=console,app run -t machine:orangepi-pc tests/acceptance/boot_linux_console.py
JOB ID : 2e4d15eceb13c33672af406f08171e6e9de1414a
JOB LOG : ~/job-results/job-2019-12-17T05.46-2e4d15e/job.log
(1/1) tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_arm_orangepi:
console: Uncompressing Linux... done, booting the kernel.
console: Booting Linux on physical CPU 0x0
console: Linux version 4.20.7-sunxi (root@armbian.com) (gcc version 7.2.1 20171011 (Linaro GCC 7.2-2017.11)) #5.75 SMP Fri Feb 8 09:02:10 CET 2019
console: CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=50c5387d
console: CPU: div instructions available: patching division code
console: CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
console: OF: fdt: Machine model: Xunlong Orange Pi PC
console: Memory policy: Data cache writealloc
console: OF: reserved mem: failed to allocate memory for node 'cma@4a000000'
console: cma: Failed to reserve 128 MiB
console: psci: probing for conduit method from DT.
console: psci: PSCIv0.2 detected in firmware.
console: psci: Using standard PSCI v0.2 function IDs
console: psci: Trusted OS migration not required
console: random: get_random_bytes called from start_kernel+0x8d/0x3c2 with crng_init=0
console: percpu: Embedded 18 pages/cpu @(ptrval) s41228 r8192 d24308 u73728
console: Built 1 zonelists, mobility grouping on. Total pages: 32480
console: Kernel command line: printk.time=0 console=ttyS0,115200
PASS (8.59 s)
JOB TIME : 8.81 s
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
tests/acceptance/boot_linux_console.py | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/tests/acceptance/boot_linux_console.py b/tests/acceptance/boot_linux_console.py
index 7e41cebd47..820239e439 100644
--- a/tests/acceptance/boot_linux_console.py
+++ b/tests/acceptance/boot_linux_console.py
@@ -411,6 +411,32 @@ class BootLinuxConsole(Test):
self.wait_for_console_pattern('Boot successful.')
# TODO user command, for now the uart is stuck
+ def test_arm_orangepi(self):
+ """
+ :avocado: tags=arch:arm
+ :avocado: tags=machine:orangepi-pc
+ """
+ deb_url = ('https://apt.armbian.com/pool/main/l/'
+ 'linux-4.20.7-sunxi/linux-image-dev-sunxi_5.75_armhf.deb')
+ deb_hash = '1334c29c44d984ffa05ed10de8c3361f33d78315'
+ deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)
+ kernel_path = self.extract_from_deb(deb_path,
+ '/boot/vmlinuz-4.20.7-sunxi')
+ dtb_path = '/usr/lib/linux-image-dev-sunxi/sun8i-h3-orangepi-pc.dtb'
+ dtb_path = self.extract_from_deb(deb_path, dtb_path)
+
+ self.vm.set_machine('orangepi-pc')
+ self.vm.set_console()
+ kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE +
+ 'console=ttyS0,115200n8 '
+ 'earlycon=uart,mmio32,0x1c28000')
+ self.vm.add_args('-kernel', kernel_path,
+ '-dtb', dtb_path,
+ '-append', kernel_command_line)
+ self.vm.launch()
+ console_pattern = 'Kernel command line: %s' % kernel_command_line
+ self.wait_for_console_pattern(console_pattern)
+
def test_s390x_s390_ccw_virtio(self):
"""
:avocado: tags=arch:s390x
--
2.21.0
Hey Philippe,
Super!! Fantastic, now we can automatically test the H3 based boards
and use that to verify they keep working as expected when changing the code.
Great, I'm going to use these tests also from now on (previously I had some
small
bash scripts).
This quick test is working fine for me, so:
Tested-by: Niek Linnenbank <nieklinnenbank@gmail.com>
Regards,
Niek
On Tue, Dec 17, 2019 at 7:27 PM Philippe Mathieu-Daudé <f4bug@amsat.org>
wrote:
> This test boots a Linux kernel on a OrangePi PC board and verify
> the serial output is working.
>
> The kernel image and DeviceTree blob are built by the Raspbian
> project (based on Debian):
> https://www.raspbian.org/RaspbianImages
>
> If ARM is a target being built, "make check-acceptance" will
> automatically include this test by the use of the "arch:arm" tags.
>
> Alternatively, this test can be run using:
>
> $ make check-venv
> $ ./tests/venv/bin/avocado --show=console,app run -t machine:orangepi-pc
> tests/acceptance/boot_linux_console.py
> JOB ID : 2e4d15eceb13c33672af406f08171e6e9de1414a
> JOB LOG : ~/job-results/job-2019-12-17T05.46-2e4d15e/job.log
> (1/1)
> tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_arm_orangepi:
> console: Uncompressing Linux... done, booting the kernel.
> console: Booting Linux on physical CPU 0x0
> console: Linux version 4.20.7-sunxi (root@armbian.com) (gcc version
> 7.2.1 20171011 (Linaro GCC 7.2-2017.11)) #5.75 SMP Fri Feb 8 09:02:10 CET
> 2019
> console: CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=50c5387d
> console: CPU: div instructions available: patching division code
> console: CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing
> instruction cache
> console: OF: fdt: Machine model: Xunlong Orange Pi PC
> console: Memory policy: Data cache writealloc
> console: OF: reserved mem: failed to allocate memory for node
> 'cma@4a000000'
> console: cma: Failed to reserve 128 MiB
> console: psci: probing for conduit method from DT.
> console: psci: PSCIv0.2 detected in firmware.
> console: psci: Using standard PSCI v0.2 function IDs
> console: psci: Trusted OS migration not required
> console: random: get_random_bytes called from start_kernel+0x8d/0x3c2
> with crng_init=0
> console: percpu: Embedded 18 pages/cpu @(ptrval) s41228 r8192 d24308
> u73728
> console: Built 1 zonelists, mobility grouping on. Total pages: 32480
> console: Kernel command line: printk.time=0 console=ttyS0,115200
> PASS (8.59 s)
> JOB TIME : 8.81 s
>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
> tests/acceptance/boot_linux_console.py | 26 ++++++++++++++++++++++++++
> 1 file changed, 26 insertions(+)
>
> diff --git a/tests/acceptance/boot_linux_console.py
> b/tests/acceptance/boot_linux_console.py
> index 7e41cebd47..820239e439 100644
> --- a/tests/acceptance/boot_linux_console.py
> +++ b/tests/acceptance/boot_linux_console.py
> @@ -411,6 +411,32 @@ class BootLinuxConsole(Test):
> self.wait_for_console_pattern('Boot successful.')
> # TODO user command, for now the uart is stuck
>
> + def test_arm_orangepi(self):
> + """
> + :avocado: tags=arch:arm
> + :avocado: tags=machine:orangepi-pc
> + """
> + deb_url = ('https://apt.armbian.com/pool/main/l/'
> +
> 'linux-4.20.7-sunxi/linux-image-dev-sunxi_5.75_armhf.deb')
> + deb_hash = '1334c29c44d984ffa05ed10de8c3361f33d78315'
> + deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)
> + kernel_path = self.extract_from_deb(deb_path,
> + '/boot/vmlinuz-4.20.7-sunxi')
> + dtb_path =
> '/usr/lib/linux-image-dev-sunxi/sun8i-h3-orangepi-pc.dtb'
> + dtb_path = self.extract_from_deb(deb_path, dtb_path)
> +
> + self.vm.set_machine('orangepi-pc')
> + self.vm.set_console()
> + kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE +
> + 'console=ttyS0,115200n8 '
> + 'earlycon=uart,mmio32,0x1c28000')
> + self.vm.add_args('-kernel', kernel_path,
> + '-dtb', dtb_path,
> + '-append', kernel_command_line)
> + self.vm.launch()
> + console_pattern = 'Kernel command line: %s' % kernel_command_line
> + self.wait_for_console_pattern(console_pattern)
> +
> def test_s390x_s390_ccw_virtio(self):
> """
> :avocado: tags=arch:s390x
> --
> 2.21.0
>
>
--
Niek Linnenbank
On Tue, Dec 17, 2019 at 07:27:26PM +0100, Philippe Mathieu-Daudé wrote:
> This test boots a Linux kernel on a OrangePi PC board and verify
> the serial output is working.
>
> The kernel image and DeviceTree blob are built by the Raspbian
> project (based on Debian):
> https://www.raspbian.org/RaspbianImages
>
> If ARM is a target being built, "make check-acceptance" will
> automatically include this test by the use of the "arch:arm" tags.
>
> Alternatively, this test can be run using:
>
> $ make check-venv
> $ ./tests/venv/bin/avocado --show=console,app run -t machine:orangepi-pc tests/acceptance/boot_linux_console.py
> JOB ID : 2e4d15eceb13c33672af406f08171e6e9de1414a
> JOB LOG : ~/job-results/job-2019-12-17T05.46-2e4d15e/job.log
> (1/1) tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_arm_orangepi:
> console: Uncompressing Linux... done, booting the kernel.
> console: Booting Linux on physical CPU 0x0
> console: Linux version 4.20.7-sunxi (root@armbian.com) (gcc version 7.2.1 20171011 (Linaro GCC 7.2-2017.11)) #5.75 SMP Fri Feb 8 09:02:10 CET 2019
> console: CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=50c5387d
> console: CPU: div instructions available: patching division code
> console: CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
> console: OF: fdt: Machine model: Xunlong Orange Pi PC
> console: Memory policy: Data cache writealloc
> console: OF: reserved mem: failed to allocate memory for node 'cma@4a000000'
> console: cma: Failed to reserve 128 MiB
> console: psci: probing for conduit method from DT.
> console: psci: PSCIv0.2 detected in firmware.
> console: psci: Using standard PSCI v0.2 function IDs
> console: psci: Trusted OS migration not required
> console: random: get_random_bytes called from start_kernel+0x8d/0x3c2 with crng_init=0
> console: percpu: Embedded 18 pages/cpu @(ptrval) s41228 r8192 d24308 u73728
> console: Built 1 zonelists, mobility grouping on. Total pages: 32480
> console: Kernel command line: printk.time=0 console=ttyS0,115200
> PASS (8.59 s)
> JOB TIME : 8.81 s
>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
> tests/acceptance/boot_linux_console.py | 26 ++++++++++++++++++++++++++
> 1 file changed, 26 insertions(+)
>
> diff --git a/tests/acceptance/boot_linux_console.py b/tests/acceptance/boot_linux_console.py
> index 7e41cebd47..820239e439 100644
> --- a/tests/acceptance/boot_linux_console.py
> +++ b/tests/acceptance/boot_linux_console.py
> @@ -411,6 +411,32 @@ class BootLinuxConsole(Test):
> self.wait_for_console_pattern('Boot successful.')
> # TODO user command, for now the uart is stuck
>
> + def test_arm_orangepi(self):
Maybe rename the test to include the full machine type? I mean,
"test_arm_orangepi_pc"?
> + """
> + :avocado: tags=arch:arm
> + :avocado: tags=machine:orangepi-pc
> + """
> + deb_url = ('https://apt.armbian.com/pool/main/l/'
> + 'linux-4.20.7-sunxi/linux-image-dev-sunxi_5.75_armhf.deb')
> + deb_hash = '1334c29c44d984ffa05ed10de8c3361f33d78315'
> + deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)
> + kernel_path = self.extract_from_deb(deb_path,
> + '/boot/vmlinuz-4.20.7-sunxi')
> + dtb_path = '/usr/lib/linux-image-dev-sunxi/sun8i-h3-orangepi-pc.dtb'
> + dtb_path = self.extract_from_deb(deb_path, dtb_path)
> +
> + self.vm.set_machine('orangepi-pc')
> + self.vm.set_console()
> + kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE +
> + 'console=ttyS0,115200n8 '
> + 'earlycon=uart,mmio32,0x1c28000')
> + self.vm.add_args('-kernel', kernel_path,
> + '-dtb', dtb_path,
> + '-append', kernel_command_line)
> + self.vm.launch()
> + console_pattern = 'Kernel command line: %s' % kernel_command_line
> + self.wait_for_console_pattern(console_pattern)
> +
> def test_s390x_s390_ccw_virtio(self):
> """
> :avocado: tags=arch:s390x
> --
> 2.21.0
>
Either way,
Reviewed-by: Cleber Rosa <crosa@redhat.com>
Tested-by: Cleber Rosa <crosa@redhat.com>
On Wed, Dec 18, 2019 at 08:05:15PM -0500, Cleber Rosa wrote:
> On Tue, Dec 17, 2019 at 07:27:26PM +0100, Philippe Mathieu-Daudé wrote:
> > This test boots a Linux kernel on a OrangePi PC board and verify
> > the serial output is working.
> >
> > The kernel image and DeviceTree blob are built by the Raspbian
> > project (based on Debian):
> > https://www.raspbian.org/RaspbianImages
> >
> > If ARM is a target being built, "make check-acceptance" will
> > automatically include this test by the use of the "arch:arm" tags.
> >
> > Alternatively, this test can be run using:
> >
> > $ make check-venv
> > $ ./tests/venv/bin/avocado --show=console,app run -t machine:orangepi-pc tests/acceptance/boot_linux_console.py
> > JOB ID : 2e4d15eceb13c33672af406f08171e6e9de1414a
> > JOB LOG : ~/job-results/job-2019-12-17T05.46-2e4d15e/job.log
> > (1/1) tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_arm_orangepi:
> > console: Uncompressing Linux... done, booting the kernel.
> > console: Booting Linux on physical CPU 0x0
> > console: Linux version 4.20.7-sunxi (root@armbian.com) (gcc version 7.2.1 20171011 (Linaro GCC 7.2-2017.11)) #5.75 SMP Fri Feb 8 09:02:10 CET 2019
> > console: CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=50c5387d
> > console: CPU: div instructions available: patching division code
> > console: CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
> > console: OF: fdt: Machine model: Xunlong Orange Pi PC
> > console: Memory policy: Data cache writealloc
> > console: OF: reserved mem: failed to allocate memory for node 'cma@4a000000'
> > console: cma: Failed to reserve 128 MiB
> > console: psci: probing for conduit method from DT.
> > console: psci: PSCIv0.2 detected in firmware.
> > console: psci: Using standard PSCI v0.2 function IDs
> > console: psci: Trusted OS migration not required
> > console: random: get_random_bytes called from start_kernel+0x8d/0x3c2 with crng_init=0
> > console: percpu: Embedded 18 pages/cpu @(ptrval) s41228 r8192 d24308 u73728
> > console: Built 1 zonelists, mobility grouping on. Total pages: 32480
> > console: Kernel command line: printk.time=0 console=ttyS0,115200
> > PASS (8.59 s)
> > JOB TIME : 8.81 s
> >
> > Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> > ---
> > tests/acceptance/boot_linux_console.py | 26 ++++++++++++++++++++++++++
> > 1 file changed, 26 insertions(+)
> >
> > diff --git a/tests/acceptance/boot_linux_console.py b/tests/acceptance/boot_linux_console.py
> > index 7e41cebd47..820239e439 100644
> > --- a/tests/acceptance/boot_linux_console.py
> > +++ b/tests/acceptance/boot_linux_console.py
> > @@ -411,6 +411,32 @@ class BootLinuxConsole(Test):
> > self.wait_for_console_pattern('Boot successful.')
> > # TODO user command, for now the uart is stuck
> >
> > + def test_arm_orangepi(self):
>
> Maybe rename the test to include the full machine type? I mean,
> "test_arm_orangepi_pc"?
>
> > + """
> > + :avocado: tags=arch:arm
> > + :avocado: tags=machine:orangepi-pc
> > + """
> > + deb_url = ('https://apt.armbian.com/pool/main/l/'
> > + 'linux-4.20.7-sunxi/linux-image-dev-sunxi_5.75_armhf.deb')
> > + deb_hash = '1334c29c44d984ffa05ed10de8c3361f33d78315'
> > + deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)
> > + kernel_path = self.extract_from_deb(deb_path,
> > + '/boot/vmlinuz-4.20.7-sunxi')
> > + dtb_path = '/usr/lib/linux-image-dev-sunxi/sun8i-h3-orangepi-pc.dtb'
> > + dtb_path = self.extract_from_deb(deb_path, dtb_path)
> > +
> > + self.vm.set_machine('orangepi-pc')
Missed this on the previous message: you should drop this line, as the
machine type will be set automatically (given a machine tag exists)
since ba21bde93.
- Cleber.
> > + self.vm.set_console()
> > + kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE +
> > + 'console=ttyS0,115200n8 '
> > + 'earlycon=uart,mmio32,0x1c28000')
> > + self.vm.add_args('-kernel', kernel_path,
> > + '-dtb', dtb_path,
> > + '-append', kernel_command_line)
> > + self.vm.launch()
> > + console_pattern = 'Kernel command line: %s' % kernel_command_line
> > + self.wait_for_console_pattern(console_pattern)
> > +
> > def test_s390x_s390_ccw_virtio(self):
> > """
> > :avocado: tags=arch:s390x
> > --
> > 2.21.0
> >
>
> Either way,
>
> Reviewed-by: Cleber Rosa <crosa@redhat.com>
> Tested-by: Cleber Rosa <crosa@redhat.com>
Hi Philippe,
On Tue, Dec 17, 2019 at 7:27 PM Philippe Mathieu-Daudé <f4bug@amsat.org>
wrote:
> This test boots a Linux kernel on a OrangePi PC board and verify
> the serial output is working.
>
> The kernel image and DeviceTree blob are built by the Raspbian
> project (based on Debian):
> https://www.raspbian.org/RaspbianImages
One minor remark: I noticed here you refer to Raspbian, while the actual
image
used is from Armbian :-)
>
> If ARM is a target being built, "make check-acceptance" will
> automatically include this test by the use of the "arch:arm" tags.
>
> Alternatively, this test can be run using:
>
> $ make check-venv
> $ ./tests/venv/bin/avocado --show=console,app run -t machine:orangepi-pc
> tests/acceptance/boot_linux_console.py
> JOB ID : 2e4d15eceb13c33672af406f08171e6e9de1414a
> JOB LOG : ~/job-results/job-2019-12-17T05.46-2e4d15e/job.log
> (1/1)
> tests/acceptance/boot_linux_console.py:BootLinuxConsole.test_arm_orangepi:
> console: Uncompressing Linux... done, booting the kernel.
> console: Booting Linux on physical CPU 0x0
> console: Linux version 4.20.7-sunxi (root@armbian.com) (gcc version
> 7.2.1 20171011 (Linaro GCC 7.2-2017.11)) #5.75 SMP Fri Feb 8 09:02:10 CET
> 2019
> console: CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=50c5387d
> console: CPU: div instructions available: patching division code
> console: CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing
> instruction cache
> console: OF: fdt: Machine model: Xunlong Orange Pi PC
> console: Memory policy: Data cache writealloc
> console: OF: reserved mem: failed to allocate memory for node
> 'cma@4a000000'
> console: cma: Failed to reserve 128 MiB
> console: psci: probing for conduit method from DT.
> console: psci: PSCIv0.2 detected in firmware.
> console: psci: Using standard PSCI v0.2 function IDs
> console: psci: Trusted OS migration not required
> console: random: get_random_bytes called from start_kernel+0x8d/0x3c2
> with crng_init=0
> console: percpu: Embedded 18 pages/cpu @(ptrval) s41228 r8192 d24308
> u73728
> console: Built 1 zonelists, mobility grouping on. Total pages: 32480
> console: Kernel command line: printk.time=0 console=ttyS0,115200
> PASS (8.59 s)
> JOB TIME : 8.81 s
>
> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
> ---
> tests/acceptance/boot_linux_console.py | 26 ++++++++++++++++++++++++++
> 1 file changed, 26 insertions(+)
>
> diff --git a/tests/acceptance/boot_linux_console.py
> b/tests/acceptance/boot_linux_console.py
> index 7e41cebd47..820239e439 100644
> --- a/tests/acceptance/boot_linux_console.py
> +++ b/tests/acceptance/boot_linux_console.py
> @@ -411,6 +411,32 @@ class BootLinuxConsole(Test):
> self.wait_for_console_pattern('Boot successful.')
> # TODO user command, for now the uart is stuck
>
> + def test_arm_orangepi(self):
> + """
> + :avocado: tags=arch:arm
> + :avocado: tags=machine:orangepi-pc
> + """
> + deb_url = ('https://apt.armbian.com/pool/main/l/'
> +
> 'linux-4.20.7-sunxi/linux-image-dev-sunxi_5.75_armhf.deb')
> + deb_hash = '1334c29c44d984ffa05ed10de8c3361f33d78315'
> + deb_path = self.fetch_asset(deb_url, asset_hash=deb_hash)
> + kernel_path = self.extract_from_deb(deb_path,
> + '/boot/vmlinuz-4.20.7-sunxi')
> + dtb_path =
> '/usr/lib/linux-image-dev-sunxi/sun8i-h3-orangepi-pc.dtb'
> + dtb_path = self.extract_from_deb(deb_path, dtb_path)
> +
> + self.vm.set_machine('orangepi-pc')
> + self.vm.set_console()
> + kernel_command_line = (self.KERNEL_COMMON_COMMAND_LINE +
> + 'console=ttyS0,115200n8 '
> + 'earlycon=uart,mmio32,0x1c28000')
> + self.vm.add_args('-kernel', kernel_path,
> + '-dtb', dtb_path,
> + '-append', kernel_command_line)
> + self.vm.launch()
> + console_pattern = 'Kernel command line: %s' % kernel_command_line
> + self.wait_for_console_pattern(console_pattern)
> +
> def test_s390x_s390_ccw_virtio(self):
> """
> :avocado: tags=arch:s390x
> --
> 2.21.0
>
>
--
Niek Linnenbank
© 2016 - 2026 Red Hat, Inc.