X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fdevices%2Fpci.c;fp=palacios%2Fsrc%2Fdevices%2Fpci.c;h=3a10e0303fdfbf9ac5aa43fe27b7bd95789b7365;hb=e7e8f9d5fc283afd15bc8385faf7449765fcbe26;hp=606b38bc1366967c3601cf9b7e729269d00996d1;hpb=942df9bb1e2570764d24c74f797247536639502e;p=palacios.git diff --git a/palacios/src/devices/pci.c b/palacios/src/devices/pci.c index 606b38b..3a10e03 100644 --- a/palacios/src/devices/pci.c +++ b/palacios/src/devices/pci.c @@ -75,7 +75,8 @@ struct pci_bus { // Bitmap of the allocated device numbers uint8_t dev_map[MAX_BUS_DEVICES / 8]; - int (*raise_pci_irq)(struct vm_device * dev, uint_t intr_line); + int (*raise_pci_irq)(struct vm_device * dev, uint_t intr_pin); + int (*lower_pci_irq)(struct vm_device * dev, uint_t intr_pin); struct vm_device * irq_bridge_dev; }; @@ -706,11 +707,13 @@ static inline int init_bars(struct pci_device * pci_dev) { int v3_pci_set_irq_bridge(struct vm_device * pci_bus, int bus_num, int (*raise_pci_irq)(struct vm_device * dev, uint_t intr_line), + int (*lower_pci_irq)(struct vm_device * dev, uint_t intr_line), struct vm_device * bridge_dev) { struct pci_internal * pci_state = (struct pci_internal *)pci_bus->private_data; pci_state->bus_list[bus_num].raise_pci_irq = raise_pci_irq; + pci_state->bus_list[bus_num].lower_pci_irq = lower_pci_irq; pci_state->bus_list[bus_num].irq_bridge_dev = bridge_dev; return 0; @@ -723,6 +726,13 @@ int v3_pci_raise_irq(struct vm_device * pci_bus, int bus_num, struct pci_device return bus->raise_pci_irq(bus->irq_bridge_dev, dev->config_header.intr_pin); } +int v3_pci_lower_irq(struct vm_device * pci_bus, int bus_num, struct pci_device * dev) { + struct pci_internal * pci_state = (struct pci_internal *)pci_bus->private_data; + struct pci_bus * bus = &(pci_state->bus_list[bus_num]); + + return bus->lower_pci_irq(bus->irq_bridge_dev, dev->config_header.intr_pin); +} + // if dev_num == -1, auto assign struct pci_device * v3_pci_register_device(struct vm_device * pci, pci_device_type_t dev_type,