diff --git a/include/boot/loaders_layout.h b/include/boot/loaders_layout.h index 6426e555..9ae55303 100644 --- a/include/boot/loaders_layout.h +++ b/include/boot/loaders_layout.h @@ -33,6 +33,7 @@ #define STAGE2_DUMPER_SIZE_V1 _AC(0x1000, UL) #define STAGE2_DUMPER_SIZE_V2 _AC(0x2000, UL) #define STAGE2_DUMPER_SIZE_V3 _AC(0x3000, UL) +#define STAGE2_DUMPER_SIZE_ZLIB _AC(0x8000, UL) #define STAGE3_ENTRY _AC(0xa000, UL) diff --git a/zdump/df_s390.c b/zdump/df_s390.c index d2831464..92dfa9c9 100644 --- a/zdump/df_s390.c +++ b/zdump/df_s390.c @@ -160,7 +160,10 @@ void df_s390_dumper_read(struct zg_fh *fh, int blk_size, dumper->size = STAGE2_DUMPER_SIZE_V1; break; case 2: - dumper->size = STAGE2_DUMPER_SIZE_V2; + if (strncmp(dumper->magic, DF_S390_DUMPER_MAGIC_EXT, 7) == 0) + dumper->size = STAGE2_DUMPER_SIZE_ZLIB; + else + dumper->size = STAGE2_DUMPER_SIZE_V2; break; case 3: default: