Linux s390 Architecture development
 help / color / mirror / Atom feed
From: Joseph Cathcart <josephc@linux.ibm.com>
To: Ilya Leoshkevich <iii@linux.ibm.com>, linux-s390@vger.kernel.org
Cc: eoin.mcnamara@ibm.com, Christian Brauner <brauner@kernel.org>,
	Alexander Graf <graf@amazon.com>,
	cathcartj08@gmail.com
Subject: Re: [PATCH v4] s390/iomem: register initrd as an iomem resource when retain_initrd is set
Date: Fri, 28 Aug 2026 14:57:58 +0100	[thread overview]
Message-ID: <da7ac4e9-4da0-489a-9bf5-f37c90bee826@linux.ibm.com> (raw)
In-Reply-To: <6f66956a-9793-4f96-b973-6e5875e5e433@linux.ibm.com>

On 8/19/26 7:40 AM, Ilya Leoshkevich wrote:

>
>
> On 8/18/26 19:57, Joseph Cathcart wrote:
>> Currently, /proc/iomem contains no reference to initrd memory, even
>> when initrd is retained and still held in RAM. This makes the memory
>> ranges invisible from userspace, and unusable to programs such as
>> kexec. (A sysfs bin file is created for initrd, but this doesn't
>> help programs which need the explicit memory ranges)
>>
>> Add initrd to standard_resources[] unconditionally. Add initrd as a
>> child of iomem_resources only if retain_initrd is specified.
>>
>> strstr() could match substrings like "retain_initrd=0" or
>> "no_retain_initrd", but this is how PPC chose to check for
>> "retain_initrd" param too. (arch/powerpc/kexec/ranges.c)
>>
>> Signed-off-by: Joseph Cathcart <josephc@linux.ibm.com>
>> ---
>>   arch/s390/kernel/setup.c | 22 ++++++++++++++++++++++
>>   1 file changed, 22 insertions(+)
>
> Checkpatch complains:
>
> $ b4 shazam 
> 'https://lore.kernel.org/all/20260818175755.3520-1-josephc@linux.ibm.com/'
>
> $ git format-patch -1 --stdout | ./scripts/checkpatch.pl -
> ERROR: trailing whitespace
> #58: FILE: arch/s390/kernel/setup.c:513:
> +^I$
>
>> diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c
>> index b60284328fe3..373e54ed7519 100644
>> --- a/arch/s390/kernel/setup.c
>> +++ b/arch/s390/kernel/setup.c
>> @@ -481,15 +481,22 @@ static struct resource bss_resource = {
>>       .flags = IORESOURCE_BUSY | IORESOURCE_SYSTEM_RAM,
>>   };
>>   +static struct resource initrd_resource = {
>> +    .name = "initrd",
>> +    .flags = IORESOURCE_BUSY | IORESOURCE_SYSTEM_RAM,
>> +};
>> +
>>   static struct resource __initdata *standard_resources[] = {
>>       &code_resource,
>>       &data_resource,
>>       &bss_resource,
>> +    &initrd_resource,
>>   };
>>     static void __init setup_resources(void)
>>   {
>>       struct resource *res, *std_res, *sub_res;
>> +    bool retain_initrd = false;
>>       phys_addr_t start, end;
>>       int j;
>>       u64 i;
>> @@ -501,6 +508,19 @@ static void __init setup_resources(void)
>>       bss_resource.start = __pa_symbol(__bss_start);
>>       bss_resource.end = __pa_symbol(__bss_stop) - 1;
>>   +    if (IS_ENABLED(CONFIG_BLK_DEV_INITRD)) {
>> +        unsigned long initrd_addr, initrd_size;
>> +
>> +        if (strstr(boot_command_line, "retain_initrd"))
>> +            retain_initrd = true;
>> +        if (retain_initrd && get_physmem_reserved(RR_INITRD, 
>> &initrd_addr, &initrd_size)) {
>> +            initrd_resource.start = initrd_addr;
>> +            initrd_resource.end = initrd_resource.start + 
>> initrd_size - 1;
>> +        } else {
>> +            retain_initrd = false;
>> +        }
>> +    }
>> +
>>       for_each_mem_range(i, &start, &end) {
>>           res = memblock_alloc_or_panic(sizeof(*res), 8);
>>           res->flags = IORESOURCE_BUSY | IORESOURCE_SYSTEM_RAM;
>> @@ -517,6 +537,8 @@ static void __init setup_resources(void)
>>             for (j = 0; j < ARRAY_SIZE(standard_resources); j++) {
>>               std_res = standard_resources[j];
>> +            if (std_res == &initrd_resource && !retain_initrd)
>> +                continue;
>>               if (std_res->start < res->start ||
>>                   std_res->start > res->end)
>>                   continue;
>
> Cc: Christian and Alexander.
>
> I wonder if it would make sense to move initrd resource creation to
> do_populate_rootfs(), right after /sys/firmware/initrd creation,
> enabling this feature on all architectures? 


As I will no longer have access to my IBM email address after today, I 
will be continuing

my contributions through my personal email address "cathcartj08@gmail.com"


      reply	other threads:[~2026-08-28 13:58 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-18 17:57 [PATCH v4] s390/iomem: register initrd as an iomem resource when retain_initrd is set Joseph Cathcart
2026-08-18 18:08 ` sashiko-bot
2026-08-19  6:40 ` Ilya Leoshkevich
2026-08-28 13:57   ` Joseph Cathcart [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=da7ac4e9-4da0-489a-9bf5-f37c90bee826@linux.ibm.com \
    --to=josephc@linux.ibm.com \
    --cc=brauner@kernel.org \
    --cc=cathcartj08@gmail.com \
    --cc=eoin.mcnamara@ibm.com \
    --cc=graf@amazon.com \
    --cc=iii@linux.ibm.com \
    --cc=linux-s390@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox