s390/sclp: add reset() functions
Add reset() functions for event-facility, sclpconsole, and sclpquiesce. The reset() functions perform variable initialization at IPL and e.g. when monitor system_reset is called. Signed-off-by: Heinz Graalfs <graalfs@linux.vnet.ibm.com> Reviewed-by: Thomas Huth <thuth@linux.vnet.ibm.com> Reviewed-by: Alexander Graf <agraf@suse.de> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
This commit is contained in:
parent
7e36b7a356
commit
3af6de321f
|
@ -228,10 +228,6 @@ static int console_init(SCLPEvent *event)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
console_available = true;
|
console_available = true;
|
||||||
scon->iov_sclp = 0;
|
|
||||||
scon->iov_bs = 0;
|
|
||||||
scon->iov_data_len = 0;
|
|
||||||
scon->iov_sclp_rest = 0;
|
|
||||||
event->event_type = SCLP_EVENT_ASCII_CONSOLE_DATA;
|
event->event_type = SCLP_EVENT_ASCII_CONSOLE_DATA;
|
||||||
if (scon->chr) {
|
if (scon->chr) {
|
||||||
qemu_chr_add_handlers(scon->chr, chr_can_read,
|
qemu_chr_add_handlers(scon->chr, chr_can_read,
|
||||||
|
@ -243,6 +239,18 @@ static int console_init(SCLPEvent *event)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void console_reset(DeviceState *dev)
|
||||||
|
{
|
||||||
|
SCLPEvent *event = SCLP_EVENT(dev);
|
||||||
|
SCLPConsole *scon = DO_UPCAST(SCLPConsole, event, event);
|
||||||
|
|
||||||
|
event->event_pending = false;
|
||||||
|
scon->iov_sclp = 0;
|
||||||
|
scon->iov_bs = 0;
|
||||||
|
scon->iov_data_len = 0;
|
||||||
|
scon->iov_sclp_rest = 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int console_exit(SCLPEvent *event)
|
static int console_exit(SCLPEvent *event)
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -259,6 +267,7 @@ static void console_class_init(ObjectClass *klass, void *data)
|
||||||
SCLPEventClass *ec = SCLP_EVENT_CLASS(klass);
|
SCLPEventClass *ec = SCLP_EVENT_CLASS(klass);
|
||||||
|
|
||||||
dc->props = console_properties;
|
dc->props = console_properties;
|
||||||
|
dc->reset = console_reset;
|
||||||
dc->vmsd = &vmstate_sclpconsole;
|
dc->vmsd = &vmstate_sclpconsole;
|
||||||
ec->init = console_init;
|
ec->init = console_init;
|
||||||
ec->exit = console_exit;
|
ec->exit = console_exit;
|
||||||
|
|
|
@ -338,10 +338,19 @@ static int init_event_facility(S390SCLPDevice *sdev)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void reset_event_facility(DeviceState *dev)
|
||||||
|
{
|
||||||
|
S390SCLPDevice *sdev = SCLP_S390_DEVICE(dev);
|
||||||
|
|
||||||
|
sdev->ef->receive_mask = 0;
|
||||||
|
}
|
||||||
|
|
||||||
static void init_event_facility_class(ObjectClass *klass, void *data)
|
static void init_event_facility_class(ObjectClass *klass, void *data)
|
||||||
{
|
{
|
||||||
|
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||||
S390SCLPDeviceClass *k = SCLP_S390_DEVICE_CLASS(klass);
|
S390SCLPDeviceClass *k = SCLP_S390_DEVICE_CLASS(klass);
|
||||||
|
|
||||||
|
dc->reset = reset_event_facility;
|
||||||
k->init = init_event_facility;
|
k->init = init_event_facility;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -105,11 +105,19 @@ static int quiesce_init(SCLPEvent *event)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void quiesce_reset(DeviceState *dev)
|
||||||
|
{
|
||||||
|
SCLPEvent *event = SCLP_EVENT(dev);
|
||||||
|
|
||||||
|
event->event_pending = false;
|
||||||
|
}
|
||||||
|
|
||||||
static void quiesce_class_init(ObjectClass *klass, void *data)
|
static void quiesce_class_init(ObjectClass *klass, void *data)
|
||||||
{
|
{
|
||||||
DeviceClass *dc = DEVICE_CLASS(klass);
|
DeviceClass *dc = DEVICE_CLASS(klass);
|
||||||
SCLPEventClass *k = SCLP_EVENT_CLASS(klass);
|
SCLPEventClass *k = SCLP_EVENT_CLASS(klass);
|
||||||
|
|
||||||
|
dc->reset = quiesce_reset;
|
||||||
dc->vmsd = &vmstate_sclpquiesce;
|
dc->vmsd = &vmstate_sclpquiesce;
|
||||||
k->init = quiesce_init;
|
k->init = quiesce_init;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue