On 04.10.2017 17:18, Pierre Morel wrote: > On 04/10/2017 15:53, Thomas Huth wrote: >> The "sclp" device is just an internal device that can not be instantiated >> by the users. If they try to use it, they only get a simple error >> message: >> >> $ qemu-system-s390x -nographic -device sclp >> qemu-system-s390x: Option '-device s390-sclp-event-facility' cannot be >> handled by this machine >> >> Since sclp_init() tries to create a TYPE_SCLP_EVENT_FACILITY which is >> a non-pluggable sysbus device, there is really no way that the "sclp" >> device can be used by the user, so let's set the user_creatable = false >> accordingly. >> >> Signed-off-by: Thomas Huth <th...@redhat.com> >> --- >> hw/s390x/sclp.c | 5 +++++ >> 1 file changed, 5 insertions(+) >> >> diff --git a/hw/s390x/sclp.c b/hw/s390x/sclp.c >> index 30aefbf..9be0cb8 100644 >> --- a/hw/s390x/sclp.c >> +++ b/hw/s390x/sclp.c >> @@ -606,6 +606,11 @@ static void sclp_class_init(ObjectClass *oc, void >> *data) >> dc->realize = sclp_realize; >> dc->hotpluggable = false; >> set_bit(DEVICE_CATEGORY_MISC, dc->categories); >> + /* >> + * Reason: Creates TYPE_SCLP_EVENT_FACILITY in sclp_init >> + * which is a non-pluggable sysbus device >> + */ >> + dc->user_creatable = false; >> >> sc->read_SCP_info = read_SCP_info; >> sc->read_storage_element0_info = read_storage_element0_info; >> > > I must miss something. > Why is the sclp device not a SYS_BUS_DEVICE ? > The problem seems to come from the heterogeneity of the sclp and sclp > generated devices.
I wonder whether it should rather be the other way round: Why is TYPE_SCLP_EVENT_FACILITY a sysbus device? Sysbus is an abstraction for simple on-board devices, while TYPE_SCLP_EVENT_FACILITY seems rather to be a pseudo-device... so it should rather simply be of TYPE_DEVICE instead? Or do I miss something? Thomas