On 1/9/26 1:02 PM, Thomas Huth wrote:
> On 08/12/2025 22.32, Zhuoying Cai wrote:
>> Define a memory space for both IPL Parameter Block (IPLB) and
>> IPL Information Report Block (IIRB) since IIRB is stored immediately
>> following IPLB.
>>
>> Convert IPLB to pointer and it points to the start of the defined memory
>> space.
>> IIRB points to the end of IPLB.
>>
>> Signed-off-by: Zhuoying Cai <[email protected]>
>> ---
>> pc-bios/s390-ccw/iplb.h | 13 +++++++++++--
>> pc-bios/s390-ccw/jump2ipl.c | 6 +++---
>> pc-bios/s390-ccw/main.c | 34 +++++++++++++++++++---------------
>> pc-bios/s390-ccw/netmain.c | 8 ++++----
>> 4 files changed, 37 insertions(+), 24 deletions(-)
>>
>> diff --git a/pc-bios/s390-ccw/iplb.h b/pc-bios/s390-ccw/iplb.h
>> index cc3ecc69e5..a0f58d125c 100644
>> --- a/pc-bios/s390-ccw/iplb.h
>> +++ b/pc-bios/s390-ccw/iplb.h
>> @@ -20,7 +20,7 @@
>> #include <string.h>
>>
>> extern QemuIplParameters qipl;
>> -extern IplParameterBlock iplb __attribute__((__aligned__(PAGE_SIZE)));
>> +extern IplParameterBlock *iplb;
>> extern bool have_iplb;
>>
>> struct IplInfoReportBlockHeader {
>> @@ -85,6 +85,15 @@ struct IplInfoReportBlock {
>> };
>> typedef struct IplInfoReportBlock IplInfoReportBlock;
>>
>> +struct IplBlocks {
>> + IplParameterBlock iplb;
>> + IplInfoReportBlock iirb;
>> +};
>> +typedef struct IplBlocks IplBlocks;
>> +
>> +/* extern only allowed in header file */
>> +extern IplBlocks ipl_data __attribute__((__aligned__(PAGE_SIZE)));
>
> Not sure ... does that __attribute__ have any effects for "extern"
> declarations?
>
Thanks for pointing this out. The __attribute__ on an extern declaration
doesn't have any effect. I'll move the __attribute__ on the definition
and drop it from the extern declaration.
>> diff --git a/pc-bios/s390-ccw/main.c b/pc-bios/s390-ccw/main.c
>> index 76bf743900..c9328f1c51 100644
>> --- a/pc-bios/s390-ccw/main.c
>> +++ b/pc-bios/s390-ccw/main.c
>> @@ -22,7 +22,9 @@
>> static SubChannelId blk_schid = { .one = 1 };
>> static char loadparm_str[LOADPARM_LEN + 1];
>> QemuIplParameters qipl;
>> -IplParameterBlock iplb __attribute__((__aligned__(PAGE_SIZE)));
>> +/* Ensure that IPLB and IIRB are page aligned and sequential in memory */
>> +IplBlocks ipl_data;
>
> I think you definitely want to have an
> __attribute__((__aligned__(PAGE_SIZE))) after the ipl_data declaration here!
>
> Thomas
>