From: "Alex Bennée" <alex.bennee@linaro.org>
To: "Arnd Bergmann" <arnd@arndb.de>
Cc: "Naresh Kamboju" <naresh.kamboju@linaro.org>,
"open list" <linux-kernel@vger.kernel.org>,
"Linux ARM" <linux-arm-kernel@lists.infradead.org>,
lkft-triage@lists.linaro.org,
"Linux Regressions" <regressions@lists.linux.dev>,
qemu-devel@nongnu.org, "Mark Brown" <broonie@kernel.org>,
"Catalin Marinas" <catalin.marinas@arm.com>,
"Aishwarya TCV" <Aishwarya.TCV@arm.com>,
"Peter Maydell" <peter.maydell@linaro.org>,
"Anders Roxell" <anders.roxell@linaro.org>,
"Vincenzo Frascino" <vincenzo.frascino@arm.com>,
"Thomas Gleixner" <tglx@linutronix.de>,
"Geert Uytterhoeven" <geert@linux-m68k.org>
Subject: Re: Qemu v9.0.2: Boot failed qemu-arm with Linux next-20241017 tag.
Date: Wed, 23 Oct 2024 20:47:03 +0100 [thread overview]
Message-ID: <87bjzalhzc.fsf@draig.linaro.org> (raw)
In-Reply-To: <4730e562-7d14-4f12-897a-e23783d094af@app.fastmail.com> (Arnd Bergmann's message of "Wed, 23 Oct 2024 16:24:43 +0000")
"Arnd Bergmann" <arnd@arndb.de> writes:
> On Sun, Oct 20, 2024, at 17:39, Naresh Kamboju wrote:
>> On Fri, 18 Oct 2024 at 12:35, Naresh Kamboju <naresh.kamboju@linaro.org> wrote:
>>>
>>> The QEMU-ARMv7 boot has failed with the Linux next-20241017 tag.
>>> The boot log is incomplete, and no kernel crash was detected.
>>> However, the system did not proceed far enough to reach the login prompt.
>>>
>
>> Anders bisected this boot regressions and found,
>> # first bad commit:
>> [efe8419ae78d65e83edc31aad74b605c12e7d60c]
>> vdso: Introduce vdso/page.h
>>
>> We are investigating the reason for boot failure due to this commit.
>
> Anders and I did the analysis on this, the problem turned out
> to be the early_init_dt_add_memory_arch() function in
> drivers/of/fdt.c, which does bitwise operations on PAGE_MASK
> with a 'u64' instead of phys_addr_t:
>
> void __init __weak early_init_dt_add_memory_arch(u64 base, u64 size)
> {
> const u64 phys_offset = MIN_MEMBLOCK_ADDR;
>
> if (size < PAGE_SIZE - (base & ~PAGE_MASK)) {
> pr_warn("Ignoring memory block 0x%llx - 0x%llx\n",
> base, base + size);
> return;
> }
>
> if (!PAGE_ALIGNED(base)) {
> size -= PAGE_SIZE - (base & ~PAGE_MASK);
> base = PAGE_ALIGN(base);
> }
>
> On non-LPAE arm32, this broke the existing behavior for
> large 32-bit memory sizes. The obvious fix is to change
> back the PAGE_MASK definition for 32-bit arm to a signed
> number.
Agreed. However I think we were masking a calling issue that:
/* Actual RAM size depends on initial RAM and device memory settings */
[VIRT_MEM] = { GiB, LEGACY_RAMLIMIT_BYTES },
And:
-m 4G
make no sense with no ARM_LPAE (which the kernel didn't have) but if you
pass -machine virt,gic-version=3,highmem=off (the default changed awhile
back) you will get a warning:
qemu-system-arm: Addressing limited to 32 bits, but memory exceeds it by 1073741824 bytes
but I guess that didn't trigger for some reason before this patch?
> mips32, ppc32 and hexagon had the same definition as
> well, so I think we should change at least those in order
> to restore the previous behavior in case they are affected
> by the same bug (or a different one).
>
> x86-32 and arc git flipped the other way by the patch,
> from unsigned to signed, when CONFIG_ARC_HAS_PAE40
> or CONFIG_X86_PAE are set. I think we should keep
> the 'signed' behavior as this was a bugfix by itself,
> but we may want to change arc and x86-32 with short
> phys_addr_t the same way for consistency.
>
> On csky, m68k, microblaze, nios2, openrisc, parisc32,
> riscv32, sh, sparc32, um and xtensa, we've always used
> the 'unsigned' PAGE_MASK, and there is no 64-bit
> phys_addr_t, so I would lean towards staying with
> 'unsigned' in order to not introduce a regression.
> Alternatively we could choose to go with the 'signed'
> version on all 32-bit architectures unconditionally
> for consistency. Any preferences?
>
> Arnd
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
next prev parent reply other threads:[~2024-10-23 20:11 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-18 7:05 Qemu v9.0.2: Boot failed qemu-arm with Linux next-20241017 tag Naresh Kamboju
2024-10-18 10:01 ` Alex Bennée
2024-10-20 17:39 ` Naresh Kamboju
2024-10-20 18:47 ` Richard Henderson
2024-10-23 16:24 ` Arnd Bergmann
2024-10-23 19:47 ` Alex Bennée [this message]
2024-10-24 8:08 ` Arnd Bergmann
2024-10-24 9:27 ` Peter Maydell
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=87bjzalhzc.fsf@draig.linaro.org \
--to=alex.bennee@linaro.org \
--cc=Aishwarya.TCV@arm.com \
--cc=anders.roxell@linaro.org \
--cc=arnd@arndb.de \
--cc=broonie@kernel.org \
--cc=catalin.marinas@arm.com \
--cc=geert@linux-m68k.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lkft-triage@lists.linaro.org \
--cc=naresh.kamboju@linaro.org \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=regressions@lists.linux.dev \
--cc=tglx@linutronix.de \
--cc=vincenzo.frascino@arm.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.