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 */
|
||||
}
|
||||
}
|
||||
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)
|
||||
{
|
||||
@ -328,6 +342,13 @@ static inline void s390_machine_initfn(Object *obj)
|
||||
" to upper case) to pass to machine loader, boot manager,"
|
||||
" and guest kernel",
|
||||
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 = {
|
||||
|
@ -29,6 +29,7 @@ typedef struct S390CcwMachineState {
|
||||
bool aes_key_wrap;
|
||||
bool dea_key_wrap;
|
||||
uint8_t loadparm[8];
|
||||
bool s390_squash_mcss;
|
||||
} S390CcwMachineState;
|
||||
|
||||
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"
|
||||
" suppress-vmdesc=on|off disables self-describing migration (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)
|
||||
STEXI
|
||||
@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.
|
||||
@item nvdimm=on|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
|
||||
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 */
|
||||
|
||||
/* subclasses */
|
||||
|
Loading…
Reference in New Issue
Block a user