On 1/31/20 6:02 PM, Thomas Huth wrote:
There is a kernel and initrd available on github which we can use
for testing this machine.
Signed-off-by: Thomas Huth <th...@redhat.com>
---
MAINTAINERS | 1 +
tests/acceptance/machine_arm_integratorcp.py | 43 ++++++++++++++++++++
2 files changed, 44 insertions(+)
create mode 100644 tests/acceptance/machine_arm_integratorcp.py
diff --git a/MAINTAINERS b/MAINTAINERS
index 6e4976d366..6a03835037 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -599,6 +599,7 @@ S: Maintained
F: hw/arm/integratorcp.c
F: hw/misc/arm_integrator_debug.c
F: include/hw/misc/arm_integrator_debug.h
+F: tests/acceptance/machine_arm_integratorcp.py
MCIMX6UL EVK / i.MX6ul
M: Peter Maydell <peter.mayd...@linaro.org>
diff --git a/tests/acceptance/machine_arm_integratorcp.py
b/tests/acceptance/machine_arm_integratorcp.py
new file mode 100644
index 0000000000..4f9ab40f2f
--- /dev/null
+++ b/tests/acceptance/machine_arm_integratorcp.py
@@ -0,0 +1,43 @@
+# Functional test that boots a Linux kernel and checks the console
+#
+# Copyright (c) 2020 Red Hat, Inc.
+#
+# Author:
+# Thomas Huth <th...@redhat.com>
+#
+# This work is licensed under the terms of the GNU GPL, version 2 or
+# later. See the COPYING file in the top-level directory.
+
+import os
+
+from avocado import skipUnless
+from avocado_qemu import Test
+from avocado_qemu import wait_for_console_pattern
+
+class IntegratorMachine(Test):
+ """Boots the Linux kernel and checks that the console is operational"""
+
+ timeout = 90
+
+ @skipUnless(os.getenv('AVOCADO_ALLOW_UNTRUSTED_CODE'), 'untrusted code')
+ def test_integratorcp(self):
+ """
+ :avocado: tags=arch:arm
+ :avocado: tags=machine:integratorcp
+ """
+ kernel_url = ('https://github.com/zayac/qemu-arm/raw/master/'
+ 'arm-test/kernel/zImage.integrator')
+ kernel_hash = '0d7adba893c503267c946a3cbdc63b4b54f25468'
+ kernel_path = self.fetch_asset(kernel_url, asset_hash=kernel_hash)
+
+ initrd_url = ('https://github.com/zayac/qemu-arm/raw/master/'
+ 'arm-test/kernel/arm_root.img')
+ initrd_hash = 'b51e4154285bf784e017a37586428332d8c7bd8b'
+ initrd_path = self.fetch_asset(initrd_url, asset_hash=initrd_hash)
+
+ self.vm.set_console()
+ self.vm.add_args('-kernel', kernel_path,
+ '-initrd', initrd_path,
+ '-append', 'printk.time=0 console=ttyAMA0')
+ self.vm.launch()
+ wait_for_console_pattern(self, 'Log in as root')
Nice. I see the framebuffer is also working.
I'd add a test on the CPU, and device listed:
Log in as root with no password.
qemu login: root
login[724]: root login on `ttyAMA0'
BusyBox v1.1.2 (2006.05.04-15:30+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.
# cat /proc/cpuinfo
Processor : ARM926EJ-Sid(wb) rev 5 (v5l)
BogoMIPS : 930.61
Features : swp half thumb fastmult edsp java
CPU implementer : 0x41
CPU architecture: 5TEJ
CPU variant : 0x0
CPU part : 0x926
CPU revision : 5
Cache type : write-through
Cache clean : not required
Cache lockdown : not supported
Cache format : Harvard
I size : 4096
I assoc : 4
I line length : 32
I sets : 32
D size : 65536
D assoc : 4
D line length : 32
D sets : 512
Hardware : ARM-IntegratorCP
Revision : 0000
Serial : 0000000000000000
# cat /proc/io
/proc/iomem /proc/ioports
# cat /proc/iomem
00000000-07ffffff : System RAM
00022000-0020431f : Kernel text
00206000-002670db : Kernel data
15000000-15000fff : mb:15
16000000-16000fff : mb:16
16000000-16000fff : uart-pl011
17000000-17000fff : mb:17
17000000-17000fff : uart-pl011
18000000-18000fff : mb:18
18000000-18000fff : kmi-pl050
19000000-19000fff : mb:19
19000000-19000fff : kmi-pl050
1c000000-1c000fff : mb:1c
1c000000-1c000fff : mmci-pl18x
24000000-25ffffff : armflash.0
c0000000-c0000fff : mb:c0
c0000000-c0000fff : clcd-pl11x
c8000000-c800000f : smc91x.0
c8000000-c800000f : smc91x
#
Anyway this can be done in another patch on top, so:
Reviewed-by: Philippe Mathieu-Daudé <phi...@redhat.com>
Tested-by: Philippe Mathieu-Daudé <phi...@redhat.com>