Where can I learn about MSI and MSI-X?

Discussions on more advanced topics such as monolithic vs micro-kernels, transactional memory models, and paging vs segmentation should go here. Use this forum to expand and improve the wiki!
Post Reply
slammar
Posts: 24
Joined: Fri Feb 07, 2020 7:35 pm
Freenode IRC: slammar

Where can I learn about MSI and MSI-X?

Post by slammar »

Hello. I'm trying to develop an OS that communicates with USB devices.

I am reading the XHCI spec and in chapter 4.2 it mentions that in order to initialize the host controller you may initialize interrupts by allocating and initialising the MSI-X Message Table among other things and then it suggest to refer to the PCI spec for more details.

I know interrupts are optional and you have also the option of polling the Event Rings instead, but I'd love to know more about MSI to be able to use interrups.
Korona
Member
Member
Posts: 999
Joined: Thu May 17, 2007 1:27 pm
Contact:

Re: Where can I learn about MSI and MSI-X?

Post by Korona »

You can read abozt the PCI side of MSIs in the PCI spec and about the local APIC side in the Intel manual (APIC section). Overall, MSI are pretty simple, require no special setup and aside from the format of the address and data words, there is little to learn about them.
managarm: Microkernel-based OS capable of running a Wayland desktop (Discord: https://discord.gg/7WB6Ur3). My OS-dev projects: [mlibc: Portable C library for managarm, qword, Linux, Sigma, ...] [LAI: AML interpreter] [xbstrap: Build system for OS distributions].
Post Reply