qemu-s390x
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [qemu-s390x] [PATCH v1] hw/s390x: Allow to configure the consoles wi


From: Thomas Huth
Subject: Re: [qemu-s390x] [PATCH v1] hw/s390x: Allow to configure the consoles with the "-serial" parameter
Date: Wed, 25 Apr 2018 12:17:55 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0

On 25.04.2018 11:50, David Hildenbrand wrote:
> On 25.04.2018 07:21, Thomas Huth wrote:
>> The consoles ("sclpconsole" and "sclplmconsole") can only be configured
>> with "-device" and "-chardev" so far. Other machines use the convenience
>> option "-serial" to configure the default consoles, even for virtual
>> consoles like spapr-vty on the pseries machine. So let's support this
>> option on s390x, too. This way we can easily enable the serial console
>> here again with "-nodefaults", for example:
>>
>> qemu-system-s390x -no-shutdown -nographic -nodefaults -serial mon:stdio
>>
>> ... which is way shorter than typing:
>>
>> qemu-system-s390x -no-shutdown -nographic -nodefaults \
>>   -chardev stdio,id=c1,mux=on -device sclpconsole,chardev=c1 \
>>   -mon chardev=c1
>>
>> The -serial parameter can also be used if you only want to see the QEMU
>> monitor on stdio without using -nodefaults, but not the console output.
>> That's something that is pretty impossible with the current code today:
>>
>> qemu-system-s390x -no-shutdown -nographic -serial none
>>
>> While we're at it, this patch also maps the second -serial option to the
>> "sclplmconsole", so that there is now an easy way to configure this second
>> console on s390x, too, for example:
>>
>> qemu-system-s390x -no-shutdown -nographic -serial null -serial mon:stdio
>>
>> Additionally, the new code is also smaller than the old one and we have
>> less s390x-specific code in vl.c :-)
>>
>> I've also checked that migration still works as expected by migrating
>> a guest with console output back and forth between a qemu-system-s390x
>> that has this patch and an instance without this patch.
>>
>> Signed-off-by: Thomas Huth <address@hidden>
>> ---
>>  RFC -> v1:
>>  - Improved the patch description (provided examples)
>>  - Moved the "init consoles" hunk in ccw_init to a later point in time
>>    so that the output of "info qom-tree" shows the same order of devices
>>    in the "/machine/unattached" tree.
>>
>>  hw/s390x/event-facility.c         | 14 +++++++++++
>>  hw/s390x/s390-virtio-ccw.c        | 19 +++++++++++++--
>>  include/hw/boards.h               |  1 -
>>  include/hw/s390x/event-facility.h |  2 ++
>>  vl.c                              | 50 
>> ---------------------------------------
>>  5 files changed, 33 insertions(+), 53 deletions(-)
>>
>> diff --git a/hw/s390x/event-facility.c b/hw/s390x/event-facility.c
>> index 9c24bc6..e6940a2 100644
>> --- a/hw/s390x/event-facility.c
>> +++ b/hw/s390x/event-facility.c
>> @@ -511,3 +511,17 @@ static void register_types(void)
>>  }
>>  
>>  type_init(register_types)
>> +
>> +BusState *sclp_get_event_facility_bus(void)
>> +{
>> +    Object *busobj;
>> +    SCLPEventsBus *sbus;
>> +
>> +    busobj = object_resolve_path_type("", TYPE_SCLP_EVENTS_BUS, NULL);
>> +    sbus = OBJECT_CHECK(SCLPEventsBus, busobj, TYPE_SCLP_EVENTS_BUS);
>> +    if (!sbus) {
>> +        return NULL;
>> +    }
>> +
>> +    return &sbus->qbus;
>> +}
>> diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
>> index 435f7c9..62d909e 100644
>> --- a/hw/s390x/s390-virtio-ccw.c
>> +++ b/hw/s390x/s390-virtio-ccw.c
>> @@ -288,6 +288,15 @@ static void s390_create_virtio_net(BusState *bus, const 
>> char *name)
>>      }
>>  }
>>  
>> +static void s390_create_sclpconsole(const char *type, Chardev *chardev)
>> +{
>> +    DeviceState *dev;
>> +
>> +    dev = qdev_create(sclp_get_event_facility_bus(), type);
>> +    qdev_prop_set_chr(dev, "chardev", chardev);
>> +    qdev_init_nofail(dev);
>> +}
>> +
>>  static void ccw_init(MachineState *machine)
>>  {
>>      int ret;
>> @@ -346,6 +355,14 @@ static void ccw_init(MachineState *machine)
>>      /* Create VirtIO network adapters */
>>      s390_create_virtio_net(BUS(css_bus), "virtio-net-ccw");
>>  
>> +    /* init consoles */
>> +    if (serial_hds[0]) {
>> +        s390_create_sclpconsole("sclpconsole", serial_hds[0]);
>> +    }
>> +    if (serial_hds[1]) {
>> +        s390_create_sclpconsole("sclplmconsole", serial_hds[1]);
>> +    }
> 
> What happens if more -serial are defined? An error? Silently ignored?

Silently ignored, since this is also what almost all other machines are
doing (look for serial_hds in hw/ and you'll see what I mean).

> (e.g. do we have to redefine MAX_SERIAL_PORTS on s390x or add checking
> code here?)

As all the other machines are also not redefining MAX_SERIAL_PORTS, I
think we should also not do this on s390x now, should we?

 Thomas



reply via email to

[Prev in Thread] Current Thread [Next in Thread]