# PLIC specification

**URL:** <https://forums.sifive.com/t/plic-specification/6870>\
**Category:** HiFive Premier P550\
**Created:** [January 3, 2025, 4:21pm UTC](https://forums.sifive.com/t/plic-specification/6870 "2025-01-03T16:21:42Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![mason1920](https://sea2.discourse-cdn.com/flex020/user_avatar/forums.sifive.com/mason1920/32/1701_2.png) [@mason1920](https://forums.sifive.com/u/mason1920)\
**Post date:** [January 3, 2025, 4:21pm UTC](https://forums.sifive.com/t/plic-specification/6870/1 "2025-01-03T16:21:42Z")

</div>

I’m looking for the specification for the platform-level interrupt controller used in the Premier P550. Specifically, I’m looking for how it organizes the different interrupt contexts (which hart and privilege modes map to which contexts). I’m looking to enable the usb0 interrupts for the s-mode of the boot hart.

---

<div class="post-metadata">

**Author:** ![ganboing](https://avatars.discourse-cdn.com/v4/letter/g/91b2a8/32.png) [@ganboing](https://forums.sifive.com/u/ganboing)\
**Post date:** [January 4, 2025, 5:32am UTC](https://forums.sifive.com/t/plic-specification/6870/2 "2025-01-04T05:32:19Z")

</div>

I don’t think EIC7700’s PLIC is that different. From the TRM, it’s just like any standard PLIC that can route any global interrupt to M or S mode of a given hart or a set of harts (although only one can claim that interrupt, so usually there’s no point interrupting multiple harts). Just enable the corresponding interrupt in the S mode context of the designated hart, and that’s it.

---

<div class="post-metadata">

**Author:** ![mason1920](https://sea2.discourse-cdn.com/flex020/user_avatar/forums.sifive.com/mason1920/32/1701_2.png) [@mason1920](https://forums.sifive.com/u/mason1920)\
**Post date:** [January 5, 2025, 5:12pm UTC](https://forums.sifive.com/t/plic-specification/6870/3 "2025-01-05T17:12:34Z")

</div>

But I don’t know which context corresponds to the s-mode of the given hart. The RISC-V PLIC standard leaves the organization of the contexts to be specified in the manufacturer’s specification, which I could not find.

---

<div class="post-metadata">

**Author:** ![ganboing](https://avatars.discourse-cdn.com/v4/letter/g/91b2a8/32.png) [@ganboing](https://forums.sifive.com/u/ganboing)\
**Post date:** [January 5, 2025, 9:11pm UTC](https://forums.sifive.com/t/plic-specification/6870/4 "2025-01-05T21:11:49Z")

</div>

Refer to  
[https://github.com/eswincomputing/EIC7700X-SoC-Technical-Reference-Manual/releases/download/v1.0.0-20250103/EIC7700X\_SoC\_Technical\_Reference\_Manual\_Part1.pdf](https://github.com/eswincomputing/EIC7700X-SoC-Technical-Reference-Manual/releases/download/v1.0.0-20250103/EIC7700X_SoC_Technical_Reference_Manual_Part1.pdf)  
Chapter 3.4.1.12

---

<div class="post-metadata">

**Author:** ![mason1920](https://sea2.discourse-cdn.com/flex020/user_avatar/forums.sifive.com/mason1920/32/1701_2.png) [@mason1920](https://forums.sifive.com/u/mason1920)\
**Post date:** [January 5, 2025, 9:28pm UTC](https://forums.sifive.com/t/plic-specification/6870/5 "2025-01-05T21:28:35Z")

</div>

That’s it! Thanks a ton!

---

<div class="post-metadata">

**Author:** ![geoff](https://sea2.discourse-cdn.com/flex020/user_avatar/forums.sifive.com/geoff/32/1394_2.png) [@geoff](https://forums.sifive.com/u/geoff)\
**Post date:** [July 29, 2025, 2:54am UTC](https://forums.sifive.com/t/plic-specification/6870/6 "2025-07-29T02:54:14Z")

</div>

Until just now, I had missed the one-byte unique, and arguably incompatible, “PLIC global clock gating disable feature” at 0x0C1F\_F000. It’s set to 1 at reset and has to be set to zero for the PLIC to function. (Or not, the double negatives in the manual don’t help.)

---

<div class="post-metadata">

**Author:** ![sholland](https://avatars.discourse-cdn.com/v4/letter/s/b5a626/32.png) [@sholland](https://forums.sifive.com/u/sholland)\
**Post date:** [August 2, 2025, 3:33am UTC](https://forums.sifive.com/t/plic-specification/6870/7 "2025-08-02T03:33:33Z")

</div>

This bit does not need to be set for the PLIC to function. It only controls an (optional, but recommended) autonomous clock gating feature. You can see in the upstream Linux bringup ([Making sure you're not a bot!](https://lore.kernel.org/all/20250616112316.3833343-1-pinkesh.vaghela@einfochips.com/)) and the BSP OpenSBI ([meta-sifive/recipes-bsp/opensbi/opensbi-sifive-hf-prem at rel/meta-sifive/hifive-premier-p550 · sifiveinc/meta-sifive · GitHub](https://github.com/sifiveinc/meta-sifive/tree/rel/meta-sifive/hifive-premier-p550/recipes-bsp/opensbi/opensbi-sifive-hf-prem)) that there is no special software for this variant of the PLIC.
