> On Dec 23, 2019, at 7:53 PM, Taylor R Campbell
> <campbell+netbsd-source-change...@mumble.net> wrote:
>
>> Module Name: src
>> Committed By: thorpej
>> Date: Sun Dec 22 15:09:39 UTC 2019
>>
>> Add intr_mask() and corresponding intr_unmask() calls that allow specific
>> interrupt lines / sources to be masked as needed (rather than making a
>> set of sources by IPL as with spl*()).
>>
>> + if (ci == curcpu() || !mp_online) {
>> + intr_hwunmask_xcall(ih, NULL);
>> + } else {
>> + where = xc_unicast(0, intr_hwunmask_xcall, ih, NULL, ci);
>> + xc_wait(where);
>> + }
>
> If this conditional is necessary, we should teach xc_unicast to make
> it unnecessary.
Agreed. I followed the existing patter in intr.c. Andrew pointed out in code
review that the xcall code does at the the !mp_online bit now, but:
1- It does not do the curcpu() check.
2- It also fiddles with interrupt state.
For that reason, I was hesitant to make that change until further investigation
was done.
-- thorpej