144 lines
5.4 KiB
Diff
144 lines
5.4 KiB
Diff
|
Subject: [PATCH] [FEAT VS1804] zipl: remove some useless __packed___ attributes
|
||
|
From: Marc Hartmayer <mhartmay@linux.ibm.com>
|
||
|
|
||
|
Summary: genprotimg: Introduce new tool for the creation of PV images
|
||
|
Description: genprotimg takes a kernel, host-key documents, optionally an
|
||
|
initrd, optionally a file with the kernel command line, and it
|
||
|
generates a single, loadable image file. The image consists of a
|
||
|
concatenation of a plain text boot loader, the encrypted
|
||
|
components for kernel, initrd, and cmdline, and the
|
||
|
integrity-protected PV header, containing metadata necessary for
|
||
|
running the guest in PV mode. It's possible to use this image file
|
||
|
as a kernel for zIPL or for a direct kernel boot using QEMU.
|
||
|
Upstream-ID: 2227bb8330aea1368ba234ae6f24fe0b5779d67d
|
||
|
Problem-ID: VS1804
|
||
|
|
||
|
Upstream-Description:
|
||
|
|
||
|
zipl: remove some useless __packed___ attributes
|
||
|
|
||
|
The __packed__ attribute is not needed for these structures as they
|
||
|
don't need any padding to meet the size and alignment constraints
|
||
|
defined in the Linux for zSeries ABI.
|
||
|
|
||
|
Reported by GCC 9.2.1 when building with '-Waddress-of-packed-member'.
|
||
|
|
||
|
stage3.c: In function 'is_verified_address':
|
||
|
stage3.c:241:26: warning: taking address of packed member of 'struct ipl_rb_components' may result in an unaligned pointer value [-Waddress-of-packed-member]
|
||
|
241 | for_each_rb_entry(comp, comps) {
|
||
|
| ^~~~~
|
||
|
stage3.c:18:15: note: in definition of macro 'for_each_rb_entry'
|
||
|
18 | for (entry = rb->entries; \
|
||
|
| ^~
|
||
|
CC zipl/boot/kdump3.o
|
||
|
CC zipl/boot/sclp_stage3.o
|
||
|
sclp_stage3.c: In function '__sclp_hsa_copy':
|
||
|
sclp_stage3.c:75:34: warning: converting a packed 'struct sdias_sccb' pointer (alignment 1) to a 'struct read_sccb' pointer (alignment 4096) may result in an unaligned pointer value [-Waddress-of-packed-member]
|
||
|
75 | if (sclp_hsa_copy_wait((struct read_sccb *)sccb))
|
||
|
| ^~~~~~~~~
|
||
|
In file included from sclp_stage3.c:13:
|
||
|
sclp_stage3.h:43:8: note: defined here
|
||
|
43 | struct sdias_sccb {
|
||
|
| ^~~~~~~~~~
|
||
|
In file included from sclp_stage3.c:12:
|
||
|
sclp.h:149:8: note: defined here
|
||
|
149 | struct read_sccb {
|
||
|
| ^~~~~~~~~
|
||
|
sclp_stage3.c: In function 'sclp_hsa_get_size':
|
||
|
sclp_stage3.c:126:34: warning: converting a packed 'struct sdias_sccb' pointer (alignment 1) to a 'struct read_sccb' pointer (alignment 4096) may result in an unaligned pointer value [-Waddress-of-packed-member]
|
||
|
126 | if (sclp_hsa_copy_wait((struct read_sccb *)sccb))
|
||
|
| ^~~~~~~~~
|
||
|
In file included from sclp_stage3.c:13:
|
||
|
sclp_stage3.h:43:8: note: defined here
|
||
|
43 | struct sdias_sccb {
|
||
|
| ^~~~~~~~~~
|
||
|
In file included from sclp_stage3.c:12:
|
||
|
sclp.h:149:8: note: defined here
|
||
|
149 | struct read_sccb {
|
||
|
| ^~~~~~~~~
|
||
|
|
||
|
Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com>
|
||
|
Reviewed-by: Stefan Haberland <sth@linux.ibm.com>
|
||
|
Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
|
||
|
|
||
|
|
||
|
Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com>
|
||
|
---
|
||
|
zipl/boot/sclp.h | 6 ++++--
|
||
|
zipl/boot/sclp_stage3.h | 3 ++-
|
||
|
zipl/boot/stage3.h | 6 ++++--
|
||
|
3 files changed, 10 insertions(+), 5 deletions(-)
|
||
|
|
||
|
--- a/zipl/boot/sclp.h
|
||
|
+++ b/zipl/boot/sclp.h
|
||
|
@@ -53,19 +53,21 @@ struct gds_subvector {
|
||
|
uint8_t key;
|
||
|
} __packed;
|
||
|
|
||
|
+/* Structure must not have any padding */
|
||
|
struct sccb_header {
|
||
|
uint16_t length;
|
||
|
uint8_t function_code;
|
||
|
uint8_t control_mask[3];
|
||
|
uint16_t response_code;
|
||
|
-} __packed;
|
||
|
+};
|
||
|
|
||
|
+/* Structure must not have any padding */
|
||
|
struct evbuf_header {
|
||
|
uint16_t length;
|
||
|
uint8_t type;
|
||
|
uint8_t flags;
|
||
|
uint16_t _reserved;
|
||
|
-} __packed;
|
||
|
+};
|
||
|
|
||
|
struct mto {
|
||
|
uint16_t length;
|
||
|
--- a/zipl/boot/sclp_stage3.h
|
||
|
+++ b/zipl/boot/sclp_stage3.h
|
||
|
@@ -40,10 +40,11 @@ struct sdias_evbuf {
|
||
|
uint16_t dbs;
|
||
|
} __packed;
|
||
|
|
||
|
+/* Structure must not have any padding */
|
||
|
struct sdias_sccb {
|
||
|
struct sccb_header header;
|
||
|
struct sdias_evbuf evbuf;
|
||
|
-} __packed;
|
||
|
+};
|
||
|
|
||
|
|
||
|
int sclp_hsa_copy(void *, unsigned long, unsigned long);
|
||
|
--- a/zipl/boot/stage3.h
|
||
|
+++ b/zipl/boot/stage3.h
|
||
|
@@ -124,11 +124,12 @@ struct ipl_rl_hdr {
|
||
|
} __packed;
|
||
|
|
||
|
/* IPL Report Block header */
|
||
|
+/* Structure must not have any padding */
|
||
|
struct ipl_rb_hdr {
|
||
|
uint32_t len;
|
||
|
uint8_t rbt;
|
||
|
uint8_t reserved1[11];
|
||
|
-} __packed;
|
||
|
+};
|
||
|
|
||
|
/* IPL Report Block types */
|
||
|
enum ipl_rbt {
|
||
|
@@ -162,12 +163,13 @@ struct ipl_rb_component_entry {
|
||
|
#define IPL_RB_COMPONENT_FLAG_SIGNED 0x80
|
||
|
#define IPL_RB_COMPONENT_FLAG_VERIFIED 0x40
|
||
|
|
||
|
+/* Structure must not have any padding */
|
||
|
struct ipl_rb_components {
|
||
|
uint32_t len;
|
||
|
uint8_t rbt;
|
||
|
uint8_t reserved1[11];
|
||
|
struct ipl_rb_component_entry entries[];
|
||
|
-} __packed;
|
||
|
+};
|
||
|
|
||
|
extern unsigned long long _parm_addr; /* address of parmline */
|
||
|
extern unsigned long long _initrd_addr; /* address of initrd */
|