From e4f869621203955761cf274c87d5595e9facd319 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Fri, 13 Apr 2018 16:22:13 +0200 Subject: [PATCH 01/10] pc-bios/s390-ccw: size_t should be unsigned "size_t" should be an unsigned type according to the C standard. Thus we should also use this convention in the s390-ccw firmware to avoid confusion. I checked the sources, and apart from one spot in libc.c, the code should all be fine with this change. Buglink: https://bugs.launchpad.net/qemu/+bug/1753437 Reviewed-by: Christian Borntraeger Reviewed-by: Halil Pasic Reviewed-by: Collin Walling Signed-off-by: Thomas Huth --- pc-bios/s390-ccw/libc.c | 2 +- pc-bios/s390-ccw/libc.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pc-bios/s390-ccw/libc.c b/pc-bios/s390-ccw/libc.c index 38ea77d7aa..a786566c4c 100644 --- a/pc-bios/s390-ccw/libc.c +++ b/pc-bios/s390-ccw/libc.c @@ -63,7 +63,7 @@ uint64_t atoui(const char *str) */ char *uitoa(uint64_t num, char *str, size_t len) { - size_t num_idx = 1; /* account for NUL */ + long num_idx = 1; /* account for NUL */ uint64_t tmp = num; IPL_assert(str != NULL, "uitoa: no space allocated to store string"); diff --git a/pc-bios/s390-ccw/libc.h b/pc-bios/s390-ccw/libc.h index 63ece70c6b..818517ff5d 100644 --- a/pc-bios/s390-ccw/libc.h +++ b/pc-bios/s390-ccw/libc.h @@ -12,7 +12,7 @@ #ifndef S390_CCW_LIBC_H #define S390_CCW_LIBC_H -typedef long size_t; +typedef unsigned long size_t; typedef int bool; typedef unsigned char uint8_t; typedef unsigned short uint16_t; From 6df2a829dfacfbf10a78199ad4b023a7ea65d9cd Mon Sep 17 00:00:00 2001 From: Collin Walling Date: Mon, 16 Apr 2018 12:56:07 -0400 Subject: [PATCH 02/10] pc-bios/s390-ccw: rename MAX_TABLE_ENTRIES to MAX_BOOT_ENTRIES The MAX_TABLE_ENTRIES constant has a name that is too generic. As we want to declare a limit for boot menu entries, let's rename it to a more fitting MAX_BOOT_ENTRIES and set its value to 31 (30 boot entries and 1 default entry). Also we move it from bootmap.h to s390-ccw.h to make it available for menu.c in a later patch. Signed-off-by: Collin Walling Reviewed-by: Thomas Huth Reviewed-by: Janosch Frank Signed-off-by: Thomas Huth --- pc-bios/s390-ccw/bootmap.c | 6 +++--- pc-bios/s390-ccw/bootmap.h | 2 -- pc-bios/s390-ccw/s390-ccw.h | 2 ++ 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pc-bios/s390-ccw/bootmap.c b/pc-bios/s390-ccw/bootmap.c index 9287b7a70f..b767fa2afc 100644 --- a/pc-bios/s390-ccw/bootmap.c +++ b/pc-bios/s390-ccw/bootmap.c @@ -297,7 +297,7 @@ static void run_eckd_boot_script(block_number_t bmt_block_nr, } debug_print_int("loadparm", loadparm); - IPL_assert(loadparm <= MAX_TABLE_ENTRIES, "loadparm value greater than" + IPL_assert(loadparm < MAX_BOOT_ENTRIES, "loadparm value greater than" " maximum number of boot entries allowed"); memset(sec, FREE_SPACE_FILLER, sizeof(sec)); @@ -585,7 +585,7 @@ static void ipl_scsi(void) read_block(mbr->pt.blockno, sec, "Error reading Program Table"); IPL_assert(magic_match(sec, ZIPL_MAGIC), "No zIPL magic in PT"); - while (program_table_entries <= MAX_TABLE_ENTRIES) { + while (program_table_entries < MAX_BOOT_ENTRIES) { if (!prog_table->entry[program_table_entries].scsi.blockno) { break; } @@ -600,7 +600,7 @@ static void ipl_scsi(void) } debug_print_int("loadparm", loadparm); - IPL_assert(loadparm <= MAX_TABLE_ENTRIES, "loadparm value greater than" + IPL_assert(loadparm < MAX_BOOT_ENTRIES, "loadparm value greater than" " maximum number of boot entries allowed"); zipl_run(&prog_table->entry[loadparm].scsi); /* no return */ diff --git a/pc-bios/s390-ccw/bootmap.h b/pc-bios/s390-ccw/bootmap.h index 07eb600b00..732c1112ce 100644 --- a/pc-bios/s390-ccw/bootmap.h +++ b/pc-bios/s390-ccw/bootmap.h @@ -57,8 +57,6 @@ typedef union BootMapPointer { ExtEckdBlockPtr xeckd; } __attribute__ ((packed)) BootMapPointer; -#define MAX_TABLE_ENTRIES 30 - /* aka Program Table */ typedef struct BootMapTable { uint8_t magic[4]; diff --git a/pc-bios/s390-ccw/s390-ccw.h b/pc-bios/s390-ccw/s390-ccw.h index fd18da22c6..2c9e6017b7 100644 --- a/pc-bios/s390-ccw/s390-ccw.h +++ b/pc-bios/s390-ccw/s390-ccw.h @@ -94,6 +94,8 @@ bool menu_is_enabled_zipl(void); int menu_get_enum_boot_index(int entries); bool menu_is_enabled_enum(void); +#define MAX_BOOT_ENTRIES 31 + static inline void fill_hex(char *out, unsigned char val) { const char hex[] = "0123456789abcdef"; From 074afe60d4c8167dcfaee7aca1065c6360449eaa Mon Sep 17 00:00:00 2001 From: Collin Walling Date: Mon, 16 Apr 2018 12:56:08 -0400 Subject: [PATCH 03/10] pc-bios/s390-ccw: fix loadparm initialization and int conversion Rename the loadparm char array in main.c to loadparm_str and increased the size by one byte to account for a null termination when converting the loadparm string to an int via atoui. We also allow the boot menu to be enabled when loadparm is set to an empty string or a series of spaces. Signed-off-by: Collin Walling Reported-by: Vasily Gorbik Reviewed-by: Thomas Huth Reviewed-by: Janosch Frank Signed-off-by: Thomas Huth --- hw/s390x/ipl.c | 4 ++++ pc-bios/s390-ccw/main.c | 14 +++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c index fb554ab156..150f6c0582 100644 --- a/hw/s390x/ipl.c +++ b/hw/s390x/ipl.c @@ -373,6 +373,10 @@ int s390_ipl_set_loadparm(uint8_t *loadparm) loadparm[i] = ascii2ebcdic[(uint8_t) lp[i]]; } + if (i < 8) { + memset(loadparm + i, 0x40, 8 - i); /* fill with EBCDIC spaces */ + } + g_free(lp); return 0; } diff --git a/pc-bios/s390-ccw/main.c b/pc-bios/s390-ccw/main.c index 9d9f8cf4d3..26f9adf84a 100644 --- a/pc-bios/s390-ccw/main.c +++ b/pc-bios/s390-ccw/main.c @@ -15,11 +15,11 @@ char stack[PAGE_SIZE * 8] __attribute__((__aligned__(PAGE_SIZE))); static SubChannelId blk_schid = { .one = 1 }; IplParameterBlock iplb __attribute__((__aligned__(PAGE_SIZE))); -static char loadparm[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; +static char loadparm_str[9] = { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; QemuIplParameters qipl; #define LOADPARM_PROMPT "PROMPT " -#define LOADPARM_EMPTY "........" +#define LOADPARM_EMPTY " " #define BOOT_MENU_FLAG_MASK (QIPL_FLAG_BM_OPTS_CMD | QIPL_FLAG_BM_OPTS_ZIPL) /* @@ -45,7 +45,7 @@ void panic(const char *string) unsigned int get_loadparm_index(void) { - return atoui(loadparm); + return atoui(loadparm_str); } static bool find_dev(Schib *schib, int dev_no) @@ -80,13 +80,13 @@ static bool find_dev(Schib *schib, int dev_no) static void menu_setup(void) { - if (memcmp(loadparm, LOADPARM_PROMPT, 8) == 0) { + if (memcmp(loadparm_str, LOADPARM_PROMPT, 8) == 0) { menu_set_parms(QIPL_FLAG_BM_OPTS_CMD, 0); return; } /* If loadparm was set to any other value, then do not enable menu */ - if (memcmp(loadparm, LOADPARM_EMPTY, 8) != 0) { + if (memcmp(loadparm_str, LOADPARM_EMPTY, 8) != 0) { return; } @@ -116,8 +116,8 @@ static void virtio_setup(void) */ enable_mss_facility(); - sclp_get_loadparm_ascii(loadparm); - memcpy(ldp + 10, loadparm, 8); + sclp_get_loadparm_ascii(loadparm_str); + memcpy(ldp + 10, loadparm_str, 8); sclp_print(ldp); memcpy(&qipl, early_qipl, sizeof(QemuIplParameters)); From 7385e947fc65a44dd05abb86c874beb915c1989c Mon Sep 17 00:00:00 2001 From: Collin Walling Date: Mon, 16 Apr 2018 12:56:09 -0400 Subject: [PATCH 04/10] pc-bios/s390-ccw: fix non-sequential boot entries (eckd) zIPL boot menu entries can be non-sequential. Let's account for this issue for the s390 zIPL boot menu. Since this boot menu is actually an imitation and is not completely capable of everything the real zIPL menu can do, let's also print a different banner to the user. Signed-off-by: Collin Walling Reported-by: Vasily Gorbik Reviewed-by: Thomas Huth Reviewed-by: Janosch Frank Signed-off-by: Thomas Huth --- pc-bios/s390-ccw/menu.c | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/pc-bios/s390-ccw/menu.c b/pc-bios/s390-ccw/menu.c index 96eec81e84..aaf5d61ae6 100644 --- a/pc-bios/s390-ccw/menu.c +++ b/pc-bios/s390-ccw/menu.c @@ -158,7 +158,7 @@ static void boot_menu_prompt(bool retry) } } -static int get_boot_index(int entries) +static int get_boot_index(bool *valid_entries) { int boot_index; bool retry = false; @@ -168,7 +168,8 @@ static int get_boot_index(int entries) boot_menu_prompt(retry); boot_index = get_index(); retry = true; - } while (boot_index < 0 || boot_index >= entries); + } while (boot_index < 0 || boot_index >= MAX_BOOT_ENTRIES || + !valid_entries[boot_index]); sclp_print("\nBooting entry #"); sclp_print(uitoa(boot_index, tmp, sizeof(tmp))); @@ -176,7 +177,8 @@ static int get_boot_index(int entries) return boot_index; } -static void zipl_println(const char *data, size_t len) +/* Returns the entry number that was printed */ +static int zipl_print_entry(const char *data, size_t len) { char buf[len + 2]; @@ -185,12 +187,15 @@ static void zipl_println(const char *data, size_t len) buf[len + 1] = '\0'; sclp_print(buf); + + return buf[0] == ' ' ? atoui(buf + 1) : atoui(buf); } int menu_get_zipl_boot_index(const char *menu_data) { size_t len; - int entries; + int entry; + bool valid_entries[MAX_BOOT_ENTRIES] = {false}; uint16_t zipl_flag = *(uint16_t *)(menu_data - ZIPL_FLAG_OFFSET); uint16_t zipl_timeout = *(uint16_t *)(menu_data - ZIPL_TIMEOUT_OFFSET); @@ -202,19 +207,25 @@ int menu_get_zipl_boot_index(const char *menu_data) timeout = zipl_timeout * 1000; } - /* Print and count all menu items, including the banner */ - for (entries = 0; *menu_data; entries++) { + /* Print banner */ + sclp_print("s390-ccw zIPL Boot Menu\n\n"); + menu_data += strlen(menu_data) + 1; + + /* Print entries */ + while (*menu_data) { len = strlen(menu_data); - zipl_println(menu_data, len); + entry = zipl_print_entry(menu_data, len); menu_data += len + 1; - if (entries < 2) { + valid_entries[entry] = true; + + if (entry == 0) { sclp_print("\n"); } } sclp_print("\n"); - return get_boot_index(entries - 1); /* subtract 1 to exclude banner */ + return get_boot_index(valid_entries); } From 622b39178057289a1c8c1b5148f513e658e90ea1 Mon Sep 17 00:00:00 2001 From: Collin Walling Date: Mon, 16 Apr 2018 12:56:10 -0400 Subject: [PATCH 05/10] pc-bios/s390-ccw: fix non-sequential boot entries (enum) zIPL boot menu entries can be non-sequential. Let's account for this issue for the s390 enumerated boot menu. Since we can no longer print a range of available entries to the user, we have to present a list of each available entry. An example of this menu: s390-ccw Enumerated Boot Menu. [0] default [1] [2] [7] [8] [9] [11] [12] Please choose: Signed-off-by: Collin Walling Reported-by: Vasily Gorbik Reviewed-by: Thomas Huth Reviewed-by: Janosch Frank Signed-off-by: Thomas Huth --- pc-bios/s390-ccw/bootmap.c | 12 +++++++----- pc-bios/s390-ccw/menu.c | 29 ++++++++++++++++++++--------- pc-bios/s390-ccw/s390-ccw.h | 2 +- 3 files changed, 28 insertions(+), 15 deletions(-) diff --git a/pc-bios/s390-ccw/bootmap.c b/pc-bios/s390-ccw/bootmap.c index b767fa2afc..e41e715624 100644 --- a/pc-bios/s390-ccw/bootmap.c +++ b/pc-bios/s390-ccw/bootmap.c @@ -565,6 +565,8 @@ static void ipl_scsi(void) int program_table_entries = 0; BootMapTable *prog_table = (void *)sec; unsigned int loadparm = get_loadparm_index(); + bool valid_entries[MAX_BOOT_ENTRIES] = {false}; + size_t i; /* Grab the MBR */ memset(sec, FREE_SPACE_FILLER, sizeof(sec)); @@ -585,18 +587,18 @@ static void ipl_scsi(void) read_block(mbr->pt.blockno, sec, "Error reading Program Table"); IPL_assert(magic_match(sec, ZIPL_MAGIC), "No zIPL magic in PT"); - while (program_table_entries < MAX_BOOT_ENTRIES) { - if (!prog_table->entry[program_table_entries].scsi.blockno) { - break; + for (i = 0; i < MAX_BOOT_ENTRIES; i++) { + if (prog_table->entry[i].scsi.blockno) { + valid_entries[i] = true; + program_table_entries++; } - program_table_entries++; } debug_print_int("program table entries", program_table_entries); IPL_assert(program_table_entries != 0, "Empty Program Table"); if (menu_is_enabled_enum()) { - loadparm = menu_get_enum_boot_index(program_table_entries); + loadparm = menu_get_enum_boot_index(valid_entries); } debug_print_int("loadparm", loadparm); diff --git a/pc-bios/s390-ccw/menu.c b/pc-bios/s390-ccw/menu.c index aaf5d61ae6..82a4ae6315 100644 --- a/pc-bios/s390-ccw/menu.c +++ b/pc-bios/s390-ccw/menu.c @@ -228,19 +228,30 @@ int menu_get_zipl_boot_index(const char *menu_data) return get_boot_index(valid_entries); } - -int menu_get_enum_boot_index(int entries) +int menu_get_enum_boot_index(bool *valid_entries) { - char tmp[4]; + char tmp[3]; + int i; - sclp_print("s390x Enumerated Boot Menu.\n\n"); + sclp_print("s390-ccw Enumerated Boot Menu.\n\n"); - sclp_print(uitoa(entries, tmp, sizeof(tmp))); - sclp_print(" entries detected. Select from boot index 0 to "); - sclp_print(uitoa(entries - 1, tmp, sizeof(tmp))); - sclp_print(".\n\n"); + for (i = 0; i < MAX_BOOT_ENTRIES; i++) { + if (valid_entries[i]) { + if (i < 10) { + sclp_print(" "); + } + sclp_print("["); + sclp_print(uitoa(i, tmp, sizeof(tmp))); + sclp_print("]"); + if (i == 0) { + sclp_print(" default\n"); + } + sclp_print("\n"); + } + } - return get_boot_index(entries); + sclp_print("\n"); + return get_boot_index(valid_entries); } void menu_set_parms(uint8_t boot_menu_flag, uint32_t boot_menu_timeout) diff --git a/pc-bios/s390-ccw/s390-ccw.h b/pc-bios/s390-ccw/s390-ccw.h index 2c9e6017b7..a1bdb4cc2a 100644 --- a/pc-bios/s390-ccw/s390-ccw.h +++ b/pc-bios/s390-ccw/s390-ccw.h @@ -91,7 +91,7 @@ void zipl_load(void); void menu_set_parms(uint8_t boot_menu_flag, uint32_t boot_menu_timeout); int menu_get_zipl_boot_index(const char *menu_data); bool menu_is_enabled_zipl(void); -int menu_get_enum_boot_index(int entries); +int menu_get_enum_boot_index(bool *valid_entries); bool menu_is_enabled_enum(void); #define MAX_BOOT_ENTRIES 31 From 0c18822953011ec0a3038c8a5eca1803b72a213e Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Tue, 17 Apr 2018 07:36:10 +0200 Subject: [PATCH 06/10] pc-bios/s390-ccw/net: Split up net_load() into init, load and release parts When we want to support pxelinux-style network booting later, we've got to do several TFTP transfers - and we do not want to apply for a new IP address via DHCP each time. So split up net_load into three parts: 1. net_init(), which initializes virtio-net, gets an IP address via DHCP and prints out the related information. 2. The tftp_load call is now moved directly into the main() function 3. A new net_release() function which should tear down the network stack before we are done in the firmware. This will make it easier to extend the code in the next patches. Acked-by: Christian Borntraeger Signed-off-by: Thomas Huth --- pc-bios/s390-ccw/netmain.c | 63 ++++++++++++++++++++++---------------- 1 file changed, 37 insertions(+), 26 deletions(-) diff --git a/pc-bios/s390-ccw/netmain.c b/pc-bios/s390-ccw/netmain.c index d86d46b03f..8fa9e6c945 100644 --- a/pc-bios/s390-ccw/netmain.c +++ b/pc-bios/s390-ccw/netmain.c @@ -128,13 +128,13 @@ static void seed_rng(uint8_t mac[]) srand(seed); } -static int tftp_load(filename_ip_t *fnip, void *buffer, int len, - unsigned int retries, int ip_vers) +static int tftp_load(filename_ip_t *fnip, void *buffer, int len) { tftp_err_t tftp_err; int rc; - rc = tftp(fnip, buffer, len, retries, &tftp_err, 1, 1428, ip_vers); + rc = tftp(fnip, buffer, len, DEFAULT_TFTP_RETRIES, &tftp_err, 1, 1428, + ip_version); if (rc > 0) { printf(" TFTP: Received %s (%d KBytes)\n", fnip->filename, @@ -199,20 +199,19 @@ static int tftp_load(filename_ip_t *fnip, void *buffer, int len, return rc; } -static int net_load(char *buffer, int len) +static int net_init(filename_ip_t *fn_ip) { - filename_ip_t fn_ip; uint8_t mac[6]; int rc; - memset(&fn_ip, 0, sizeof(filename_ip_t)); + memset(fn_ip, 0, sizeof(filename_ip_t)); rc = virtio_net_init(mac); if (rc < 0) { puts("Could not initialize network device"); return -101; } - fn_ip.fd = rc; + fn_ip->fd = rc; printf(" Using MAC address: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); @@ -220,10 +219,10 @@ static int net_load(char *buffer, int len) set_mac_address(mac); /* init ethernet layer */ seed_rng(mac); - rc = dhcp(&fn_ip, DEFAULT_BOOT_RETRIES); + rc = dhcp(fn_ip, DEFAULT_BOOT_RETRIES); if (rc >= 0) { if (ip_version == 4) { - set_ipv4_address(fn_ip.own_ip); + set_ipv4_address(fn_ip->own_ip); } } else { puts("Could not get IP address"); @@ -232,18 +231,18 @@ static int net_load(char *buffer, int len) if (ip_version == 4) { printf(" Using IPv4 address: %d.%d.%d.%d\n", - (fn_ip.own_ip >> 24) & 0xFF, (fn_ip.own_ip >> 16) & 0xFF, - (fn_ip.own_ip >> 8) & 0xFF, fn_ip.own_ip & 0xFF); + (fn_ip->own_ip >> 24) & 0xFF, (fn_ip->own_ip >> 16) & 0xFF, + (fn_ip->own_ip >> 8) & 0xFF, fn_ip->own_ip & 0xFF); } else if (ip_version == 6) { char ip6_str[40]; - ipv6_to_str(fn_ip.own_ip6.addr, ip6_str); + ipv6_to_str(fn_ip->own_ip6.addr, ip6_str); printf(" Using IPv6 address: %s\n", ip6_str); } if (rc == -2) { printf("ARP request to TFTP server (%d.%d.%d.%d) failed\n", - (fn_ip.server_ip >> 24) & 0xFF, (fn_ip.server_ip >> 16) & 0xFF, - (fn_ip.server_ip >> 8) & 0xFF, fn_ip.server_ip & 0xFF); + (fn_ip->server_ip >> 24) & 0xFF, (fn_ip->server_ip >> 16) & 0xFF, + (fn_ip->server_ip >> 8) & 0xFF, fn_ip->server_ip & 0xFF); return -102; } if (rc == -4 || rc == -3) { @@ -251,28 +250,31 @@ static int net_load(char *buffer, int len) return -107; } + printf(" Using TFTP server: "); if (ip_version == 4) { - printf(" Requesting file \"%s\" via TFTP from %d.%d.%d.%d\n", - fn_ip.filename, - (fn_ip.server_ip >> 24) & 0xFF, (fn_ip.server_ip >> 16) & 0xFF, - (fn_ip.server_ip >> 8) & 0xFF, fn_ip.server_ip & 0xFF); + printf("%d.%d.%d.%d\n", + (fn_ip->server_ip >> 24) & 0xFF, (fn_ip->server_ip >> 16) & 0xFF, + (fn_ip->server_ip >> 8) & 0xFF, fn_ip->server_ip & 0xFF); } else if (ip_version == 6) { char ip6_str[40]; - printf(" Requesting file \"%s\" via TFTP from ", fn_ip.filename); - ipv6_to_str(fn_ip.server_ip6.addr, ip6_str); + ipv6_to_str(fn_ip->server_ip6.addr, ip6_str); printf("%s\n", ip6_str); } - /* Do the TFTP load and print error message if necessary */ - rc = tftp_load(&fn_ip, buffer, len, DEFAULT_TFTP_RETRIES, ip_version); - - if (ip_version == 4) { - dhcp_send_release(fn_ip.fd); + if (strlen((char *)fn_ip->filename) > 0) { + printf(" Bootfile name: '%s'\n", fn_ip->filename); } return rc; } +static void net_release(filename_ip_t *fn_ip) +{ + if (ip_version == 4) { + dhcp_send_release(fn_ip->fd); + } +} + void panic(const char *string) { sclp_print(string); @@ -344,6 +346,7 @@ static void virtio_setup(void) void main(void) { + filename_ip_t fn_ip; int rc; sclp_setup(); @@ -351,7 +354,15 @@ void main(void) virtio_setup(); - rc = net_load(NULL, (long)_start); + rc = net_init(&fn_ip); + if (rc) { + panic("Network initialization failed. Halting.\n"); + } + + rc = tftp_load(&fn_ip, NULL, (long)_start); + + net_release(&fn_ip); + if (rc > 0) { sclp_print("Network loading done, starting kernel...\n"); asm volatile (" lpsw 0(%0) " : : "r"(0) : "memory"); From 9a848adf45d6732e62551decb3c0255173090767 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Fri, 20 Apr 2018 11:30:42 +0200 Subject: [PATCH 07/10] pc-bios/s390-ccw/net: Use diag308 to reset machine before jumping to the OS The netboot firmware so far simply jumped directly into the OS kernel after the download has been completed. This, however, bears the risk that the virtio-net device still might be active in the background and incoming packets are still placed into the buffers - which could destroy memory of the now-running Linux kernel in case it did not take over the device fast enough. Also the SCLP console is not put into a well-defined state here. We should hand over the system in a clean state when jumping into the kernel, so let's use the same mechanism as it's done in the main s390-ccw firmware and reset the machine with diag308 into a clean state before jumping into the OS kernel code. To be able to share the code with the main s390-ccw firmware, the related functions are now extracted from bootmap.c into a new file called jump2ipl.c. Since we now also set the boot device schid at address 184 for the network boot device, this patch also slightly changes the way how we detect the entry points for non-ELF binary images: The code now looks for the "S390EP" magic first and then jumps to 0x10000 in case it has been found. This is necessary for booting from network devices, since the normal kernel code (where the PSW at ddress 0 points to) tries to do a block load from the boot device. This of course fails for a virtio-net device and causes the kernel to abort with a panic-PSW silently. Acked-by: Christian Borntraeger Signed-off-by: Thomas Huth --- pc-bios/s390-ccw/Makefile | 4 +- pc-bios/s390-ccw/bootmap.c | 63 +------------------------ pc-bios/s390-ccw/bootmap.h | 4 -- pc-bios/s390-ccw/jump2ipl.c | 91 ++++++++++++++++++++++++++++++++++++ pc-bios/s390-ccw/netboot.mak | 3 +- pc-bios/s390-ccw/netmain.c | 11 ++++- pc-bios/s390-ccw/s390-ccw.h | 4 ++ 7 files changed, 111 insertions(+), 69 deletions(-) create mode 100644 pc-bios/s390-ccw/jump2ipl.c diff --git a/pc-bios/s390-ccw/Makefile b/pc-bios/s390-ccw/Makefile index 1712c2d95d..439e3cc9c9 100644 --- a/pc-bios/s390-ccw/Makefile +++ b/pc-bios/s390-ccw/Makefile @@ -9,7 +9,9 @@ $(call set-vpath, $(SRC_PATH)/pc-bios/s390-ccw) .PHONY : all clean build-all -OBJECTS = start.o main.o bootmap.o sclp.o virtio.o virtio-scsi.o virtio-blkdev.o libc.o menu.o +OBJECTS = start.o main.o bootmap.o jump2ipl.o sclp.o menu.o \ + virtio.o virtio-scsi.o virtio-blkdev.o libc.o + QEMU_CFLAGS := $(filter -W%, $(QEMU_CFLAGS)) QEMU_CFLAGS += -ffreestanding -fno-delete-null-pointer-checks -msoft-float QEMU_CFLAGS += -march=z900 -fPIE -fno-strict-aliasing diff --git a/pc-bios/s390-ccw/bootmap.c b/pc-bios/s390-ccw/bootmap.c index e41e715624..7aef65ab67 100644 --- a/pc-bios/s390-ccw/bootmap.c +++ b/pc-bios/s390-ccw/bootmap.c @@ -29,14 +29,6 @@ /* Scratch space */ static uint8_t sec[MAX_SECTOR_SIZE*4] __attribute__((__aligned__(PAGE_SIZE))); -typedef struct ResetInfo { - uint32_t ipl_mask; - uint32_t ipl_addr; - uint32_t ipl_continue; -} ResetInfo; - -static ResetInfo save; - const uint8_t el_torito_magic[] = "EL TORITO SPECIFICATION" "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"; @@ -57,53 +49,6 @@ static inline bool is_iso_vd_valid(IsoVolDesc *vd) vd->type <= VOL_DESC_TYPE_PARTITION; } -static void jump_to_IPL_2(void) -{ - ResetInfo *current = 0; - - void (*ipl)(void) = (void *) (uint64_t) current->ipl_continue; - *current = save; - ipl(); /* should not return */ -} - -static void jump_to_IPL_code(uint64_t address) -{ - /* store the subsystem information _after_ the bootmap was loaded */ - write_subsystem_identification(); - - /* prevent unknown IPL types in the guest */ - if (iplb.pbt == S390_IPL_TYPE_QEMU_SCSI) { - iplb.pbt = S390_IPL_TYPE_CCW; - set_iplb(&iplb); - } - - /* - * The IPL PSW is at address 0. We also must not overwrite the - * content of non-BIOS memory after we loaded the guest, so we - * save the original content and restore it in jump_to_IPL_2. - */ - ResetInfo *current = 0; - - save = *current; - current->ipl_addr = (uint32_t) (uint64_t) &jump_to_IPL_2; - current->ipl_continue = address & 0x7fffffff; - - debug_print_int("set IPL addr to", current->ipl_continue); - - /* Ensure the guest output starts fresh */ - sclp_print("\n"); - - /* - * HACK ALERT. - * We use the load normal reset to keep r15 unchanged. jump_to_IPL_2 - * can then use r15 as its stack pointer. - */ - asm volatile("lghi 1,1\n\t" - "diag 1,1,0x308\n\t" - : : : "1", "memory"); - panic("\n! IPL returns !\n"); -} - /*********************************************************************** * IPL an ECKD DASD (CDL or LDL/CMS format) */ @@ -729,13 +674,7 @@ static void load_iso_bc_entry(IsoBcSection *load) (void *)((uint64_t)bswap16(s.load_segment)), blks_to_load); - /* Trying to get PSW at zero address */ - if (*((uint64_t *)0) & IPL_PSW_MASK) { - jump_to_IPL_code((*((uint64_t *)0)) & 0x7fffffff); - } - - /* Try default linux start address */ - jump_to_IPL_code(KERN_IMAGE_START); + jump_to_low_kernel(); } static uint32_t find_iso_bc(void) diff --git a/pc-bios/s390-ccw/bootmap.h b/pc-bios/s390-ccw/bootmap.h index 732c1112ce..a085212077 100644 --- a/pc-bios/s390-ccw/bootmap.h +++ b/pc-bios/s390-ccw/bootmap.h @@ -353,10 +353,6 @@ static inline uint32_t iso_733_to_u32(uint64_t x) #define ISO_SECTOR_SIZE 2048 /* El Torito specifies boot image size in 512 byte blocks */ #define ET_SECTOR_SHIFT 2 -#define KERN_IMAGE_START 0x010000UL -#define PSW_MASK_64 0x0000000100000000ULL -#define PSW_MASK_32 0x0000000080000000ULL -#define IPL_PSW_MASK (PSW_MASK_32 | PSW_MASK_64) #define ISO_PRIMARY_VD_SECTOR 16 diff --git a/pc-bios/s390-ccw/jump2ipl.c b/pc-bios/s390-ccw/jump2ipl.c new file mode 100644 index 0000000000..266f1502b9 --- /dev/null +++ b/pc-bios/s390-ccw/jump2ipl.c @@ -0,0 +1,91 @@ +/* + * QEMU s390-ccw firmware - jump to IPL code + * + * 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 "libc.h" +#include "s390-ccw.h" + +#define KERN_IMAGE_START 0x010000UL +#define PSW_MASK_64 0x0000000100000000ULL +#define PSW_MASK_32 0x0000000080000000ULL +#define IPL_PSW_MASK (PSW_MASK_32 | PSW_MASK_64) + +typedef struct ResetInfo { + uint32_t ipl_mask; + uint32_t ipl_addr; + uint32_t ipl_continue; +} ResetInfo; + +static ResetInfo save; + +static void jump_to_IPL_2(void) +{ + ResetInfo *current = 0; + + void (*ipl)(void) = (void *) (uint64_t) current->ipl_continue; + *current = save; + ipl(); /* should not return */ +} + +void jump_to_IPL_code(uint64_t address) +{ + /* store the subsystem information _after_ the bootmap was loaded */ + write_subsystem_identification(); + + /* prevent unknown IPL types in the guest */ + if (iplb.pbt == S390_IPL_TYPE_QEMU_SCSI) { + iplb.pbt = S390_IPL_TYPE_CCW; + set_iplb(&iplb); + } + + /* + * The IPL PSW is at address 0. We also must not overwrite the + * content of non-BIOS memory after we loaded the guest, so we + * save the original content and restore it in jump_to_IPL_2. + */ + ResetInfo *current = 0; + + save = *current; + current->ipl_addr = (uint32_t) (uint64_t) &jump_to_IPL_2; + current->ipl_continue = address & 0x7fffffff; + + debug_print_int("set IPL addr to", current->ipl_continue); + + /* Ensure the guest output starts fresh */ + sclp_print("\n"); + + /* + * HACK ALERT. + * We use the load normal reset to keep r15 unchanged. jump_to_IPL_2 + * can then use r15 as its stack pointer. + */ + asm volatile("lghi 1,1\n\t" + "diag 1,1,0x308\n\t" + : : : "1", "memory"); + panic("\n! IPL returns !\n"); +} + +void jump_to_low_kernel(void) +{ + /* + * If it looks like a Linux binary, i.e. there is the "S390EP" magic from + * arch/s390/kernel/head.S here, then let's jump to the well-known Linux + * kernel start address (when jumping to the PSW-at-zero address instead, + * the kernel startup code fails when we booted from a network device). + */ + if (!memcmp((char *)0x10008, "S390EP", 6)) { + jump_to_IPL_code(KERN_IMAGE_START); + } + + /* Trying to get PSW at zero address */ + if (*((uint64_t *)0) & IPL_PSW_MASK) { + jump_to_IPL_code((*((uint64_t *)0)) & 0x7fffffff); + } + + /* No other option left, so use the Linux kernel start address */ + jump_to_IPL_code(KERN_IMAGE_START); +} diff --git a/pc-bios/s390-ccw/netboot.mak b/pc-bios/s390-ccw/netboot.mak index a25d238144..4f64128c6c 100644 --- a/pc-bios/s390-ccw/netboot.mak +++ b/pc-bios/s390-ccw/netboot.mak @@ -1,7 +1,8 @@ SLOF_DIR := $(SRC_PATH)/roms/SLOF -NETOBJS := start.o sclp.o virtio.o virtio-net.o netmain.o libnet.a libc.a +NETOBJS := start.o sclp.o virtio.o virtio-net.o jump2ipl.o netmain.o \ + libnet.a libc.a LIBC_INC := -nostdinc -I$(SLOF_DIR)/lib/libc/include LIBNET_INC := -I$(SLOF_DIR)/lib/libnet diff --git a/pc-bios/s390-ccw/netmain.c b/pc-bios/s390-ccw/netmain.c index 8fa9e6c945..69a82c0d56 100644 --- a/pc-bios/s390-ccw/netmain.c +++ b/pc-bios/s390-ccw/netmain.c @@ -283,6 +283,15 @@ void panic(const char *string) } } +void write_subsystem_identification(void) +{ + SubChannelId *schid = (SubChannelId *) 184; + uint32_t *zeroes = (uint32_t *) 188; + + *schid = net_schid; + *zeroes = 0; +} + static bool find_net_dev(Schib *schib, int dev_no) { int i, r; @@ -365,7 +374,7 @@ void main(void) if (rc > 0) { sclp_print("Network loading done, starting kernel...\n"); - asm volatile (" lpsw 0(%0) " : : "r"(0) : "memory"); + jump_to_low_kernel(); } panic("Failed to load OS from network\n"); diff --git a/pc-bios/s390-ccw/s390-ccw.h b/pc-bios/s390-ccw/s390-ccw.h index a1bdb4cc2a..9828aa233d 100644 --- a/pc-bios/s390-ccw/s390-ccw.h +++ b/pc-bios/s390-ccw/s390-ccw.h @@ -87,6 +87,10 @@ ulong get_second(void); /* bootmap.c */ void zipl_load(void); +/* jump2ipl.c */ +void jump_to_IPL_code(uint64_t address); +void jump_to_low_kernel(void); + /* menu.c */ void menu_set_parms(uint8_t boot_menu_flag, uint32_t boot_menu_timeout); int menu_get_zipl_boot_index(const char *menu_data); From c4942ee94271052b68125ec8c06e8c71a967aad3 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Wed, 18 Apr 2018 14:02:37 +0200 Subject: [PATCH 08/10] pc-bios/s390-ccw/net: Add support for .INS config files The .INS config files can normally be found on CD-ROM ISO images, so by supporting these files, it is now possible to boot directly when the TFTP server is set up with the contents of such an CD-ROM image. Acked-by: Christian Borntraeger Signed-off-by: Thomas Huth --- pc-bios/s390-ccw/netmain.c | 100 +++++++++++++++++++++++++++++++++++-- 1 file changed, 95 insertions(+), 5 deletions(-) diff --git a/pc-bios/s390-ccw/netmain.c b/pc-bios/s390-ccw/netmain.c index 69a82c0d56..600024155b 100644 --- a/pc-bios/s390-ccw/netmain.c +++ b/pc-bios/s390-ccw/netmain.c @@ -39,8 +39,12 @@ extern char _start[]; +#define KERNEL_ADDR ((void *)0L) +#define KERNEL_MAX_SIZE ((long)_start) + char stack[PAGE_SIZE * 8] __attribute__((aligned(PAGE_SIZE))); IplParameterBlock iplb __attribute__((aligned(PAGE_SIZE))); +static char cfgbuf[2048]; static SubChannelId net_schid = { .one = 1 }; static int ip_version = 4; @@ -136,9 +140,15 @@ static int tftp_load(filename_ip_t *fnip, void *buffer, int len) rc = tftp(fnip, buffer, len, DEFAULT_TFTP_RETRIES, &tftp_err, 1, 1428, ip_version); - if (rc > 0) { - printf(" TFTP: Received %s (%d KBytes)\n", fnip->filename, - rc / 1024); + if (rc < 0) { + /* Make sure that error messages are put into a new line */ + printf("\n "); + } + + if (rc > 1024) { + printf(" TFTP: Received %s (%d KBytes)\n", fnip->filename, rc / 1024); + } else if (rc > 0) { + printf(" TFTP: Received %s (%d Bytes)\n", fnip->filename, rc); } else if (rc == -1) { puts("unknown TFTP error"); } else if (rc == -2) { @@ -275,6 +285,83 @@ static void net_release(filename_ip_t *fn_ip) } } +/** + * Load via information from a .INS file (which can be found on CD-ROMs + * for example) + */ +static int handle_ins_cfg(filename_ip_t *fn_ip, char *cfg, int cfgsize) +{ + char *ptr; + int rc = -1, llen; + void *destaddr; + char *insbuf = cfg; + + ptr = strchr(insbuf, '\n'); + if (!ptr) { + puts("Does not seem to be a valid .INS file"); + return -1; + } + + *ptr = 0; + printf("\nParsing .INS file:\n %s\n", &insbuf[2]); + + insbuf = ptr + 1; + while (*insbuf && insbuf < cfg + cfgsize) { + ptr = strchr(insbuf, '\n'); + if (ptr) { + *ptr = 0; + } + llen = strlen(insbuf); + if (!llen) { + insbuf = ptr + 1; + continue; + } + ptr = strchr(insbuf, ' '); + if (!ptr) { + puts("Missing space separator in .INS file"); + return -1; + } + *ptr = 0; + strncpy((char *)fn_ip->filename, insbuf, sizeof(fn_ip->filename)); + destaddr = (char *)atol(ptr + 1); + rc = tftp_load(fn_ip, destaddr, (long)_start - (long)destaddr); + if (rc <= 0) { + break; + } + insbuf += llen + 1; + } + + return rc; +} + +static int net_try_direct_tftp_load(filename_ip_t *fn_ip) +{ + int rc; + void *loadaddr = (void *)0x2000; /* Load right after the low-core */ + + rc = tftp_load(fn_ip, loadaddr, KERNEL_MAX_SIZE - (long)loadaddr); + if (rc < 0) { + return rc; + } else if (rc < 8) { + printf("'%s' is too small (%i bytes only).\n", fn_ip->filename, rc); + return -1; + } + + /* Check whether it is a configuration file instead of a kernel */ + if (rc < sizeof(cfgbuf) - 1) { + memcpy(cfgbuf, loadaddr, rc); + cfgbuf[rc] = 0; /* Make sure that it is NUL-terminated */ + if (!strncmp("* ", cfgbuf, 2)) { + return handle_ins_cfg(fn_ip, cfgbuf, rc); + } + } + + /* Move kernel to right location */ + memmove(KERNEL_ADDR, loadaddr, rc); + + return rc; +} + void panic(const char *string) { sclp_print(string); @@ -356,7 +443,7 @@ static void virtio_setup(void) void main(void) { filename_ip_t fn_ip; - int rc; + int rc, fnlen; sclp_setup(); sclp_print("Network boot starting...\n"); @@ -368,7 +455,10 @@ void main(void) panic("Network initialization failed. Halting.\n"); } - rc = tftp_load(&fn_ip, NULL, (long)_start); + fnlen = strlen((char *)fn_ip.filename); + if (fnlen > 0 && fn_ip.filename[fnlen - 1] != '/') { + rc = net_try_direct_tftp_load(&fn_ip); + } net_release(&fn_ip); From 63d8b5ace31c1e1f3996fe4cd551d6d377594d5a Mon Sep 17 00:00:00 2001 From: Cornelia Huck Date: Wed, 2 May 2018 14:52:21 +0200 Subject: [PATCH 09/10] s390-ccw: force diag 308 subcode to unsigned long We currently pass an integer as the subcode parameter. However, the upper bits of the register containing the subcode need to be 0, which is not guaranteed unless we explicitly specify the subcode to be an unsigned long value. Fixes: d046c51dad3 ("pc-bios/s390-ccw: Get device address via diag 308/6") Cc: qemu-stable@nongnu.org Signed-off-by: Cornelia Huck Acked-by: Christian Borntraeger Tested-by: Thomas Huth Signed-off-by: Thomas Huth --- pc-bios/s390-ccw/iplb.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pc-bios/s390-ccw/iplb.h b/pc-bios/s390-ccw/iplb.h index 5357a36d51..ded20c834e 100644 --- a/pc-bios/s390-ccw/iplb.h +++ b/pc-bios/s390-ccw/iplb.h @@ -101,10 +101,11 @@ static inline bool manage_iplb(IplParameterBlock *iplb, bool store) { register unsigned long addr asm("0") = (unsigned long) iplb; register unsigned long rc asm("1") = 0; + unsigned long subcode = store ? 6 : 5; asm volatile ("diag %0,%2,0x308\n" : "+d" (addr), "+d" (rc) - : "d" (store ? 6 : 5) + : "d" (subcode) : "memory", "cc"); return rc == 0x01; } From 312185cf35b5d8454a84c337ef9aadade877fb88 Mon Sep 17 00:00:00 2001 From: Thomas Huth Date: Wed, 2 May 2018 15:42:57 +0200 Subject: [PATCH 10/10] pc-bios/s390: Update firmware images s390-ccw.img contains fixes for the boot menu, and s390-netboot.img contains the support for .INS files and the patch for resetting the machine with diag308. Signed-off-by: Thomas Huth --- pc-bios/s390-ccw.img | Bin 30520 -> 34568 bytes pc-bios/s390-netboot.img | Bin 83856 -> 87872 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/pc-bios/s390-ccw.img b/pc-bios/s390-ccw.img index fdd6809c707274be47b21fac102c41942f1379d7..450a076dc0ad9f2babc7f2e3005ea05a1082a808 100644 GIT binary patch literal 34568 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 diff --git a/pc-bios/s390-netboot.img b/pc-bios/s390-netboot.img index 31f3d141cde6320d696e6945046c75d140488df3..ef561efd2e222e03138705e9cf30d9e125a7970e 100644 GIT binary patch literal 87872 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 literal 83856 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