Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 19 Jan 2021 10:41:21 -0800
From:      John Baldwin <jhb@FreeBSD.org>
To:        Jessica Clarke <jrtc27@freebsd.org>, Oleksandr Tymoshenko <gonzo@FreeBSD.org>
Cc:        "src-committers@freebsd.org" <src-committers@FreeBSD.org>, "dev-commits-src-all@freebsd.org" <dev-commits-src-all@FreeBSD.org>, "dev-commits-src-main@freebsd.org" <dev-commits-src-main@FreeBSD.org>
Subject:   Re: git: 248f0cabca75 - main - make maximum interrupt number tunable on ARM, ARM64, MIPS, and RISC-V
Message-ID:  <f3f34011-90ba-f9d5-f0e2-0c58f382108d@FreeBSD.org>
In-Reply-To: <8FE79D0F-602A-4C98-893A-806E72ED991B@freebsd.org>
References:  <202101190036.10J0aj3O033256@gitrepo.freebsd.org> <8FE79D0F-602A-4C98-893A-806E72ED991B@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On 1/19/21 8:43 AM, Jessica Clarke wrote:
> On 19 Jan 2021, at 00:36, Oleksandr Tymoshenko <gonzo@FreeBSD.org> wrote:
>> @@ -142,21 +143,15 @@ static bool irq_assign_cpu = false;
>> #endif
>> #endif
>>
>> -/*
>> - * - 2 counters for each I/O interrupt.
>> - * - MAXCPU counters for each IPI counters for SMP.
>> - */
>> -#ifdef SMP
>> -#define INTRCNT_COUNT   (NIRQ * 2 + INTR_IPI_COUNT * MAXCPU)
>> -#else
>> -#define INTRCNT_COUNT   (NIRQ * 2)
>> -#endif
>> +int intr_nirq = NIRQ;
>> +SYSCTL_UINT(_machdep, OID_AUTO, nirq, CTLFLAG_RDTUN, &intr_nirq, 0,
>> +    "Number of IRQs");
> 
> Unsigned integer, given the SYSCTL_UINT?
> 
> What's stopping us from dynamically resizing rather than forcing the
> user to use a tunable (which also means that, in practice, the limit
> will remain unchanged, because you want GENERIC kernels to work out of
> the box)?

For x86 (and probably the same here), the biggest headache is that there
is a dynamically allocated array indexed by IRQ value at interrupt
invocation time.  Currently it uses no locks since the value of the
pointer is set during boot time and then never changes.  Making it
dynamic would require allowing that pointer to change and dealing with
what that entails in a very hot path.  Generally speaking, the majority
of interrupts used in a given system are allocated during boot and not
by hotplug devices added post-boot, so there is also not a lot of utility
in having this run-time tunable vs a boot-time tunable.

-- 
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?f3f34011-90ba-f9d5-f0e2-0c58f382108d>