[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 4/5] S390: BIOS boot from given device
From: |
Alexander Graf |
Subject: |
Re: [Qemu-devel] [PATCH v2 4/5] S390: BIOS boot from given device |
Date: |
Tue, 30 Apr 2013 12:23:21 +0200 |
On 29.04.2013, at 16:52, Dominik Dingel wrote:
> Use the passed device, if there is no device, use the first applicable device.
>
> Signed-off-by: Dominik Dingel <address@hidden>
>
> diff --git a/pc-bios/s390-ccw/main.c b/pc-bios/s390-ccw/main.c
> index fd40fa5..206979f 100644
> --- a/pc-bios/s390-ccw/main.c
> +++ b/pc-bios/s390-ccw/main.c
> @@ -12,6 +12,7 @@
>
> struct subchannel_id blk_schid;
> char stack[PAGE_SIZE * 8] __attribute__((__aligned__(PAGE_SIZE)));
> +uint64_t boot_value;
>
> void virtio_panic(const char *string)
> {
> @@ -20,15 +21,20 @@ void virtio_panic(const char *string)
> while (1) { }
> }
>
> -static void virtio_setup(void)
> +static void virtio_setup(uint64_t dev_info)
> {
> struct schib schib;
> int i;
> int r;
> bool found = false;
> -
> + uint16_t dev_no;
> blk_schid.one = 1;
>
> + if (dev_info != -1) {
> + dev_no = dev_info & 0xffff;
> + debug_print_int("device no. ", dev_no);
It'd be nice if you could make this a bit more obvious.
bool check_devno = false
if (dev_info != -1) {
check_devno = true;
...
}
> + }
> +
> for (i = 0; i < 0x10000; i++) {
> blk_schid.sch_no = i;
> r = stsch_err(blk_schid, &schib);
> @@ -36,9 +42,14 @@ static void virtio_setup(void)
> break;
> }
> if (schib.pmcw.dnv) {
> - if (virtio_is_blk(blk_schid)) {
> - found = true;
> - break;
> + if (dev_info != -1 && schib.pmcw.dev != dev_no) {
if (check_devno && ...)
> + continue;
> + }
> + else {
} else {
But really in this case there's no need for that either, since the branch will
have continue'd anyway. Just close the branch.
> + if (virtio_is_blk(blk_schid)) {
> + found = true;
> + break;
> + }
> }
> }
> }
> @@ -53,7 +64,9 @@ static void virtio_setup(void)
> int main(void)
> {
> sclp_setup();
> - virtio_setup();
> + debug_print_int("boot reg[7]\n", boot_value);
\n?
Alex
> + virtio_setup(boot_value);
> +
> if (zipl_load() < 0)
> sclp_print("Failed to load OS from hard disk\n");
> disabled_wait();
> diff --git a/pc-bios/s390-ccw/start.S b/pc-bios/s390-ccw/start.S
> index 09deee7..5d5df0d 100644
> --- a/pc-bios/s390-ccw/start.S
> +++ b/pc-bios/s390-ccw/start.S
> @@ -14,6 +14,8 @@
> _start:
>
> larl %r15, stack + 0x8000 /* Set up stack */
> +larl %r6, boot_value
> +stg %r7, 0(%r6) /* save the boot_value before any function calls */
> j main /* And call C */
>
> /*
> --
> 1.7.9.5
>
- [Qemu-devel] [PATCH v2 0/5] Enhance s390 BIOS to enable boot device selection, Dominik Dingel, 2013/04/29
- [Qemu-devel] [PATCH v2 3/5] S390: BIOS create link to src folder for .img file, Dominik Dingel, 2013/04/29
- [Qemu-devel] [PATCH v2 2/5] S390: BIOS check for file, Dominik Dingel, 2013/04/29
- [Qemu-devel] [PATCH v2 1/5] S390: Add virtio-blk boot, Dominik Dingel, 2013/04/29
- [Qemu-devel] [PATCH v2 4/5] S390: BIOS boot from given device, Dominik Dingel, 2013/04/29
- Re: [Qemu-devel] [PATCH v2 4/5] S390: BIOS boot from given device,
Alexander Graf <=
- [Qemu-devel] [PATCH v2 5/5] S390: Sync Blob with source changes, Dominik Dingel, 2013/04/29