@@ -101,6 +101,7 @@ struct sPAPRMachineState {
/*< public >*/
char *kvm_type;
+ bool ddw_supported;
};
sPAPREnvironment *spapr;
@@ -1633,10 +1634,24 @@ static void spapr_set_kvm_type(Object *obj, const char *value, Error **errp)
sm->kvm_type = g_strdup(value);
}
+static bool spapr_machine_get_ddw(Object *obj, Error **errp)
+{
+ sPAPRMachineState *sms = SPAPR_MACHINE(obj);
+ return sms->ddw_supported;
+}
+
+static void spapr_machine_set_ddw(Object *obj, bool value, Error **errp)
+{
+ sPAPRMachineState *sms = SPAPR_MACHINE(obj);
+ sms->ddw_supported = value;
+}
+
static void spapr_machine_initfn(Object *obj)
{
object_property_add_str(obj, "kvm-type",
spapr_get_kvm_type, spapr_set_kvm_type, NULL);
+ object_property_add_bool(obj, "ddw", spapr_machine_get_ddw,
+ spapr_machine_set_ddw, NULL);
}
static void spapr_machine_class_init(ObjectClass *oc, void *data)
@@ -383,6 +383,10 @@ static QemuOptsList qemu_machine_opts = {
.name = "kvm-type",
.type = QEMU_OPT_STRING,
.help = "Specifies the KVM virtualization mode (HV, PR)",
+ }, {
+ .name = "ddw",
+ .type = QEMU_OPT_BOOL,
+ .help = "Enable Dynamic DMA windows support (pseries only)",
},{
.name = PC_MACHINE_MAX_RAM_BELOW_4G,
.type = QEMU_OPT_SIZE,
This adds a new "ddw" option for a machine to control presense of the Dynamic DMA window (DDW) feature. This option will be used by pseries to decide whether to put DDW RTAS tokens to PHB device tree nodes or not. This is not a PHB property because there is no way to change the emulated PHB properties at start time. Also there is no point in enabling DDW only for some PHB's because for emulated PHBs it would not add any noticible overhead and for VFIO the very first DDW-capable PHB will pin the entire guest memory and others won't change it anyhow. Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> --- hw/ppc/spapr.c | 15 +++++++++++++++ vl.c | 4 ++++ 2 files changed, 19 insertions(+)