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.
Where can I learn about MSI and MSI-X?
Re: Where can I learn about MSI and MSI-X?
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].