Linux s390 Architecture development
 help / color / mirror / Atom feed
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?

      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