Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 16 May 2024 09:56:41 +0800
From:      Zhenlei Huang <zlei@FreeBSD.org>
To:        Mike Karels <karels@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-branches@freebsd.org" <dev-commits-src-branches@FreeBSD.org>
Subject:   Re: git: b827afb9e3a7 - releng/14.1 - Revert "intrng: switch from MAXCPU to mp_ncpus"
Message-ID:  <93753D00-CA46-4777-AB98-6C2A30906DB7@FreeBSD.org>
In-Reply-To: <68191B25-A5CB-48CE-BD17-F5E7F95CF052@freebsd.org>
References:  <202405151635.44FGZxAS021246@gitrepo.freebsd.org> <88AD738C-4E2C-430D-8AE1-D1C7A633B977@FreeBSD.org> <68191B25-A5CB-48CE-BD17-F5E7F95CF052@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

[-- Attachment #1 --]


> On May 16, 2024, at 9:23 AM, Mike Karels <karels@freebsd.org> wrote:
> 
> On 15 May 2024, at 19:58, Zhenlei Huang wrote:
> 
>>> 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 ?
> 
> That won't help with installations.  We use one GENERIC config for arm64.  On
> the other hand, arm64 has 32K counters for interrupts and only 1K for IPIs
> (with this reverted and MAXCPU at 1024), so this isn't that big an increment.
> arm has MAXCPU of 4; riscv has 16.  This reversion makes the outcome the same
> as on 14.0.

Thanks for the explanation.

> 
>> For amd64 the MAXCPU has been bumped from 256 to 1024 [1]. That is large IMO.
> 
> This change does not affect amd64 or i386, just systems with INTRNG (arm,
> arm64, and riscv).  So the change is only significant on arm64.

Sorry I was not aware that INTRNG is arm, arm64 and riscv only.

> 
> 		Mike
> 
>> 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



[-- Attachment #2 --]
<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On May 16, 2024, at 9:23 AM, Mike Karels &lt;<a href="mailto:karels@freebsd.org" class="">karels@freebsd.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><meta charset="UTF-8" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">On 15 May 2024, at 19:58, Zhenlei Huang wrote:</span><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" style="font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" class="">On May 16, 2024, at 12:35 AM, Mike Karels &lt;<a href="mailto:karels@FreeBSD.org" class="">karels@FreeBSD.org</a>&gt; wrote:<br class=""><br class="">The branch releng/14.1 has been updated by karels:<br class=""><br class="">URL: <a href="https://cgit.FreeBSD.org/src/commit/?id=b827afb9e3a7aaaa2da7d101c46881c646d4df2f" class="">https://cgit.FreeBSD.org/src/commit/?id=b827afb9e3a7aaaa2da7d101c46881c646d4df2f</a><br class=""><br class="">commit b827afb9e3a7aaaa2da7d101c46881c646d4df2f<br class="">Author: &nbsp;&nbsp;&nbsp;&nbsp;Mike Karels &lt;<a href="mailto:karels@FreeBSD.org" class="">karels@FreeBSD.org</a>&gt;<br class="">AuthorDate: 2024-05-14 22:44:58 +0000<br class="">Commit: &nbsp;&nbsp;&nbsp;&nbsp;Mike Karels &lt;<a href="mailto:karels@FreeBSD.org" class="">karels@FreeBSD.org</a>&gt;<br class="">CommitDate: 2024-05-15 16:35:38 +0000<br class=""><br class="">&nbsp;&nbsp;Revert "intrng: switch from MAXCPU to mp_ncpus"<br class=""><br class="">&nbsp;&nbsp;This reverts commit b4d11915c73f199501672b278be86e1f63790036.<br class="">&nbsp;&nbsp;This is a direct commit to stable/14. &nbsp;The change breaks booting<br class="">&nbsp;&nbsp;on older Raspberry Pi 4's, although that works on main. &nbsp;The cause<br class=""></blockquote><br class="">Emm, I think this revert affects other arch also. Does this have large impact ? If yes, and only<br class="">older Paspberry Pi 4 is to be fixed, why not add conditional compile #if directive for Paspberry Pi 4<br class="">instead ?<br class=""></blockquote><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">That won't help with installations. &nbsp;We use one GENERIC config for arm64. &nbsp;On</span><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">the other hand, arm64 has 32K counters for interrupts and only 1K for IPIs</span><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">(with this reverted and MAXCPU at 1024), so this isn't that big an increment.</span><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">arm has MAXCPU of 4; riscv has 16. &nbsp;This reversion makes the outcome the same</span><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">as on 14.0.</span><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""></div></blockquote><div><br class=""></div>Thanks for the explanation.</div><div><br class=""><blockquote type="cite" class=""><div class=""><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" style="font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">For amd64 the MAXCPU has been bumped from 256 to 1024 [1]. That is large IMO.<br class=""></blockquote><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">This change does not affect amd64 or i386, just systems with INTRNG (arm,</span><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">arm64, and riscv). &nbsp;So the change is only significant on arm64.</span><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""></div></blockquote><div><br class=""></div><div>Sorry I was not aware that INTRNG is arm, arm64 and riscv only.</div><br class=""><blockquote type="cite" class=""><div class=""><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span class="Apple-tab-span" style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;">	</span><span class="Apple-tab-span" style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: pre; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;">	</span><span style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Mike</span><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br style="caret-color: rgb(0, 0, 0); font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" style="font-family: Menlo-Regular; font-size: 13px; font-style: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class="">1. 9051987e40c5 amd64: Bump MAXCPU to 1024 (from 256)<br class=""><br class=""><blockquote type="cite" class="">&nbsp;&nbsp;is unknown. &nbsp;The original commit should be redone on stable/14<br class="">&nbsp;&nbsp;if/when it catches up with main.<br class=""><br class="">&nbsp;&nbsp;(cherry picked from commit 3e627553bbd791a4f73eaeea2c2d795fd4e0ee70)<br class=""><br class="">&nbsp;&nbsp;Approved-by: &nbsp;&nbsp;&nbsp;re (cperciva)<br class="">---<br class="">sys/kern/subr_intr.c | 22 +++++++++++-----------<br class="">1 file changed, 11 insertions(+), 11 deletions(-)<br class=""><br class="">diff --git a/sys/kern/subr_intr.c b/sys/kern/subr_intr.c<br class="">index 49fe20cdc890..6535c42f2404 100644<br class="">--- a/sys/kern/subr_intr.c<br class="">+++ b/sys/kern/subr_intr.c<br class="">@@ -175,11 +175,11 @@ intr_irq_init(void *dummy __unused)<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">	</span>/*<br class=""><span class="Apple-tab-span" style="white-space: pre;">	</span><span class="Apple-converted-space">&nbsp;</span>* - 2 counters for each I/O interrupt.<br class="">-<span class="Apple-tab-span" style="white-space: pre;">	</span><span class="Apple-converted-space">&nbsp;</span>* - mp_maxid + 1 counters for each IPI counters for SMP.<br class="">+<span class="Apple-tab-span" style="white-space: pre;">	</span><span class="Apple-converted-space">&nbsp;</span>* - MAXCPU counters for each IPI counters for SMP.<br class=""><span class="Apple-tab-span" style="white-space: pre;">	</span><span class="Apple-converted-space">&nbsp;</span>*/<br class=""><span class="Apple-tab-span" style="white-space: pre;">	</span>nintrcnt = intr_nirq * 2;<br class="">#ifdef SMP<br class="">-<span class="Apple-tab-span" style="white-space: pre;">	</span>nintrcnt += INTR_IPI_COUNT * (mp_maxid + 1);<br class="">+<span class="Apple-tab-span" style="white-space: pre;">	</span>nintrcnt += INTR_IPI_COUNT * MAXCPU;<br class="">#endif<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">	</span>intrcnt = mallocarray(nintrcnt, sizeof(u_long), M_INTRNG,<br class="">@@ -312,18 +312,18 @@ intr_ipi_setup_counters(const char *name)<br class=""><span class="Apple-tab-span" style="white-space: pre;">	</span>mtx_lock(&amp;isrc_table_lock);<br class=""><br class=""><span class="Apple-tab-span" style="white-space: pre;">	</span>/*<br class="">-<span class="Apple-tab-span" style="white-space: pre;">	</span><span class="Apple-converted-space">&nbsp;</span>* We should never have a problem finding mp_maxid + 1 contiguous<br class="">-<span class="Apple-tab-span" style="white-space: pre;">	</span><span class="Apple-converted-space">&nbsp;</span>* counters, in practice. Interrupts will be allocated sequentially<br class="">-<span class="Apple-tab-span" style="white-space: pre;">	</span><span class="Apple-converted-space">&nbsp;</span>* during boot, so the array should fill from low to high index. Once<br class="">-<span class="Apple-tab-span" style="white-space: pre;">	</span><span class="Apple-converted-space">&nbsp;</span>* reserved, the IPI counters will never be released. Similarly, we<br class="">-<span class="Apple-tab-span" style="white-space: pre;">	</span><span class="Apple-converted-space">&nbsp;</span>* will not need to allocate more IPIs once the system is running.<br class="">+<span class="Apple-tab-span" style="white-space: pre;">	</span><span class="Apple-converted-space">&nbsp;</span>* We should never have a problem finding MAXCPU contiguous counters,<br class="">+<span class="Apple-tab-span" style="white-space: pre;">	</span><span class="Apple-converted-space">&nbsp;</span>* in practice. Interrupts will be allocated sequentially during boot,<br class="">+<span class="Apple-tab-span" style="white-space: pre;">	</span><span class="Apple-converted-space">&nbsp;</span>* so the array should fill from low to high index. Once reserved, the<br class="">+<span class="Apple-tab-span" style="white-space: pre;">	</span><span class="Apple-converted-space">&nbsp;</span>* IPI counters will never be released. Similarly, we will not need to<br class="">+<span class="Apple-tab-span" style="white-space: pre;">	</span><span class="Apple-converted-space">&nbsp;</span>* allocate more IPIs once the system is running.<br class=""><span class="Apple-tab-span" style="white-space: pre;">	</span><span class="Apple-converted-space">&nbsp;</span>*/<br class="">-<span class="Apple-tab-span" style="white-space: pre;">	</span>bit_ffc_area(intrcnt_bitmap, nintrcnt, mp_maxid + 1, &amp;index);<br class="">+<span class="Apple-tab-span" style="white-space: pre;">	</span>bit_ffc_area(intrcnt_bitmap, nintrcnt, MAXCPU, &amp;index);<br class=""><span class="Apple-tab-span" style="white-space: pre;">	</span>if (index == -1)<br class=""><span class="Apple-tab-span" style="white-space: pre;">	</span><span class="Apple-tab-span" style="white-space: pre;">	</span>panic("Failed to allocate %d counters. Array exhausted?",<br class="">-<span class="Apple-tab-span" style="white-space: pre;">	</span><span class="Apple-tab-span" style="white-space: pre;">	</span><span class="Apple-converted-space">&nbsp;</span>&nbsp;&nbsp;&nbsp;mp_maxid + 1);<br class="">-<span class="Apple-tab-span" style="white-space: pre;">	</span>bit_nset(intrcnt_bitmap, index, index + mp_maxid);<br class="">-<span class="Apple-tab-span" style="white-space: pre;">	</span>for (i = 0; i &lt; mp_maxid + 1; i++) {<br class="">+<span class="Apple-tab-span" style="white-space: pre;">	</span><span class="Apple-tab-span" style="white-space: pre;">	</span><span class="Apple-converted-space">&nbsp;</span>&nbsp;&nbsp;&nbsp;MAXCPU);<br class="">+<span class="Apple-tab-span" style="white-space: pre;">	</span>bit_nset(intrcnt_bitmap, index, index + MAXCPU - 1);<br class="">+<span class="Apple-tab-span" style="white-space: pre;">	</span>for (i = 0; i &lt; MAXCPU; i++) {<br class=""><span class="Apple-tab-span" style="white-space: pre;">	</span><span class="Apple-tab-span" style="white-space: pre;">	</span>snprintf(str, INTRNAME_LEN, "cpu%d:%s", i, name);<br class=""><span class="Apple-tab-span" style="white-space: pre;">	</span><span class="Apple-tab-span" style="white-space: pre;">	</span>intrcnt_setname(str, index + i);<br class=""><span class="Apple-tab-span" style="white-space: pre;">	</span>}<br class=""></blockquote><br class="">Best regards,<br class="">Zhenlei</blockquote></div></blockquote></div><br class=""><div class="">
<div><br class=""></div></div></body></html>

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?93753D00-CA46-4777-AB98-6C2A30906DB7>