All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gregory CLEMENT <gregory.clement@bootlin.com>
To: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Cc: torvalds@linux-foundation.org, linux-mips@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [GIT PULL] MIPS fixes for v6.18
Date: Tue, 25 Nov 2025 11:10:49 +0100	[thread overview]
Message-ID: <87tsyi8lsm.fsf@BLaptop.bootlin.com> (raw)
In-Reply-To: <aSTT0gbH-NkDOH8A@alpha.franken.de>

Hello Thomas,

> On Mon, Nov 24, 2025 at 04:46:44PM +0100, Gregory CLEMENT wrote:
>> Hello Thomas,
>> 
>> > The following changes since commit e9a6fb0bcdd7609be6969112f3fbfcce3b1d4a7c:
>> >
>> >   Linux 6.18-rc5 (2025-11-09 15:10:19 -0800)
>> >
>> > are available in the Git repository at:
>> >
>> >   git://git.kernel.org/pub/scm/linux/kernel/git/mips/linux.git/ tags/mips-fixes_6.18_1
>> >
>> > for you to fetch changes up to 14b46ba92bf547508b4a49370c99aba76cb53b53:
>> >
>> >   MIPS: kernel: Fix random segmentation faults (2025-11-21 13:24:05 +0100)
>> >
>> > ----------------------------------------------------------------
>> > - Fix CPU type in DT for econet
>> > - Fix for Malta PCI MMIO breakage for SOC-it
>> > - Fix TLB shutdown caused by iniital uniquification
>> > - Fix random seg faults
>> >
>> > ----------------------------------------------------------------
>> > Aleksander Jan Bajkowski (1):
>> >       mips: dts: econet: fix EN751221 core type
>> >
>> > Maciej W. Rozycki (2):
>> >       MIPS: Malta: Fix !EVA SOC-it PCI MMIO
>> >       MIPS: mm: Prevent a TLB shutdown on initial uniquification
>> 
>> Today, the kernel v6.18-rc7 no longer boots on EyeQ5 and EyeQ6H (MIPS
>> I6500)-based boards. After a git bisect between v6.18-rc6 and v6.18-rc7,
>> we found that the culprit is the commit "MIPS: mm: Prevent a TLB
>> shutdown on initial uniquification".
>> 
>> Here is the log from a vanilla v6.18-rc7:
>
> [..]
>
> I guess your cores have more than 64 TLB entries. The Octeon CPU has
> 256 entries... Patch below fixes the issue there.
>

I have applied this patch and tested it on EyeQ5 and EyeQ6H-based
boards, and it booted successfully.

you can add my

Tested-by: Gregory CLEMENT <gregory.clement@bootlin.com>

Thanks,

Gregory

> Thomas.
>
> From b74abcb21103519ae48726c715d39a6aa3f57462 Mon Sep 17 00:00:00 2001
> From: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
> Date: Mon, 24 Nov 2025 22:46:43 +0100
> Subject: [PATCH] MIPS: mm: kmalloc tlb_vpn array to avoid stack overflow
>
> Latest MIPS cores could have much more than 64 TLB entries, therefore
> allocate array for unification instead of placing a too small array
> on stack.
>
> Fixes: 9f048fa48740 ("MIPS: mm: Prevent a TLB shutdown on initial uniquification")
> Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
> ---
>  arch/mips/mm/tlb-r4k.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/arch/mips/mm/tlb-r4k.c b/arch/mips/mm/tlb-r4k.c
> index 3facf7cc6c7d..577055b50c41 100644
> --- a/arch/mips/mm/tlb-r4k.c
> +++ b/arch/mips/mm/tlb-r4k.c
> @@ -524,15 +524,19 @@ static int r4k_vpn_cmp(const void *a, const void *b)
>   */
>  static void r4k_tlb_uniquify(void)
>  {
> -	unsigned long tlb_vpns[1 << MIPS_CONF1_TLBS_SIZE];
>  	int tlbsize = current_cpu_data.tlbsize;
>  	int start = num_wired_entries();
> +	unsigned long *tlb_vpns;
>  	unsigned long vpn_mask;
>  	int cnt, ent, idx, i;
>  
>  	vpn_mask = GENMASK(cpu_vmbits - 1, 13);
>  	vpn_mask |= IS_ENABLED(CONFIG_64BIT) ? 3ULL << 62 : 1 << 31;
>  
> +	tlb_vpns = kmalloc_array(tlbsize, sizeof(unsigned long), GFP_KERNEL);
> +	if (!tlb_vpns)
> +		return; /* pray local_flush_tlb_all() is good enough */
> +
>  	htw_stop();
>  
>  	for (i = start, cnt = 0; i < tlbsize; i++, cnt++) {
> @@ -585,6 +589,7 @@ static void r4k_tlb_uniquify(void)
>  	tlbw_use_hazard();
>  	htw_start();
>  	flush_micro_tlb();
> +	kfree(tlb_vpns);
>  }
>  
>  /*
> -- 
> 2.43.0
>
> -- 
> Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
> good idea.                                                [ RFC1925, 2.3 ]

-- 
Grégory CLEMENT, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

  parent reply	other threads:[~2025-11-25 10:10 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-22 20:47 [GIT PULL] MIPS fixes for v6.18 Thomas Bogendoerfer
2025-11-22 23:55 ` pr-tracker-bot
2025-11-24 15:46 ` Gregory CLEMENT
2025-11-24 21:06   ` Thomas Bogendoerfer
2025-11-24 21:53   ` Thomas Bogendoerfer
2025-11-25  7:32     ` Maciej W. Rozycki
2025-11-25 11:00       ` Thomas Bogendoerfer
2025-11-25 14:25         ` Maciej W. Rozycki
2025-11-25 10:10     ` Gregory CLEMENT [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-11-29 20:55 Thomas Bogendoerfer
2025-11-29 23:23 ` pr-tracker-bot

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=87tsyi8lsm.fsf@BLaptop.bootlin.com \
    --to=gregory.clement@bootlin.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mips@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    --cc=tsbogend@alpha.franken.de \
    /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.