From: Christian Borntraeger <borntraeger@de.ibm.com>
To: "Andreas Färber" <afaerber@suse.de>
Cc: Heinz Graalfs <graalfs@linux.vnet.ibm.com>,
Alexander Graf <agraf@suse.de>,
qemu-devel <qemu-devel@nongnu.org>,
Jens Freimann <jfrei@linux.vnet.ibm.com>,
Cornelia Huck <cornelia.huck@de.ibm.com>,
Einar Lueck <elelueck@linux.vnet.ibm.com>
Subject: Re: [Qemu-devel] [PATCH 1/3] s390: Move IPL code into a separate device
Date: Sun, 16 Dec 2012 22:15:56 +0100 [thread overview]
Message-ID: <50CE3A0C.3050800@de.ibm.com> (raw)
In-Reply-To: <50CDF630.3070500@suse.de>
On 16/12/12 17:26, Andreas Färber wrote:
> Am 14.12.2012 17:46, schrieb Jens Freimann:
>> From: Christian Borntraeger <borntraeger@de.ibm.com>
>>
>> Lets move the code to setup IPL for external kernel
>> or via the zipl rom into a separate file. This allows to
>>
>> - define a reboot handler, setting up the PSW appropriately
>
> Careful with the ordering then: Since patch 2/3 adds another reset
> handler in the CPU instance_init, the ipl device must be created after
> the CPU - I'm guessing this is the case here but will also need to be
> assured in the ccw machine.
>
>> - enhance the boot code to IPL disks that contain a bootmap that
>> was created with zipl under LPAR or z/VM (future patch)
>> - reuse that code for several machines (e.g. virtio-ccw and virtio-s390)
>> - allow different machines to provide different defaults
>>
>> Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
>> Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com>
>> ---
>> v1 -> v2:
>> * get rid of ipl.h
>> * move defines to ipl.c and make s390_ipl_cpu static
>>
>> ---
>> hw/s390-virtio.c | 98 ++++---------------------------
>> hw/s390x/Makefile.objs | 1 +
>> hw/s390x/ipl.c | 153 +++++++++++++++++++++++++++++++++++++++++++++++++
>> 3 files changed, 164 insertions(+), 88 deletions(-)
>> create mode 100644 hw/s390x/ipl.c
>>
>> diff --git a/hw/s390-virtio.c b/hw/s390-virtio.c
>> index ca1bb09..a350430 100644
>> --- a/hw/s390-virtio.c
>> +++ b/hw/s390-virtio.c
> [...]
>> @@ -185,6 +168,15 @@ static void s390_init(QEMUMachineInitArgs *args)
>> /* get a BUS */
>> s390_bus = s390_virtio_bus_init(&my_ram_size);
>> s390_sclp_init();
>> + dev = qdev_create(NULL, "s390-ipl");
>> + if (args->kernel_filename) {
>> + qdev_prop_set_string(dev, "kernel", args->kernel_filename);
>> + }
>> + if (args->initrd_filename) {
>> + qdev_prop_set_string(dev, "initrd", args->initrd_filename);
>> + }
>> + qdev_prop_set_string(dev, "cmdline", args->kernel_cmdline);
>
> Why NULL checks for 2 out of 3 string properties?
cmdline is always a valid string, (never NULL), but kernel and initrd can
be NULL, which kills qdev_prop_set_string.
>> + * Authors:
>> + * Christian Borntraeger <borntraeger@de.ibm.com>
>> + *
>> + * This work is licensed under the terms of the GNU GPL, version 2 or (at your
>> + * option) any later version. See the COPYING file in the top-level directory.
>> + *
>> + */
>> +
>> +#include <sysemu.h>
>
> "sysemu.h"?
bios_name.
I could use another property which is modified/set by the machine init.
>
>> +#include "cpu.h"
>> +#include "elf.h"
>> +#include "hw/loader.h"
>> +#include "hw/sysbus.h"
>> +
>> +#define KERN_IMAGE_START 0x010000UL
>> +#define KERN_PARM_AREA 0x010480UL
>> +#define INITRD_START 0x800000UL
>> +#define INITRD_PARM_START 0x010408UL
>> +#define INITRD_PARM_SIZE 0x010410UL
>> +#define PARMFILE_START 0x001000UL
>> +#define ZIPL_FILENAME "s390-zipl.rom"
>> +#define ZIPL_IMAGE_START 0x009000UL
>> +#define IPL_PSW_MASK 0x0000000180000000ULL
>> +
>> +typedef struct {
>
> Anonymous structs are discouraged (not sure where that makes a
> difference, maybe gdb?), i.e. typedef struct S390IPLState {
>
>> + SysBusDevice dev;
>
> Please adopt the following QOM convention:
>
> SysBusDevice parent_obj; // this field is then referenced nowhere
ok
>> +
>> +static void s390_ipl_cpu(uint64_t pswaddr)
>> +{
>> + CPUS390XState *env = qemu_get_cpu(0);
>> + env->psw.addr = pswaddr;
>> + env->psw.mask = IPL_PSW_MASK;
>> + s390_add_running_cpu(env);
>> +}
>> +
>> +static int s390_ipl_init(SysBusDevice *dev)
>> +{
>> + S390IPLState *ipl = DO_UPCAST(S390IPLState, dev, dev);
>
> Please use a QOM cast macro S390_IPL(dev) instead of DO_UPCAST().
>
> You'll find many examples in
> https://lists.gnu.org/archive/html/qemu-devel/2012-11/msg02746.html
OK.
[..]
>
>> +static TypeInfo s390_ipl_info = {
>
> static const
ok
>
>> + .class_init = s390_ipl_class_init,
>> + .parent = TYPE_SYS_BUS_DEVICE,
>> + .name = "s390-ipl",
>> + .instance_size = sizeof(S390IPLState),
>> +};
>> +
>> +static void s390_register_ipl(void)
>
> s390_ipl_register_types?
makes sense.
>
>> +{
>> + type_register_static(&s390_ipl_info);
>> +}
>> +
>> +type_init(s390_register_ipl)
>> +
>
> Trailing white line.
ok
next prev parent reply other threads:[~2012-12-16 21:16 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-12-14 16:46 [Qemu-devel] [PATCH 0/3] s390: ipl device, cpu reset handler and cpu model support Jens Freimann
2012-12-14 16:46 ` [Qemu-devel] [PATCH 1/3] s390: Move IPL code into a separate device Jens Freimann
2012-12-16 16:26 ` Andreas Färber
2012-12-16 21:15 ` Christian Borntraeger [this message]
2012-12-14 16:46 ` [Qemu-devel] [PATCH 2/3] s390: Add CPU reset handler Jens Freimann
2012-12-16 15:30 ` Andreas Färber
2012-12-17 8:49 ` Jens Freimann
2012-12-17 14:49 ` Alexander Graf
2012-12-17 15:41 ` Jens Freimann
2012-12-17 17:21 ` Andreas Färber
2012-12-17 17:27 ` Alexander Graf
2012-12-14 16:46 ` [Qemu-devel] [PATCH 3/3] S390: Enable -cpu help and QMP query-cpu-definitions Jens Freimann
2012-12-16 15:42 ` Andreas Färber
2012-12-17 14:47 ` Alexander Graf
2012-12-17 17:32 ` Andreas Färber
-- strict thread matches above, loose matches on Subject: below --
2012-12-18 17:50 [Qemu-devel] [PATCH 0/3] s390: ipl device, cpu reset handler and cpu model support Jens Freimann
2012-12-18 17:50 ` [Qemu-devel] [PATCH 1/3] s390: Move IPL code into a separate device Jens Freimann
2013-01-03 12:47 ` Alexander Graf
2012-12-12 13:08 [Qemu-devel] [PATCH 0/3] s390: ipl device, cpu reset handler and cpu model support Jens Freimann
2012-12-12 13:08 ` [Qemu-devel] [PATCH 1/3] s390: Move IPL code into a separate device Jens Freimann
2012-12-12 13:31 ` Alexander Graf
2012-12-12 19:56 ` Christian Borntraeger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50CE3A0C.3050800@de.ibm.com \
--to=borntraeger@de.ibm.com \
--cc=afaerber@suse.de \
--cc=agraf@suse.de \
--cc=cornelia.huck@de.ibm.com \
--cc=elelueck@linux.vnet.ibm.com \
--cc=graalfs@linux.vnet.ibm.com \
--cc=jfrei@linux.vnet.ibm.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.