|
From: | Richard Henderson |
Subject: | Re: [PATCH 6/8] Provide interrupt mapping information in PCI config registers. |
Date: | Sat, 5 Jun 2021 18:49:35 -0700 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 |
On 6/2/21 8:53 PM, Jason Thorpe wrote:
Use system-specific information to program the interrupt line register with the interrupt mappings, which is what the SRM console does on real hardware; some operating systems (e.g. NetBSD) use this information rather than having interrupt mappings tables for every possible system variation. Signed-off-by: Jason Thorpe <thorpej@me.com>
Thanks.
+ /* Map the interrupt and program the IRQ into the line register. + Some operating systems rely on the Console providing this information + in order to avoid having mapping tables for every possible system + variation. */ + + const uint8_t pin = pci_config_readb(bdf, PCI_INTERRUPT_PIN); + const uint8_t slot = PCI_SLOT(bdf); + const int irq = MAP_PCI_INTERRUPT(slot, pin, class_id); + + if (irq == -1) + { + /* No interrupt mapping. */ + pci_config_writeb(bdf, PCI_INTERRUPT_LINE, 0xff); + } + else + { + pci_config_writeb(bdf, PCI_INTERRUPT_LINE, irq); + }
I've folded this non-distinction into the functional interface.
+#define MAP_PCI_INTERRUPT(SLOT, PIN, CLASS_ID) \
I've turned this into a static inline. r~
[Prev in Thread] | Current Thread | [Next in Thread] |