From: Ilya Leoshkevich <iii@linux.ibm.com>
To: Joseph Cathcart <josephc@linux.ibm.com>, linux-s390@vger.kernel.org
Cc: eoin.mcnamara@ibm.com, Christian Brauner <brauner@kernel.org>,
Alexander Graf <graf@amazon.com>
Subject: Re: [PATCH v4] s390/iomem: register initrd as an iomem resource when retain_initrd is set
Date: Wed, 19 Aug 2026 08:40:13 +0200 [thread overview]
Message-ID: <6f66956a-9793-4f96-b973-6e5875e5e433@linux.ibm.com> (raw)
In-Reply-To: <20260818175755.3520-1-josephc@linux.ibm.com>
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?
prev parent reply other threads:[~2026-08-19 6:40 UTC|newest]
Thread overview: 3+ 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 [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=6f66956a-9793-4f96-b973-6e5875e5e433@linux.ibm.com \
--to=iii@linux.ibm.com \
--cc=brauner@kernel.org \
--cc=eoin.mcnamara@ibm.com \
--cc=graf@amazon.com \
--cc=josephc@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