[Libre-soc-bugs] [Bug 407] XICS interrupt controller is needed

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Tue Jul 28 19:03:37 BST 2020


https://bugs.libre-soc.org/show_bug.cgi?id=407

--- Comment #12 from Cole Poirier <colepoirier at gmail.com> ---
(In reply to Luke Kenneth Casson Leighton from comment #11)
> no it's not that one - XICS is like the PLIC for RISC-V.  it's the central
> (generic) "hub" for interrupts and defines the layout of in-memory registers.
> 
> for example for the source layer (microwatt xics.vhdl):
> 
> -- Register map
>     --     0  : Config
>     --     4  : Debug/diagnostics
>     --   800  : XIVE0
>     --   804  : XIVE1 ...
>     --
>     -- Config register format:
>     --
>     --  23..  0 : Interrupt base (hard wired to 16)
>     --  27.. 24 : #prio bits (1..8)
>     --
>     -- XIVE register format:
>     --
>     --       31 : input bit (reflects interrupt input)
>     --       30 : reserved
>     --       29 : P (mirrors input for now)
>     --       28 : Q (not implemented in this version)
>     -- 30 ..    : reserved
>     -- 19 ..  8 : target (not implemented in this version)
>     --  7 ..  0 : prio/mask
> 
> 
> and for the presentation layer there's something similar.
> 
> so the interrupt wires come in from a "source" (a single bit,
> each given a number), and it is possible to set the individual
> priority (by writing to the XIVEnnn register).
> 
> then the "presentation" layer receives a notification about one
> of those, and generates - to the core - a *single* interrupt to
> say "please come and look at the presentation layer registers
> XIRR and MFRR to find out which one of the source interrupts
> has occurred".
> 
> from the microwatt source code, _reading_ the XIRR register actually
> clears the interrupt.
> 
> so that's how it fits together.

Ok, so if I understand correctly xics is the internal interrupt infrastructure
and the "LoPAR interrupt controller [is something] platforms may chose to
virtualize or to provide the PowerPC External Interrupt option."
(https://github.com/OpenPOWERFoundation/Linux-Architecture-Reference/blob/master/LoPAR/ch_interrupt_controller.xml)
That deals with PCIE interrupts? Sorry I'm still a little confused...

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the libre-soc-bugs mailing list