]> Git Repo - linux.git/commitdiff
s390/lowcore: reserve 96 bytes for IRB in lowcore
authorChristian Borntraeger <[email protected]>
Mon, 26 May 2014 19:55:08 +0000 (21:55 +0200)
committerMartin Schwidefsky <[email protected]>
Wed, 28 May 2014 08:38:59 +0000 (10:38 +0200)
The IRB might be 96 bytes if the extended-I/O-measurement facility is
used. This feature is currently not used by Linux, but struct irb
already has the emw defined. So let's make the irb in lowcore match the
size of the internal data structure to be future proof.
We also have to add a pad, to correctly align the paste.

The bigger irb field also circumvents a bug in some QEMU versions that
always write the emw field on test subchannel and therefore destroy the
paste definitions of this CPU. Running under these QEMU version broke
some timing functions in the VDSO and all users of these functions,
e.g. some JREs.

Signed-off-by: Christian Borntraeger <[email protected]>
Signed-off-by: Martin Schwidefsky <[email protected]>
Cc: Heiko Carstens <[email protected]>
Cc: Sebastian Ott <[email protected]>
Cc: Cornelia Huck <[email protected]>
Cc: [email protected]
arch/s390/include/asm/lowcore.h

index 26e03ce27c50288374b1a9f79a4e757fdf312c46..a406f24737cdafda51c6b750da2f220c31263b6d 100644 (file)
@@ -144,9 +144,9 @@ struct _lowcore {
        __u32   spinlock_lockval;               /* 0x02fc */
 
        /* Interrupt response block */
-       __u8    irb[64];                        /* 0x0300 */
+       __u8    irb[96];                        /* 0x0300 */
 
-       __u8    pad_0x0340[0x0e00-0x0340];      /* 0x0340 */
+       __u8    pad_0x0360[0x0e00-0x0360];      /* 0x0360 */
 
        /*
         * 0xe00 contains the address of the IPL Parameter Information
@@ -293,12 +293,13 @@ struct _lowcore {
        __u8    pad_0x03a0[0x0400-0x03a4];      /* 0x03a4 */
 
        /* Interrupt response block. */
-       __u8    irb[64];                        /* 0x0400 */
+       __u8    irb[96];                        /* 0x0400 */
+       __u8    pad_0x0460[0x0480-0x0460];      /* 0x0460 */
 
        /* Per cpu primary space access list */
-       __u32   paste[16];                      /* 0x0440 */
+       __u32   paste[16];                      /* 0x0480 */
 
-       __u8    pad_0x0480[0x0e00-0x0480];      /* 0x0480 */
+       __u8    pad_0x04c0[0x0e00-0x04c0];      /* 0x04c0 */
 
        /*
         * 0xe00 contains the address of the IPL Parameter Information
This page took 0.060193 seconds and 4 git commands to generate.