mirror of
https://github.com/Motorhead1991/qemu.git
synced 2026-01-06 14:37:42 -07:00
* Removal of obsolete s390x machines
* Fix a memleak in s390x code * Skip some functional tests if the corresponding feature is not available -----BEGIN PGP SIGNATURE----- iQJFBAABCAAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAmgkfWURHHRodXRoQHJl ZGhhdC5jb20ACgkQLtnXdP5wLbXaKA/+K/buSKZWNcvrXtU4AqEyIjicvUsbY79S BGmwTjO46uDzlqTIOxGJ2uBAocXSlNJ7YsvH75vBHWHF3Vy6LB1zPWDgaYTz7XkA K9GqtrmRdlPArKa1Q7ot0tJ/wu7lzQuccieJJwNJhotMC3C4dl1HSpp+u/rmk7gG vG9l5Cdi34BWXp2QCKPdrNs++4mOudLSJtYhBlSpxIaBe6h2LoHmKJNEmD9x4Xcg SWTqalpWUhJW4L3zCj1JXWv6HAyR6GG7+7FLr5FkorSDG/sMX7+09GLE1/BLlD87 KtZlTBkcbXs+eXmP4y+qtskI0ca4dLaZnfIq8/v0wqCXvfOUM4Xi0E2HvGmHeI4u rvC/ZhK2RztMZbVMFXHSmCFJvpi2sGgH+sIHt18BJzkAC+nx0ZdCz81fgKVERHhJ 1ZnsRiMcf7dI6yEgbJ89vZihv3WbyCcwlnyLDN+lovZzCYTvxPLn5SRH0LEm4kN5 N/qRwTTlPM4xCGCSc3JEGJVDDy36ojVfvGMFt4ZcFehcpkfcLznw7QYjk3QDwI2N 58FImsf2VVEl4sdpzpi6zfutMhFuL1N0m/kXb8GBonekXYTPtyBMqHsmhyRe5xXN vP9paghpU0xBuDMtmZWyq4RCubZNESA7wAbSf0+VcC/1Uhjc3QS5820kV7/WVwsU VwObtSEAG1c= =zUob -----END PGP SIGNATURE----- Merge tag 'pull-request-2025-05-14' of https://gitlab.com/thuth/qemu into staging * Removal of obsolete s390x machines * Fix a memleak in s390x code * Skip some functional tests if the corresponding feature is not available # -----BEGIN PGP SIGNATURE----- # # iQJFBAABCAAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAmgkfWURHHRodXRoQHJl # ZGhhdC5jb20ACgkQLtnXdP5wLbXaKA/+K/buSKZWNcvrXtU4AqEyIjicvUsbY79S # BGmwTjO46uDzlqTIOxGJ2uBAocXSlNJ7YsvH75vBHWHF3Vy6LB1zPWDgaYTz7XkA # K9GqtrmRdlPArKa1Q7ot0tJ/wu7lzQuccieJJwNJhotMC3C4dl1HSpp+u/rmk7gG # vG9l5Cdi34BWXp2QCKPdrNs++4mOudLSJtYhBlSpxIaBe6h2LoHmKJNEmD9x4Xcg # SWTqalpWUhJW4L3zCj1JXWv6HAyR6GG7+7FLr5FkorSDG/sMX7+09GLE1/BLlD87 # KtZlTBkcbXs+eXmP4y+qtskI0ca4dLaZnfIq8/v0wqCXvfOUM4Xi0E2HvGmHeI4u # rvC/ZhK2RztMZbVMFXHSmCFJvpi2sGgH+sIHt18BJzkAC+nx0ZdCz81fgKVERHhJ # 1ZnsRiMcf7dI6yEgbJ89vZihv3WbyCcwlnyLDN+lovZzCYTvxPLn5SRH0LEm4kN5 # N/qRwTTlPM4xCGCSc3JEGJVDDy36ojVfvGMFt4ZcFehcpkfcLznw7QYjk3QDwI2N # 58FImsf2VVEl4sdpzpi6zfutMhFuL1N0m/kXb8GBonekXYTPtyBMqHsmhyRe5xXN # vP9paghpU0xBuDMtmZWyq4RCubZNESA7wAbSf0+VcC/1Uhjc3QS5820kV7/WVwsU # VwObtSEAG1c= # =zUob # -----END PGP SIGNATURE----- # gpg: Signature made Wed 14 May 2025 07:24:21 EDT # 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-2025-05-14' of https://gitlab.com/thuth/qemu: tests/functional: Skip the screendump tests if the command is not available tests/functional/test_s390x_tuxrun: Check whether the machine is available include/hw/dma/xlnx_dpdma: Remove dependency on console.h s390x: Fix leak in machine_set_loadparm hw/s390x/s390-virtio-ccw: Remove the deprecated 4.0 machine type hw/s390x/s390-virtio-ccw: Remove the deprecated 3.1 machine type hw/s390x: Remove the obsolete hpage_1m_allowed switch hw/s390x/s390-virtio-ccw: Remove the deprecated 3.0 machine type hw/s390x/s390-virtio-ccw: Remove the deprecated 2.12 machine type target/s390x: Rename the qemu_V2_11 feature set to qemu_MIN hw/s390x/event-facility: Remove the obsolete "allow_all_mask_sizes" code hw/s390x/s390-virtio-ccw: Remove the deprecated 2.11 machine type hw/s390x/s390-virtio-ccw: Remove the deprecated 2.10 machine type Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
commit
92fbc2ffc9
10 changed files with 18 additions and 194 deletions
|
|
@ -45,13 +45,6 @@ struct SCLPEventFacility {
|
|||
uint32_t receive_mask_pieces[2];
|
||||
sccb_mask_t receive_mask;
|
||||
};
|
||||
/*
|
||||
* when false, we keep the same broken, backwards compatible behaviour as
|
||||
* before, allowing only masks of size exactly 4; when true, we implement
|
||||
* the architecture correctly, allowing all valid mask sizes. Needed for
|
||||
* migration toward older versions.
|
||||
*/
|
||||
bool allow_all_mask_sizes;
|
||||
/* length of the receive mask */
|
||||
uint16_t mask_length;
|
||||
};
|
||||
|
|
@ -294,8 +287,7 @@ static void write_event_mask(SCLPEventFacility *ef, SCCB *sccb)
|
|||
uint16_t mask_length = be16_to_cpu(we_mask->mask_length);
|
||||
sccb_mask_t tmp_mask;
|
||||
|
||||
if (!mask_length || (mask_length > SCLP_EVENT_MASK_LEN_MAX) ||
|
||||
((mask_length != 4) && !ef->allow_all_mask_sizes)) {
|
||||
if (!mask_length || mask_length > SCLP_EVENT_MASK_LEN_MAX) {
|
||||
sccb->h.response_code = cpu_to_be16(SCLP_RC_INVALID_MASK_LENGTH);
|
||||
return;
|
||||
}
|
||||
|
|
@ -355,13 +347,6 @@ static bool vmstate_event_facility_mask64_needed(void *opaque)
|
|||
return (ef->receive_mask & 0xFFFFFFFF) != 0;
|
||||
}
|
||||
|
||||
static bool vmstate_event_facility_mask_length_needed(void *opaque)
|
||||
{
|
||||
SCLPEventFacility *ef = opaque;
|
||||
|
||||
return ef->allow_all_mask_sizes;
|
||||
}
|
||||
|
||||
static const VMStateDescription vmstate_event_facility_mask64 = {
|
||||
.name = "vmstate-event-facility/mask64",
|
||||
.version_id = 0,
|
||||
|
|
@ -377,7 +362,6 @@ static const VMStateDescription vmstate_event_facility_mask_length = {
|
|||
.name = "vmstate-event-facility/mask_length",
|
||||
.version_id = 0,
|
||||
.minimum_version_id = 0,
|
||||
.needed = vmstate_event_facility_mask_length_needed,
|
||||
.fields = (const VMStateField[]) {
|
||||
VMSTATE_UINT16(mask_length, SCLPEventFacility),
|
||||
VMSTATE_END_OF_LIST()
|
||||
|
|
@ -399,31 +383,12 @@ static const VMStateDescription vmstate_event_facility = {
|
|||
}
|
||||
};
|
||||
|
||||
static void sclp_event_set_allow_all_mask_sizes(Object *obj, bool value,
|
||||
Error **errp)
|
||||
{
|
||||
SCLPEventFacility *ef = (SCLPEventFacility *)obj;
|
||||
|
||||
ef->allow_all_mask_sizes = value;
|
||||
}
|
||||
|
||||
static bool sclp_event_get_allow_all_mask_sizes(Object *obj, Error **errp)
|
||||
{
|
||||
SCLPEventFacility *ef = (SCLPEventFacility *)obj;
|
||||
|
||||
return ef->allow_all_mask_sizes;
|
||||
}
|
||||
|
||||
static void init_event_facility(Object *obj)
|
||||
{
|
||||
SCLPEventFacility *event_facility = EVENT_FACILITY(obj);
|
||||
DeviceState *sdev = DEVICE(obj);
|
||||
|
||||
event_facility->mask_length = 4;
|
||||
event_facility->allow_all_mask_sizes = true;
|
||||
object_property_add_bool(obj, "allow_all_mask_sizes",
|
||||
sclp_event_get_allow_all_mask_sizes,
|
||||
sclp_event_set_allow_all_mask_sizes);
|
||||
|
||||
/* Spawn a new bus for SCLP events */
|
||||
qbus_init(&event_facility->sbus, sizeof(event_facility->sbus),
|
||||
|
|
|
|||
|
|
@ -748,39 +748,6 @@ static inline void machine_set_dea_key_wrap(Object *obj, bool value,
|
|||
ms->dea_key_wrap = value;
|
||||
}
|
||||
|
||||
static S390CcwMachineClass *current_mc;
|
||||
|
||||
/*
|
||||
* Get the class of the s390-ccw-virtio machine that is currently in use.
|
||||
* Note: libvirt is using the "none" machine to probe for the features of the
|
||||
* host CPU, so in case this is called with the "none" machine, the function
|
||||
* returns the TYPE_S390_CCW_MACHINE base class. In this base class, all the
|
||||
* various "*_allowed" variables are enabled, so that the *_allowed() wrappers
|
||||
* below return the correct default value for the "none" machine.
|
||||
*
|
||||
* Attention! Do *not* add additional new wrappers for CPU features via this
|
||||
* mechanism anymore. CPU features should be handled via the CPU models,
|
||||
* i.e. checking with s390_has_feat() should be sufficient.
|
||||
*/
|
||||
static S390CcwMachineClass *get_machine_class(void)
|
||||
{
|
||||
if (unlikely(!current_mc)) {
|
||||
/*
|
||||
* No s390 ccw machine was instantiated, we are likely to
|
||||
* be called for the 'none' machine. The properties will
|
||||
* have their after-initialization values.
|
||||
*/
|
||||
current_mc = S390_CCW_MACHINE_CLASS(
|
||||
object_class_by_name(TYPE_S390_CCW_MACHINE));
|
||||
}
|
||||
return current_mc;
|
||||
}
|
||||
|
||||
bool hpage_1m_allowed(void)
|
||||
{
|
||||
return get_machine_class()->hpage_1m_allowed;
|
||||
}
|
||||
|
||||
static void machine_get_loadparm(Object *obj, Visitor *v,
|
||||
const char *name, void *opaque,
|
||||
Error **errp)
|
||||
|
|
@ -804,6 +771,7 @@ static void machine_set_loadparm(Object *obj, Visitor *v,
|
|||
}
|
||||
|
||||
s390_ipl_fmt_loadparm(ms->loadparm, val, errp);
|
||||
g_free(val);
|
||||
}
|
||||
|
||||
static void ccw_machine_class_init(ObjectClass *oc, const void *data)
|
||||
|
|
@ -814,7 +782,6 @@ static void ccw_machine_class_init(ObjectClass *oc, const void *data)
|
|||
S390CcwMachineClass *s390mc = S390_CCW_MACHINE_CLASS(mc);
|
||||
DumpSKeysInterface *dsi = DUMP_SKEYS_INTERFACE_CLASS(oc);
|
||||
|
||||
s390mc->hpage_1m_allowed = true;
|
||||
s390mc->max_threads = 1;
|
||||
mc->reset = s390_machine_reset;
|
||||
mc->block_default_type = IF_VIRTIO;
|
||||
|
|
@ -888,7 +855,6 @@ static const TypeInfo ccw_machine_info = {
|
|||
#define DEFINE_CCW_MACHINE_IMPL(latest, ...) \
|
||||
static void MACHINE_VER_SYM(mach_init, ccw, __VA_ARGS__)(MachineState *mach) \
|
||||
{ \
|
||||
current_mc = S390_CCW_MACHINE_CLASS(MACHINE_GET_CLASS(mach)); \
|
||||
MACHINE_VER_SYM(instance_options, ccw, __VA_ARGS__)(mach); \
|
||||
ccw_init(mach); \
|
||||
} \
|
||||
|
|
@ -1193,102 +1159,6 @@ static void ccw_machine_4_1_class_options(MachineClass *mc)
|
|||
}
|
||||
DEFINE_CCW_MACHINE(4, 1);
|
||||
|
||||
static void ccw_machine_4_0_instance_options(MachineState *machine)
|
||||
{
|
||||
static const S390FeatInit qemu_cpu_feat = { S390_FEAT_LIST_QEMU_V4_0 };
|
||||
ccw_machine_4_1_instance_options(machine);
|
||||
s390_set_qemu_cpu_model(0x2827, 12, 2, qemu_cpu_feat);
|
||||
}
|
||||
|
||||
static void ccw_machine_4_0_class_options(MachineClass *mc)
|
||||
{
|
||||
ccw_machine_4_1_class_options(mc);
|
||||
compat_props_add(mc->compat_props, hw_compat_4_0, hw_compat_4_0_len);
|
||||
}
|
||||
DEFINE_CCW_MACHINE(4, 0);
|
||||
|
||||
static void ccw_machine_3_1_instance_options(MachineState *machine)
|
||||
{
|
||||
static const S390FeatInit qemu_cpu_feat = { S390_FEAT_LIST_QEMU_V3_1 };
|
||||
ccw_machine_4_0_instance_options(machine);
|
||||
s390_cpudef_featoff_greater(14, 1, S390_FEAT_MULTIPLE_EPOCH);
|
||||
s390_cpudef_group_featoff_greater(14, 1, S390_FEAT_GROUP_MULTIPLE_EPOCH_PTFF);
|
||||
s390_set_qemu_cpu_model(0x2827, 12, 2, qemu_cpu_feat);
|
||||
}
|
||||
|
||||
static void ccw_machine_3_1_class_options(MachineClass *mc)
|
||||
{
|
||||
ccw_machine_4_0_class_options(mc);
|
||||
compat_props_add(mc->compat_props, hw_compat_3_1, hw_compat_3_1_len);
|
||||
}
|
||||
DEFINE_CCW_MACHINE(3, 1);
|
||||
|
||||
static void ccw_machine_3_0_instance_options(MachineState *machine)
|
||||
{
|
||||
ccw_machine_3_1_instance_options(machine);
|
||||
}
|
||||
|
||||
static void ccw_machine_3_0_class_options(MachineClass *mc)
|
||||
{
|
||||
S390CcwMachineClass *s390mc = S390_CCW_MACHINE_CLASS(mc);
|
||||
|
||||
s390mc->hpage_1m_allowed = false;
|
||||
ccw_machine_3_1_class_options(mc);
|
||||
compat_props_add(mc->compat_props, hw_compat_3_0, hw_compat_3_0_len);
|
||||
}
|
||||
DEFINE_CCW_MACHINE(3, 0);
|
||||
|
||||
static void ccw_machine_2_12_instance_options(MachineState *machine)
|
||||
{
|
||||
ccw_machine_3_0_instance_options(machine);
|
||||
s390_cpudef_featoff_greater(11, 1, S390_FEAT_PPA15);
|
||||
s390_cpudef_featoff_greater(11, 1, S390_FEAT_BPB);
|
||||
}
|
||||
|
||||
static void ccw_machine_2_12_class_options(MachineClass *mc)
|
||||
{
|
||||
ccw_machine_3_0_class_options(mc);
|
||||
compat_props_add(mc->compat_props, hw_compat_2_12, hw_compat_2_12_len);
|
||||
}
|
||||
DEFINE_CCW_MACHINE(2, 12);
|
||||
|
||||
#ifdef CONFIG_S390X_LEGACY_CPUS
|
||||
|
||||
static void ccw_machine_2_11_instance_options(MachineState *machine)
|
||||
{
|
||||
static const S390FeatInit qemu_cpu_feat = { S390_FEAT_LIST_QEMU_V2_11 };
|
||||
ccw_machine_2_12_instance_options(machine);
|
||||
|
||||
/* before 2.12 we emulated the very first z900 */
|
||||
s390_set_qemu_cpu_model(0x2064, 7, 1, qemu_cpu_feat);
|
||||
}
|
||||
|
||||
static void ccw_machine_2_11_class_options(MachineClass *mc)
|
||||
{
|
||||
static GlobalProperty compat[] = {
|
||||
{ TYPE_SCLP_EVENT_FACILITY, "allow_all_mask_sizes", "off", },
|
||||
};
|
||||
|
||||
ccw_machine_2_12_class_options(mc);
|
||||
compat_props_add(mc->compat_props, hw_compat_2_11, hw_compat_2_11_len);
|
||||
compat_props_add(mc->compat_props, compat, G_N_ELEMENTS(compat));
|
||||
}
|
||||
DEFINE_CCW_MACHINE(2, 11);
|
||||
|
||||
static void ccw_machine_2_10_instance_options(MachineState *machine)
|
||||
{
|
||||
ccw_machine_2_11_instance_options(machine);
|
||||
}
|
||||
|
||||
static void ccw_machine_2_10_class_options(MachineClass *mc)
|
||||
{
|
||||
ccw_machine_2_11_class_options(mc);
|
||||
compat_props_add(mc->compat_props, hw_compat_2_10, hw_compat_2_10_len);
|
||||
}
|
||||
DEFINE_CCW_MACHINE(2, 10);
|
||||
|
||||
#endif
|
||||
|
||||
static void ccw_machine_register_types(void)
|
||||
{
|
||||
type_register_static(&ccw_machine_info);
|
||||
|
|
|
|||
|
|
@ -26,7 +26,6 @@
|
|||
#define XLNX_DPDMA_H
|
||||
|
||||
#include "hw/sysbus.h"
|
||||
#include "ui/console.h"
|
||||
#include "system/dma.h"
|
||||
#include "qom/object.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -53,11 +53,7 @@ struct S390CcwMachineClass {
|
|||
MachineClass parent_class;
|
||||
|
||||
/*< public >*/
|
||||
bool hpage_1m_allowed;
|
||||
int max_threads;
|
||||
};
|
||||
|
||||
/* 1M huge page mappings allowed by the machine */
|
||||
bool hpage_1m_allowed(void);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -844,13 +844,11 @@ static uint16_t default_GEN17_GA1[] = {
|
|||
|
||||
/* QEMU (CPU model) features */
|
||||
|
||||
static uint16_t qemu_V2_11[] = {
|
||||
static uint16_t qemu_MIN[] = {
|
||||
/* Features supported by the default CPU of the oldest machine type */
|
||||
S390_FEAT_GROUP_PLO,
|
||||
S390_FEAT_ESAN3,
|
||||
S390_FEAT_ZARCH,
|
||||
};
|
||||
|
||||
static uint16_t qemu_V3_1[] = {
|
||||
S390_FEAT_DAT_ENH,
|
||||
S390_FEAT_IDTE_SEGMENT,
|
||||
S390_FEAT_STFLE,
|
||||
|
|
@ -880,9 +878,6 @@ static uint16_t qemu_V3_1[] = {
|
|||
S390_FEAT_ADAPTER_INT_SUPPRESSION,
|
||||
S390_FEAT_MSA_EXT_3,
|
||||
S390_FEAT_MSA_EXT_4,
|
||||
};
|
||||
|
||||
static uint16_t qemu_V4_0[] = {
|
||||
/*
|
||||
* Only BFP bits are implemented (HFP, DFP, PFPO and DIVIDE TO INTEGER not
|
||||
* implemented yet).
|
||||
|
|
@ -1053,9 +1048,7 @@ static FeatGroupDefSpec FeatGroupDef[] = {
|
|||
* QEMU (CPU model) features
|
||||
*******************************/
|
||||
static FeatGroupDefSpec QemuFeatDef[] = {
|
||||
QEMU_FEAT_INITIALIZER(V2_11),
|
||||
QEMU_FEAT_INITIALIZER(V3_1),
|
||||
QEMU_FEAT_INITIALIZER(V4_0),
|
||||
QEMU_FEAT_INITIALIZER(MIN),
|
||||
QEMU_FEAT_INITIALIZER(V4_1),
|
||||
QEMU_FEAT_INITIALIZER(V6_0),
|
||||
QEMU_FEAT_INITIALIZER(V6_2),
|
||||
|
|
|
|||
|
|
@ -298,12 +298,6 @@ void kvm_s390_set_max_pagesize(uint64_t pagesize, Error **errp)
|
|||
return;
|
||||
}
|
||||
|
||||
if (!hpage_1m_allowed()) {
|
||||
error_setg(errp, "This QEMU machine does not support huge page "
|
||||
"mappings");
|
||||
return;
|
||||
}
|
||||
|
||||
if (pagesize != 1 * MiB) {
|
||||
error_setg(errp, "Memory backing with 2G pages was specified, "
|
||||
"but KVM does not support this memory backing");
|
||||
|
|
|
|||
|
|
@ -73,8 +73,10 @@ class IntegratorMachine(QemuSystemTest):
|
|||
framebuffer_ready = 'Console: switching to colour frame buffer device'
|
||||
wait_for_console_pattern(self, framebuffer_ready)
|
||||
self.vm.cmd('human-monitor-command', command_line='stop')
|
||||
self.vm.cmd('human-monitor-command',
|
||||
command_line='screendump %s' % screendump_path)
|
||||
res = self.vm.cmd('human-monitor-command',
|
||||
command_line='screendump %s' % screendump_path)
|
||||
if 'unknown command' in res:
|
||||
self.skipTest('screendump not available')
|
||||
logger = logging.getLogger('framebuffer')
|
||||
|
||||
cpu_count = 1
|
||||
|
|
|
|||
|
|
@ -32,8 +32,10 @@ class NextCubeMachine(QemuSystemTest):
|
|||
# TODO: wait for the 'displaysurface_create 1120x832' trace-event.
|
||||
time.sleep(2)
|
||||
|
||||
self.vm.cmd('human-monitor-command',
|
||||
command_line='screendump %s' % screenshot_path)
|
||||
res = self.vm.cmd('human-monitor-command',
|
||||
command_line='screendump %s' % screenshot_path)
|
||||
if 'unknown command' in res:
|
||||
self.skipTest('screendump not available')
|
||||
|
||||
@skipIfMissingImports("PIL")
|
||||
def test_bootrom_framebuffer_size(self):
|
||||
|
|
|
|||
|
|
@ -155,8 +155,10 @@ class MaltaMachineFramebuffer(LinuxKernelTest):
|
|||
framebuffer_ready = 'Console: switching to colour frame buffer device'
|
||||
self.wait_for_console_pattern(framebuffer_ready)
|
||||
self.vm.cmd('human-monitor-command', command_line='stop')
|
||||
self.vm.cmd('human-monitor-command',
|
||||
command_line='screendump %s' % screendump_path)
|
||||
res = self.vm.cmd('human-monitor-command',
|
||||
command_line='screendump %s' % screendump_path)
|
||||
if 'unknown command' in res:
|
||||
self.skipTest('screendump not available')
|
||||
logger = logging.getLogger('framebuffer')
|
||||
|
||||
match_threshold = 0.95
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ class TuxRunS390xTest(TuxRunBaselineTest):
|
|||
'bff7971fc2fef56372d98afe4557b82fd0a785a241e44c29b058e577ad1bbb44')
|
||||
|
||||
def test_s390(self):
|
||||
self.set_machine('s390-ccw-virtio')
|
||||
self.wait_for_shutdown=False
|
||||
self.common_tuxrun(kernel_asset=self.ASSET_S390X_KERNEL,
|
||||
rootfs_asset=self.ASSET_S390X_ROOTFS,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue