Re: git: b827afb9e3a7 - releng/14.1 - Revert "intrng: switch from MAXCPU to mp_ncpus"
Date: Thu, 16 May 2024 00:58:54 UTC
> On May 16, 2024, at 12:35 AM, Mike Karels <karels@FreeBSD.org> wrote:
>
> The branch releng/14.1 has been updated by karels:
>
> URL: https://cgit.FreeBSD.org/src/commit/?id=b827afb9e3a7aaaa2da7d101c46881c646d4df2f
>
> commit b827afb9e3a7aaaa2da7d101c46881c646d4df2f
> Author: Mike Karels <karels@FreeBSD.org>
> AuthorDate: 2024-05-14 22:44:58 +0000
> Commit: Mike Karels <karels@FreeBSD.org>
> CommitDate: 2024-05-15 16:35:38 +0000
>
> Revert "intrng: switch from MAXCPU to mp_ncpus"
>
> This reverts commit b4d11915c73f199501672b278be86e1f63790036.
> This is a direct commit to stable/14. The change breaks booting
> on older Raspberry Pi 4's, although that works on main. The cause
Emm, I think this revert affects other arch also. Does this have large impact ? If yes, and only
older Paspberry Pi 4 is to be fixed, why not add conditional compile #if directive for Paspberry Pi 4
instead ?
For amd64 the MAXCPU has been bumped from 256 to 1024 [1]. That is large IMO.
1. 9051987e40c5 amd64: Bump MAXCPU to 1024 (from 256)
> is unknown. The original commit should be redone on stable/14
> if/when it catches up with main.
>
> (cherry picked from commit 3e627553bbd791a4f73eaeea2c2d795fd4e0ee70)
>
> Approved-by: re (cperciva)
> ---
> sys/kern/subr_intr.c | 22 +++++++++++-----------
> 1 file changed, 11 insertions(+), 11 deletions(-)
>
> diff --git a/sys/kern/subr_intr.c b/sys/kern/subr_intr.c
> index 49fe20cdc890..6535c42f2404 100644
> --- a/sys/kern/subr_intr.c
> +++ b/sys/kern/subr_intr.c
> @@ -175,11 +175,11 @@ intr_irq_init(void *dummy __unused)
>
> /*
> * - 2 counters for each I/O interrupt.
> - * - mp_maxid + 1 counters for each IPI counters for SMP.
> + * - MAXCPU counters for each IPI counters for SMP.
> */
> nintrcnt = intr_nirq * 2;
> #ifdef SMP
> - nintrcnt += INTR_IPI_COUNT * (mp_maxid + 1);
> + nintrcnt += INTR_IPI_COUNT * MAXCPU;
> #endif
>
> intrcnt = mallocarray(nintrcnt, sizeof(u_long), M_INTRNG,
> @@ -312,18 +312,18 @@ intr_ipi_setup_counters(const char *name)
> mtx_lock(&isrc_table_lock);
>
> /*
> - * We should never have a problem finding mp_maxid + 1 contiguous
> - * counters, in practice. Interrupts will be allocated sequentially
> - * during boot, so the array should fill from low to high index. Once
> - * reserved, the IPI counters will never be released. Similarly, we
> - * will not need to allocate more IPIs once the system is running.
> + * We should never have a problem finding MAXCPU contiguous counters,
> + * in practice. Interrupts will be allocated sequentially during boot,
> + * so the array should fill from low to high index. Once reserved, the
> + * IPI counters will never be released. Similarly, we will not need to
> + * allocate more IPIs once the system is running.
> */
> - bit_ffc_area(intrcnt_bitmap, nintrcnt, mp_maxid + 1, &index);
> + bit_ffc_area(intrcnt_bitmap, nintrcnt, MAXCPU, &index);
> if (index == -1)
> panic("Failed to allocate %d counters. Array exhausted?",
> - mp_maxid + 1);
> - bit_nset(intrcnt_bitmap, index, index + mp_maxid);
> - for (i = 0; i < mp_maxid + 1; i++) {
> + MAXCPU);
> + bit_nset(intrcnt_bitmap, index, index + MAXCPU - 1);
> + for (i = 0; i < MAXCPU; i++) {
> snprintf(str, INTRNAME_LEN, "cpu%d:%s", i, name);
> intrcnt_setname(str, index + i);
> }
Best regards,
Zhenlei