* [Qemu-devel] [PULL SUBSYSTEM s390x 0/7] pxelinux.cfg-style booting for the s390x bios
@ 2018-06-14 14:53 Thomas Huth
2018-06-14 14:53 ` [Qemu-devel] [PULL SUBSYSTEM s390x 1/7] pc-bios/s390-ccw: define loadparm length Thomas Huth
` (6 more replies)
0 siblings, 7 replies; 8+ messages in thread
From: Thomas Huth @ 2018-06-14 14:53 UTC (permalink / raw)
To: Cornelia Huck, qemu-s390x
Cc: Christian Borntraeger, qemu-devel, Collin Walling,
Alexey Kardashevskiy
This PULL request is not for master.
Hi Cornelia,
the following changes since commit f0b9be93001e6215dc1195f3d75ad2da8b3b694a:
s390x/cpumodels: add z14 Model ZR1 (2018-06-13 13:36:19 +0200)
are available in the git repository at:
https://gitlab.com/huth/qemu.git tags/s390x-2018-06-14
for you to fetch changes up to 298d87666ddaf329326f7ed351a2d407f06d8b1a:
pc-bios/s390-ccw: Update the s390-netboot.img binary (2018-06-14 16:13:49 +0200)
------------------------------------------------------------------------
Add support for pxelinux.cfg-style network booting to the s390x firmware
------------------------------------------------------------------------
Collin Walling (1):
pc-bios/s390-ccw: define loadparm length
Thomas Huth (6):
roms: Update SLOF submodule to current status
pc-bios/s390-ccw/net: Update code for the latest changes in SLOF
pc-bios/s390-ccw/net: Add support for pxelinux-style config files
pc-bios/s390-ccw/net: Try to load pxelinux.cfg file accoring to the UUID
pc-bios/s390-ccw: Optimize the s390-netboot.img for size
pc-bios/s390-ccw: Update the s390-netboot.img binary
pc-bios/s390-ccw/Makefile | 1 +
pc-bios/s390-ccw/iplb.h | 4 +-
pc-bios/s390-ccw/main.c | 8 +-
pc-bios/s390-ccw/netboot.mak | 13 +--
pc-bios/s390-ccw/netmain.c | 226 +++++++++++++++++++++++++++++--------------
pc-bios/s390-ccw/sclp.c | 2 +-
pc-bios/s390-ccw/sclp.h | 2 +-
pc-bios/s390-netboot.img | Bin 87872 -> 54944 bytes
roms/SLOF | 2 +-
9 files changed, 174 insertions(+), 84 deletions(-)
--
1.8.3.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [Qemu-devel] [PULL SUBSYSTEM s390x 1/7] pc-bios/s390-ccw: define loadparm length
2018-06-14 14:53 [Qemu-devel] [PULL SUBSYSTEM s390x 0/7] pxelinux.cfg-style booting for the s390x bios Thomas Huth
@ 2018-06-14 14:53 ` Thomas Huth
2018-06-14 14:53 ` [Qemu-devel] [PULL SUBSYSTEM s390x 2/7] roms: Update SLOF submodule to current status Thomas Huth
` (5 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Thomas Huth @ 2018-06-14 14:53 UTC (permalink / raw)
To: Cornelia Huck, qemu-s390x
Cc: Christian Borntraeger, qemu-devel, Collin Walling,
Alexey Kardashevskiy
From: Collin Walling <walling@linux.ibm.com>
Loadparm is defined by the s390 architecture to be 8 bytes
in length. Let's define this size in the s390-ccw bios.
Suggested-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Collin Walling <walling@linux.ibm.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
pc-bios/s390-ccw/iplb.h | 4 +++-
pc-bios/s390-ccw/main.c | 8 ++++----
pc-bios/s390-ccw/sclp.c | 2 +-
pc-bios/s390-ccw/sclp.h | 2 +-
4 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/pc-bios/s390-ccw/iplb.h b/pc-bios/s390-ccw/iplb.h
index ded20c8..772d5c5 100644
--- a/pc-bios/s390-ccw/iplb.h
+++ b/pc-bios/s390-ccw/iplb.h
@@ -12,6 +12,8 @@
#ifndef IPLB_H
#define IPLB_H
+#define LOADPARM_LEN 8
+
struct IplBlockCcw {
uint8_t reserved0[85];
uint8_t ssid;
@@ -61,7 +63,7 @@ struct IplParameterBlock {
uint8_t pbt;
uint8_t flags;
uint16_t reserved01;
- uint8_t loadparm[8];
+ uint8_t loadparm[LOADPARM_LEN];
union {
IplBlockCcw ccw;
IplBlockFcp fcp;
diff --git a/pc-bios/s390-ccw/main.c b/pc-bios/s390-ccw/main.c
index 26f9adf..544851d 100644
--- a/pc-bios/s390-ccw/main.c
+++ b/pc-bios/s390-ccw/main.c
@@ -15,7 +15,7 @@
char stack[PAGE_SIZE * 8] __attribute__((__aligned__(PAGE_SIZE)));
static SubChannelId blk_schid = { .one = 1 };
IplParameterBlock iplb __attribute__((__aligned__(PAGE_SIZE)));
-static char loadparm_str[9] = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+static char loadparm_str[LOADPARM_LEN + 1] = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
QemuIplParameters qipl;
#define LOADPARM_PROMPT "PROMPT "
@@ -80,13 +80,13 @@ static bool find_dev(Schib *schib, int dev_no)
static void menu_setup(void)
{
- if (memcmp(loadparm_str, LOADPARM_PROMPT, 8) == 0) {
+ if (memcmp(loadparm_str, LOADPARM_PROMPT, LOADPARM_LEN) == 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_str, LOADPARM_EMPTY, 8) != 0) {
+ if (memcmp(loadparm_str, LOADPARM_EMPTY, LOADPARM_LEN) != 0) {
return;
}
@@ -117,7 +117,7 @@ static void virtio_setup(void)
enable_mss_facility();
sclp_get_loadparm_ascii(loadparm_str);
- memcpy(ldp + 10, loadparm_str, 8);
+ memcpy(ldp + 10, loadparm_str, LOADPARM_LEN);
sclp_print(ldp);
memcpy(&qipl, early_qipl, sizeof(QemuIplParameters));
diff --git a/pc-bios/s390-ccw/sclp.c b/pc-bios/s390-ccw/sclp.c
index 3836cb4..c0223fa 100644
--- a/pc-bios/s390-ccw/sclp.c
+++ b/pc-bios/s390-ccw/sclp.c
@@ -114,7 +114,7 @@ void sclp_get_loadparm_ascii(char *loadparm)
memset((char *)_sccb, 0, sizeof(ReadInfo));
sccb->h.length = sizeof(ReadInfo);
if (!sclp_service_call(SCLP_CMDW_READ_SCP_INFO, sccb)) {
- ebcdic_to_ascii((char *) sccb->loadparm, loadparm, 8);
+ ebcdic_to_ascii((char *) sccb->loadparm, loadparm, LOADPARM_LEN);
}
}
diff --git a/pc-bios/s390-ccw/sclp.h b/pc-bios/s390-ccw/sclp.h
index 0dd987f..8450161 100644
--- a/pc-bios/s390-ccw/sclp.h
+++ b/pc-bios/s390-ccw/sclp.h
@@ -56,7 +56,7 @@ typedef struct ReadInfo {
uint16_t rnmax;
uint8_t rnsize;
uint8_t reserved[13];
- uint8_t loadparm[8];
+ uint8_t loadparm[LOADPARM_LEN];
} __attribute__((packed)) ReadInfo;
typedef struct SCCB {
--
1.8.3.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Qemu-devel] [PULL SUBSYSTEM s390x 2/7] roms: Update SLOF submodule to current status
2018-06-14 14:53 [Qemu-devel] [PULL SUBSYSTEM s390x 0/7] pxelinux.cfg-style booting for the s390x bios Thomas Huth
2018-06-14 14:53 ` [Qemu-devel] [PULL SUBSYSTEM s390x 1/7] pc-bios/s390-ccw: define loadparm length Thomas Huth
@ 2018-06-14 14:53 ` Thomas Huth
2018-06-14 14:53 ` [Qemu-devel] [PULL SUBSYSTEM s390x 3/7] pc-bios/s390-ccw/net: Update code for the latest changes in SLOF Thomas Huth
` (4 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Thomas Huth @ 2018-06-14 14:53 UTC (permalink / raw)
To: Cornelia Huck, qemu-s390x
Cc: Christian Borntraeger, qemu-devel, Collin Walling,
Alexey Kardashevskiy
We need the latest version of SLOF's libnet for adding pxelinux.cfg
support in the s390-ccw bios, too.
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
roms/SLOF | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/roms/SLOF b/roms/SLOF
index fa98132..2317427 160000
--- a/roms/SLOF
+++ b/roms/SLOF
@@ -1 +1 @@
-Subproject commit fa981320a1e0968d6fc1b8de319723ff8212b337
+Subproject commit 2317427ce76006723f7ae103a6998ab41dd79c68
--
1.8.3.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Qemu-devel] [PULL SUBSYSTEM s390x 3/7] pc-bios/s390-ccw/net: Update code for the latest changes in SLOF
2018-06-14 14:53 [Qemu-devel] [PULL SUBSYSTEM s390x 0/7] pxelinux.cfg-style booting for the s390x bios Thomas Huth
2018-06-14 14:53 ` [Qemu-devel] [PULL SUBSYSTEM s390x 1/7] pc-bios/s390-ccw: define loadparm length Thomas Huth
2018-06-14 14:53 ` [Qemu-devel] [PULL SUBSYSTEM s390x 2/7] roms: Update SLOF submodule to current status Thomas Huth
@ 2018-06-14 14:53 ` Thomas Huth
2018-06-14 14:53 ` [Qemu-devel] [PULL SUBSYSTEM s390x 4/7] pc-bios/s390-ccw/net: Add support for pxelinux-style config files Thomas Huth
` (3 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Thomas Huth @ 2018-06-14 14:53 UTC (permalink / raw)
To: Cornelia Huck, qemu-s390x
Cc: Christian Borntraeger, qemu-devel, Collin Walling,
Alexey Kardashevskiy
The ip_version information now has to be stored in the filename_ip_t
structure, and there is now a common function called tftp_get_error_info()
which can be used to get the error string for a TFTP error code.
We can also get rid of some superfluous "(char *)" casts now.
Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
Tested-by: Viktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
pc-bios/s390-ccw/netboot.mak | 2 +-
pc-bios/s390-ccw/netmain.c | 86 +++++++++-----------------------------------
2 files changed, 18 insertions(+), 70 deletions(-)
diff --git a/pc-bios/s390-ccw/netboot.mak b/pc-bios/s390-ccw/netboot.mak
index 4f64128..a73be36 100644
--- a/pc-bios/s390-ccw/netboot.mak
+++ b/pc-bios/s390-ccw/netboot.mak
@@ -34,7 +34,7 @@ STDLIB_OBJS = atoi.o atol.o strtoul.o strtol.o rand.o malloc.o free.o
%.o : $(SLOF_DIR)/lib/libc/stdlib/%.c
$(call quiet-command,$(CC) $(LIBC_CFLAGS) -c -o $@ $<,"CC","$(TARGET_DIR)$@")
-STDIO_OBJS = sprintf.o vfprintf.o vsnprintf.o vsprintf.o fprintf.o \
+STDIO_OBJS = sprintf.o snprintf.o vfprintf.o vsnprintf.o vsprintf.o fprintf.o \
printf.o putc.o puts.o putchar.o stdchnls.o fileno.o
%.o : $(SLOF_DIR)/lib/libc/stdio/%.c
$(call quiet-command,$(CC) $(LIBC_CFLAGS) -c -o $@ $<,"CC","$(TARGET_DIR)$@")
diff --git a/pc-bios/s390-ccw/netmain.c b/pc-bios/s390-ccw/netmain.c
index 6000241..d007fb7 100644
--- a/pc-bios/s390-ccw/netmain.c
+++ b/pc-bios/s390-ccw/netmain.c
@@ -47,7 +47,6 @@ IplParameterBlock iplb __attribute__((aligned(PAGE_SIZE)));
static char cfgbuf[2048];
static SubChannelId net_schid = { .one = 1 };
-static int ip_version = 4;
static uint64_t dest_timer;
static uint64_t get_timer_ms(void)
@@ -100,10 +99,10 @@ static int dhcp(struct filename_ip *fn_ip, int retries)
printf("\nGiving up after %d DHCP requests\n", retries);
return -1;
}
- ip_version = 4;
+ fn_ip->ip_version = 4;
rc = dhcpv4(NULL, fn_ip);
if (rc == -1) {
- ip_version = 6;
+ fn_ip->ip_version = 6;
set_ipv6_address(fn_ip->fd, 0);
rc = dhcpv6(NULL, fn_ip);
if (rc == 0) {
@@ -137,8 +136,7 @@ static int tftp_load(filename_ip_t *fnip, void *buffer, int len)
tftp_err_t tftp_err;
int rc;
- rc = tftp(fnip, buffer, len, DEFAULT_TFTP_RETRIES, &tftp_err, 1, 1428,
- ip_version);
+ rc = tftp(fnip, buffer, len, DEFAULT_TFTP_RETRIES, &tftp_err);
if (rc < 0) {
/* Make sure that error messages are put into a new line */
@@ -149,61 +147,11 @@ static int tftp_load(filename_ip_t *fnip, void *buffer, int len)
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) {
- printf("TFTP buffer of %d bytes is too small for %s\n",
- len, fnip->filename);
- } else if (rc == -3) {
- printf("file not found: %s\n", fnip->filename);
- } else if (rc == -4) {
- puts("TFTP access violation");
- } else if (rc == -5) {
- puts("illegal TFTP operation");
- } else if (rc == -6) {
- puts("unknown TFTP transfer ID");
- } else if (rc == -7) {
- puts("no such TFTP user");
- } else if (rc == -8) {
- puts("TFTP blocksize negotiation failed");
- } else if (rc == -9) {
- puts("file exceeds maximum TFTP transfer size");
- } else if (rc <= -10 && rc >= -15) {
- const char *icmp_err_str;
- switch (rc) {
- case -ICMP_NET_UNREACHABLE - 10:
- icmp_err_str = "net unreachable";
- break;
- case -ICMP_HOST_UNREACHABLE - 10:
- icmp_err_str = "host unreachable";
- break;
- case -ICMP_PROTOCOL_UNREACHABLE - 10:
- icmp_err_str = "protocol unreachable";
- break;
- case -ICMP_PORT_UNREACHABLE - 10:
- icmp_err_str = "port unreachable";
- break;
- case -ICMP_FRAGMENTATION_NEEDED - 10:
- icmp_err_str = "fragmentation needed and DF set";
- break;
- case -ICMP_SOURCE_ROUTE_FAILED - 10:
- icmp_err_str = "source route failed";
- break;
- default:
- icmp_err_str = " UNKNOWN";
- break;
- }
- printf("ICMP ERROR \"%s\"\n", icmp_err_str);
- } else if (rc == -40) {
- printf("TFTP error occurred after %d bad packets received",
- tftp_err.bad_tftp_packets);
- } else if (rc == -41) {
- printf("TFTP error occurred after missing %d responses",
- tftp_err.no_packets);
- } else if (rc == -42) {
- printf("TFTP error missing block %d, expected block was %d",
- tftp_err.blocks_missed,
- tftp_err.blocks_received);
+ } else {
+ const char *errstr = NULL;
+ int ecode;
+ tftp_get_error_info(fnip, &tftp_err, rc, &errstr, &ecode);
+ printf("TFTP error: %s\n", errstr ? errstr : "unknown error");
}
return rc;
@@ -231,7 +179,7 @@ static int net_init(filename_ip_t *fn_ip)
rc = dhcp(fn_ip, DEFAULT_BOOT_RETRIES);
if (rc >= 0) {
- if (ip_version == 4) {
+ if (fn_ip->ip_version == 4) {
set_ipv4_address(fn_ip->own_ip);
}
} else {
@@ -239,11 +187,11 @@ static int net_init(filename_ip_t *fn_ip)
return -101;
}
- if (ip_version == 4) {
+ if (fn_ip->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);
- } else if (ip_version == 6) {
+ } else if (fn_ip->ip_version == 6) {
char ip6_str[40];
ipv6_to_str(fn_ip->own_ip6.addr, ip6_str);
printf(" Using IPv6 address: %s\n", ip6_str);
@@ -261,17 +209,17 @@ static int net_init(filename_ip_t *fn_ip)
}
printf(" Using TFTP server: ");
- if (ip_version == 4) {
+ if (fn_ip->ip_version == 4) {
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) {
+ } else if (fn_ip->ip_version == 6) {
char ip6_str[40];
ipv6_to_str(fn_ip->server_ip6.addr, ip6_str);
printf("%s\n", ip6_str);
}
- if (strlen((char *)fn_ip->filename) > 0) {
+ if (strlen(fn_ip->filename) > 0) {
printf(" Bootfile name: '%s'\n", fn_ip->filename);
}
@@ -280,7 +228,7 @@ static int net_init(filename_ip_t *fn_ip)
static void net_release(filename_ip_t *fn_ip)
{
- if (ip_version == 4) {
+ if (fn_ip->ip_version == 4) {
dhcp_send_release(fn_ip->fd);
}
}
@@ -322,7 +270,7 @@ static int handle_ins_cfg(filename_ip_t *fn_ip, char *cfg, int cfgsize)
return -1;
}
*ptr = 0;
- strncpy((char *)fn_ip->filename, insbuf, sizeof(fn_ip->filename));
+ strncpy(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) {
@@ -455,7 +403,7 @@ void main(void)
panic("Network initialization failed. Halting.\n");
}
- fnlen = strlen((char *)fn_ip.filename);
+ fnlen = strlen(fn_ip.filename);
if (fnlen > 0 && fn_ip.filename[fnlen - 1] != '/') {
rc = net_try_direct_tftp_load(&fn_ip);
}
--
1.8.3.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Qemu-devel] [PULL SUBSYSTEM s390x 4/7] pc-bios/s390-ccw/net: Add support for pxelinux-style config files
2018-06-14 14:53 [Qemu-devel] [PULL SUBSYSTEM s390x 0/7] pxelinux.cfg-style booting for the s390x bios Thomas Huth
` (2 preceding siblings ...)
2018-06-14 14:53 ` [Qemu-devel] [PULL SUBSYSTEM s390x 3/7] pc-bios/s390-ccw/net: Update code for the latest changes in SLOF Thomas Huth
@ 2018-06-14 14:53 ` Thomas Huth
2018-06-14 14:53 ` [Qemu-devel] [PULL SUBSYSTEM s390x 5/7] pc-bios/s390-ccw/net: Try to load pxelinux.cfg file accoring to the UUID Thomas Huth
` (2 subsequent siblings)
6 siblings, 0 replies; 8+ messages in thread
From: Thomas Huth @ 2018-06-14 14:53 UTC (permalink / raw)
To: Cornelia Huck, qemu-s390x
Cc: Christian Borntraeger, qemu-devel, Collin Walling,
Alexey Kardashevskiy
Since it is quite cumbersome to manually create a combined kernel with
initrd image for network booting, we now support loading via pxelinux
configuration files, too. In these files, the kernel, initrd and command
line parameters can be specified seperately, and the firmware then takes
care of glueing everything together in memory after the files have been
downloaded. See this URL for details about the config file layout:
https://www.syslinux.org/wiki/index.php?title=PXELINUX
The user can either specify a config file directly as bootfile via DHCP
(but in this case, the file has to start either with "default" or a "#"
comment so we can distinguish it from binary kernels), or a folder (i.e.
the bootfile name must end with "/") where the firmware should look for
the typical pxelinux.cfg file names, e.g. based on MAC or IP address.
We also support the pxelinux.cfg DHCP options 209 and 210 from RFC 5071.
Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
Tested-by: Viktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
pc-bios/s390-ccw/netboot.mak | 7 ++--
pc-bios/s390-ccw/netmain.c | 86 +++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 89 insertions(+), 4 deletions(-)
diff --git a/pc-bios/s390-ccw/netboot.mak b/pc-bios/s390-ccw/netboot.mak
index a73be36..8af0cfd 100644
--- a/pc-bios/s390-ccw/netboot.mak
+++ b/pc-bios/s390-ccw/netboot.mak
@@ -25,8 +25,9 @@ CTYPE_OBJS = isdigit.o isxdigit.o toupper.o
%.o : $(SLOF_DIR)/lib/libc/ctype/%.c
$(call quiet-command,$(CC) $(LIBC_CFLAGS) -c -o $@ $<,"CC","$(TARGET_DIR)$@")
-STRING_OBJS = strcat.o strchr.o strcmp.o strcpy.o strlen.o strncmp.o strncpy.o \
- strstr.o memset.o memcpy.o memmove.o memcmp.o
+STRING_OBJS = strcat.o strchr.o strrchr.o strcpy.o strlen.o strncpy.o \
+ strcmp.o strncmp.o strcasecmp.o strncasecmp.o strstr.o \
+ memset.o memcpy.o memmove.o memcmp.o
%.o : $(SLOF_DIR)/lib/libc/string/%.c
$(call quiet-command,$(CC) $(LIBC_CFLAGS) -c -o $@ $<,"CC","$(TARGET_DIR)$@")
@@ -50,7 +51,7 @@ libc.a: $(LIBCOBJS)
# libnet files:
LIBNETOBJS := args.o dhcp.o dns.o icmpv6.o ipv6.o tcp.o udp.o bootp.o \
- dhcpv6.o ethernet.o ipv4.o ndp.o tftp.o
+ dhcpv6.o ethernet.o ipv4.o ndp.o tftp.o pxelinux.o
LIBNETCFLAGS := $(QEMU_CFLAGS) -DDHCPARCH=0x1F $(LIBC_INC) $(LIBNET_INC)
%.o : $(SLOF_DIR)/lib/libnet/%.c
diff --git a/pc-bios/s390-ccw/netmain.c b/pc-bios/s390-ccw/netmain.c
index d007fb7..c059546 100644
--- a/pc-bios/s390-ccw/netmain.c
+++ b/pc-bios/s390-ccw/netmain.c
@@ -30,6 +30,7 @@
#include <ipv6.h>
#include <dns.h>
#include <time.h>
+#include <pxelinux.h>
#include "s390-ccw.h"
#include "virtio.h"
@@ -41,12 +42,14 @@ extern char _start[];
#define KERNEL_ADDR ((void *)0L)
#define KERNEL_MAX_SIZE ((long)_start)
+#define ARCH_COMMAND_LINE_SIZE 896 /* Taken from Linux kernel */
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 uint8_t mac[6];
static uint64_t dest_timer;
static uint64_t get_timer_ms(void)
@@ -159,7 +162,6 @@ static int tftp_load(filename_ip_t *fnip, void *buffer, int len)
static int net_init(filename_ip_t *fn_ip)
{
- uint8_t mac[6];
int rc;
memset(fn_ip, 0, sizeof(filename_ip_t));
@@ -234,6 +236,66 @@ static void net_release(filename_ip_t *fn_ip)
}
/**
+ * Load a kernel with initrd (i.e. with the information that we've got from
+ * a pxelinux.cfg config file)
+ */
+static int load_kernel_with_initrd(filename_ip_t *fn_ip,
+ struct pl_cfg_entry *entry)
+{
+ int rc;
+
+ printf("Loading pxelinux.cfg entry '%s'\n", entry->label);
+
+ if (!entry->kernel) {
+ printf("Kernel entry is missing!\n");
+ return -1;
+ }
+
+ strncpy(fn_ip->filename, entry->kernel, sizeof(fn_ip->filename));
+ rc = tftp_load(fn_ip, KERNEL_ADDR, KERNEL_MAX_SIZE);
+ if (rc < 0) {
+ return rc;
+ }
+
+ if (entry->initrd) {
+ uint64_t iaddr = (rc + 0xfff) & ~0xfffUL;
+
+ strncpy(fn_ip->filename, entry->initrd, sizeof(fn_ip->filename));
+ rc = tftp_load(fn_ip, (void *)iaddr, KERNEL_MAX_SIZE - iaddr);
+ if (rc < 0) {
+ return rc;
+ }
+ /* Patch location and size: */
+ *(uint64_t *)0x10408 = iaddr;
+ *(uint64_t *)0x10410 = rc;
+ rc += iaddr;
+ }
+
+ if (entry->append) {
+ strncpy((char *)0x10480, entry->append, ARCH_COMMAND_LINE_SIZE);
+ }
+
+ return rc;
+}
+
+#define MAX_PXELINUX_ENTRIES 16
+
+static int net_try_pxelinux_cfg(filename_ip_t *fn_ip)
+{
+ struct pl_cfg_entry entries[MAX_PXELINUX_ENTRIES];
+ int num_ent, def_ent = 0;
+
+ num_ent = pxelinux_load_parse_cfg(fn_ip, mac, NULL, DEFAULT_TFTP_RETRIES,
+ cfgbuf, sizeof(cfgbuf),
+ entries, MAX_PXELINUX_ENTRIES, &def_ent);
+ if (num_ent > 0) {
+ return load_kernel_with_initrd(fn_ip, &entries[def_ent]);
+ }
+
+ return -1;
+}
+
+/**
* Load via information from a .INS file (which can be found on CD-ROMs
* for example)
*/
@@ -302,6 +364,25 @@ static int net_try_direct_tftp_load(filename_ip_t *fn_ip)
if (!strncmp("* ", cfgbuf, 2)) {
return handle_ins_cfg(fn_ip, cfgbuf, rc);
}
+ /*
+ * pxelinux.cfg support via bootfile name is just here for developers'
+ * convenience (it eases testing with the built-in DHCP server of QEMU
+ * that does not support RFC 5071). The official way to configure a
+ * pxelinux.cfg file name is to use DHCP options 209 and 210 instead.
+ * So only use the pxelinux.cfg parser here for files that start with
+ * a magic comment string.
+ */
+ if (!strncasecmp("# pxelinux", cfgbuf, 10)) {
+ struct pl_cfg_entry entries[MAX_PXELINUX_ENTRIES];
+ int num_ent, def_ent = 0;
+
+ num_ent = pxelinux_parse_cfg(cfgbuf, sizeof(cfgbuf), entries,
+ MAX_PXELINUX_ENTRIES, &def_ent);
+ if (num_ent <= 0) {
+ return -1;
+ }
+ return load_kernel_with_initrd(fn_ip, &entries[def_ent]);
+ }
}
/* Move kernel to right location */
@@ -407,6 +488,9 @@ void main(void)
if (fnlen > 0 && fn_ip.filename[fnlen - 1] != '/') {
rc = net_try_direct_tftp_load(&fn_ip);
}
+ if (rc <= 0) {
+ rc = net_try_pxelinux_cfg(&fn_ip);
+ }
net_release(&fn_ip);
--
1.8.3.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Qemu-devel] [PULL SUBSYSTEM s390x 5/7] pc-bios/s390-ccw/net: Try to load pxelinux.cfg file accoring to the UUID
2018-06-14 14:53 [Qemu-devel] [PULL SUBSYSTEM s390x 0/7] pxelinux.cfg-style booting for the s390x bios Thomas Huth
` (3 preceding siblings ...)
2018-06-14 14:53 ` [Qemu-devel] [PULL SUBSYSTEM s390x 4/7] pc-bios/s390-ccw/net: Add support for pxelinux-style config files Thomas Huth
@ 2018-06-14 14:53 ` Thomas Huth
2018-06-14 14:53 ` [Qemu-devel] [PULL SUBSYSTEM s390x 6/7] pc-bios/s390-ccw: Optimize the s390-netboot.img for size Thomas Huth
2018-06-14 14:53 ` [Qemu-devel] [PULL SUBSYSTEM s390x 7/7] pc-bios/s390-ccw: Update the s390-netboot.img binary Thomas Huth
6 siblings, 0 replies; 8+ messages in thread
From: Thomas Huth @ 2018-06-14 14:53 UTC (permalink / raw)
To: Cornelia Huck, qemu-s390x
Cc: Christian Borntraeger, qemu-devel, Collin Walling,
Alexey Kardashevskiy
With the STSI instruction, we can get the UUID of the current VM instance,
so we can support loading pxelinux config files via UUID in the file name,
too.
Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
Tested-by: Viktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
pc-bios/s390-ccw/netmain.c | 56 +++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 55 insertions(+), 1 deletion(-)
diff --git a/pc-bios/s390-ccw/netmain.c b/pc-bios/s390-ccw/netmain.c
index c059546..0392131 100644
--- a/pc-bios/s390-ccw/netmain.c
+++ b/pc-bios/s390-ccw/netmain.c
@@ -44,6 +44,9 @@ extern char _start[];
#define KERNEL_MAX_SIZE ((long)_start)
#define ARCH_COMMAND_LINE_SIZE 896 /* Taken from Linux kernel */
+/* STSI 3.2.2 offset of first vmdb + offset of uuid inside vmdb */
+#define STSI322_VMDB_UUID_OFFSET ((8 + 12) * 4)
+
char stack[PAGE_SIZE * 8] __attribute__((aligned(PAGE_SIZE)));
IplParameterBlock iplb __attribute__((aligned(PAGE_SIZE)));
static char cfgbuf[2048];
@@ -236,6 +239,56 @@ static void net_release(filename_ip_t *fn_ip)
}
/**
+ * Retrieve the Universally Unique Identifier of the VM.
+ * @return UUID string, or NULL in case of errors
+ */
+static const char *get_uuid(void)
+{
+ register int r0 asm("0");
+ register int r1 asm("1");
+ uint8_t *mem, *buf, uuid[16];
+ int i, cc, chk = 0;
+ static char uuid_str[37];
+
+ mem = malloc(2 * PAGE_SIZE);
+ if (!mem) {
+ puts("Out of memory ... can not get UUID.");
+ return NULL;
+ }
+ buf = (uint8_t *)(((uint64_t)mem + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1));
+ memset(buf, 0, PAGE_SIZE);
+
+ /* Get SYSIB 3.2.2 */
+ r0 = (3 << 28) | 2;
+ r1 = 2;
+ asm volatile(" stsi 0(%[addr])\n"
+ " ipm %[cc]\n"
+ " srl %[cc],28\n"
+ : [cc] "=d" (cc)
+ : "d" (r0), "d" (r1), [addr] "a" (buf)
+ : "cc", "memory");
+ if (cc) {
+ return NULL;
+ }
+
+ for (i = 0; i < 16; i++) {
+ uuid[i] = buf[STSI322_VMDB_UUID_OFFSET + i];
+ chk |= uuid[i];
+ }
+ free(mem);
+ if (!chk) {
+ return NULL;
+ }
+
+ sprintf(uuid_str, "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-"
+ "%02x%02x%02x%02x%02x%02x", uuid[0], uuid[1], uuid[2], uuid[3],
+ uuid[4], uuid[5], uuid[6], uuid[7], uuid[8], uuid[9], uuid[10],
+ uuid[11], uuid[12], uuid[13], uuid[14], uuid[15]);
+
+ return uuid_str;
+}
+
+/**
* Load a kernel with initrd (i.e. with the information that we've got from
* a pxelinux.cfg config file)
*/
@@ -285,7 +338,8 @@ static int net_try_pxelinux_cfg(filename_ip_t *fn_ip)
struct pl_cfg_entry entries[MAX_PXELINUX_ENTRIES];
int num_ent, def_ent = 0;
- num_ent = pxelinux_load_parse_cfg(fn_ip, mac, NULL, DEFAULT_TFTP_RETRIES,
+ num_ent = pxelinux_load_parse_cfg(fn_ip, mac, get_uuid(),
+ DEFAULT_TFTP_RETRIES,
cfgbuf, sizeof(cfgbuf),
entries, MAX_PXELINUX_ENTRIES, &def_ent);
if (num_ent > 0) {
--
1.8.3.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Qemu-devel] [PULL SUBSYSTEM s390x 6/7] pc-bios/s390-ccw: Optimize the s390-netboot.img for size
2018-06-14 14:53 [Qemu-devel] [PULL SUBSYSTEM s390x 0/7] pxelinux.cfg-style booting for the s390x bios Thomas Huth
` (4 preceding siblings ...)
2018-06-14 14:53 ` [Qemu-devel] [PULL SUBSYSTEM s390x 5/7] pc-bios/s390-ccw/net: Try to load pxelinux.cfg file accoring to the UUID Thomas Huth
@ 2018-06-14 14:53 ` Thomas Huth
2018-06-14 14:53 ` [Qemu-devel] [PULL SUBSYSTEM s390x 7/7] pc-bios/s390-ccw: Update the s390-netboot.img binary Thomas Huth
6 siblings, 0 replies; 8+ messages in thread
From: Thomas Huth @ 2018-06-14 14:53 UTC (permalink / raw)
To: Cornelia Huck, qemu-s390x
Cc: Christian Borntraeger, qemu-devel, Collin Walling,
Alexey Kardashevskiy
The -O2 optimization flag is passed via CFLAGS to the firmware Makefile,
but in netbook.mak, we've got some rules that only use QEMU_CFLAGS for
compiling the libc and libnet from SLOF, so these files get compiled
without optimization so far. Use CFLAGS here, too, to create faster
and smaller code.
We can additionally save some more bytes in the firmware images by compi-
ling the code with -fno-asynchronous-unwind-tables. This will omit some
ELF sections (used for stack unwinding for example) from the image that
we do not need in the firmware.
Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
pc-bios/s390-ccw/Makefile | 1 +
pc-bios/s390-ccw/netboot.mak | 4 ++--
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/pc-bios/s390-ccw/Makefile b/pc-bios/s390-ccw/Makefile
index 439e3cc..1eb316b 100644
--- a/pc-bios/s390-ccw/Makefile
+++ b/pc-bios/s390-ccw/Makefile
@@ -15,6 +15,7 @@ OBJECTS = start.o main.o bootmap.o jump2ipl.o sclp.o menu.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
+QEMU_CFLAGS += -fno-asynchronous-unwind-tables
QEMU_CFLAGS += $(call cc-option, $(QEMU_CFLAGS), -fno-stack-protector)
LDFLAGS += -Wl,-pie -nostdlib
diff --git a/pc-bios/s390-ccw/netboot.mak b/pc-bios/s390-ccw/netboot.mak
index 8af0cfd..14e96b2 100644
--- a/pc-bios/s390-ccw/netboot.mak
+++ b/pc-bios/s390-ccw/netboot.mak
@@ -19,7 +19,7 @@ s390-netboot.img: s390-netboot.elf
# libc files:
-LIBC_CFLAGS := $(QEMU_CFLAGS) $(LIBC_INC) $(LIBNET_INC)
+LIBC_CFLAGS := $(QEMU_CFLAGS) $(CFLAGS) $(LIBC_INC) $(LIBNET_INC)
CTYPE_OBJS = isdigit.o isxdigit.o toupper.o
%.o : $(SLOF_DIR)/lib/libc/ctype/%.c
@@ -52,7 +52,7 @@ libc.a: $(LIBCOBJS)
LIBNETOBJS := args.o dhcp.o dns.o icmpv6.o ipv6.o tcp.o udp.o bootp.o \
dhcpv6.o ethernet.o ipv4.o ndp.o tftp.o pxelinux.o
-LIBNETCFLAGS := $(QEMU_CFLAGS) -DDHCPARCH=0x1F $(LIBC_INC) $(LIBNET_INC)
+LIBNETCFLAGS := $(QEMU_CFLAGS) $(CFLAGS) -DDHCPARCH=0x1F $(LIBC_INC) $(LIBNET_INC)
%.o : $(SLOF_DIR)/lib/libnet/%.c
$(call quiet-command,$(CC) $(LIBNETCFLAGS) -c -o $@ $<,"CC","$(TARGET_DIR)$@")
--
1.8.3.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Qemu-devel] [PULL SUBSYSTEM s390x 7/7] pc-bios/s390-ccw: Update the s390-netboot.img binary
2018-06-14 14:53 [Qemu-devel] [PULL SUBSYSTEM s390x 0/7] pxelinux.cfg-style booting for the s390x bios Thomas Huth
` (5 preceding siblings ...)
2018-06-14 14:53 ` [Qemu-devel] [PULL SUBSYSTEM s390x 6/7] pc-bios/s390-ccw: Optimize the s390-netboot.img for size Thomas Huth
@ 2018-06-14 14:53 ` Thomas Huth
6 siblings, 0 replies; 8+ messages in thread
From: Thomas Huth @ 2018-06-14 14:53 UTC (permalink / raw)
To: Cornelia Huck, qemu-s390x
Cc: Christian Borntraeger, qemu-devel, Collin Walling,
Alexey Kardashevskiy
This binary now contains the support for pxelinux.cfg-style network
booting.
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
pc-bios/s390-netboot.img | Bin 87872 -> 54944 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/pc-bios/s390-netboot.img b/pc-bios/s390-netboot.img
index ef561efd2e222e03138705e9cf30d9e125a7970e..2c6886efb8320ff711589119ffbf077e68ec8784 100644
GIT binary patch
literal 54944
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
literal 87872
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
--
1.8.3.1
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2018-06-14 14:54 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-06-14 14:53 [Qemu-devel] [PULL SUBSYSTEM s390x 0/7] pxelinux.cfg-style booting for the s390x bios Thomas Huth
2018-06-14 14:53 ` [Qemu-devel] [PULL SUBSYSTEM s390x 1/7] pc-bios/s390-ccw: define loadparm length Thomas Huth
2018-06-14 14:53 ` [Qemu-devel] [PULL SUBSYSTEM s390x 2/7] roms: Update SLOF submodule to current status Thomas Huth
2018-06-14 14:53 ` [Qemu-devel] [PULL SUBSYSTEM s390x 3/7] pc-bios/s390-ccw/net: Update code for the latest changes in SLOF Thomas Huth
2018-06-14 14:53 ` [Qemu-devel] [PULL SUBSYSTEM s390x 4/7] pc-bios/s390-ccw/net: Add support for pxelinux-style config files Thomas Huth
2018-06-14 14:53 ` [Qemu-devel] [PULL SUBSYSTEM s390x 5/7] pc-bios/s390-ccw/net: Try to load pxelinux.cfg file accoring to the UUID Thomas Huth
2018-06-14 14:53 ` [Qemu-devel] [PULL SUBSYSTEM s390x 6/7] pc-bios/s390-ccw: Optimize the s390-netboot.img for size Thomas Huth
2018-06-14 14:53 ` [Qemu-devel] [PULL SUBSYSTEM s390x 7/7] pc-bios/s390-ccw: Update the s390-netboot.img binary Thomas Huth
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).