s390x/css: add s390-squash-mcss machine option
We want to support real (i.e. not virtual) channel devices even for guests that do not support MCSS-E (where guests may see devices from any channel subsystem image at once). As all virtio-ccw devices are in css 0xfe (and show up in the default css 0 for guests not activating MCSS-E), we need an option to squash both the virtio subchannels and e.g. passed-through subchannels from their real css (0-3, or 0 for hosts not activating MCSS-E) into the default css. This will be exploited in a later patch. Signed-off-by: Xiao Feng Ren <renxiaof@linux.vnet.ibm.com> Signed-off-by: Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com> Message-Id: <20170517004813.58227-4-bjsdjshi@linux.vnet.ibm.com> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
This commit is contained in:
parent
74c98e20a6
commit
274250c301
|
@ -303,6 +303,20 @@ static void machine_set_loadparm(Object *obj, const char *val, Error **errp)
|
||||||
ms->loadparm[i] = ' '; /* pad right with spaces */
|
ms->loadparm[i] = ' '; /* pad right with spaces */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
static inline bool machine_get_squash_mcss(Object *obj, Error **errp)
|
||||||
|
{
|
||||||
|
S390CcwMachineState *ms = S390_CCW_MACHINE(obj);
|
||||||
|
|
||||||
|
return ms->s390_squash_mcss;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void machine_set_squash_mcss(Object *obj, bool value,
|
||||||
|
Error **errp)
|
||||||
|
{
|
||||||
|
S390CcwMachineState *ms = S390_CCW_MACHINE(obj);
|
||||||
|
|
||||||
|
ms->s390_squash_mcss = value;
|
||||||
|
}
|
||||||
|
|
||||||
static inline void s390_machine_initfn(Object *obj)
|
static inline void s390_machine_initfn(Object *obj)
|
||||||
{
|
{
|
||||||
|
@ -328,6 +342,13 @@ static inline void s390_machine_initfn(Object *obj)
|
||||||
" to upper case) to pass to machine loader, boot manager,"
|
" to upper case) to pass to machine loader, boot manager,"
|
||||||
" and guest kernel",
|
" and guest kernel",
|
||||||
NULL);
|
NULL);
|
||||||
|
object_property_add_bool(obj, "s390-squash-mcss",
|
||||||
|
machine_get_squash_mcss,
|
||||||
|
machine_set_squash_mcss, NULL);
|
||||||
|
object_property_set_description(obj, "s390-squash-mcss",
|
||||||
|
"enable/disable squashing subchannels into the default css",
|
||||||
|
NULL);
|
||||||
|
object_property_set_bool(obj, false, "s390-squash-mcss", NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const TypeInfo ccw_machine_info = {
|
static const TypeInfo ccw_machine_info = {
|
||||||
|
|
|
@ -29,6 +29,7 @@ typedef struct S390CcwMachineState {
|
||||||
bool aes_key_wrap;
|
bool aes_key_wrap;
|
||||||
bool dea_key_wrap;
|
bool dea_key_wrap;
|
||||||
uint8_t loadparm[8];
|
uint8_t loadparm[8];
|
||||||
|
bool s390_squash_mcss;
|
||||||
} S390CcwMachineState;
|
} S390CcwMachineState;
|
||||||
|
|
||||||
typedef struct S390CcwMachineClass {
|
typedef struct S390CcwMachineClass {
|
||||||
|
|
|
@ -42,7 +42,8 @@ DEF("machine", HAS_ARG, QEMU_OPTION_machine, \
|
||||||
" dea-key-wrap=on|off controls support for DEA key wrapping (default=on)\n"
|
" dea-key-wrap=on|off controls support for DEA key wrapping (default=on)\n"
|
||||||
" suppress-vmdesc=on|off disables self-describing migration (default=off)\n"
|
" suppress-vmdesc=on|off disables self-describing migration (default=off)\n"
|
||||||
" nvdimm=on|off controls NVDIMM support (default=off)\n"
|
" nvdimm=on|off controls NVDIMM support (default=off)\n"
|
||||||
" enforce-config-section=on|off enforce configuration section migration (default=off)\n",
|
" enforce-config-section=on|off enforce configuration section migration (default=off)\n"
|
||||||
|
" s390-squash-mcss=on|off controls support for squashing into default css (default=off)\n",
|
||||||
QEMU_ARCH_ALL)
|
QEMU_ARCH_ALL)
|
||||||
STEXI
|
STEXI
|
||||||
@item -machine [type=]@var{name}[,prop=@var{value}[,...]]
|
@item -machine [type=]@var{name}[,prop=@var{value}[,...]]
|
||||||
|
@ -81,6 +82,9 @@ controls whether DEA wrapping keys will be created to allow
|
||||||
execution of DEA cryptographic functions. The default is on.
|
execution of DEA cryptographic functions. The default is on.
|
||||||
@item nvdimm=on|off
|
@item nvdimm=on|off
|
||||||
Enables or disables NVDIMM support. The default is off.
|
Enables or disables NVDIMM support. The default is off.
|
||||||
|
@item s390-squash-mcss=on|off
|
||||||
|
Enables or disables squashing subchannels into the default css.
|
||||||
|
The default is off.
|
||||||
@end table
|
@end table
|
||||||
ETEXI
|
ETEXI
|
||||||
|
|
||||||
|
|
|
@ -1256,6 +1256,16 @@ static inline void s390_crypto_reset(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline bool s390_get_squash_mcss(void)
|
||||||
|
{
|
||||||
|
if (object_property_get_bool(OBJECT(qdev_get_machine()), "s390-squash-mcss",
|
||||||
|
NULL)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/* machine check interruption code */
|
/* machine check interruption code */
|
||||||
|
|
||||||
/* subclasses */
|
/* subclasses */
|
||||||
|
|
Loading…
Reference in New Issue