Deutsch   English   Français   Italiano  
<vra4g0$teuf$2@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail
From: Robert Finch <robfi680@gmail.com>
Newsgroups: comp.arch
Subject: Re: MSI interrupts
Date: Mon, 17 Mar 2025 17:33:50 -0400
Organization: A noiseless patient Spider
Lines: 41
Message-ID: <vra4g0$teuf$2@dont-email.me>
References: <vqto79$335c6$1@dont-email.me> <3pXAP.584096$FVcd.26370@fx10.iad>
 <795b541375e3e0f53e2c76a55ffe3f20@www.novabbs.org>
 <vNZAP.37553$D_V4.18229@fx39.iad>
 <aceeec2839b8824d52f0cbe709af51e1@www.novabbs.org>
 <eM_AP.81303$8rz3.7843@fx37.iad> <vr2nj9$2goqe$1@dont-email.me>
 <f2cb846242dbfcef1efa59b92763a965@www.novabbs.org>
 <vr4ovm$9fl5$1@dont-email.me>
 <1681197d3c1af131d6b8cae884f7c9ca@www.novabbs.org>
 <vr7g76$2jnqm$1@dont-email.me> <8BVBP.816276$eNx6.247046@fx14.iad>
 <vr9akc$9p18$1@dont-email.me> <aAXBP.1055728$FVcd.741153@fx10.iad>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Mon, 17 Mar 2025 22:33:52 +0100 (CET)
Injection-Info: dont-email.me; posting-host="001673f4264b4066073135678ae93834";
	logging-data="965583"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX186XcypmJcvLQS0sjjHANg2vmMAucr7Yuc="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:YEWLMBxuFcewCxBnXa498YGofm4=
In-Reply-To: <aAXBP.1055728$FVcd.741153@fx10.iad>
Content-Language: en-US
Bytes: 3297

On 2025-03-17 11:53 a.m., Scott Lurndal wrote:
> Here's a copy of a slide I did a decade ago for ARM64 (GICv3) interrupts,
> not much has changed since.
> 
>                Interrupt Gates
> 
>   There are a number of gates that must be open to pass an interrupt
>   from the source to the destination Core
> 
>     ­ Device Interrupt Enable Register (e.g. A NIC receive interrupt enable)
>     ­ MSI-X Vector Enable (mask bit in each MSI-X vector control register)
>     ­ MSI-X PCI-Express Capability Enable (enable bit and function mask in MSI-X
>       Capability message control field)
>     ­ The PCI CMD register must have bus mastering enabled
>     ­ GICv3 Distributor/Redistributor/LPI Properties per-interrupt enable bit
>     ­ GICv3 Group Enable in distributor (GICD_CTLR)
>     ­ GICv3 Group Enable in Target core (ICC_IGRPEN{01}_EL1)
>     ­ Priority Mask register and current running priority on target core
>     ­ ARM64 core interrupt signal Mask (PSTATE.A/I/F)
> 
> Interrupt group, in this context, defines the security state of
> the interrupt (group 0: secure, group 1: non-secure) and is a
> configuration bit associated with each interrupt.

Yes, there is a lot that has to happen for an interrupt to occur. Q+ 
gets to skip the step about enabling bus mastering as it uses the slave 
response bus.

I have got something like the following so far:

	set device interrupt enable, MSI message in device
	enable the vector in the interrupt table
	globally enable interrupts for the interrupt controller
	setup the interrupt affinities in the interrupt contoller
	set the per vector interrupt enable
	set the priorty threshold register in the IC
	set the priority level in the CPU core
	enable interrupts in the CPU