* Compat machine types for QEMU 7.2
* Add feature bit for the "processor-activity-instrumentation extension" * Fix emulation of CLFIT and CLGIT instructions * Fix hugepages support on s390x with the memfd memory-backend -----BEGIN PGP SIGNATURE----- iQJFBAABCAAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAmMOD0cRHHRodXRoQHJl ZGhhdC5jb20ACgkQLtnXdP5wLbWrUg//YyjsnuUoKhea7PmnL6WUOyD0jZoMtDK3 IwRzneLfTPQneStqCc1gtoWMelhP68wa/t2ygfwB5hOrLKz8r0aIvnsfEgc8t++R 58IwClD9Z2d26lCMzIlW3A4ACQfZVk96wtqPmfShMHKuZePrA/oM4l7R+EItP9nl s1WYUZ0ia/qogJ2Wr+MvDGbURv37DqYJ2OuY8WCrIX9trQxUwcydZKMv1ca55mpn GfZNBbTuqhLMf+r4NmxNzHnMayGtWOyaISStJBhGDlRJyKjDsy1ghAXDMa1WFRup lj6mBoq0F19PCnjI9AUFVNvPhuj/1Ku+YkVwrImleSdBBmgaUx+LWwFXU+stnQv7 9bYosdTJ55BJ8YmRn1w00b+rIVg4SvJimQJc+BizWe7tdpc+E1AhBerUC4bwZxZw NRiPwSraym2b9/mpv7/fzUGECEpP37IHHZtIa37OO3d48NuaHpFHhpcskbmfCIwP K19Jqc5cyLf7/iEliOo+BVcMVDQSL4M4x7CePpO1Kd83RmDEoBQlQDL9ZcXYAefz yY7OYwi2DfO893umDNuXwyN6b3HwOjDztFy2emgVRfwFIsm4jWnsByRsjVasaIvd kmfCjZj0URBoUCfJiKtrpzgF+uup8n54uJxtbsWyf83xdMz/zpsDXAnm1eG6qZq3 7MD1+akz2Ak= =lJy4 -----END PGP SIGNATURE----- Merge tag 's390x-pull-request-2022-08-30' of https://gitlab.com/thuth/qemu into staging * Compat machine types for QEMU 7.2 * Add feature bit for the "processor-activity-instrumentation extension" * Fix emulation of CLFIT and CLGIT instructions * Fix hugepages support on s390x with the memfd memory-backend # -----BEGIN PGP SIGNATURE----- # # iQJFBAABCAAvFiEEJ7iIR+7gJQEY8+q5LtnXdP5wLbUFAmMOD0cRHHRodXRoQHJl # ZGhhdC5jb20ACgkQLtnXdP5wLbWrUg//YyjsnuUoKhea7PmnL6WUOyD0jZoMtDK3 # IwRzneLfTPQneStqCc1gtoWMelhP68wa/t2ygfwB5hOrLKz8r0aIvnsfEgc8t++R # 58IwClD9Z2d26lCMzIlW3A4ACQfZVk96wtqPmfShMHKuZePrA/oM4l7R+EItP9nl # s1WYUZ0ia/qogJ2Wr+MvDGbURv37DqYJ2OuY8WCrIX9trQxUwcydZKMv1ca55mpn # GfZNBbTuqhLMf+r4NmxNzHnMayGtWOyaISStJBhGDlRJyKjDsy1ghAXDMa1WFRup # lj6mBoq0F19PCnjI9AUFVNvPhuj/1Ku+YkVwrImleSdBBmgaUx+LWwFXU+stnQv7 # 9bYosdTJ55BJ8YmRn1w00b+rIVg4SvJimQJc+BizWe7tdpc+E1AhBerUC4bwZxZw # NRiPwSraym2b9/mpv7/fzUGECEpP37IHHZtIa37OO3d48NuaHpFHhpcskbmfCIwP # K19Jqc5cyLf7/iEliOo+BVcMVDQSL4M4x7CePpO1Kd83RmDEoBQlQDL9ZcXYAefz # yY7OYwi2DfO893umDNuXwyN6b3HwOjDztFy2emgVRfwFIsm4jWnsByRsjVasaIvd # kmfCjZj0URBoUCfJiKtrpzgF+uup8n54uJxtbsWyf83xdMz/zpsDXAnm1eG6qZq3 # 7MD1+akz2Ak= # =lJy4 # -----END PGP SIGNATURE----- # gpg: Signature made Tue 30 Aug 2022 09:23:19 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 's390x-pull-request-2022-08-30' of https://gitlab.com/thuth/qemu: util/mmap-alloc: Remove qemu_mempath_getpagesize() softmmu/physmem: Remove the ifdef __linux__ around the pagesize functions backends/hostmem: Fix support of memory-backend-memfd in qemu_maxrampagesize() target/s390x: Fix CLFIT and CLGIT immediate size s390x/cpumodel: add stfl197 processor-activity-instrumentation extension 1 hw: Add compat machines for 7.2 Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
commit
3a2a29ebbd
@ -306,22 +306,12 @@ bool host_memory_backend_is_mapped(HostMemoryBackend *backend)
|
|||||||
return backend->is_mapped;
|
return backend->is_mapped;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __linux__
|
|
||||||
size_t host_memory_backend_pagesize(HostMemoryBackend *memdev)
|
size_t host_memory_backend_pagesize(HostMemoryBackend *memdev)
|
||||||
{
|
{
|
||||||
Object *obj = OBJECT(memdev);
|
size_t pagesize = qemu_ram_pagesize(memdev->mr.ram_block);
|
||||||
char *path = object_property_get_str(obj, "mem-path", NULL);
|
g_assert(pagesize >= qemu_real_host_page_size());
|
||||||
size_t pagesize = qemu_mempath_getpagesize(path);
|
|
||||||
|
|
||||||
g_free(path);
|
|
||||||
return pagesize;
|
return pagesize;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
size_t host_memory_backend_pagesize(HostMemoryBackend *memdev)
|
|
||||||
{
|
|
||||||
return qemu_real_host_page_size();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
host_memory_backend_memory_complete(UserCreatable *uc, Error **errp)
|
host_memory_backend_memory_complete(UserCreatable *uc, Error **errp)
|
||||||
|
@ -3094,10 +3094,17 @@ static void machvirt_machine_init(void)
|
|||||||
}
|
}
|
||||||
type_init(machvirt_machine_init);
|
type_init(machvirt_machine_init);
|
||||||
|
|
||||||
static void virt_machine_7_1_options(MachineClass *mc)
|
static void virt_machine_7_2_options(MachineClass *mc)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
DEFINE_VIRT_MACHINE_AS_LATEST(7, 1)
|
DEFINE_VIRT_MACHINE_AS_LATEST(7, 2)
|
||||||
|
|
||||||
|
static void virt_machine_7_1_options(MachineClass *mc)
|
||||||
|
{
|
||||||
|
virt_machine_7_2_options(mc);
|
||||||
|
compat_props_add(mc->compat_props, hw_compat_7_1, hw_compat_7_1_len);
|
||||||
|
}
|
||||||
|
DEFINE_VIRT_MACHINE(7, 1)
|
||||||
|
|
||||||
static void virt_machine_7_0_options(MachineClass *mc)
|
static void virt_machine_7_0_options(MachineClass *mc)
|
||||||
{
|
{
|
||||||
|
@ -40,6 +40,9 @@
|
|||||||
#include "hw/virtio/virtio-pci.h"
|
#include "hw/virtio/virtio-pci.h"
|
||||||
#include "qom/object_interfaces.h"
|
#include "qom/object_interfaces.h"
|
||||||
|
|
||||||
|
GlobalProperty hw_compat_7_1[] = {};
|
||||||
|
const size_t hw_compat_7_1_len = G_N_ELEMENTS(hw_compat_7_1);
|
||||||
|
|
||||||
GlobalProperty hw_compat_7_0[] = {
|
GlobalProperty hw_compat_7_0[] = {
|
||||||
{ "arm-gicv3-common", "force-8-bit-prio", "on" },
|
{ "arm-gicv3-common", "force-8-bit-prio", "on" },
|
||||||
{ "nvme-ns", "eui64-default", "on"},
|
{ "nvme-ns", "eui64-default", "on"},
|
||||||
|
@ -107,6 +107,9 @@
|
|||||||
{ "qemu64-" TYPE_X86_CPU, "model-id", "QEMU Virtual CPU version " v, },\
|
{ "qemu64-" TYPE_X86_CPU, "model-id", "QEMU Virtual CPU version " v, },\
|
||||||
{ "athlon-" TYPE_X86_CPU, "model-id", "QEMU Virtual CPU version " v, },
|
{ "athlon-" TYPE_X86_CPU, "model-id", "QEMU Virtual CPU version " v, },
|
||||||
|
|
||||||
|
GlobalProperty pc_compat_7_1[] = {};
|
||||||
|
const size_t pc_compat_7_1_len = G_N_ELEMENTS(pc_compat_7_1);
|
||||||
|
|
||||||
GlobalProperty pc_compat_7_0[] = {};
|
GlobalProperty pc_compat_7_0[] = {};
|
||||||
const size_t pc_compat_7_0_len = G_N_ELEMENTS(pc_compat_7_0);
|
const size_t pc_compat_7_0_len = G_N_ELEMENTS(pc_compat_7_0);
|
||||||
|
|
||||||
|
@ -432,7 +432,7 @@ static void pc_i440fx_machine_options(MachineClass *m)
|
|||||||
machine_class_allow_dynamic_sysbus_dev(m, TYPE_VMBUS_BRIDGE);
|
machine_class_allow_dynamic_sysbus_dev(m, TYPE_VMBUS_BRIDGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void pc_i440fx_7_1_machine_options(MachineClass *m)
|
static void pc_i440fx_7_2_machine_options(MachineClass *m)
|
||||||
{
|
{
|
||||||
PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
||||||
pc_i440fx_machine_options(m);
|
pc_i440fx_machine_options(m);
|
||||||
@ -442,6 +442,18 @@ static void pc_i440fx_7_1_machine_options(MachineClass *m)
|
|||||||
pcmc->legacy_no_rng_seed = true;
|
pcmc->legacy_no_rng_seed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEFINE_I440FX_MACHINE(v7_2, "pc-i440fx-7.2", NULL,
|
||||||
|
pc_i440fx_7_2_machine_options);
|
||||||
|
|
||||||
|
static void pc_i440fx_7_1_machine_options(MachineClass *m)
|
||||||
|
{
|
||||||
|
pc_i440fx_7_2_machine_options(m);
|
||||||
|
m->alias = NULL;
|
||||||
|
m->is_default = false;
|
||||||
|
compat_props_add(m->compat_props, hw_compat_7_1, hw_compat_7_1_len);
|
||||||
|
compat_props_add(m->compat_props, pc_compat_7_1, pc_compat_7_1_len);
|
||||||
|
}
|
||||||
|
|
||||||
DEFINE_I440FX_MACHINE(v7_1, "pc-i440fx-7.1", NULL,
|
DEFINE_I440FX_MACHINE(v7_1, "pc-i440fx-7.1", NULL,
|
||||||
pc_i440fx_7_1_machine_options);
|
pc_i440fx_7_1_machine_options);
|
||||||
|
|
||||||
|
@ -370,7 +370,7 @@ static void pc_q35_machine_options(MachineClass *m)
|
|||||||
m->max_cpus = 288;
|
m->max_cpus = 288;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void pc_q35_7_1_machine_options(MachineClass *m)
|
static void pc_q35_7_2_machine_options(MachineClass *m)
|
||||||
{
|
{
|
||||||
PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
|
||||||
pc_q35_machine_options(m);
|
pc_q35_machine_options(m);
|
||||||
@ -379,6 +379,17 @@ static void pc_q35_7_1_machine_options(MachineClass *m)
|
|||||||
pcmc->legacy_no_rng_seed = true;
|
pcmc->legacy_no_rng_seed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEFINE_Q35_MACHINE(v7_2, "pc-q35-7.2", NULL,
|
||||||
|
pc_q35_7_2_machine_options);
|
||||||
|
|
||||||
|
static void pc_q35_7_1_machine_options(MachineClass *m)
|
||||||
|
{
|
||||||
|
pc_q35_7_2_machine_options(m);
|
||||||
|
m->alias = NULL;
|
||||||
|
compat_props_add(m->compat_props, hw_compat_7_1, hw_compat_7_1_len);
|
||||||
|
compat_props_add(m->compat_props, pc_compat_7_1, pc_compat_7_1_len);
|
||||||
|
}
|
||||||
|
|
||||||
DEFINE_Q35_MACHINE(v7_1, "pc-q35-7.1", NULL,
|
DEFINE_Q35_MACHINE(v7_1, "pc-q35-7.1", NULL,
|
||||||
pc_q35_7_1_machine_options);
|
pc_q35_7_1_machine_options);
|
||||||
|
|
||||||
|
@ -322,10 +322,17 @@ type_init(virt_machine_register_types)
|
|||||||
} \
|
} \
|
||||||
type_init(machvirt_machine_##major##_##minor##_init);
|
type_init(machvirt_machine_##major##_##minor##_init);
|
||||||
|
|
||||||
static void virt_machine_7_1_options(MachineClass *mc)
|
static void virt_machine_7_2_options(MachineClass *mc)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
DEFINE_VIRT_MACHINE(7, 1, true)
|
DEFINE_VIRT_MACHINE(7, 2, true)
|
||||||
|
|
||||||
|
static void virt_machine_7_1_options(MachineClass *mc)
|
||||||
|
{
|
||||||
|
virt_machine_7_2_options(mc);
|
||||||
|
compat_props_add(mc->compat_props, hw_compat_7_1, hw_compat_7_1_len);
|
||||||
|
}
|
||||||
|
DEFINE_VIRT_MACHINE(7, 1, false)
|
||||||
|
|
||||||
static void virt_machine_7_0_options(MachineClass *mc)
|
static void virt_machine_7_0_options(MachineClass *mc)
|
||||||
{
|
{
|
||||||
|
@ -4731,14 +4731,25 @@ static void spapr_machine_latest_class_options(MachineClass *mc)
|
|||||||
type_init(spapr_machine_register_##suffix)
|
type_init(spapr_machine_register_##suffix)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* pseries-7.1
|
* pseries-7.2
|
||||||
*/
|
*/
|
||||||
static void spapr_machine_7_1_class_options(MachineClass *mc)
|
static void spapr_machine_7_2_class_options(MachineClass *mc)
|
||||||
{
|
{
|
||||||
/* Defaults for the latest behaviour inherited from the base class */
|
/* Defaults for the latest behaviour inherited from the base class */
|
||||||
}
|
}
|
||||||
|
|
||||||
DEFINE_SPAPR_MACHINE(7_1, "7.1", true);
|
DEFINE_SPAPR_MACHINE(7_2, "7.2", true);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* pseries-7.1
|
||||||
|
*/
|
||||||
|
static void spapr_machine_7_1_class_options(MachineClass *mc)
|
||||||
|
{
|
||||||
|
spapr_machine_7_2_class_options(mc);
|
||||||
|
compat_props_add(mc->compat_props, hw_compat_7_1, hw_compat_7_1_len);
|
||||||
|
}
|
||||||
|
|
||||||
|
DEFINE_SPAPR_MACHINE(7_1, "7.1", false);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* pseries-7.0
|
* pseries-7.0
|
||||||
|
@ -792,14 +792,27 @@ bool css_migration_enabled(void)
|
|||||||
} \
|
} \
|
||||||
type_init(ccw_machine_register_##suffix)
|
type_init(ccw_machine_register_##suffix)
|
||||||
|
|
||||||
|
static void ccw_machine_7_2_instance_options(MachineState *machine)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static void ccw_machine_7_2_class_options(MachineClass *mc)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
DEFINE_CCW_MACHINE(7_2, "7.2", true);
|
||||||
|
|
||||||
static void ccw_machine_7_1_instance_options(MachineState *machine)
|
static void ccw_machine_7_1_instance_options(MachineState *machine)
|
||||||
{
|
{
|
||||||
|
ccw_machine_7_2_instance_options(machine);
|
||||||
|
s390_cpudef_featoff_greater(16, 1, S390_FEAT_PAIE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ccw_machine_7_1_class_options(MachineClass *mc)
|
static void ccw_machine_7_1_class_options(MachineClass *mc)
|
||||||
{
|
{
|
||||||
|
ccw_machine_7_2_class_options(mc);
|
||||||
|
compat_props_add(mc->compat_props, hw_compat_7_1, hw_compat_7_1_len);
|
||||||
}
|
}
|
||||||
DEFINE_CCW_MACHINE(7_1, "7.1", true);
|
DEFINE_CCW_MACHINE(7_1, "7.1", false);
|
||||||
|
|
||||||
static void ccw_machine_7_0_instance_options(MachineState *machine)
|
static void ccw_machine_7_0_instance_options(MachineState *machine)
|
||||||
{
|
{
|
||||||
|
@ -379,6 +379,9 @@ struct MachineState {
|
|||||||
} \
|
} \
|
||||||
type_init(machine_initfn##_register_types)
|
type_init(machine_initfn##_register_types)
|
||||||
|
|
||||||
|
extern GlobalProperty hw_compat_7_1[];
|
||||||
|
extern const size_t hw_compat_7_1_len;
|
||||||
|
|
||||||
extern GlobalProperty hw_compat_7_0[];
|
extern GlobalProperty hw_compat_7_0[];
|
||||||
extern const size_t hw_compat_7_0_len;
|
extern const size_t hw_compat_7_0_len;
|
||||||
|
|
||||||
|
@ -200,6 +200,9 @@ void pc_madt_cpu_entry(AcpiDeviceIf *adev, int uid,
|
|||||||
/* sgx.c */
|
/* sgx.c */
|
||||||
void pc_machine_init_sgx_epc(PCMachineState *pcms);
|
void pc_machine_init_sgx_epc(PCMachineState *pcms);
|
||||||
|
|
||||||
|
extern GlobalProperty pc_compat_7_1[];
|
||||||
|
extern const size_t pc_compat_7_1_len;
|
||||||
|
|
||||||
extern GlobalProperty pc_compat_7_0[];
|
extern GlobalProperty pc_compat_7_0[];
|
||||||
extern const size_t pc_compat_7_0_len;
|
extern const size_t pc_compat_7_0_len;
|
||||||
|
|
||||||
|
@ -4,8 +4,6 @@
|
|||||||
|
|
||||||
size_t qemu_fd_getpagesize(int fd);
|
size_t qemu_fd_getpagesize(int fd);
|
||||||
|
|
||||||
size_t qemu_mempath_getpagesize(const char *mem_path);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* qemu_ram_mmap: mmap anonymous memory, the specified file or device.
|
* qemu_ram_mmap: mmap anonymous memory, the specified file or device.
|
||||||
*
|
*
|
||||||
|
@ -1331,13 +1331,6 @@ GString *ram_block_format(void)
|
|||||||
return buf;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __linux__
|
|
||||||
/*
|
|
||||||
* FIXME TOCTTOU: this iterates over memory backends' mem-path, which
|
|
||||||
* may or may not name the same files / on the same filesystem now as
|
|
||||||
* when we actually open and map them. Iterate over the file
|
|
||||||
* descriptors instead, and use qemu_fd_getpagesize().
|
|
||||||
*/
|
|
||||||
static int find_min_backend_pagesize(Object *obj, void *opaque)
|
static int find_min_backend_pagesize(Object *obj, void *opaque)
|
||||||
{
|
{
|
||||||
long *hpsize_min = opaque;
|
long *hpsize_min = opaque;
|
||||||
@ -1391,16 +1384,6 @@ long qemu_maxrampagesize(void)
|
|||||||
object_child_foreach(memdev_root, find_max_backend_pagesize, &pagesize);
|
object_child_foreach(memdev_root, find_max_backend_pagesize, &pagesize);
|
||||||
return pagesize;
|
return pagesize;
|
||||||
}
|
}
|
||||||
#else
|
|
||||||
long qemu_minrampagesize(void)
|
|
||||||
{
|
|
||||||
return qemu_real_host_page_size();
|
|
||||||
}
|
|
||||||
long qemu_maxrampagesize(void)
|
|
||||||
{
|
|
||||||
return qemu_real_host_page_size();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_POSIX
|
#ifdef CONFIG_POSIX
|
||||||
static int64_t get_file_size(int fd)
|
static int64_t get_file_size(int fd)
|
||||||
|
@ -114,6 +114,7 @@ DEF_FEAT(VECTOR_PACKED_DECIMAL_ENH2, "vxpdeh2", STFL, 192, "Vector-Packed-Decima
|
|||||||
DEF_FEAT(BEAR_ENH, "beareh", STFL, 193, "BEAR-enhancement facility")
|
DEF_FEAT(BEAR_ENH, "beareh", STFL, 193, "BEAR-enhancement facility")
|
||||||
DEF_FEAT(RDP, "rdp", STFL, 194, "Reset-DAT-protection facility")
|
DEF_FEAT(RDP, "rdp", STFL, 194, "Reset-DAT-protection facility")
|
||||||
DEF_FEAT(PAI, "pai", STFL, 196, "Processor-Activity-Instrumentation facility")
|
DEF_FEAT(PAI, "pai", STFL, 196, "Processor-Activity-Instrumentation facility")
|
||||||
|
DEF_FEAT(PAIE, "paie", STFL, 197, "Processor-Activity-Instrumentation extension-1")
|
||||||
|
|
||||||
/* Features exposed via SCLP SCCB Byte 80 - 98 (bit numbers relative to byte-80) */
|
/* Features exposed via SCLP SCCB Byte 80 - 98 (bit numbers relative to byte-80) */
|
||||||
DEF_FEAT(SIE_GSLS, "gsls", SCLP_CONF_CHAR, 40, "SIE: Guest-storage-limit-suppression facility")
|
DEF_FEAT(SIE_GSLS, "gsls", SCLP_CONF_CHAR, 40, "SIE: Guest-storage-limit-suppression facility")
|
||||||
|
@ -575,6 +575,7 @@ static uint16_t full_GEN16_GA1[] = {
|
|||||||
S390_FEAT_BEAR_ENH,
|
S390_FEAT_BEAR_ENH,
|
||||||
S390_FEAT_RDP,
|
S390_FEAT_RDP,
|
||||||
S390_FEAT_PAI,
|
S390_FEAT_PAI,
|
||||||
|
S390_FEAT_PAIE,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -669,6 +670,7 @@ static uint16_t default_GEN16_GA1[] = {
|
|||||||
S390_FEAT_BEAR_ENH,
|
S390_FEAT_BEAR_ENH,
|
||||||
S390_FEAT_RDP,
|
S390_FEAT_RDP,
|
||||||
S390_FEAT_PAI,
|
S390_FEAT_PAI,
|
||||||
|
S390_FEAT_PAIE,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* QEMU (CPU model) features */
|
/* QEMU (CPU model) features */
|
||||||
|
@ -290,8 +290,8 @@
|
|||||||
D(0xb961, CLGRT, RRF_c, GIE, r1_o, r2_o, 0, 0, ct, 0, 1)
|
D(0xb961, CLGRT, RRF_c, GIE, r1_o, r2_o, 0, 0, ct, 0, 1)
|
||||||
D(0xeb23, CLT, RSY_b, MIE, r1_32u, m2_32u, 0, 0, ct, 0, 1)
|
D(0xeb23, CLT, RSY_b, MIE, r1_32u, m2_32u, 0, 0, ct, 0, 1)
|
||||||
D(0xeb2b, CLGT, RSY_b, MIE, r1_o, m2_64, 0, 0, ct, 0, 1)
|
D(0xeb2b, CLGT, RSY_b, MIE, r1_o, m2_64, 0, 0, ct, 0, 1)
|
||||||
D(0xec73, CLFIT, RIE_a, GIE, r1_32u, i2_32u, 0, 0, ct, 0, 1)
|
D(0xec73, CLFIT, RIE_a, GIE, r1_32u, i2_16u, 0, 0, ct, 0, 1)
|
||||||
D(0xec71, CLGIT, RIE_a, GIE, r1_o, i2_32u, 0, 0, ct, 0, 1)
|
D(0xec71, CLGIT, RIE_a, GIE, r1_o, i2_16u, 0, 0, ct, 0, 1)
|
||||||
|
|
||||||
/* CONVERT TO DECIMAL */
|
/* CONVERT TO DECIMAL */
|
||||||
C(0x4e00, CVD, RX_a, Z, r1_o, a2, 0, 0, cvd, 0)
|
C(0x4e00, CVD, RX_a, Z, r1_o, a2, 0, 0, cvd, 0)
|
||||||
|
@ -53,37 +53,6 @@ size_t qemu_fd_getpagesize(int fd)
|
|||||||
return qemu_real_host_page_size();
|
return qemu_real_host_page_size();
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t qemu_mempath_getpagesize(const char *mem_path)
|
|
||||||
{
|
|
||||||
#ifdef CONFIG_LINUX
|
|
||||||
struct statfs fs;
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
if (mem_path) {
|
|
||||||
do {
|
|
||||||
ret = statfs(mem_path, &fs);
|
|
||||||
} while (ret != 0 && errno == EINTR);
|
|
||||||
|
|
||||||
if (ret != 0) {
|
|
||||||
fprintf(stderr, "Couldn't statfs() memory path: %s\n",
|
|
||||||
strerror(errno));
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fs.f_type == HUGETLBFS_MAGIC) {
|
|
||||||
/* It's hugepage, return the huge page size */
|
|
||||||
return fs.f_bsize;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#ifdef __sparc__
|
|
||||||
/* SPARC Linux needs greater alignment than the pagesize */
|
|
||||||
return QEMU_VMALLOC_ALIGN;
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return qemu_real_host_page_size();
|
|
||||||
}
|
|
||||||
|
|
||||||
#define OVERCOMMIT_MEMORY_PATH "/proc/sys/vm/overcommit_memory"
|
#define OVERCOMMIT_MEMORY_PATH "/proc/sys/vm/overcommit_memory"
|
||||||
static bool map_noreserve_effective(int fd, uint32_t qemu_map_flags)
|
static bool map_noreserve_effective(int fd, uint32_t qemu_map_flags)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user