* Various fixes and improvements for the functional tests
* Refresh CI container files with the latest changes from libvirt-ci * Clean up keyboard code of the next-cube machine to get rid of a legacy API -----BEGIN PGP SIGNATURE----- iQJFBAABCAAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAmct48QRHHRodXRoQHJl ZGhhdC5jb20ACgkQLtnXdP5wLbUAzw//fOgAe+rNX10KIEWaHzTlw6EPRUHbKEo+ yvy9mZ4CYiK3PfojuW6u9Mt32RIGFjLRUPC+ljZggjbxY2DUjzAUGx/kSwf0bzwE 8eRKRvd+l3ZFKklwDd7YQh+/O38P/uAq+T0AZQv/9h7rr0wPD6O+sVpKjVN4akuh 66Ekz974bDFaVJi8iIix0WCPCUFMZwWQqxaQrnoBH3wN8Ibc6Ermchs7aa1e6KNh DoX519JVNofXbugONNnqEjp43tbx/hzPZFyWf9tyX8ehp6+8po0zcZZwqdRkWhuv BkESKPz8rHuQOGMjm8rAnjmDEsbpJ+vOfn/ShdyAERv78mTNWwSvYVwq5zfpcTCt 9gpCNhhFzFLKlbDeIfgy9ky4R8Gzrww3icLzCsLlat6YCK547YkSr57BsYXJzLX4 /NUYsaJ1RPdutwgNnmSzhBhObtUik3rFYH5aD0ETWZBdVY8ig5OqGpJ29P5zo860 ROVFn4RX/XpmODOpYez4dwKVetR5SLHNG1aqduWKOwhAxPzLxK5OghjYkGf0bsel gA9t7A1TafgneYxJARKi7esD39xeUzhfzdzCOIOLXJga5kD2/bvZnQ4tkoLPl8QR iQEp1z758XmSFTYfzGUDA7SgIOzi9JG5dqtzcqJklr9wYurxwMYmqicJqA4ImoQt fZV/axe8Em0= =YRCB -----END PGP SIGNATURE----- Merge tag 'pull-request-2024-11-08' of https://gitlab.com/thuth/qemu into staging * Various fixes and improvements for the functional tests * Refresh CI container files with the latest changes from libvirt-ci * Clean up keyboard code of the next-cube machine to get rid of a legacy API # -----BEGIN PGP SIGNATURE----- # # iQJFBAABCAAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAmct48QRHHRodXRoQHJl # ZGhhdC5jb20ACgkQLtnXdP5wLbUAzw//fOgAe+rNX10KIEWaHzTlw6EPRUHbKEo+ # yvy9mZ4CYiK3PfojuW6u9Mt32RIGFjLRUPC+ljZggjbxY2DUjzAUGx/kSwf0bzwE # 8eRKRvd+l3ZFKklwDd7YQh+/O38P/uAq+T0AZQv/9h7rr0wPD6O+sVpKjVN4akuh # 66Ekz974bDFaVJi8iIix0WCPCUFMZwWQqxaQrnoBH3wN8Ibc6Ermchs7aa1e6KNh # DoX519JVNofXbugONNnqEjp43tbx/hzPZFyWf9tyX8ehp6+8po0zcZZwqdRkWhuv # BkESKPz8rHuQOGMjm8rAnjmDEsbpJ+vOfn/ShdyAERv78mTNWwSvYVwq5zfpcTCt # 9gpCNhhFzFLKlbDeIfgy9ky4R8Gzrww3icLzCsLlat6YCK547YkSr57BsYXJzLX4 # /NUYsaJ1RPdutwgNnmSzhBhObtUik3rFYH5aD0ETWZBdVY8ig5OqGpJ29P5zo860 # ROVFn4RX/XpmODOpYez4dwKVetR5SLHNG1aqduWKOwhAxPzLxK5OghjYkGf0bsel # gA9t7A1TafgneYxJARKi7esD39xeUzhfzdzCOIOLXJga5kD2/bvZnQ4tkoLPl8QR # iQEp1z758XmSFTYfzGUDA7SgIOzi9JG5dqtzcqJklr9wYurxwMYmqicJqA4ImoQt # fZV/axe8Em0= # =YRCB # -----END PGP SIGNATURE----- # gpg: Signature made Fri 08 Nov 2024 10:11:16 GMT # gpg: using RSA key 27B88847EEE0250118F3EAB92ED9D774FE702DB5 # gpg: issuer "thuth@redhat.com" # gpg: Good signature from "Thomas Huth <th.huth@gmx.de>" [full] # gpg: aka "Thomas Huth <thuth@redhat.com>" [full] # gpg: aka "Thomas Huth <huth@tuxfamily.org>" [full] # gpg: aka "Thomas Huth <th.huth@posteo.de>" [unknown] # Primary key fingerprint: 27B8 8847 EEE0 2501 18F3 EAB9 2ED9 D774 FE70 2DB5 * tag 'pull-request-2024-11-08' of https://gitlab.com/thuth/qemu: ui/input-legacy.c: remove unused legacy qemu_add_kbd_event_handler() function next-kbd: convert to use qemu_input_handler_register() tests: refresh package lists with latest libvirt-ci tests/functional: Split the test_aarch64_sbsaref test tests/functional: Bump timeouts of functional tests tests/functional: Provide the user with hints where to find more log files tests/functional: Fix the ppc64_hv and the ppc_40p test for read-only assets test/functional: Fix Aspeed buildroot tests tests/functional: Convert the riscv_opensbi avocado test into a standalone test scripts/checkpatch.pl: Ignore ObjC #import lines for operator spacing Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
134b443512
@ -10,7 +10,7 @@ CROSS_PKGS=''
|
|||||||
MAKE='/usr/local/bin/gmake'
|
MAKE='/usr/local/bin/gmake'
|
||||||
NINJA='/usr/local/bin/ninja'
|
NINJA='/usr/local/bin/ninja'
|
||||||
PACKAGING_COMMAND='pkg'
|
PACKAGING_COMMAND='pkg'
|
||||||
PIP3='/usr/local/bin/pip-3.8'
|
PIP3='/usr/local/bin/pip'
|
||||||
PKGS='alsa-lib bash bison bzip2 ca_root_nss capstone4 ccache cmocka ctags curl cyrus-sasl dbus diffutils dtc flex fusefs-libs3 gettext git glib gmake gnutls gsed gtk-vnc gtk3 json-c libepoxy libffi libgcrypt libjpeg-turbo libnfs libslirp libspice-server libssh libtasn1 llvm lzo2 meson mtools ncurses nettle ninja opencv pixman pkgconf png py311-numpy py311-pillow py311-pip py311-pyyaml py311-sphinx py311-sphinx_rtd_theme py311-tomli python3 rpm2cpio rust rust-bindgen-cli sdl2 sdl2_image snappy sndio socat spice-protocol tesseract usbredir virglrenderer vte3 xorriso zstd'
|
PKGS='alsa-lib bash bison bzip2 ca_root_nss capstone4 ccache cmocka ctags curl cyrus-sasl dbus diffutils dtc flex fusefs-libs3 gettext git glib gmake gnutls gsed gtk-vnc gtk3 json-c libepoxy libffi libgcrypt libjpeg-turbo libnfs libslirp libspice-server libssh libtasn1 llvm lzo2 meson mtools ncurses nettle ninja opencv pixman pkgconf png py311-numpy py311-pillow py311-pip py311-pyyaml py311-sphinx py311-sphinx_rtd_theme py311-tomli python3 rpm2cpio rust rust-bindgen-cli sdl2 sdl2_image snappy sndio socat spice-protocol tesseract usbredir virglrenderer vte3 xorriso zstd'
|
||||||
PYPI_PKGS=''
|
PYPI_PKGS=''
|
||||||
PYTHON='/usr/local/bin/python3'
|
PYTHON='/usr/local/bin/python3'
|
||||||
|
@ -329,6 +329,7 @@ F: hw/intc/riscv*
|
|||||||
F: include/hw/riscv/
|
F: include/hw/riscv/
|
||||||
F: linux-user/host/riscv32/
|
F: linux-user/host/riscv32/
|
||||||
F: linux-user/host/riscv64/
|
F: linux-user/host/riscv64/
|
||||||
|
F: tests/functional/test_riscv*
|
||||||
F: tests/tcg/riscv64/
|
F: tests/tcg/riscv64/
|
||||||
|
|
||||||
RISC-V XThead* extensions
|
RISC-V XThead* extensions
|
||||||
@ -923,7 +924,7 @@ F: hw/misc/sbsa_ec.c
|
|||||||
F: hw/watchdog/sbsa_gwdt.c
|
F: hw/watchdog/sbsa_gwdt.c
|
||||||
F: include/hw/watchdog/sbsa_gwdt.h
|
F: include/hw/watchdog/sbsa_gwdt.h
|
||||||
F: docs/system/arm/sbsa.rst
|
F: docs/system/arm/sbsa.rst
|
||||||
F: tests/functional/test_aarch64_sbsaref.py
|
F: tests/functional/test_aarch64_sbsaref*.py
|
||||||
|
|
||||||
Sharp SL-5500 (Collie) PDA
|
Sharp SL-5500 (Collie) PDA
|
||||||
M: Peter Maydell <peter.maydell@linaro.org>
|
M: Peter Maydell <peter.maydell@linaro.org>
|
||||||
|
@ -68,7 +68,6 @@ struct NextKBDState {
|
|||||||
uint16_t shift;
|
uint16_t shift;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void queue_code(void *opaque, int code);
|
|
||||||
|
|
||||||
/* lots of magic numbers here */
|
/* lots of magic numbers here */
|
||||||
static uint32_t kbd_read_byte(void *opaque, hwaddr addr)
|
static uint32_t kbd_read_byte(void *opaque, hwaddr addr)
|
||||||
@ -166,68 +165,70 @@ static const MemoryRegionOps kbd_ops = {
|
|||||||
.endianness = DEVICE_NATIVE_ENDIAN,
|
.endianness = DEVICE_NATIVE_ENDIAN,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void nextkbd_event(void *opaque, int ch)
|
static const int qcode_to_nextkbd_keycode[] = {
|
||||||
{
|
[Q_KEY_CODE_ESC] = 0x49,
|
||||||
/*
|
[Q_KEY_CODE_1] = 0x4a,
|
||||||
* Will want to set vars for caps/num lock
|
[Q_KEY_CODE_2] = 0x4b,
|
||||||
* if (ch & 0x80) -> key release
|
[Q_KEY_CODE_3] = 0x4c,
|
||||||
* there's also e0 escaped scancodes that might need to be handled
|
[Q_KEY_CODE_4] = 0x4d,
|
||||||
*/
|
[Q_KEY_CODE_5] = 0x50,
|
||||||
queue_code(opaque, ch);
|
[Q_KEY_CODE_6] = 0x4f,
|
||||||
}
|
[Q_KEY_CODE_7] = 0x4e,
|
||||||
|
[Q_KEY_CODE_8] = 0x1e,
|
||||||
|
[Q_KEY_CODE_9] = 0x1f,
|
||||||
|
[Q_KEY_CODE_0] = 0x20,
|
||||||
|
[Q_KEY_CODE_MINUS] = 0x1d,
|
||||||
|
[Q_KEY_CODE_EQUAL] = 0x1c,
|
||||||
|
[Q_KEY_CODE_BACKSPACE] = 0x1b,
|
||||||
|
|
||||||
static const unsigned char next_keycodes[128] = {
|
[Q_KEY_CODE_Q] = 0x42,
|
||||||
0x00, 0x49, 0x4A, 0x4B, 0x4C, 0x4D, 0x50, 0x4F,
|
[Q_KEY_CODE_W] = 0x43,
|
||||||
0x4E, 0x1E, 0x1F, 0x20, 0x1D, 0x1C, 0x1B, 0x00,
|
[Q_KEY_CODE_E] = 0x44,
|
||||||
0x42, 0x43, 0x44, 0x45, 0x48, 0x47, 0x46, 0x06,
|
[Q_KEY_CODE_R] = 0x45,
|
||||||
0x07, 0x08, 0x00, 0x00, 0x2A, 0x00, 0x39, 0x3A,
|
[Q_KEY_CODE_T] = 0x48,
|
||||||
0x3B, 0x3C, 0x3D, 0x40, 0x3F, 0x3E, 0x2D, 0x2C,
|
[Q_KEY_CODE_Y] = 0x47,
|
||||||
0x2B, 0x26, 0x00, 0x00, 0x31, 0x32, 0x33, 0x34,
|
[Q_KEY_CODE_U] = 0x46,
|
||||||
0x35, 0x37, 0x36, 0x2e, 0x2f, 0x30, 0x00, 0x00,
|
[Q_KEY_CODE_I] = 0x06,
|
||||||
0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
[Q_KEY_CODE_O] = 0x07,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
[Q_KEY_CODE_P] = 0x08,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
[Q_KEY_CODE_RET] = 0x2a,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
[Q_KEY_CODE_A] = 0x39,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
|
[Q_KEY_CODE_S] = 0x3a,
|
||||||
|
|
||||||
|
[Q_KEY_CODE_D] = 0x3b,
|
||||||
|
[Q_KEY_CODE_F] = 0x3c,
|
||||||
|
[Q_KEY_CODE_G] = 0x3d,
|
||||||
|
[Q_KEY_CODE_H] = 0x40,
|
||||||
|
[Q_KEY_CODE_J] = 0x3f,
|
||||||
|
[Q_KEY_CODE_K] = 0x3e,
|
||||||
|
[Q_KEY_CODE_L] = 0x2d,
|
||||||
|
[Q_KEY_CODE_SEMICOLON] = 0x2c,
|
||||||
|
[Q_KEY_CODE_APOSTROPHE] = 0x2b,
|
||||||
|
[Q_KEY_CODE_GRAVE_ACCENT] = 0x26,
|
||||||
|
[Q_KEY_CODE_Z] = 0x31,
|
||||||
|
[Q_KEY_CODE_X] = 0x32,
|
||||||
|
[Q_KEY_CODE_C] = 0x33,
|
||||||
|
[Q_KEY_CODE_V] = 0x34,
|
||||||
|
|
||||||
|
[Q_KEY_CODE_B] = 0x35,
|
||||||
|
[Q_KEY_CODE_N] = 0x37,
|
||||||
|
[Q_KEY_CODE_M] = 0x36,
|
||||||
|
[Q_KEY_CODE_COMMA] = 0x2e,
|
||||||
|
[Q_KEY_CODE_DOT] = 0x2f,
|
||||||
|
[Q_KEY_CODE_SLASH] = 0x30,
|
||||||
|
|
||||||
|
[Q_KEY_CODE_SPC] = 0x38,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void queue_code(void *opaque, int code)
|
static void nextkbd_put_keycode(NextKBDState *s, int keycode)
|
||||||
{
|
{
|
||||||
NextKBDState *s = NEXTKBD(opaque);
|
|
||||||
KBDQueue *q = &s->queue;
|
KBDQueue *q = &s->queue;
|
||||||
int key = code & KD_KEYMASK;
|
|
||||||
int release = code & 0x80;
|
|
||||||
static int ext;
|
|
||||||
|
|
||||||
if (code == 0xE0) {
|
|
||||||
ext = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (code == 0x2A || code == 0x1D || code == 0x36) {
|
|
||||||
if (code == 0x2A) {
|
|
||||||
s->shift = KD_LSHIFT;
|
|
||||||
} else if (code == 0x36) {
|
|
||||||
s->shift = KD_RSHIFT;
|
|
||||||
ext = 0;
|
|
||||||
} else if (code == 0x1D && !ext) {
|
|
||||||
s->shift = KD_LCOMM;
|
|
||||||
} else if (code == 0x1D && ext) {
|
|
||||||
ext = 0;
|
|
||||||
s->shift = KD_RCOMM;
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
} else if (code == (0x2A | 0x80) || code == (0x1D | 0x80) ||
|
|
||||||
code == (0x36 | 0x80)) {
|
|
||||||
s->shift = 0;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (q->count >= KBD_QUEUE_SIZE) {
|
if (q->count >= KBD_QUEUE_SIZE) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
q->data[q->wptr] = next_keycodes[key] | release;
|
q->data[q->wptr] = keycode;
|
||||||
|
|
||||||
if (++q->wptr == KBD_QUEUE_SIZE) {
|
if (++q->wptr == KBD_QUEUE_SIZE) {
|
||||||
q->wptr = 0;
|
q->wptr = 0;
|
||||||
}
|
}
|
||||||
@ -241,6 +242,53 @@ static void queue_code(void *opaque, int code)
|
|||||||
/* s->update_irq(s->update_arg, 1); */
|
/* s->update_irq(s->update_arg, 1); */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void nextkbd_event(DeviceState *dev, QemuConsole *src, InputEvent *evt)
|
||||||
|
{
|
||||||
|
NextKBDState *s = NEXTKBD(dev);
|
||||||
|
int qcode, keycode;
|
||||||
|
bool key_down = evt->u.key.data->down;
|
||||||
|
|
||||||
|
qcode = qemu_input_key_value_to_qcode(evt->u.key.data->key);
|
||||||
|
if (qcode >= ARRAY_SIZE(qcode_to_nextkbd_keycode)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Shift key currently has no keycode, so handle separately */
|
||||||
|
if (qcode == Q_KEY_CODE_SHIFT) {
|
||||||
|
if (key_down) {
|
||||||
|
s->shift |= KD_LSHIFT;
|
||||||
|
} else {
|
||||||
|
s->shift &= ~KD_LSHIFT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (qcode == Q_KEY_CODE_SHIFT_R) {
|
||||||
|
if (key_down) {
|
||||||
|
s->shift |= KD_RSHIFT;
|
||||||
|
} else {
|
||||||
|
s->shift &= ~KD_RSHIFT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
keycode = qcode_to_nextkbd_keycode[qcode];
|
||||||
|
if (!keycode) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If key release event, create keyboard break code */
|
||||||
|
if (!key_down) {
|
||||||
|
keycode |= 0x80;
|
||||||
|
}
|
||||||
|
|
||||||
|
nextkbd_put_keycode(s, keycode);
|
||||||
|
}
|
||||||
|
|
||||||
|
static const QemuInputHandler nextkbd_handler = {
|
||||||
|
.name = "QEMU NeXT Keyboard",
|
||||||
|
.mask = INPUT_EVENT_MASK_KEY,
|
||||||
|
.event = nextkbd_event,
|
||||||
|
};
|
||||||
|
|
||||||
static void nextkbd_reset(DeviceState *dev)
|
static void nextkbd_reset(DeviceState *dev)
|
||||||
{
|
{
|
||||||
NextKBDState *nks = NEXTKBD(dev);
|
NextKBDState *nks = NEXTKBD(dev);
|
||||||
@ -256,7 +304,7 @@ static void nextkbd_realize(DeviceState *dev, Error **errp)
|
|||||||
memory_region_init_io(&s->mr, OBJECT(dev), &kbd_ops, s, "next.kbd", 0x1000);
|
memory_region_init_io(&s->mr, OBJECT(dev), &kbd_ops, s, "next.kbd", 0x1000);
|
||||||
sysbus_init_mmio(SYS_BUS_DEVICE(dev), &s->mr);
|
sysbus_init_mmio(SYS_BUS_DEVICE(dev), &s->mr);
|
||||||
|
|
||||||
qemu_add_kbd_event_handler(nextkbd_event, s);
|
qemu_input_handler_register(dev, &nextkbd_handler);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const VMStateDescription nextkbd_vmstate = {
|
static const VMStateDescription nextkbd_vmstate = {
|
||||||
|
@ -70,8 +70,6 @@ typedef struct QEMUPutMouseEntry QEMUPutMouseEntry;
|
|||||||
typedef struct QEMUPutKbdEntry QEMUPutKbdEntry;
|
typedef struct QEMUPutKbdEntry QEMUPutKbdEntry;
|
||||||
typedef struct QEMUPutLEDEntry QEMUPutLEDEntry;
|
typedef struct QEMUPutLEDEntry QEMUPutLEDEntry;
|
||||||
|
|
||||||
QEMUPutKbdEntry *qemu_add_kbd_event_handler(QEMUPutKBDEvent *func,
|
|
||||||
void *opaque);
|
|
||||||
QEMUPutMouseEntry *qemu_add_mouse_event_handler(QEMUPutMouseEvent *func,
|
QEMUPutMouseEntry *qemu_add_mouse_event_handler(QEMUPutMouseEvent *func,
|
||||||
void *opaque, int absolute,
|
void *opaque, int absolute,
|
||||||
const char *name);
|
const char *name);
|
||||||
|
@ -2246,7 +2246,7 @@ sub process {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
# Check operator spacing.
|
# Check operator spacing.
|
||||||
if (!($line=~/\#\s*include/)) {
|
if (!($line=~/\#\s*(include|import)/)) {
|
||||||
my $ops = qr{
|
my $ops = qr{
|
||||||
<<=|>>=|<=|>=|==|!=|
|
<<=|>>=|<=|>=|==|!=|
|
||||||
\+=|-=|\*=|\/=|%=|\^=|\|=|&=|
|
\+=|-=|\*=|\/=|%=|\^=|\|=|&=|
|
||||||
|
@ -1,63 +0,0 @@
|
|||||||
# OpenSBI boot test for RISC-V machines
|
|
||||||
#
|
|
||||||
# Copyright (c) 2022, Ventana Micro
|
|
||||||
#
|
|
||||||
# This work is licensed under the terms of the GNU GPL, version 2 or
|
|
||||||
# later. See the COPYING file in the top-level directory.
|
|
||||||
|
|
||||||
from avocado_qemu import QemuSystemTest
|
|
||||||
from avocado_qemu import wait_for_console_pattern
|
|
||||||
|
|
||||||
class RiscvOpenSBI(QemuSystemTest):
|
|
||||||
"""
|
|
||||||
:avocado: tags=accel:tcg
|
|
||||||
"""
|
|
||||||
timeout = 5
|
|
||||||
|
|
||||||
def boot_opensbi(self):
|
|
||||||
self.vm.set_console()
|
|
||||||
self.vm.launch()
|
|
||||||
wait_for_console_pattern(self, 'Platform Name')
|
|
||||||
wait_for_console_pattern(self, 'Boot HART MEDELEG')
|
|
||||||
|
|
||||||
def test_riscv32_spike(self):
|
|
||||||
"""
|
|
||||||
:avocado: tags=arch:riscv32
|
|
||||||
:avocado: tags=machine:spike
|
|
||||||
"""
|
|
||||||
self.boot_opensbi()
|
|
||||||
|
|
||||||
def test_riscv64_spike(self):
|
|
||||||
"""
|
|
||||||
:avocado: tags=arch:riscv64
|
|
||||||
:avocado: tags=machine:spike
|
|
||||||
"""
|
|
||||||
self.boot_opensbi()
|
|
||||||
|
|
||||||
def test_riscv32_sifive_u(self):
|
|
||||||
"""
|
|
||||||
:avocado: tags=arch:riscv32
|
|
||||||
:avocado: tags=machine:sifive_u
|
|
||||||
"""
|
|
||||||
self.boot_opensbi()
|
|
||||||
|
|
||||||
def test_riscv64_sifive_u(self):
|
|
||||||
"""
|
|
||||||
:avocado: tags=arch:riscv64
|
|
||||||
:avocado: tags=machine:sifive_u
|
|
||||||
"""
|
|
||||||
self.boot_opensbi()
|
|
||||||
|
|
||||||
def test_riscv32_virt(self):
|
|
||||||
"""
|
|
||||||
:avocado: tags=arch:riscv32
|
|
||||||
:avocado: tags=machine:virt
|
|
||||||
"""
|
|
||||||
self.boot_opensbi()
|
|
||||||
|
|
||||||
def test_riscv64_virt(self):
|
|
||||||
"""
|
|
||||||
:avocado: tags=arch:riscv64
|
|
||||||
:avocado: tags=machine:virt
|
|
||||||
"""
|
|
||||||
self.boot_opensbi()
|
|
@ -31,10 +31,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
git \
|
git \
|
||||||
hostname \
|
hostname \
|
||||||
libglib2.0-dev \
|
libglib2.0-dev \
|
||||||
libgtk-vnc-2.0-dev \
|
|
||||||
libpcre2-dev \
|
|
||||||
libsndio-dev \
|
|
||||||
libspice-protocol-dev \
|
|
||||||
llvm \
|
llvm \
|
||||||
locales \
|
locales \
|
||||||
make \
|
make \
|
||||||
@ -109,6 +105,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
libglusterfs-dev:amd64 \
|
libglusterfs-dev:amd64 \
|
||||||
libgnutls28-dev:amd64 \
|
libgnutls28-dev:amd64 \
|
||||||
libgtk-3-dev:amd64 \
|
libgtk-3-dev:amd64 \
|
||||||
|
libgtk-vnc-2.0-dev:amd64 \
|
||||||
libibverbs-dev:amd64 \
|
libibverbs-dev:amd64 \
|
||||||
libiscsi-dev:amd64 \
|
libiscsi-dev:amd64 \
|
||||||
libjemalloc-dev:amd64 \
|
libjemalloc-dev:amd64 \
|
||||||
@ -120,6 +117,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
libnfs-dev:amd64 \
|
libnfs-dev:amd64 \
|
||||||
libnuma-dev:amd64 \
|
libnuma-dev:amd64 \
|
||||||
libpam0g-dev:amd64 \
|
libpam0g-dev:amd64 \
|
||||||
|
libpcre2-dev:amd64 \
|
||||||
libpipewire-0.3-dev:amd64 \
|
libpipewire-0.3-dev:amd64 \
|
||||||
libpixman-1-dev:amd64 \
|
libpixman-1-dev:amd64 \
|
||||||
libpmem-dev:amd64 \
|
libpmem-dev:amd64 \
|
||||||
@ -134,6 +132,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
libselinux1-dev:amd64 \
|
libselinux1-dev:amd64 \
|
||||||
libslirp-dev:amd64 \
|
libslirp-dev:amd64 \
|
||||||
libsnappy-dev:amd64 \
|
libsnappy-dev:amd64 \
|
||||||
|
libsndio-dev:amd64 \
|
||||||
|
libspice-protocol-dev:amd64 \
|
||||||
libspice-server-dev:amd64 \
|
libspice-server-dev:amd64 \
|
||||||
libssh-gcrypt-dev:amd64 \
|
libssh-gcrypt-dev:amd64 \
|
||||||
libsystemd-dev:amd64 \
|
libsystemd-dev:amd64 \
|
||||||
|
@ -31,10 +31,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
git \
|
git \
|
||||||
hostname \
|
hostname \
|
||||||
libglib2.0-dev \
|
libglib2.0-dev \
|
||||||
libgtk-vnc-2.0-dev \
|
|
||||||
libpcre2-dev \
|
|
||||||
libsndio-dev \
|
|
||||||
libspice-protocol-dev \
|
|
||||||
llvm \
|
llvm \
|
||||||
locales \
|
locales \
|
||||||
make \
|
make \
|
||||||
@ -109,6 +105,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
libglusterfs-dev:arm64 \
|
libglusterfs-dev:arm64 \
|
||||||
libgnutls28-dev:arm64 \
|
libgnutls28-dev:arm64 \
|
||||||
libgtk-3-dev:arm64 \
|
libgtk-3-dev:arm64 \
|
||||||
|
libgtk-vnc-2.0-dev:arm64 \
|
||||||
libibverbs-dev:arm64 \
|
libibverbs-dev:arm64 \
|
||||||
libiscsi-dev:arm64 \
|
libiscsi-dev:arm64 \
|
||||||
libjemalloc-dev:arm64 \
|
libjemalloc-dev:arm64 \
|
||||||
@ -120,6 +117,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
libnfs-dev:arm64 \
|
libnfs-dev:arm64 \
|
||||||
libnuma-dev:arm64 \
|
libnuma-dev:arm64 \
|
||||||
libpam0g-dev:arm64 \
|
libpam0g-dev:arm64 \
|
||||||
|
libpcre2-dev:arm64 \
|
||||||
libpipewire-0.3-dev:arm64 \
|
libpipewire-0.3-dev:arm64 \
|
||||||
libpixman-1-dev:arm64 \
|
libpixman-1-dev:arm64 \
|
||||||
libpng-dev:arm64 \
|
libpng-dev:arm64 \
|
||||||
@ -133,6 +131,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
libselinux1-dev:arm64 \
|
libselinux1-dev:arm64 \
|
||||||
libslirp-dev:arm64 \
|
libslirp-dev:arm64 \
|
||||||
libsnappy-dev:arm64 \
|
libsnappy-dev:arm64 \
|
||||||
|
libsndio-dev:arm64 \
|
||||||
|
libspice-protocol-dev:arm64 \
|
||||||
libspice-server-dev:arm64 \
|
libspice-server-dev:arm64 \
|
||||||
libssh-gcrypt-dev:arm64 \
|
libssh-gcrypt-dev:arm64 \
|
||||||
libsystemd-dev:arm64 \
|
libsystemd-dev:arm64 \
|
||||||
|
@ -31,10 +31,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
git \
|
git \
|
||||||
hostname \
|
hostname \
|
||||||
libglib2.0-dev \
|
libglib2.0-dev \
|
||||||
libgtk-vnc-2.0-dev \
|
|
||||||
libpcre2-dev \
|
|
||||||
libsndio-dev \
|
|
||||||
libspice-protocol-dev \
|
|
||||||
llvm \
|
llvm \
|
||||||
locales \
|
locales \
|
||||||
make \
|
make \
|
||||||
@ -109,6 +105,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
libglusterfs-dev:armhf \
|
libglusterfs-dev:armhf \
|
||||||
libgnutls28-dev:armhf \
|
libgnutls28-dev:armhf \
|
||||||
libgtk-3-dev:armhf \
|
libgtk-3-dev:armhf \
|
||||||
|
libgtk-vnc-2.0-dev:armhf \
|
||||||
libibverbs-dev:armhf \
|
libibverbs-dev:armhf \
|
||||||
libiscsi-dev:armhf \
|
libiscsi-dev:armhf \
|
||||||
libjemalloc-dev:armhf \
|
libjemalloc-dev:armhf \
|
||||||
@ -120,6 +117,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
libnfs-dev:armhf \
|
libnfs-dev:armhf \
|
||||||
libnuma-dev:armhf \
|
libnuma-dev:armhf \
|
||||||
libpam0g-dev:armhf \
|
libpam0g-dev:armhf \
|
||||||
|
libpcre2-dev:armhf \
|
||||||
libpipewire-0.3-dev:armhf \
|
libpipewire-0.3-dev:armhf \
|
||||||
libpixman-1-dev:armhf \
|
libpixman-1-dev:armhf \
|
||||||
libpng-dev:armhf \
|
libpng-dev:armhf \
|
||||||
@ -133,6 +131,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
libselinux1-dev:armhf \
|
libselinux1-dev:armhf \
|
||||||
libslirp-dev:armhf \
|
libslirp-dev:armhf \
|
||||||
libsnappy-dev:armhf \
|
libsnappy-dev:armhf \
|
||||||
|
libsndio-dev:armhf \
|
||||||
|
libspice-protocol-dev:armhf \
|
||||||
libspice-server-dev:armhf \
|
libspice-server-dev:armhf \
|
||||||
libssh-gcrypt-dev:armhf \
|
libssh-gcrypt-dev:armhf \
|
||||||
libsystemd-dev:armhf \
|
libsystemd-dev:armhf \
|
||||||
|
@ -31,10 +31,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
git \
|
git \
|
||||||
hostname \
|
hostname \
|
||||||
libglib2.0-dev \
|
libglib2.0-dev \
|
||||||
libgtk-vnc-2.0-dev \
|
|
||||||
libpcre2-dev \
|
|
||||||
libsndio-dev \
|
|
||||||
libspice-protocol-dev \
|
|
||||||
llvm \
|
llvm \
|
||||||
locales \
|
locales \
|
||||||
make \
|
make \
|
||||||
@ -109,6 +105,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
libglusterfs-dev:i386 \
|
libglusterfs-dev:i386 \
|
||||||
libgnutls28-dev:i386 \
|
libgnutls28-dev:i386 \
|
||||||
libgtk-3-dev:i386 \
|
libgtk-3-dev:i386 \
|
||||||
|
libgtk-vnc-2.0-dev:i386 \
|
||||||
libibverbs-dev:i386 \
|
libibverbs-dev:i386 \
|
||||||
libiscsi-dev:i386 \
|
libiscsi-dev:i386 \
|
||||||
libjemalloc-dev:i386 \
|
libjemalloc-dev:i386 \
|
||||||
@ -120,6 +117,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
libnfs-dev:i386 \
|
libnfs-dev:i386 \
|
||||||
libnuma-dev:i386 \
|
libnuma-dev:i386 \
|
||||||
libpam0g-dev:i386 \
|
libpam0g-dev:i386 \
|
||||||
|
libpcre2-dev:i386 \
|
||||||
libpipewire-0.3-dev:i386 \
|
libpipewire-0.3-dev:i386 \
|
||||||
libpixman-1-dev:i386 \
|
libpixman-1-dev:i386 \
|
||||||
libpng-dev:i386 \
|
libpng-dev:i386 \
|
||||||
@ -133,6 +131,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
libselinux1-dev:i386 \
|
libselinux1-dev:i386 \
|
||||||
libslirp-dev:i386 \
|
libslirp-dev:i386 \
|
||||||
libsnappy-dev:i386 \
|
libsnappy-dev:i386 \
|
||||||
|
libsndio-dev:i386 \
|
||||||
|
libspice-protocol-dev:i386 \
|
||||||
libspice-server-dev:i386 \
|
libspice-server-dev:i386 \
|
||||||
libssh-gcrypt-dev:i386 \
|
libssh-gcrypt-dev:i386 \
|
||||||
libsystemd-dev:i386 \
|
libsystemd-dev:i386 \
|
||||||
|
@ -31,10 +31,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
git \
|
git \
|
||||||
hostname \
|
hostname \
|
||||||
libglib2.0-dev \
|
libglib2.0-dev \
|
||||||
libgtk-vnc-2.0-dev \
|
|
||||||
libpcre2-dev \
|
|
||||||
libsndio-dev \
|
|
||||||
libspice-protocol-dev \
|
|
||||||
llvm \
|
llvm \
|
||||||
locales \
|
locales \
|
||||||
make \
|
make \
|
||||||
@ -115,6 +111,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
libnfs-dev:mips64el \
|
libnfs-dev:mips64el \
|
||||||
libnuma-dev:mips64el \
|
libnuma-dev:mips64el \
|
||||||
libpam0g-dev:mips64el \
|
libpam0g-dev:mips64el \
|
||||||
|
libpcre2-dev:mips64el \
|
||||||
libpipewire-0.3-dev:mips64el \
|
libpipewire-0.3-dev:mips64el \
|
||||||
libpixman-1-dev:mips64el \
|
libpixman-1-dev:mips64el \
|
||||||
libpng-dev:mips64el \
|
libpng-dev:mips64el \
|
||||||
@ -126,6 +123,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
libselinux1-dev:mips64el \
|
libselinux1-dev:mips64el \
|
||||||
libslirp-dev:mips64el \
|
libslirp-dev:mips64el \
|
||||||
libsnappy-dev:mips64el \
|
libsnappy-dev:mips64el \
|
||||||
|
libsndio-dev:mips64el \
|
||||||
|
libspice-protocol-dev:mips64el \
|
||||||
libspice-server-dev:mips64el \
|
libspice-server-dev:mips64el \
|
||||||
libssh-gcrypt-dev:mips64el \
|
libssh-gcrypt-dev:mips64el \
|
||||||
libsystemd-dev:mips64el \
|
libsystemd-dev:mips64el \
|
||||||
|
@ -31,10 +31,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
git \
|
git \
|
||||||
hostname \
|
hostname \
|
||||||
libglib2.0-dev \
|
libglib2.0-dev \
|
||||||
libgtk-vnc-2.0-dev \
|
|
||||||
libpcre2-dev \
|
|
||||||
libsndio-dev \
|
|
||||||
libspice-protocol-dev \
|
|
||||||
llvm \
|
llvm \
|
||||||
locales \
|
locales \
|
||||||
make \
|
make \
|
||||||
@ -108,6 +104,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
libglusterfs-dev:mipsel \
|
libglusterfs-dev:mipsel \
|
||||||
libgnutls28-dev:mipsel \
|
libgnutls28-dev:mipsel \
|
||||||
libgtk-3-dev:mipsel \
|
libgtk-3-dev:mipsel \
|
||||||
|
libgtk-vnc-2.0-dev:mipsel \
|
||||||
libibverbs-dev:mipsel \
|
libibverbs-dev:mipsel \
|
||||||
libiscsi-dev:mipsel \
|
libiscsi-dev:mipsel \
|
||||||
libjemalloc-dev:mipsel \
|
libjemalloc-dev:mipsel \
|
||||||
@ -119,6 +116,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
libnfs-dev:mipsel \
|
libnfs-dev:mipsel \
|
||||||
libnuma-dev:mipsel \
|
libnuma-dev:mipsel \
|
||||||
libpam0g-dev:mipsel \
|
libpam0g-dev:mipsel \
|
||||||
|
libpcre2-dev:mipsel \
|
||||||
libpipewire-0.3-dev:mipsel \
|
libpipewire-0.3-dev:mipsel \
|
||||||
libpixman-1-dev:mipsel \
|
libpixman-1-dev:mipsel \
|
||||||
libpng-dev:mipsel \
|
libpng-dev:mipsel \
|
||||||
@ -132,6 +130,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
libselinux1-dev:mipsel \
|
libselinux1-dev:mipsel \
|
||||||
libslirp-dev:mipsel \
|
libslirp-dev:mipsel \
|
||||||
libsnappy-dev:mipsel \
|
libsnappy-dev:mipsel \
|
||||||
|
libsndio-dev:mipsel \
|
||||||
|
libspice-protocol-dev:mipsel \
|
||||||
libspice-server-dev:mipsel \
|
libspice-server-dev:mipsel \
|
||||||
libssh-gcrypt-dev:mipsel \
|
libssh-gcrypt-dev:mipsel \
|
||||||
libsystemd-dev:mipsel \
|
libsystemd-dev:mipsel \
|
||||||
|
@ -31,10 +31,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
git \
|
git \
|
||||||
hostname \
|
hostname \
|
||||||
libglib2.0-dev \
|
libglib2.0-dev \
|
||||||
libgtk-vnc-2.0-dev \
|
|
||||||
libpcre2-dev \
|
|
||||||
libsndio-dev \
|
|
||||||
libspice-protocol-dev \
|
|
||||||
llvm \
|
llvm \
|
||||||
locales \
|
locales \
|
||||||
make \
|
make \
|
||||||
@ -109,6 +105,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
libglusterfs-dev:ppc64el \
|
libglusterfs-dev:ppc64el \
|
||||||
libgnutls28-dev:ppc64el \
|
libgnutls28-dev:ppc64el \
|
||||||
libgtk-3-dev:ppc64el \
|
libgtk-3-dev:ppc64el \
|
||||||
|
libgtk-vnc-2.0-dev:ppc64el \
|
||||||
libibverbs-dev:ppc64el \
|
libibverbs-dev:ppc64el \
|
||||||
libiscsi-dev:ppc64el \
|
libiscsi-dev:ppc64el \
|
||||||
libjemalloc-dev:ppc64el \
|
libjemalloc-dev:ppc64el \
|
||||||
@ -120,6 +117,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
libnfs-dev:ppc64el \
|
libnfs-dev:ppc64el \
|
||||||
libnuma-dev:ppc64el \
|
libnuma-dev:ppc64el \
|
||||||
libpam0g-dev:ppc64el \
|
libpam0g-dev:ppc64el \
|
||||||
|
libpcre2-dev:ppc64el \
|
||||||
libpipewire-0.3-dev:ppc64el \
|
libpipewire-0.3-dev:ppc64el \
|
||||||
libpixman-1-dev:ppc64el \
|
libpixman-1-dev:ppc64el \
|
||||||
libpng-dev:ppc64el \
|
libpng-dev:ppc64el \
|
||||||
@ -133,6 +131,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
libselinux1-dev:ppc64el \
|
libselinux1-dev:ppc64el \
|
||||||
libslirp-dev:ppc64el \
|
libslirp-dev:ppc64el \
|
||||||
libsnappy-dev:ppc64el \
|
libsnappy-dev:ppc64el \
|
||||||
|
libsndio-dev:ppc64el \
|
||||||
|
libspice-protocol-dev:ppc64el \
|
||||||
libspice-server-dev:ppc64el \
|
libspice-server-dev:ppc64el \
|
||||||
libssh-gcrypt-dev:ppc64el \
|
libssh-gcrypt-dev:ppc64el \
|
||||||
libsystemd-dev:ppc64el \
|
libsystemd-dev:ppc64el \
|
||||||
|
@ -31,10 +31,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
git \
|
git \
|
||||||
hostname \
|
hostname \
|
||||||
libglib2.0-dev \
|
libglib2.0-dev \
|
||||||
libgtk-vnc-2.0-dev \
|
|
||||||
libpcre2-dev \
|
|
||||||
libsndio-dev \
|
|
||||||
libspice-protocol-dev \
|
|
||||||
llvm \
|
llvm \
|
||||||
locales \
|
locales \
|
||||||
make \
|
make \
|
||||||
@ -109,6 +105,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
libglusterfs-dev:s390x \
|
libglusterfs-dev:s390x \
|
||||||
libgnutls28-dev:s390x \
|
libgnutls28-dev:s390x \
|
||||||
libgtk-3-dev:s390x \
|
libgtk-3-dev:s390x \
|
||||||
|
libgtk-vnc-2.0-dev:s390x \
|
||||||
libibverbs-dev:s390x \
|
libibverbs-dev:s390x \
|
||||||
libiscsi-dev:s390x \
|
libiscsi-dev:s390x \
|
||||||
libjemalloc-dev:s390x \
|
libjemalloc-dev:s390x \
|
||||||
@ -120,6 +117,7 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
libnfs-dev:s390x \
|
libnfs-dev:s390x \
|
||||||
libnuma-dev:s390x \
|
libnuma-dev:s390x \
|
||||||
libpam0g-dev:s390x \
|
libpam0g-dev:s390x \
|
||||||
|
libpcre2-dev:s390x \
|
||||||
libpipewire-0.3-dev:s390x \
|
libpipewire-0.3-dev:s390x \
|
||||||
libpixman-1-dev:s390x \
|
libpixman-1-dev:s390x \
|
||||||
libpng-dev:s390x \
|
libpng-dev:s390x \
|
||||||
@ -133,6 +131,8 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
|
|||||||
libselinux1-dev:s390x \
|
libselinux1-dev:s390x \
|
||||||
libslirp-dev:s390x \
|
libslirp-dev:s390x \
|
||||||
libsnappy-dev:s390x \
|
libsnappy-dev:s390x \
|
||||||
|
libsndio-dev:s390x \
|
||||||
|
libspice-protocol-dev:s390x \
|
||||||
libssh-gcrypt-dev:s390x \
|
libssh-gcrypt-dev:s390x \
|
||||||
libsystemd-dev:s390x \
|
libsystemd-dev:s390x \
|
||||||
libtasn1-6-dev:s390x \
|
libtasn1-6-dev:s390x \
|
||||||
|
@ -35,7 +35,6 @@ exec "$@"\n' > /usr/bin/nosync && \
|
|||||||
git \
|
git \
|
||||||
glib2-devel \
|
glib2-devel \
|
||||||
glibc-langpack-en \
|
glibc-langpack-en \
|
||||||
gtk-vnc2-devel \
|
|
||||||
hostname \
|
hostname \
|
||||||
llvm \
|
llvm \
|
||||||
make \
|
make \
|
||||||
@ -44,7 +43,6 @@ exec "$@"\n' > /usr/bin/nosync && \
|
|||||||
ninja-build \
|
ninja-build \
|
||||||
nmap-ncat \
|
nmap-ncat \
|
||||||
openssh-clients \
|
openssh-clients \
|
||||||
pcre-static \
|
|
||||||
python3 \
|
python3 \
|
||||||
python3-PyYAML \
|
python3-PyYAML \
|
||||||
python3-numpy \
|
python3-numpy \
|
||||||
@ -58,7 +56,6 @@ exec "$@"\n' > /usr/bin/nosync && \
|
|||||||
sed \
|
sed \
|
||||||
socat \
|
socat \
|
||||||
sparse \
|
sparse \
|
||||||
spice-protocol \
|
|
||||||
swtpm \
|
swtpm \
|
||||||
tar \
|
tar \
|
||||||
tesseract \
|
tesseract \
|
||||||
@ -89,6 +86,7 @@ RUN nosync dnf install -y \
|
|||||||
mingw64-gettext \
|
mingw64-gettext \
|
||||||
mingw64-glib2 \
|
mingw64-glib2 \
|
||||||
mingw64-gnutls \
|
mingw64-gnutls \
|
||||||
|
mingw64-gtk-vnc2 \
|
||||||
mingw64-gtk3 \
|
mingw64-gtk3 \
|
||||||
mingw64-libepoxy \
|
mingw64-libepoxy \
|
||||||
mingw64-libgcrypt \
|
mingw64-libgcrypt \
|
||||||
|
@ -11,24 +11,27 @@ endif
|
|||||||
|
|
||||||
# Timeouts for individual tests that can be slow e.g. with debugging enabled
|
# Timeouts for individual tests that can be slow e.g. with debugging enabled
|
||||||
test_timeouts = {
|
test_timeouts = {
|
||||||
'aarch64_raspi4' : 120,
|
'aarch64_raspi4' : 480,
|
||||||
'aarch64_sbsaref' : 600,
|
'aarch64_sbsaref_alpine' : 720,
|
||||||
'aarch64_virt' : 360,
|
'aarch64_sbsaref_freebsd' : 720,
|
||||||
'acpi_bits' : 240,
|
'aarch64_virt' : 720,
|
||||||
|
'acpi_bits' : 420,
|
||||||
'arm_aspeed' : 600,
|
'arm_aspeed' : 600,
|
||||||
'arm_bpim2u' : 360,
|
'arm_bpim2u' : 500,
|
||||||
|
'arm_collie' : 180,
|
||||||
'arm_orangepi' : 540,
|
'arm_orangepi' : 540,
|
||||||
'arm_raspi2' : 120,
|
'arm_raspi2' : 120,
|
||||||
'arm_tuxrun' : 120,
|
'arm_tuxrun' : 240,
|
||||||
'arm_sx1' : 360,
|
'arm_sx1' : 360,
|
||||||
'mips_malta' : 120,
|
'mips_malta' : 120,
|
||||||
'netdev_ethtool' : 180,
|
'netdev_ethtool' : 180,
|
||||||
'ppc_40p' : 240,
|
'ppc_40p' : 240,
|
||||||
'ppc64_hv' : 1000,
|
'ppc64_hv' : 1000,
|
||||||
'ppc64_powernv' : 240,
|
'ppc64_powernv' : 480,
|
||||||
'ppc64_pseries' : 240,
|
'ppc64_pseries' : 480,
|
||||||
'ppc64_tuxrun' : 240,
|
'ppc64_tuxrun' : 420,
|
||||||
's390x_ccw_virtio' : 240,
|
'riscv64_tuxrun' : 120,
|
||||||
|
's390x_ccw_virtio' : 420,
|
||||||
}
|
}
|
||||||
|
|
||||||
tests_generic_system = [
|
tests_generic_system = [
|
||||||
@ -47,6 +50,8 @@ tests_aarch64_system_thorough = [
|
|||||||
'aarch64_raspi3',
|
'aarch64_raspi3',
|
||||||
'aarch64_raspi4',
|
'aarch64_raspi4',
|
||||||
'aarch64_sbsaref',
|
'aarch64_sbsaref',
|
||||||
|
'aarch64_sbsaref_alpine',
|
||||||
|
'aarch64_sbsaref_freebsd',
|
||||||
'aarch64_virt',
|
'aarch64_virt',
|
||||||
'multiprocess',
|
'multiprocess',
|
||||||
]
|
]
|
||||||
@ -146,18 +151,26 @@ tests_ppc64_system_thorough = [
|
|||||||
'ppc64_tuxrun',
|
'ppc64_tuxrun',
|
||||||
]
|
]
|
||||||
|
|
||||||
tests_rx_system_thorough = [
|
tests_riscv32_system_quick = [
|
||||||
'rx_gdbsim',
|
'riscv_opensbi',
|
||||||
]
|
]
|
||||||
|
|
||||||
tests_riscv32_system_thorough = [
|
tests_riscv32_system_thorough = [
|
||||||
'riscv32_tuxrun',
|
'riscv32_tuxrun',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
tests_riscv64_system_quick = [
|
||||||
|
'riscv_opensbi',
|
||||||
|
]
|
||||||
|
|
||||||
tests_riscv64_system_thorough = [
|
tests_riscv64_system_thorough = [
|
||||||
'riscv64_tuxrun',
|
'riscv64_tuxrun',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
tests_rx_system_thorough = [
|
||||||
|
'rx_gdbsim',
|
||||||
|
]
|
||||||
|
|
||||||
tests_s390x_system_thorough = [
|
tests_s390x_system_thorough = [
|
||||||
's390x_ccw_virtio',
|
's390x_ccw_virtio',
|
||||||
's390x_topology',
|
's390x_topology',
|
||||||
@ -273,8 +286,8 @@ foreach speed : ['quick', 'thorough']
|
|||||||
env: test_env,
|
env: test_env,
|
||||||
args: [testpath],
|
args: [testpath],
|
||||||
protocol: 'tap',
|
protocol: 'tap',
|
||||||
timeout: test_timeouts.get(test, 60),
|
timeout: test_timeouts.get(test, 90),
|
||||||
priority: test_timeouts.get(test, 60),
|
priority: test_timeouts.get(test, 90),
|
||||||
suite: suites)
|
suite: suites)
|
||||||
endforeach
|
endforeach
|
||||||
endforeach
|
endforeach
|
||||||
|
@ -45,10 +45,10 @@ class QemuBaseTest(unittest.TestCase):
|
|||||||
os.makedirs(self.workdir, exist_ok=True)
|
os.makedirs(self.workdir, exist_ok=True)
|
||||||
|
|
||||||
self.logdir = self.workdir
|
self.logdir = self.workdir
|
||||||
|
self.log_filename = os.path.join(self.logdir, 'base.log')
|
||||||
self.log = logging.getLogger('qemu-test')
|
self.log = logging.getLogger('qemu-test')
|
||||||
self.log.setLevel(logging.DEBUG)
|
self.log.setLevel(logging.DEBUG)
|
||||||
self._log_fh = logging.FileHandler(os.path.join(self.logdir,
|
self._log_fh = logging.FileHandler(self.log_filename, mode='w')
|
||||||
'base.log'), mode='w')
|
|
||||||
self._log_fh.setLevel(logging.DEBUG)
|
self._log_fh.setLevel(logging.DEBUG)
|
||||||
fileFormatter = logging.Formatter(
|
fileFormatter = logging.Formatter(
|
||||||
'%(asctime)s - %(levelname)s: %(message)s')
|
'%(asctime)s - %(levelname)s: %(message)s')
|
||||||
@ -68,7 +68,14 @@ class QemuBaseTest(unittest.TestCase):
|
|||||||
|
|
||||||
tr = pycotap.TAPTestRunner(message_log = pycotap.LogMode.LogToError,
|
tr = pycotap.TAPTestRunner(message_log = pycotap.LogMode.LogToError,
|
||||||
test_output_log = pycotap.LogMode.LogToError)
|
test_output_log = pycotap.LogMode.LogToError)
|
||||||
unittest.main(module = None, testRunner = tr, argv=["__dummy__", path])
|
res = unittest.main(module = None, testRunner = tr, exit = False,
|
||||||
|
argv=["__dummy__", path])
|
||||||
|
for (test, message) in res.result.errors + res.result.failures:
|
||||||
|
print('More information on ' + test.id() + ' could be found here:'
|
||||||
|
'\n %s' % test.log_filename, file=sys.stderr)
|
||||||
|
if hasattr(test, 'console_log_name'):
|
||||||
|
print(' %s' % test.console_log_name, file=sys.stderr)
|
||||||
|
sys.exit(not res.result.wasSuccessful())
|
||||||
|
|
||||||
|
|
||||||
class QemuUserTest(QemuBaseTest):
|
class QemuUserTest(QemuBaseTest):
|
||||||
@ -101,8 +108,9 @@ class QemuSystemTest(QemuBaseTest):
|
|||||||
|
|
||||||
console_log = logging.getLogger('console')
|
console_log = logging.getLogger('console')
|
||||||
console_log.setLevel(logging.DEBUG)
|
console_log.setLevel(logging.DEBUG)
|
||||||
self._console_log_fh = logging.FileHandler(os.path.join(self.workdir,
|
self.console_log_name = os.path.join(self.workdir, 'console.log')
|
||||||
'console.log'), mode='w')
|
self._console_log_fh = logging.FileHandler(self.console_log_name,
|
||||||
|
mode='w')
|
||||||
self._console_log_fh.setLevel(logging.DEBUG)
|
self._console_log_fh.setLevel(logging.DEBUG)
|
||||||
fileFormatter = logging.Formatter('%(asctime)s: %(message)s')
|
fileFormatter = logging.Formatter('%(asctime)s: %(message)s')
|
||||||
self._console_log_fh.setFormatter(fileFormatter)
|
self._console_log_fh.setFormatter(fileFormatter)
|
||||||
|
@ -16,6 +16,42 @@ from qemu_test import interrupt_interactive_console_until_pattern
|
|||||||
from qemu_test.utils import lzma_uncompress
|
from qemu_test.utils import lzma_uncompress
|
||||||
from unittest import skipUnless
|
from unittest import skipUnless
|
||||||
|
|
||||||
|
def fetch_firmware(test):
|
||||||
|
"""
|
||||||
|
Flash volumes generated using:
|
||||||
|
|
||||||
|
Toolchain from Debian:
|
||||||
|
aarch64-linux-gnu-gcc (Debian 12.2.0-14) 12.2.0
|
||||||
|
|
||||||
|
Used components:
|
||||||
|
|
||||||
|
- Trusted Firmware v2.11.0
|
||||||
|
- Tianocore EDK2 4d4f569924
|
||||||
|
- Tianocore EDK2-platforms 3f08401
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Secure BootRom (TF-A code)
|
||||||
|
fs0_xz_path = Aarch64SbsarefMachine.ASSET_FLASH0.fetch()
|
||||||
|
fs0_path = os.path.join(test.workdir, "SBSA_FLASH0.fd")
|
||||||
|
lzma_uncompress(fs0_xz_path, fs0_path)
|
||||||
|
|
||||||
|
# Non-secure rom (UEFI and EFI variables)
|
||||||
|
fs1_xz_path = Aarch64SbsarefMachine.ASSET_FLASH1.fetch()
|
||||||
|
fs1_path = os.path.join(test.workdir, "SBSA_FLASH1.fd")
|
||||||
|
lzma_uncompress(fs1_xz_path, fs1_path)
|
||||||
|
|
||||||
|
for path in [fs0_path, fs1_path]:
|
||||||
|
with open(path, "ab+") as fd:
|
||||||
|
fd.truncate(256 << 20) # Expand volumes to 256MiB
|
||||||
|
|
||||||
|
test.set_machine('sbsa-ref')
|
||||||
|
test.vm.set_console()
|
||||||
|
test.vm.add_args(
|
||||||
|
"-drive", f"if=pflash,file={fs0_path},format=raw",
|
||||||
|
"-drive", f"if=pflash,file={fs1_path},format=raw",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class Aarch64SbsarefMachine(QemuSystemTest):
|
class Aarch64SbsarefMachine(QemuSystemTest):
|
||||||
"""
|
"""
|
||||||
@ -35,45 +71,9 @@ class Aarch64SbsarefMachine(QemuSystemTest):
|
|||||||
'20240619-148232/edk2/SBSA_FLASH1.fd.xz'),
|
'20240619-148232/edk2/SBSA_FLASH1.fd.xz'),
|
||||||
'c6ec39374c4d79bb9e9cdeeb6db44732d90bb4a334cec92002b3f4b9cac4b5ee')
|
'c6ec39374c4d79bb9e9cdeeb6db44732d90bb4a334cec92002b3f4b9cac4b5ee')
|
||||||
|
|
||||||
def fetch_firmware(self):
|
|
||||||
"""
|
|
||||||
Flash volumes generated using:
|
|
||||||
|
|
||||||
Toolchain from Debian:
|
|
||||||
aarch64-linux-gnu-gcc (Debian 12.2.0-14) 12.2.0
|
|
||||||
|
|
||||||
Used components:
|
|
||||||
|
|
||||||
- Trusted Firmware v2.11.0
|
|
||||||
- Tianocore EDK2 4d4f569924
|
|
||||||
- Tianocore EDK2-platforms 3f08401
|
|
||||||
|
|
||||||
"""
|
|
||||||
|
|
||||||
# Secure BootRom (TF-A code)
|
|
||||||
fs0_xz_path = self.ASSET_FLASH0.fetch()
|
|
||||||
fs0_path = os.path.join(self.workdir, "SBSA_FLASH0.fd")
|
|
||||||
lzma_uncompress(fs0_xz_path, fs0_path)
|
|
||||||
|
|
||||||
# Non-secure rom (UEFI and EFI variables)
|
|
||||||
fs1_xz_path = self.ASSET_FLASH1.fetch()
|
|
||||||
fs1_path = os.path.join(self.workdir, "SBSA_FLASH1.fd")
|
|
||||||
lzma_uncompress(fs1_xz_path, fs1_path)
|
|
||||||
|
|
||||||
for path in [fs0_path, fs1_path]:
|
|
||||||
with open(path, "ab+") as fd:
|
|
||||||
fd.truncate(256 << 20) # Expand volumes to 256MiB
|
|
||||||
|
|
||||||
self.set_machine('sbsa-ref')
|
|
||||||
self.vm.set_console()
|
|
||||||
self.vm.add_args(
|
|
||||||
"-drive", f"if=pflash,file={fs0_path},format=raw",
|
|
||||||
"-drive", f"if=pflash,file={fs1_path},format=raw",
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_sbsaref_edk2_firmware(self):
|
def test_sbsaref_edk2_firmware(self):
|
||||||
|
|
||||||
self.fetch_firmware()
|
fetch_firmware(self)
|
||||||
|
|
||||||
self.vm.add_args('-cpu', 'cortex-a57')
|
self.vm.add_args('-cpu', 'cortex-a57')
|
||||||
self.vm.launch()
|
self.vm.launch()
|
||||||
@ -101,90 +101,5 @@ class Aarch64SbsarefMachine(QemuSystemTest):
|
|||||||
wait_for_console_pattern(self, "UEFI firmware (version 1.0")
|
wait_for_console_pattern(self, "UEFI firmware (version 1.0")
|
||||||
interrupt_interactive_console_until_pattern(self, "QEMU SBSA-REF Machine")
|
interrupt_interactive_console_until_pattern(self, "QEMU SBSA-REF Machine")
|
||||||
|
|
||||||
|
|
||||||
ASSET_ALPINE_ISO = Asset(
|
|
||||||
('https://dl-cdn.alpinelinux.org/'
|
|
||||||
'alpine/v3.17/releases/aarch64/alpine-standard-3.17.2-aarch64.iso'),
|
|
||||||
'5a36304ecf039292082d92b48152a9ec21009d3a62f459de623e19c4bd9dc027')
|
|
||||||
|
|
||||||
# This tests the whole boot chain from EFI to Userspace
|
|
||||||
# We only boot a whole OS for the current top level CPU and GIC
|
|
||||||
# Other test profiles should use more minimal boots
|
|
||||||
def boot_alpine_linux(self, cpu=None):
|
|
||||||
self.fetch_firmware()
|
|
||||||
|
|
||||||
iso_path = self.ASSET_ALPINE_ISO.fetch()
|
|
||||||
|
|
||||||
self.vm.set_console()
|
|
||||||
self.vm.add_args(
|
|
||||||
"-drive", f"file={iso_path},media=cdrom,format=raw",
|
|
||||||
)
|
|
||||||
if cpu:
|
|
||||||
self.vm.add_args("-cpu", cpu)
|
|
||||||
|
|
||||||
self.vm.launch()
|
|
||||||
wait_for_console_pattern(self, "Welcome to Alpine Linux 3.17")
|
|
||||||
|
|
||||||
def test_sbsaref_alpine_linux_cortex_a57(self):
|
|
||||||
self.boot_alpine_linux("cortex-a57")
|
|
||||||
|
|
||||||
def test_sbsaref_alpine_linux_default_cpu(self):
|
|
||||||
self.boot_alpine_linux()
|
|
||||||
|
|
||||||
def test_sbsaref_alpine_linux_max_pauth_off(self):
|
|
||||||
self.boot_alpine_linux("max,pauth=off")
|
|
||||||
|
|
||||||
def test_sbsaref_alpine_linux_max_pauth_impdef(self):
|
|
||||||
self.boot_alpine_linux("max,pauth-impdef=on")
|
|
||||||
|
|
||||||
@skipUnless(os.getenv('QEMU_TEST_TIMEOUT_EXPECTED'),
|
|
||||||
'Test might timeout due to PAuth emulation')
|
|
||||||
def test_sbsaref_alpine_linux_max(self):
|
|
||||||
self.boot_alpine_linux("max")
|
|
||||||
|
|
||||||
|
|
||||||
ASSET_FREEBSD_ISO = Asset(
|
|
||||||
('https://download.freebsd.org/releases/arm64/aarch64/ISO-IMAGES/'
|
|
||||||
'14.1/FreeBSD-14.1-RELEASE-arm64-aarch64-bootonly.iso'),
|
|
||||||
'44cdbae275ef1bb6dab1d5fbb59473d4f741e1c8ea8a80fd9e906b531d6ad461')
|
|
||||||
|
|
||||||
# This tests the whole boot chain from EFI to Userspace
|
|
||||||
# We only boot a whole OS for the current top level CPU and GIC
|
|
||||||
# Other test profiles should use more minimal boots
|
|
||||||
def boot_freebsd14(self, cpu=None):
|
|
||||||
self.fetch_firmware()
|
|
||||||
|
|
||||||
img_path = self.ASSET_FREEBSD_ISO.fetch()
|
|
||||||
|
|
||||||
self.vm.set_console()
|
|
||||||
self.vm.add_args(
|
|
||||||
"-drive", f"file={img_path},format=raw,snapshot=on",
|
|
||||||
)
|
|
||||||
if cpu:
|
|
||||||
self.vm.add_args("-cpu", cpu)
|
|
||||||
|
|
||||||
self.vm.launch()
|
|
||||||
wait_for_console_pattern(self, 'Welcome to FreeBSD!')
|
|
||||||
|
|
||||||
def test_sbsaref_freebsd14_cortex_a57(self):
|
|
||||||
self.boot_freebsd14("cortex-a57")
|
|
||||||
|
|
||||||
def test_sbsaref_freebsd14_default_cpu(self):
|
|
||||||
self.boot_freebsd14()
|
|
||||||
|
|
||||||
def test_sbsaref_freebsd14_max_pauth_off(self):
|
|
||||||
self.boot_freebsd14("max,pauth=off")
|
|
||||||
|
|
||||||
@skipUnless(os.getenv('QEMU_TEST_TIMEOUT_EXPECTED'),
|
|
||||||
'Test might timeout due to PAuth emulation')
|
|
||||||
def test_sbsaref_freebsd14_max_pauth_impdef(self):
|
|
||||||
self.boot_freebsd14("max,pauth-impdef=on")
|
|
||||||
|
|
||||||
@skipUnless(os.getenv('QEMU_TEST_TIMEOUT_EXPECTED'),
|
|
||||||
'Test might timeout due to PAuth emulation')
|
|
||||||
def test_sbsaref_freebsd14_max(self):
|
|
||||||
self.boot_freebsd14("max")
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
QemuSystemTest.main()
|
QemuSystemTest.main()
|
||||||
|
64
tests/functional/test_aarch64_sbsaref_alpine.py
Executable file
64
tests/functional/test_aarch64_sbsaref_alpine.py
Executable file
@ -0,0 +1,64 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
#
|
||||||
|
# Functional test that boots a kernel and checks the console
|
||||||
|
#
|
||||||
|
# SPDX-FileCopyrightText: 2023-2024 Linaro Ltd.
|
||||||
|
# SPDX-FileContributor: Philippe Mathieu-Daudé <philmd@linaro.org>
|
||||||
|
# SPDX-FileContributor: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
from qemu_test import QemuSystemTest, Asset
|
||||||
|
from qemu_test import wait_for_console_pattern
|
||||||
|
from qemu_test import interrupt_interactive_console_until_pattern
|
||||||
|
from unittest import skipUnless
|
||||||
|
from test_aarch64_sbsaref import fetch_firmware
|
||||||
|
|
||||||
|
|
||||||
|
class Aarch64SbsarefAlpine(QemuSystemTest):
|
||||||
|
|
||||||
|
ASSET_ALPINE_ISO = Asset(
|
||||||
|
('https://dl-cdn.alpinelinux.org/'
|
||||||
|
'alpine/v3.17/releases/aarch64/alpine-standard-3.17.2-aarch64.iso'),
|
||||||
|
'5a36304ecf039292082d92b48152a9ec21009d3a62f459de623e19c4bd9dc027')
|
||||||
|
|
||||||
|
# This tests the whole boot chain from EFI to Userspace
|
||||||
|
# We only boot a whole OS for the current top level CPU and GIC
|
||||||
|
# Other test profiles should use more minimal boots
|
||||||
|
def boot_alpine_linux(self, cpu=None):
|
||||||
|
fetch_firmware(self)
|
||||||
|
|
||||||
|
iso_path = self.ASSET_ALPINE_ISO.fetch()
|
||||||
|
|
||||||
|
self.vm.set_console()
|
||||||
|
self.vm.add_args(
|
||||||
|
"-drive", f"file={iso_path},media=cdrom,format=raw",
|
||||||
|
)
|
||||||
|
if cpu:
|
||||||
|
self.vm.add_args("-cpu", cpu)
|
||||||
|
|
||||||
|
self.vm.launch()
|
||||||
|
wait_for_console_pattern(self, "Welcome to Alpine Linux 3.17")
|
||||||
|
|
||||||
|
def test_sbsaref_alpine_linux_cortex_a57(self):
|
||||||
|
self.boot_alpine_linux("cortex-a57")
|
||||||
|
|
||||||
|
def test_sbsaref_alpine_linux_default_cpu(self):
|
||||||
|
self.boot_alpine_linux()
|
||||||
|
|
||||||
|
def test_sbsaref_alpine_linux_max_pauth_off(self):
|
||||||
|
self.boot_alpine_linux("max,pauth=off")
|
||||||
|
|
||||||
|
def test_sbsaref_alpine_linux_max_pauth_impdef(self):
|
||||||
|
self.boot_alpine_linux("max,pauth-impdef=on")
|
||||||
|
|
||||||
|
@skipUnless(os.getenv('QEMU_TEST_TIMEOUT_EXPECTED'),
|
||||||
|
'Test might timeout due to PAuth emulation')
|
||||||
|
def test_sbsaref_alpine_linux_max(self):
|
||||||
|
self.boot_alpine_linux("max")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
QemuSystemTest.main()
|
66
tests/functional/test_aarch64_sbsaref_freebsd.py
Executable file
66
tests/functional/test_aarch64_sbsaref_freebsd.py
Executable file
@ -0,0 +1,66 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
#
|
||||||
|
# Functional test that boots a kernel and checks the console
|
||||||
|
#
|
||||||
|
# SPDX-FileCopyrightText: 2023-2024 Linaro Ltd.
|
||||||
|
# SPDX-FileContributor: Philippe Mathieu-Daudé <philmd@linaro.org>
|
||||||
|
# SPDX-FileContributor: Marcin Juszkiewicz <marcin.juszkiewicz@linaro.org>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
from qemu_test import QemuSystemTest, Asset
|
||||||
|
from qemu_test import wait_for_console_pattern
|
||||||
|
from qemu_test import interrupt_interactive_console_until_pattern
|
||||||
|
from unittest import skipUnless
|
||||||
|
from test_aarch64_sbsaref import fetch_firmware
|
||||||
|
|
||||||
|
|
||||||
|
class Aarch64SbsarefFreeBSD(QemuSystemTest):
|
||||||
|
|
||||||
|
ASSET_FREEBSD_ISO = Asset(
|
||||||
|
('https://download.freebsd.org/releases/arm64/aarch64/ISO-IMAGES/'
|
||||||
|
'14.1/FreeBSD-14.1-RELEASE-arm64-aarch64-bootonly.iso'),
|
||||||
|
'44cdbae275ef1bb6dab1d5fbb59473d4f741e1c8ea8a80fd9e906b531d6ad461')
|
||||||
|
|
||||||
|
# This tests the whole boot chain from EFI to Userspace
|
||||||
|
# We only boot a whole OS for the current top level CPU and GIC
|
||||||
|
# Other test profiles should use more minimal boots
|
||||||
|
def boot_freebsd14(self, cpu=None):
|
||||||
|
fetch_firmware(self)
|
||||||
|
|
||||||
|
img_path = self.ASSET_FREEBSD_ISO.fetch()
|
||||||
|
|
||||||
|
self.vm.set_console()
|
||||||
|
self.vm.add_args(
|
||||||
|
"-drive", f"file={img_path},format=raw,snapshot=on",
|
||||||
|
)
|
||||||
|
if cpu:
|
||||||
|
self.vm.add_args("-cpu", cpu)
|
||||||
|
|
||||||
|
self.vm.launch()
|
||||||
|
wait_for_console_pattern(self, 'Welcome to FreeBSD!')
|
||||||
|
|
||||||
|
def test_sbsaref_freebsd14_cortex_a57(self):
|
||||||
|
self.boot_freebsd14("cortex-a57")
|
||||||
|
|
||||||
|
def test_sbsaref_freebsd14_default_cpu(self):
|
||||||
|
self.boot_freebsd14()
|
||||||
|
|
||||||
|
def test_sbsaref_freebsd14_max_pauth_off(self):
|
||||||
|
self.boot_freebsd14("max,pauth=off")
|
||||||
|
|
||||||
|
@skipUnless(os.getenv('QEMU_TEST_TIMEOUT_EXPECTED'),
|
||||||
|
'Test might timeout due to PAuth emulation')
|
||||||
|
def test_sbsaref_freebsd14_max_pauth_impdef(self):
|
||||||
|
self.boot_freebsd14("max,pauth-impdef=on")
|
||||||
|
|
||||||
|
@skipUnless(os.getenv('QEMU_TEST_TIMEOUT_EXPECTED'),
|
||||||
|
'Test might timeout due to PAuth emulation')
|
||||||
|
def test_sbsaref_freebsd14_max(self):
|
||||||
|
self.boot_freebsd14("max")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
QemuSystemTest.main()
|
2
tests/functional/test_arm_aspeed.py
Normal file → Executable file
2
tests/functional/test_arm_aspeed.py
Normal file → Executable file
@ -125,7 +125,7 @@ class AST2x00Machine(LinuxKernelTest):
|
|||||||
def do_test_arm_aspeed_buildroot_start(self, image, cpu_id, pattern='Aspeed EVB'):
|
def do_test_arm_aspeed_buildroot_start(self, image, cpu_id, pattern='Aspeed EVB'):
|
||||||
self.require_netdev('user')
|
self.require_netdev('user')
|
||||||
self.vm.set_console()
|
self.vm.set_console()
|
||||||
self.vm.add_args('-drive', 'file=' + image + ',if=mtd,format=raw',
|
self.vm.add_args('-drive', 'file=' + image + ',if=mtd,format=raw,read-only=true',
|
||||||
'-net', 'nic', '-net', 'user')
|
'-net', 'nic', '-net', 'user')
|
||||||
self.vm.launch()
|
self.vm.launch()
|
||||||
|
|
||||||
|
@ -99,7 +99,8 @@ class HypervisorTest(QemuSystemTest):
|
|||||||
self.vm.add_args("-kernel", self.vmlinuz)
|
self.vm.add_args("-kernel", self.vmlinuz)
|
||||||
self.vm.add_args("-initrd", self.initramfs)
|
self.vm.add_args("-initrd", self.initramfs)
|
||||||
self.vm.add_args("-smp", "4", "-m", "2g")
|
self.vm.add_args("-smp", "4", "-m", "2g")
|
||||||
self.vm.add_args("-drive", f"file={self.iso_path},format=raw,if=none,id=drive0")
|
self.vm.add_args("-drive", f"file={self.iso_path},format=raw,if=none,"
|
||||||
|
"id=drive0,read-only=true")
|
||||||
|
|
||||||
self.vm.launch()
|
self.vm.launch()
|
||||||
wait_for_console_pattern(self, 'Welcome to Alpine Linux 3.18')
|
wait_for_console_pattern(self, 'Welcome to Alpine Linux 3.18')
|
||||||
|
@ -46,7 +46,8 @@ class IbmPrep40pMachine(QemuSystemTest):
|
|||||||
|
|
||||||
self.vm.set_console()
|
self.vm.set_console()
|
||||||
self.vm.add_args('-bios', bios_path,
|
self.vm.add_args('-bios', bios_path,
|
||||||
'-fda', drive_path)
|
'-drive',
|
||||||
|
f"file={drive_path},format=raw,if=floppy,read-only=true")
|
||||||
self.vm.launch()
|
self.vm.launch()
|
||||||
os_banner = 'NetBSD 4.0 (GENERIC) #0: Sun Dec 16 00:49:40 PST 2007'
|
os_banner = 'NetBSD 4.0 (GENERIC) #0: Sun Dec 16 00:49:40 PST 2007'
|
||||||
wait_for_console_pattern(self, os_banner)
|
wait_for_console_pattern(self, os_banner)
|
||||||
|
36
tests/functional/test_riscv_opensbi.py
Executable file
36
tests/functional/test_riscv_opensbi.py
Executable file
@ -0,0 +1,36 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
#
|
||||||
|
# OpenSBI boot test for RISC-V machines
|
||||||
|
#
|
||||||
|
# Copyright (c) 2022, Ventana Micro
|
||||||
|
#
|
||||||
|
# This work is licensed under the terms of the GNU GPL, version 2 or
|
||||||
|
# later. See the COPYING file in the top-level directory.
|
||||||
|
|
||||||
|
from qemu_test import QemuSystemTest
|
||||||
|
from qemu_test import wait_for_console_pattern
|
||||||
|
|
||||||
|
class RiscvOpenSBI(QemuSystemTest):
|
||||||
|
|
||||||
|
timeout = 5
|
||||||
|
|
||||||
|
def boot_opensbi(self):
|
||||||
|
self.vm.set_console()
|
||||||
|
self.vm.launch()
|
||||||
|
wait_for_console_pattern(self, 'Platform Name')
|
||||||
|
wait_for_console_pattern(self, 'Boot HART MEDELEG')
|
||||||
|
|
||||||
|
def test_riscv_spike(self):
|
||||||
|
self.set_machine('spike')
|
||||||
|
self.boot_opensbi()
|
||||||
|
|
||||||
|
def test_riscv_sifive_u(self):
|
||||||
|
self.set_machine('sifive_u')
|
||||||
|
self.boot_opensbi()
|
||||||
|
|
||||||
|
def test_riscv_virt(self):
|
||||||
|
self.set_machine('virt')
|
||||||
|
self.boot_opensbi()
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
QemuSystemTest.main()
|
@ -1 +1 @@
|
|||||||
Subproject commit 6b19006b2cbe01adea6a857c71860a8e7ba7ddd7
|
Subproject commit 9ad3f70bde9865d5ad18f36d256d472e72b5cbf3
|
@ -17,6 +17,9 @@ mappings:
|
|||||||
libepoxy:
|
libepoxy:
|
||||||
mips64el-deb:
|
mips64el-deb:
|
||||||
|
|
||||||
|
gtk-vnc:
|
||||||
|
mips64el-deb:
|
||||||
|
|
||||||
mesa-libgbm:
|
mesa-libgbm:
|
||||||
mips64el-deb:
|
mips64el-deb:
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
"make": "/usr/local/bin/gmake",
|
"make": "/usr/local/bin/gmake",
|
||||||
"ninja": "/usr/local/bin/ninja",
|
"ninja": "/usr/local/bin/ninja",
|
||||||
"packaging_command": "pkg",
|
"packaging_command": "pkg",
|
||||||
"pip3": "/usr/local/bin/pip-3.8",
|
"pip3": "/usr/local/bin/pip",
|
||||||
"pkgs": [
|
"pkgs": [
|
||||||
"alsa-lib",
|
"alsa-lib",
|
||||||
"bash",
|
"bash",
|
||||||
|
@ -109,43 +109,6 @@ void qmp_send_key(KeyValueList *keys, bool has_hold_time, int64_t hold_time,
|
|||||||
g_free(up);
|
g_free(up);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void legacy_kbd_event(DeviceState *dev, QemuConsole *src,
|
|
||||||
InputEvent *evt)
|
|
||||||
{
|
|
||||||
QEMUPutKbdEntry *entry = (QEMUPutKbdEntry *)dev;
|
|
||||||
int scancodes[3], i, count;
|
|
||||||
InputKeyEvent *key = evt->u.key.data;
|
|
||||||
|
|
||||||
if (!entry || !entry->put_kbd) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
count = qemu_input_key_value_to_scancode(key->key,
|
|
||||||
key->down,
|
|
||||||
scancodes);
|
|
||||||
for (i = 0; i < count; i++) {
|
|
||||||
entry->put_kbd(entry->opaque, scancodes[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static const QemuInputHandler legacy_kbd_handler = {
|
|
||||||
.name = "legacy-kbd",
|
|
||||||
.mask = INPUT_EVENT_MASK_KEY,
|
|
||||||
.event = legacy_kbd_event,
|
|
||||||
};
|
|
||||||
|
|
||||||
QEMUPutKbdEntry *qemu_add_kbd_event_handler(QEMUPutKBDEvent *func, void *opaque)
|
|
||||||
{
|
|
||||||
QEMUPutKbdEntry *entry;
|
|
||||||
|
|
||||||
entry = g_new0(QEMUPutKbdEntry, 1);
|
|
||||||
entry->put_kbd = func;
|
|
||||||
entry->opaque = opaque;
|
|
||||||
entry->s = qemu_input_handler_register((DeviceState *)entry,
|
|
||||||
&legacy_kbd_handler);
|
|
||||||
qemu_input_handler_activate(entry->s);
|
|
||||||
return entry;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void legacy_mouse_event(DeviceState *dev, QemuConsole *src,
|
static void legacy_mouse_event(DeviceState *dev, QemuConsole *src,
|
||||||
InputEvent *evt)
|
InputEvent *evt)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user