On Wed, 4 Oct 2017 19:06:57 +0200 Thomas Huth <th...@redhat.com> wrote:
> 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? We do have a number of devices that are sysbus because you could not have bus-less devices back then. We might want to convert them to a simple TYPE_DEVICE, but this needs double-checking regarding resets and other things and I'd rather not spend that much time on that right now.