[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 03/10] S390: Check Bootdevice Type
From: |
Dominik Dingel |
Subject: |
Re: [Qemu-devel] [PATCH 03/10] S390: Check Bootdevice Type |
Date: |
Fri, 26 Apr 2013 17:36:09 +0200 |
On Fri, 26 Apr 2013 17:22:08 +0200
Alexander Graf <address@hidden> wrote:
>
> On 26.04.2013, at 14:12, Dominik Dingel wrote:
>
> > Check for a kernel IPL entry and load kernel image if one was
> > specified.
> > If no kernel image was supplied and the first boot device
> > is not a virtio-ccw-blk device, print error message and exit.
> >
> > In case it is a virtio-ccw-blk device store the dev_no in reg[7]
>
> I thought we want a boot order, not a singular device to boot off of?
>
> Alex
The current changes allow us to boot what we want (device and boot program
selection).
Later on we can think of fallback handling.
I'm currently thinking about something like a hypercall to communicate to the
host that we can not boot from the supplied device.
Then the host could decide based on a policy if it tries the next device or
stops or something like that.
But that is a change we should discuss.
Dominik
>
> >
> > Signed-off-by: Christian Paro <address@hidden>
> > Signed-off-by: Dominik Dingel <address@hidden>
> >
> > diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c
> > index ace5ff5..9758529 100644
> > --- a/hw/s390x/ipl.c
> > +++ b/hw/s390x/ipl.c
> > @@ -16,6 +16,8 @@
> > #include "elf.h"
> > #include "hw/loader.h"
> > #include "hw/sysbus.h"
> > +#include "hw/s390x/virtio-ccw.h"
> > +#include "hw/s390x/css.h"
> >
> > #define KERN_IMAGE_START 0x010000UL
> > #define KERN_PARM_AREA 0x010480UL
> > @@ -56,14 +58,25 @@ typedef struct S390IPLState {
> > char *firmware;
> > } S390IPLState;
> >
> > +static void s390_ipl_kernel(uint64_t pswaddr)
> > +{
> > + S390CPU *cpu = S390_CPU(qemu_get_cpu(0));
> > + CPUS390XState *env = &cpu->env;
> > +
> > + env->psw.addr = pswaddr;
> > + env->psw.mask = IPL_PSW_MASK;
> > + s390_add_running_cpu(cpu);
> > +}
> >
> > -static void s390_ipl_cpu(uint64_t pswaddr)
> > +static void s390_ipl_from_disk(VirtIOBlkCcw *dev, uint64_t pswaddr)
> > {
> > S390CPU *cpu = S390_CPU(qemu_get_cpu(0));
> > CPUS390XState *env = &cpu->env;
> > + VirtioCcwDevice *ccw_dev = &(dev->parent_obj);
> >
> > env->psw.addr = pswaddr;
> > env->psw.mask = IPL_PSW_MASK;
> > + env->regs[7] = ccw_dev->sch->devno;
> > s390_add_running_cpu(cpu);
> > }
> >
> > @@ -152,7 +165,18 @@ static void s390_ipl_reset(DeviceState *dev)
> > {
> > S390IPLState *ipl = S390_IPL(dev);
> >
> > - s390_ipl_cpu(ipl->start_addr);
> > + if (ipl->kernel) {
> > + return s390_ipl_kernel(ipl->start_addr);
> > + }
> > +
> > + DeviceState *boot_device = get_boot_device(0);
> > + if (object_dynamic_cast(OBJECT(boot_device), TYPE_VIRTIO_BLK) != NULL)
> > {
> > + s390_ipl_from_disk(VIRTIO_BLK_CCW(boot_device->parent_obj.parent),
> > + ipl->start_addr);
> > + } else {
> > + fprintf(stderr, "qemu: s390x only supports boot from
> > virtio-ccw-blk\n");
> > + exit(1);
> > + }
> > }
> >
> > static void s390_ipl_class_init(ObjectClass *klass, void *data)
> > --
> > 1.7.9.5
> >
>
- Re: [Qemu-devel] [PATCH 03/10] S390: Check Bootdevice Type, (continued)
- Re: [Qemu-devel] [PATCH 03/10] S390: Check Bootdevice Type, Alexander Graf, 2013/04/26
- Re: [Qemu-devel] [PATCH 03/10] S390: Check Bootdevice Type, Christian Borntraeger, 2013/04/26
- Re: [Qemu-devel] [PATCH 03/10] S390: Check Bootdevice Type, Alexander Graf, 2013/04/26
- Re: [Qemu-devel] [PATCH 03/10] S390: Check Bootdevice Type, Dominik Dingel, 2013/04/26
- Re: [Qemu-devel] [PATCH 03/10] S390: Check Bootdevice Type, Alexander Graf, 2013/04/26
- Re: [Qemu-devel] [PATCH 03/10] S390: Check Bootdevice Type, Christian Borntraeger, 2013/04/26
- Re: [Qemu-devel] [PATCH 03/10] S390: Check Bootdevice Type, Alexander Graf, 2013/04/26
- Re: [Qemu-devel] [PATCH 03/10] S390: Check Bootdevice Type, Anthony Liguori, 2013/04/26
- Re: [Qemu-devel] [PATCH 03/10] S390: Check Bootdevice Type, Dominik Dingel, 2013/04/26
- Re: [Qemu-devel] [PATCH 03/10] S390: Check Bootdevice Type, Alexander Graf, 2013/04/26
- Re: [Qemu-devel] [PATCH 03/10] S390: Check Bootdevice Type,
Dominik Dingel <=
Re: [Qemu-devel] [PATCH 03/10] S390: Check Bootdevice Type, Alexander Graf, 2013/04/26
[Qemu-devel] [PATCH 09/10] S390: Pass per-device loadparm values for CCW blk and net devs., Dominik Dingel, 2013/04/26
[Qemu-devel] [PATCH 08/10] s390-ccw.img: Get queue config from host., Dominik Dingel, 2013/04/26
[Qemu-devel] [PATCH 04/10] S390: check if BIOS is available and create links, Dominik Dingel, 2013/04/26