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
> 



Reply via email to