hw/i386/pc_piix: Make piix_intx_routing_notifier_xen() more device independent
This is a follow-up on commit 89965db43c
"hw/isa/piix3: Avoid Xen-specific
variant of piix3_write_config()" which introduced
piix_intx_routing_notifier_xen(). This function is implemented in board code but
accesses the PCI configuration space of the PIIX ISA function to determine the
PCI interrupt routes. Avoid this by reusing pci_device_route_intx_to_irq() which
makes piix_intx_routing_notifier_xen() more device-agnostic.
One remaining improvement would be making piix_intx_routing_notifier_xen()
agnostic towards the number of PCI interrupt routes and move it to xen-hvm.
This might be useful for possible Q35 Xen efforts but remains a future exercise
for now.
Signed-off-by: Bernhard Beschow <shentey@gmail.com>
Reviewed-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20240107231623.5282-1-shentey@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
This commit is contained in:
parent
c8cdec74e6
commit
ebd92d6de3
@ -92,13 +92,10 @@ static void piix_intx_routing_notifier_xen(PCIDevice *dev)
|
||||
{
|
||||
int i;
|
||||
|
||||
/* Scan for updates to PCI link routes (0x60-0x63). */
|
||||
/* Scan for updates to PCI link routes. */
|
||||
for (i = 0; i < PIIX_NUM_PIRQS; i++) {
|
||||
uint8_t v = dev->config_read(dev, PIIX_PIRQCA + i, 1);
|
||||
if (v & 0x80) {
|
||||
v = 0;
|
||||
}
|
||||
v &= 0xf;
|
||||
const PCIINTxRoute route = pci_device_route_intx_to_irq(dev, i);
|
||||
const uint8_t v = route.mode == PCI_INTX_ENABLED ? route.irq : 0;
|
||||
xen_set_pci_link_route(i, v);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user