[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [PATCH 03/24] S390: IPL: Use different firmware for different
From: |
Alexander Graf |
Subject: |
[Qemu-ppc] [PATCH 03/24] S390: IPL: Use different firmware for different machines |
Date: |
Fri, 26 Apr 2013 20:19:12 +0200 |
We have a virtio-s390 and a virtio-ccw machine in QEMU. Both use vastly
different ways to do I/O. Having the same firmware blob for both doesn't
really make any sense.
Instead, let's parametrize the firmware file name, so that we can have
different blobs for different machines.
Signed-off-by: Alexander Graf <address@hidden>
---
hw/s390x/ipl.c | 5 +++--
hw/s390x/s390-virtio-ccw.c | 2 +-
hw/s390x/s390-virtio.c | 7 +++++--
hw/s390x/s390-virtio.h | 3 ++-
4 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c
index d1f7acd..ace5ff5 100644
--- a/hw/s390x/ipl.c
+++ b/hw/s390x/ipl.c
@@ -23,7 +23,6 @@
#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 (PSW_MASK_32 | PSW_MASK_64)
@@ -54,6 +53,7 @@ typedef struct S390IPLState {
char *kernel;
char *initrd;
char *cmdline;
+ char *firmware;
} S390IPLState;
@@ -78,7 +78,7 @@ static int s390_ipl_init(SysBusDevice *dev)
/* Load zipl bootloader */
if (bios_name == NULL) {
- bios_name = ZIPL_FILENAME;
+ bios_name = ipl->firmware;
}
bios_filename = qemu_find_file(QEMU_FILE_TYPE_BIOS, bios_name);
@@ -144,6 +144,7 @@ static Property s390_ipl_properties[] = {
DEFINE_PROP_STRING("kernel", S390IPLState, kernel),
DEFINE_PROP_STRING("initrd", S390IPLState, initrd),
DEFINE_PROP_STRING("cmdline", S390IPLState, cmdline),
+ DEFINE_PROP_STRING("firmware", S390IPLState, firmware),
DEFINE_PROP_END_OF_LIST(),
};
diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
index a49e440..8ea193e 100644
--- a/hw/s390x/s390-virtio-ccw.c
+++ b/hw/s390x/s390-virtio-ccw.c
@@ -83,7 +83,7 @@ static void ccw_init(QEMUMachineInitArgs *args)
css_bus = virtual_css_bus_init();
s390_sclp_init();
s390_init_ipl_dev(args->kernel_filename, args->kernel_cmdline,
- args->initrd_filename);
+ args->initrd_filename, "s390-zipl.rom");
/* register hypercalls */
virtio_ccw_register_hcalls();
diff --git a/hw/s390x/s390-virtio.c b/hw/s390x/s390-virtio.c
index 46aec99..30d1118 100644
--- a/hw/s390x/s390-virtio.c
+++ b/hw/s390x/s390-virtio.c
@@ -49,6 +49,7 @@
#endif
#define MAX_BLK_DEVS 10
+#define ZIPL_FILENAME "s390-zipl.rom"
static VirtIOS390Bus *s390_bus;
static S390CPU **ipi_states;
@@ -158,7 +159,8 @@ unsigned s390_del_running_cpu(S390CPU *cpu)
void s390_init_ipl_dev(const char *kernel_filename,
const char *kernel_cmdline,
- const char *initrd_filename)
+ const char *initrd_filename,
+ const char *firmware)
{
DeviceState *dev;
@@ -170,6 +172,7 @@ void s390_init_ipl_dev(const char *kernel_filename,
qdev_prop_set_string(dev, "initrd", initrd_filename);
}
qdev_prop_set_string(dev, "cmdline", kernel_cmdline);
+ qdev_prop_set_string(dev, "firmware", firmware);
qdev_init_nofail(dev);
}
@@ -247,7 +250,7 @@ static void s390_init(QEMUMachineInitArgs *args)
s390_bus = s390_virtio_bus_init(&my_ram_size);
s390_sclp_init();
s390_init_ipl_dev(args->kernel_filename, args->kernel_cmdline,
- args->initrd_filename);
+ args->initrd_filename, ZIPL_FILENAME);
/* register hypercalls */
s390_virtio_register_hcalls();
diff --git a/hw/s390x/s390-virtio.h b/hw/s390x/s390-virtio.h
index a6c4c19..5c405e7 100644
--- a/hw/s390x/s390-virtio.h
+++ b/hw/s390x/s390-virtio.h
@@ -23,6 +23,7 @@ void s390_register_virtio_hypercall(uint64_t code,
s390_virtio_fn fn);
void s390_init_cpus(const char *cpu_model, uint8_t *storage_keys);
void s390_init_ipl_dev(const char *kernel_filename,
const char *kernel_cmdline,
- const char *initrd_filename);
+ const char *initrd_filename,
+ const char *firmware);
void s390_create_virtio_net(BusState *bus, const char *name);
#endif
--
1.6.0.2
- [Qemu-ppc] [PATCH 12/24] s390-ccw.img: build s390-ccw rom on s3900 system by default, (continued)
- [Qemu-ppc] [PATCH 12/24] s390-ccw.img: build s390-ccw rom on s3900 system by default, Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 14/24] s390-ccw.img: Fix compile warning in s390 ccw virtio code, Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 05/24] S390: ccw firmware: Add main program, Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 08/24] S390: ccw firmware: Add glue header, Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 09/24] S390: ccw firmware: Add bootmap interpreter, Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 18/24] s390-ccw.img: Get queue config from host., Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 23/24] Utilize selective runtime reg sync for hot code paths, Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 20/24] S390: CCW: Use new, working firmware by default, Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 06/24] S390: ccw firmware: Add sclp output, Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 15/24] s390-ccw.img: Detect devices with stsch., Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 03/24] S390: IPL: Use different firmware for different machines,
Alexander Graf <=
- [Qemu-ppc] [PATCH 17/24] s390-ccw.img: Rudimentary error checking., Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 24/24] virtio-rng-s390: add properties., Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 21/24] Common: Add quick access to first boot device, Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 16/24] s390-ccw.img: Enhance drain_irqs()., Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 22/24] Allow selective runtime register synchronization, Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 19/24] S390: ccw firmware: Add compiled blob, Alexander Graf, 2013/04/26
- [Qemu-ppc] [PATCH 07/24] S390: ccw firmware: Add virtio device drivers, Alexander Graf, 2013/04/26
- Re: [Qemu-ppc] [PULL 00/24] s390 patch queue 2013-04-26, Alexander Graf, 2013/04/26
- Re: [Qemu-ppc] [PULL 00/24] s390 patch queue 2013-04-26, Blue Swirl, 2013/04/26