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 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).