* [PATCH] hw/s390x: Attach the sclpconsole to the /machine/sclp node
@ 2024-04-30 8:04 Thomas Huth
2024-04-30 8:19 ` David Hildenbrand
2024-04-30 11:58 ` Cédric Le Goater
0 siblings, 2 replies; 7+ messages in thread
From: Thomas Huth @ 2024-04-30 8:04 UTC (permalink / raw)
To: qemu-s390x, Christian Borntraeger
Cc: qemu-devel, Halil Pasic, Eric Farman, David Hildenbrand,
Markus Armbruster, Philippe Mathieu-Daudé, Thomas Huth
The sclpconsole currently does not have a proper parent in the QOM
tree, so it shows up under /machine/unattached - which is somewhat
ugly. Let's attach it to /machine/sclp instead.
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
include/hw/s390x/sclp.h | 2 +-
hw/s390x/s390-virtio-ccw.c | 11 +++++++----
hw/s390x/sclp.c | 4 +++-
3 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/include/hw/s390x/sclp.h b/include/hw/s390x/sclp.h
index b405a387b6..abfd6d8868 100644
--- a/include/hw/s390x/sclp.h
+++ b/include/hw/s390x/sclp.h
@@ -222,7 +222,7 @@ static inline int sccb_data_len(SCCB *sccb)
}
-void s390_sclp_init(void);
+Object *s390_sclp_init(void);
void sclp_service_interrupt(uint32_t sccb);
void raise_irq_cpu_hotplug(void);
int sclp_service_call(S390CPU *cpu, uint64_t sccb, uint32_t code);
diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
index 4dcc213820..e2f9206ded 100644
--- a/hw/s390x/s390-virtio-ccw.c
+++ b/hw/s390x/s390-virtio-ccw.c
@@ -237,11 +237,13 @@ static void s390_create_virtio_net(BusState *bus, const char *name)
}
}
-static void s390_create_sclpconsole(const char *type, Chardev *chardev)
+static void s390_create_sclpconsole(Object *sclp, const char *type,
+ Chardev *chardev)
{
DeviceState *dev;
dev = qdev_new(type);
+ object_property_add_child(sclp, type, OBJECT(dev));
qdev_prop_set_chr(dev, "chardev", chardev);
qdev_realize_and_unref(dev, sclp_get_event_facility_bus(), &error_fatal);
}
@@ -252,8 +254,9 @@ static void ccw_init(MachineState *machine)
int ret;
VirtualCssBus *css_bus;
DeviceState *dev;
+ Object *sclp;
- s390_sclp_init();
+ sclp = s390_sclp_init();
/* init memory + setup max page size. Required for the CPU model */
s390_memory_init(machine->ram);
@@ -302,10 +305,10 @@ static void ccw_init(MachineState *machine)
/* init consoles */
if (serial_hd(0)) {
- s390_create_sclpconsole("sclpconsole", serial_hd(0));
+ s390_create_sclpconsole(sclp, "sclpconsole", serial_hd(0));
}
if (serial_hd(1)) {
- s390_create_sclpconsole("sclplmconsole", serial_hd(1));
+ s390_create_sclpconsole(sclp, "sclplmconsole", serial_hd(1));
}
/* init the TOD clock */
diff --git a/hw/s390x/sclp.c b/hw/s390x/sclp.c
index 893e71a41b..75d45fb184 100644
--- a/hw/s390x/sclp.c
+++ b/hw/s390x/sclp.c
@@ -379,13 +379,15 @@ void sclp_service_interrupt(uint32_t sccb)
/* qemu object creation and initialization functions */
-void s390_sclp_init(void)
+Object *s390_sclp_init(void)
{
Object *new = object_new(TYPE_SCLP);
object_property_add_child(qdev_get_machine(), TYPE_SCLP, new);
object_unref(new);
qdev_realize(DEVICE(new), NULL, &error_fatal);
+
+ return new;
}
static void sclp_realize(DeviceState *dev, Error **errp)
--
2.44.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] hw/s390x: Attach the sclpconsole to the /machine/sclp node
2024-04-30 8:04 [PATCH] hw/s390x: Attach the sclpconsole to the /machine/sclp node Thomas Huth
@ 2024-04-30 8:19 ` David Hildenbrand
2024-04-30 8:22 ` Thomas Huth
2024-04-30 11:58 ` Cédric Le Goater
1 sibling, 1 reply; 7+ messages in thread
From: David Hildenbrand @ 2024-04-30 8:19 UTC (permalink / raw)
To: Thomas Huth, qemu-s390x, Christian Borntraeger
Cc: qemu-devel, Halil Pasic, Eric Farman, Markus Armbruster,
Philippe Mathieu-Daudé
On 30.04.24 10:04, Thomas Huth wrote:
> The sclpconsole currently does not have a proper parent in the QOM
> tree, so it shows up under /machine/unattached - which is somewhat
> ugly. Let's attach it to /machine/sclp instead.
>
>
IIRC, this should not affect migration
Reviewed-by: David Hildenbrand <david@redhat.com>
--
Cheers,
David / dhildenb
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] hw/s390x: Attach the sclpconsole to the /machine/sclp node
2024-04-30 8:19 ` David Hildenbrand
@ 2024-04-30 8:22 ` Thomas Huth
2024-04-30 8:56 ` Philippe Mathieu-Daudé
0 siblings, 1 reply; 7+ messages in thread
From: Thomas Huth @ 2024-04-30 8:22 UTC (permalink / raw)
To: David Hildenbrand, qemu-s390x, Christian Borntraeger
Cc: qemu-devel, Halil Pasic, Eric Farman, Markus Armbruster,
Philippe Mathieu-Daudé
On 30/04/2024 10.19, David Hildenbrand wrote:
> On 30.04.24 10:04, Thomas Huth wrote:
>> The sclpconsole currently does not have a proper parent in the QOM
>> tree, so it shows up under /machine/unattached - which is somewhat
>> ugly. Let's attach it to /machine/sclp instead.
>
> IIRC, this should not affect migration
Yes, that's my understanding, too. I also did a quick check from one QEMU
without this patch to a QEMU that includes this patch, and migration just
succeeded fine.
> Reviewed-by: David Hildenbrand <david@redhat.com>
Thanks!
Thomas
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] hw/s390x: Attach the sclpconsole to the /machine/sclp node
2024-04-30 8:22 ` Thomas Huth
@ 2024-04-30 8:56 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 7+ messages in thread
From: Philippe Mathieu-Daudé @ 2024-04-30 8:56 UTC (permalink / raw)
To: Thomas Huth, David Hildenbrand, qemu-s390x, Christian Borntraeger
Cc: qemu-devel, Halil Pasic, Eric Farman, Markus Armbruster
On 30/4/24 10:22, Thomas Huth wrote:
> On 30/04/2024 10.19, David Hildenbrand wrote:
>> On 30.04.24 10:04, Thomas Huth wrote:
>>> The sclpconsole currently does not have a proper parent in the QOM
>>> tree, so it shows up under /machine/unattached - which is somewhat
>>> ugly. Let's attach it to /machine/sclp instead.
>>
>> IIRC, this should not affect migration
>
>
> Yes, that's my understanding, too. I also did a quick check from one
> QEMU without this patch to a QEMU that includes this patch, and
> migration just succeeded fine.
Indeed, QOM path isn't used in migration streams.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
>
>> Reviewed-by: David Hildenbrand <david@redhat.com>
>
> Thanks!
>
> Thomas
>
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] hw/s390x: Attach the sclpconsole to the /machine/sclp node
2024-04-30 8:04 [PATCH] hw/s390x: Attach the sclpconsole to the /machine/sclp node Thomas Huth
2024-04-30 8:19 ` David Hildenbrand
@ 2024-04-30 11:58 ` Cédric Le Goater
2024-04-30 14:24 ` Thomas Huth
1 sibling, 1 reply; 7+ messages in thread
From: Cédric Le Goater @ 2024-04-30 11:58 UTC (permalink / raw)
To: Thomas Huth, qemu-s390x, Christian Borntraeger
Cc: qemu-devel, Halil Pasic, Eric Farman, David Hildenbrand,
Markus Armbruster, Philippe Mathieu-Daudé
On 4/30/24 10:04, Thomas Huth wrote:
> The sclpconsole currently does not have a proper parent in the QOM
> tree, so it shows up under /machine/unattached - which is somewhat
> ugly. Let's attach it to /machine/sclp instead.
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
> include/hw/s390x/sclp.h | 2 +-
> hw/s390x/s390-virtio-ccw.c | 11 +++++++----
> hw/s390x/sclp.c | 4 +++-
> 3 files changed, 11 insertions(+), 6 deletions(-)
>
> diff --git a/include/hw/s390x/sclp.h b/include/hw/s390x/sclp.h
> index b405a387b6..abfd6d8868 100644
> --- a/include/hw/s390x/sclp.h
> +++ b/include/hw/s390x/sclp.h
> @@ -222,7 +222,7 @@ static inline int sccb_data_len(SCCB *sccb)
> }
>
>
> -void s390_sclp_init(void);
> +Object *s390_sclp_init(void);
> void sclp_service_interrupt(uint32_t sccb);
> void raise_irq_cpu_hotplug(void);
> int sclp_service_call(S390CPU *cpu, uint64_t sccb, uint32_t code);
> diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
> index 4dcc213820..e2f9206ded 100644
> --- a/hw/s390x/s390-virtio-ccw.c
> +++ b/hw/s390x/s390-virtio-ccw.c
> @@ -237,11 +237,13 @@ static void s390_create_virtio_net(BusState *bus, const char *name)
> }
> }
>
> -static void s390_create_sclpconsole(const char *type, Chardev *chardev)
> +static void s390_create_sclpconsole(Object *sclp, const char *type,
> + Chardev *chardev)
> {
> DeviceState *dev;
>
> dev = qdev_new(type);
> + object_property_add_child(sclp, type, OBJECT(dev));
> qdev_prop_set_chr(dev, "chardev", chardev);
> qdev_realize_and_unref(dev, sclp_get_event_facility_bus(), &error_fatal);
> }
> @@ -252,8 +254,9 @@ static void ccw_init(MachineState *machine)
> int ret;
> VirtualCssBus *css_bus;
> DeviceState *dev;
> + Object *sclp;
>
> - s390_sclp_init();
> + sclp = s390_sclp_init();
I would simply drop s390_sclp_init(), same for :
void s390_init_tod(void);
void s390_init_ap(void);
void s390_stattrib_init(void);
void s390_skeys_init(void);
void s390_flic_init(void);
These routines all do the same and are not very useful TBH, and I would
add pointers under the s390x MachineState possibly.
Thanks,
C.
> /* init memory + setup max page size. Required for the CPU model */
> s390_memory_init(machine->ram);
>
> @@ -302,10 +305,10 @@ static void ccw_init(MachineState *machine)
>
> /* init consoles */
> if (serial_hd(0)) {
> - s390_create_sclpconsole("sclpconsole", serial_hd(0));
> + s390_create_sclpconsole(sclp, "sclpconsole", serial_hd(0));
> }
> if (serial_hd(1)) {
> - s390_create_sclpconsole("sclplmconsole", serial_hd(1));
> + s390_create_sclpconsole(sclp, "sclplmconsole", serial_hd(1));
> }
>
> /* init the TOD clock */
> diff --git a/hw/s390x/sclp.c b/hw/s390x/sclp.c
> index 893e71a41b..75d45fb184 100644
> --- a/hw/s390x/sclp.c
> +++ b/hw/s390x/sclp.c
> @@ -379,13 +379,15 @@ void sclp_service_interrupt(uint32_t sccb)
>
> /* qemu object creation and initialization functions */
>
> -void s390_sclp_init(void)
> +Object *s390_sclp_init(void)
> {
> Object *new = object_new(TYPE_SCLP);
>
> object_property_add_child(qdev_get_machine(), TYPE_SCLP, new);
> object_unref(new);
> qdev_realize(DEVICE(new), NULL, &error_fatal);
> +
> + return new;
> }
>
> static void sclp_realize(DeviceState *dev, Error **errp)
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] hw/s390x: Attach the sclpconsole to the /machine/sclp node
2024-04-30 11:58 ` Cédric Le Goater
@ 2024-04-30 14:24 ` Thomas Huth
2024-04-30 19:06 ` Thomas Huth
0 siblings, 1 reply; 7+ messages in thread
From: Thomas Huth @ 2024-04-30 14:24 UTC (permalink / raw)
To: Cédric Le Goater, qemu-s390x, Christian Borntraeger
Cc: qemu-devel, Halil Pasic, Eric Farman, David Hildenbrand,
Markus Armbruster, Philippe Mathieu-Daudé
On 30/04/2024 13.58, Cédric Le Goater wrote:
> On 4/30/24 10:04, Thomas Huth wrote:
>> The sclpconsole currently does not have a proper parent in the QOM
>> tree, so it shows up under /machine/unattached - which is somewhat
>> ugly. Let's attach it to /machine/sclp instead.
>>
>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>> ---
>> include/hw/s390x/sclp.h | 2 +-
>> hw/s390x/s390-virtio-ccw.c | 11 +++++++----
>> hw/s390x/sclp.c | 4 +++-
>> 3 files changed, 11 insertions(+), 6 deletions(-)
>>
>> diff --git a/include/hw/s390x/sclp.h b/include/hw/s390x/sclp.h
>> index b405a387b6..abfd6d8868 100644
>> --- a/include/hw/s390x/sclp.h
>> +++ b/include/hw/s390x/sclp.h
>> @@ -222,7 +222,7 @@ static inline int sccb_data_len(SCCB *sccb)
>> }
>> -void s390_sclp_init(void);
>> +Object *s390_sclp_init(void);
>> void sclp_service_interrupt(uint32_t sccb);
>> void raise_irq_cpu_hotplug(void);
>> int sclp_service_call(S390CPU *cpu, uint64_t sccb, uint32_t code);
>> diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
>> index 4dcc213820..e2f9206ded 100644
>> --- a/hw/s390x/s390-virtio-ccw.c
>> +++ b/hw/s390x/s390-virtio-ccw.c
>> @@ -237,11 +237,13 @@ static void s390_create_virtio_net(BusState *bus,
>> const char *name)
>> }
>> }
>> -static void s390_create_sclpconsole(const char *type, Chardev *chardev)
>> +static void s390_create_sclpconsole(Object *sclp, const char *type,
>> + Chardev *chardev)
>> {
>> DeviceState *dev;
>> dev = qdev_new(type);
>> + object_property_add_child(sclp, type, OBJECT(dev));
>> qdev_prop_set_chr(dev, "chardev", chardev);
>> qdev_realize_and_unref(dev, sclp_get_event_facility_bus(),
>> &error_fatal);
>> }
>> @@ -252,8 +254,9 @@ static void ccw_init(MachineState *machine)
>> int ret;
>> VirtualCssBus *css_bus;
>> DeviceState *dev;
>> + Object *sclp;
>> - s390_sclp_init();
>> + sclp = s390_sclp_init();
>
> I would simply drop s390_sclp_init(), same for :
>
> void s390_init_tod(void);
> void s390_init_ap(void);
> void s390_stattrib_init(void);
> void s390_skeys_init(void);
> void s390_flic_init(void);
>
> These routines all do the same and are not very useful TBH, and I would
> add pointers under the s390x MachineState possibly.
Some of them seem to do a little bit more things, like checking whether the
feature is available or not, e.g. s390_init_ap() ... IMHO it makes sense to
keep at least those?
But for s390_sclp_init ... it could be inlined, indeed, especially if we
also switch the object_unref + qdev_realize in there into
qdev_realize_and_unref. Let me try to do that in a v2 ...
Thomas
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] hw/s390x: Attach the sclpconsole to the /machine/sclp node
2024-04-30 14:24 ` Thomas Huth
@ 2024-04-30 19:06 ` Thomas Huth
0 siblings, 0 replies; 7+ messages in thread
From: Thomas Huth @ 2024-04-30 19:06 UTC (permalink / raw)
To: Cédric Le Goater, qemu-s390x, Christian Borntraeger
Cc: qemu-devel, Halil Pasic, Eric Farman, David Hildenbrand,
Markus Armbruster, Philippe Mathieu-Daudé
On 30/04/2024 16.24, Thomas Huth wrote:
> On 30/04/2024 13.58, Cédric Le Goater wrote:
>> On 4/30/24 10:04, Thomas Huth wrote:
>>> The sclpconsole currently does not have a proper parent in the QOM
>>> tree, so it shows up under /machine/unattached - which is somewhat
>>> ugly. Let's attach it to /machine/sclp instead.
>>>
>>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>>> ---
>>> include/hw/s390x/sclp.h | 2 +-
>>> hw/s390x/s390-virtio-ccw.c | 11 +++++++----
>>> hw/s390x/sclp.c | 4 +++-
>>> 3 files changed, 11 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/include/hw/s390x/sclp.h b/include/hw/s390x/sclp.h
>>> index b405a387b6..abfd6d8868 100644
>>> --- a/include/hw/s390x/sclp.h
>>> +++ b/include/hw/s390x/sclp.h
>>> @@ -222,7 +222,7 @@ static inline int sccb_data_len(SCCB *sccb)
>>> }
>>> -void s390_sclp_init(void);
>>> +Object *s390_sclp_init(void);
>>> void sclp_service_interrupt(uint32_t sccb);
>>> void raise_irq_cpu_hotplug(void);
>>> int sclp_service_call(S390CPU *cpu, uint64_t sccb, uint32_t code);
>>> diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
>>> index 4dcc213820..e2f9206ded 100644
>>> --- a/hw/s390x/s390-virtio-ccw.c
>>> +++ b/hw/s390x/s390-virtio-ccw.c
>>> @@ -237,11 +237,13 @@ static void s390_create_virtio_net(BusState *bus,
>>> const char *name)
>>> }
>>> }
>>> -static void s390_create_sclpconsole(const char *type, Chardev *chardev)
>>> +static void s390_create_sclpconsole(Object *sclp, const char *type,
>>> + Chardev *chardev)
>>> {
>>> DeviceState *dev;
>>> dev = qdev_new(type);
>>> + object_property_add_child(sclp, type, OBJECT(dev));
>>> qdev_prop_set_chr(dev, "chardev", chardev);
>>> qdev_realize_and_unref(dev, sclp_get_event_facility_bus(),
>>> &error_fatal);
>>> }
>>> @@ -252,8 +254,9 @@ static void ccw_init(MachineState *machine)
>>> int ret;
>>> VirtualCssBus *css_bus;
>>> DeviceState *dev;
>>> + Object *sclp;
>>> - s390_sclp_init();
>>> + sclp = s390_sclp_init();
>>
>> I would simply drop s390_sclp_init(), same for :
>>
>> void s390_init_tod(void);
>> void s390_init_ap(void);
>> void s390_stattrib_init(void);
>> void s390_skeys_init(void);
>> void s390_flic_init(void);
>>
>> These routines all do the same and are not very useful TBH, and I would
>> add pointers under the s390x MachineState possibly.
>
> Some of them seem to do a little bit more things, like checking whether the
> feature is available or not, e.g. s390_init_ap() ... IMHO it makes sense to
> keep at least those?
>
> But for s390_sclp_init ... it could be inlined, indeed, especially if we
> also switch the object_unref + qdev_realize in there into
> qdev_realize_and_unref. Let me try to do that in a v2 ...
Actually, after looking at the code a little bit longer, it seems to me like
the sclpconsole should be attached to /machine/sclp/s390-sclp-event-facility
instead of just /machine/sclp, since the other devices of type
TYPE_SCLP_EVENT are also located there. That makes the patch even easier
since we already have the pointer from sclp_get_event_facility_bus() in that
function.
Thomas
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2024-04-30 19:07 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-04-30 8:04 [PATCH] hw/s390x: Attach the sclpconsole to the /machine/sclp node Thomas Huth
2024-04-30 8:19 ` David Hildenbrand
2024-04-30 8:22 ` Thomas Huth
2024-04-30 8:56 ` Philippe Mathieu-Daudé
2024-04-30 11:58 ` Cédric Le Goater
2024-04-30 14:24 ` Thomas Huth
2024-04-30 19:06 ` Thomas Huth
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).