qemu-irix/hw
David Gibson 7fb0bd3473 pseries: Use the same interrupt swizzling for host bridges as p2p bridges
Currently the pseries PCI code uses a somewhat strange scheme of PCI irq
allocation - one per slot up to a maximum that's greater than the usual 4.
This scheme more or less worked, because we were able to tell the guest the
irq mapping in the device tree, however it's a bit odd and may break
assumptions in the future.  Worse, the array used to construct the dev
tree interrupt map was mis-sized, we got away with it only because it
happened that our SPAPR_PCI_NUM_LSI value was greater than 7.

This patch changes the pseries PCI code to use the same interrupt swizzling
scheme as is standardized for PCI to PCI bridges.  This makes for better
consistency, deals better with any devices which use multiple interrupt
pins and will make life easier in the future when we add passthrough of
what may be either a host bridge or a PCI to PCI bridge.  This won't break
existing guests, because they don't assume a particular mapping scheme for
host bridges, but just follow what we tell them in the device tree (also
updated to match, of course).  This patch also fixes the allocation of the
irq map.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alexander Graf <agraf@suse.de>
2012-05-01 21:47:00 +02:00
..
9pfs
ide
kvm
usb usb-uhci: update irq line on reset 2012-04-26 12:21:17 +02:00
9p.h
a9mpcore.c
a15mpcore.c
ac97.c
acpi.c
acpi.h
acpi_piix4.c
adb.c
adb.h
adlib.c
ads7846.c
alpha_dp264.c
alpha_pci.c
alpha_sys.h
alpha_typhoon.c
an5206.c
apb_pci.c
apb_pci.h
apic.c
apic.h
apic_common.c
apic_internal.h
apm.c
apm.h
applesmc.c
arm-misc.h
arm11mpcore.c
arm_boot.c
arm_gic.c
arm_l2x0.c
arm_mptimer.c hw/arm_mptimer: Reset the qemu_timer at reset 2012-04-20 15:38:52 +00:00
arm_pic.c
arm_sysctl.c
arm_timer.c
armv7m.c
armv7m_nvic.c
audiodev.h
axis_dev88.c
baum.c
baum.h
bitbang_i2c.c
bitbang_i2c.h
blizzard.c
blizzard_template.h
boards.h
bonito.c
bt-hci-csr.c
bt-hci.c
bt-hid.c
bt-l2cap.c
bt-sdp.c
bt.c
bt.h
cadence_gem.c
cadence_ttc.c
cadence_uart.c
cbus.c
ccid-card-emulated.c
ccid-card-passthru.c
ccid.h
cdrom.c
cirrus_vga.c
cirrus_vga_rop.h
cirrus_vga_rop2.h
cirrus_vga_template.h
collie.c
cris-boot.c
cris-boot.h
cris_pic_cpu.c
cs4231.c
cs4231a.c
cuda.c
debugcon.c
dec_pci.c
dec_pci.h
device-hotplug.c
devices.h
dma.c
dp8393x.c
ds1225y.c
ds1338.c
dummy_m68k.c
e1000.c e1000: set E1000_ICR_INT_ASSERTED only for 8257x 2012-04-25 10:53:48 +03:00
e1000_hw.h e1000: introduce bits of PHY control register 2012-04-25 10:53:47 +03:00
ecc.c
eccmemctl.c
eepro100.c eepro100: Fix multicast regression 2012-04-25 10:53:47 +03:00
eeprom93xx.c
eeprom93xx.h
elf_ops.h
empty_slot.c
empty_slot.h
es1370.c
escc.c
escc.h
esp.c
esp.h
etraxfs.h
etraxfs_dma.c
etraxfs_dma.h
etraxfs_eth.c
etraxfs_pic.c
etraxfs_ser.c
etraxfs_timer.c
exynos4_boards.c
exynos4210.c
exynos4210.h
exynos4210_combiner.c
exynos4210_fimd.c
exynos4210_gic.c
exynos4210_mct.c
exynos4210_pmu.c
exynos4210_pwm.c
exynos4210_uart.c
fdc.c fdc: Parametrize ISA base, IRQ and DMA 2012-04-28 20:51:54 +02:00
fdc.h
firmware_abi.h
flash.h
fmopl.c
fmopl.h
framebuffer.c
framebuffer.h
fw_cfg.c
fw_cfg.h
g364fb.c
grackle_pci.c
grlib.h
grlib_apbuart.c
grlib_gptimer.c
grlib_irqmp.c
gt64xxx.c
gumstix.c
gus.c
gusemu.h
gusemu_hal.c
gusemu_mixer.c
gustate.h
hda-audio.c hda: fix codec ids 2012-04-26 12:54:17 +04:00
heathrow_pic.c
hid.c
hid.h
highbank.c target-arm: Move A9 config_base_address reset value to ARMCPU 2012-04-27 11:06:18 +00:00
hpet.c
hpet_emul.h
hw.h
i2c.c
i2c.h
i8254.c
i8254.h
i8254_common.c
i8254_internal.h
i8259.c
i8259_common.c
i8259_internal.h
i82374.c i82378/i82374: Do not create DMA controller twice 2012-04-28 20:51:40 +02:00
i82378.c i82378/i82374: Do not create DMA controller twice 2012-04-28 20:51:40 +02:00
ide.h
integratorcp.c
intel-hda-defs.h
intel-hda.c
intel-hda.h
ioapic.c
ioapic.h
ioapic_common.c
ioapic_internal.h
ioh3420.c
ioh3420.h
irq.c
irq.h
isa-bus.c
isa.h isa: Add isa_bus_from_device() method 2012-04-28 20:51:54 +02:00
isa_mmio.c
ivshmem.c
jazz_led.c
kvmvapic.c
lan9118.c
lance.c
leon3.c
lm32.h
lm32_boards.c
lm32_hwsetup.h
lm32_juart.c
lm32_juart.h
lm32_pic.c
lm32_pic.h
lm32_sys.c
lm32_timer.c
lm32_uart.c
lm832x.c
lm4549.c
lm4549.h
loader.c
loader.h
lsi53c895a.c
m48t59.c fix BCD mask for date (Solaris 2.5 guest hang fix) 2012-04-23 17:01:04 +00:00
mac_dbdma.c
mac_dbdma.h
mac_nvram.c
macio.c
mainstone.c
marvell_88w8618_audio.c
max111x.c
max7310.c
mc146818rtc.c
mc146818rtc.h
mc146818rtc_regs.h
mcf.h
mcf5206.c
mcf5208.c
mcf_fec.c
mcf_intc.c
mcf_uart.c
microblaze_boot.c
microblaze_boot.h
microblaze_pic_cpu.c
microblaze_pic_cpu.h
milkymist-ac97.c
milkymist-hpdmc.c
milkymist-hw.h
milkymist-memcard.c
milkymist-minimac2.c
milkymist-pfpu.c
milkymist-softusb.c
milkymist-sysctl.c
milkymist-tmu2.c
milkymist-uart.c
milkymist-vgafb.c
milkymist-vgafb_template.h
milkymist.c
mips-bios.h
mips.h
mips_addr.c
mips_cpudevs.h
mips_fulong2e.c
mips_int.c
mips_jazz.c
mips_malta.c
mips_mipssim.c
mips_r4k.c
mips_timer.c
mipsnet.c
mpc8544_guts.c
msi.c
msi.h
msix.c
msix.h
msmouse.c
msmouse.h
mst_fpga.c
multiboot.c
multiboot.h
musicpal.c
nand.c
ne2000-isa.c
ne2000.c
ne2000.h
nseries.c
nvram.h
omap.h
omap1.c
omap2.c
omap_clk.c
omap_dma.c
omap_dss.c
omap_gpio.c
omap_gpmc.c
omap_gptimer.c
omap_i2c.c
omap_intc.c
omap_l4.c
omap_lcd_template.h
omap_lcdc.c
omap_mmc.c
omap_sdrc.c
omap_spi.c
omap_sx1.c
omap_synctimer.c
omap_tap.c
omap_uart.c
onenand.c
opencores_eth.c
openpic.c
openpic.h
palm.c
parallel.c
pc.c
pc.h
pc_piix.c
pc_sysfw.c pc-sysfw: make sure to call qdev_init 2012-04-26 13:14:57 -05:00
pci-hotplug.c
pci-stub.c
pci.c
pci.h
pci_bridge.c
pci_bridge.h
pci_bridge_dev.c
pci_host.c
pci_host.h
pci_ids.h
pci_internals.h
pci_regs.h
pcie.c
pcie.h
pcie_aer.c
pcie_aer.h
pcie_host.c
pcie_host.h
pcie_port.c
pcie_port.h
pcie_regs.h
pckbd.c
pcmcia.h
pcnet-pci.c
pcnet.c
pcnet.h
pcspk.c
pcspk.h
petalogix_ml605_mmu.c
petalogix_s3adsp1800_mmu.c
pflash_cfi01.c pflash_cfi01: remove redundant line 2012-04-20 13:14:53 +01:00
pflash_cfi02.c
piix4.c
piix_pci.c
pixel_ops.h
pl011.c
pl022.c
pl031.c
pl041.c
pl041.h
pl041.hx
pl050.c
pl061.c
pl080.c
pl110.c
pl110_template.h
pl181.c
pl190.c
pm_smbus.c
pm_smbus.h
ppc-viosrp.h
ppc.c
ppc.h
ppc4xx.h
ppc4xx_devs.c
ppc4xx_pci.c
ppc405.h
ppc405_boards.c
ppc405_uc.c
ppc440_bamboo.c
ppc_booke.c
ppc_mac.h
ppc_newworld.c
ppc_oldworld.c
ppc_prep.c prep: Move int-ack register from PReP to Raven PCI emulation 2012-04-30 17:15:59 +02:00
ppce500_mpc8544ds.c
ppce500_pci.c
ppce500_spin.c booke:Use MMU API for creating initial mapping for secondary cpus 2012-05-01 21:47:00 +02:00
prep_pci.c prep: Move int-ack register from PReP to Raven PCI emulation 2012-04-30 17:15:59 +02:00
primecell.h
ps2.c
ps2.h
ptimer.c Limit ptimer rate to something achievable 2012-04-24 09:50:31 -05:00
ptimer.h
pxa.h
pxa2xx.c
pxa2xx_dma.c
pxa2xx_gpio.c
pxa2xx_keypad.c
pxa2xx_lcd.c
pxa2xx_mmci.c
pxa2xx_pcmcia.c
pxa2xx_pic.c
pxa2xx_template.h
pxa2xx_timer.c
qdev-addr.c
qdev-addr.h
qdev-monitor.c qom: Refine container_get() to allow using a custom root 2012-04-24 09:50:31 -05:00
qdev-properties.c
qdev.c qom: Refine container_get() to allow using a custom root 2012-04-24 09:50:31 -05:00
qdev.h
qxl-logger.c
qxl-render.c
qxl.c qxl: Add missing GCC_FMT_ATTR and fix format specifier 2012-04-20 13:14:53 +01:00
qxl.h qxl: Add missing GCC_FMT_ATTR and fix format specifier 2012-04-20 13:14:53 +01:00
r2d.c
rc4030.c
realview.c realview: break out versatile i2c controller code 2012-04-20 15:38:52 +00:00
realview_gic.c
rtl8139.c
s390-virtio-bus.c
s390-virtio-bus.h
s390-virtio.c
sb16.c
sbi.c
scsi-bus.c scsi: add SANITIZE command 2012-04-19 16:26:33 +02:00
scsi-defs.h scsi: add SANITIZE command 2012-04-19 16:26:33 +02:00
scsi-disk.c SCSI emulation: should tell the guest that we actually support thin provisioning 2012-04-19 16:26:29 +02:00
scsi-generic.c
scsi.h
sd.c
sd.h
serial.c
sga.c
sh.h
sh7750.c
sh7750_regnames.c
sh7750_regnames.h
sh7750_regs.h
sh_intc.c
sh_intc.h
sh_pci.c
sh_serial.c
sh_timer.c
sharpsl.h
shix.c
shpc.c
shpc.h
slavio_intctl.c
slavio_misc.c
slavio_timer.c
slotid_cap.c
slotid_cap.h
sm501.c
sm501_template.h
smbios.c
smbios.h
smbus.c
smbus.h
smbus_eeprom.c
smc91c111.c
soc_dma.c
soc_dma.h
spapr.c pseries: Implement automatic PAPR VIO address allocation 2012-05-01 21:47:00 +02:00
spapr.h
spapr_hcall.c
spapr_llan.c pseries: Implement automatic PAPR VIO address allocation 2012-05-01 21:47:00 +02:00
spapr_pci.c pseries: Use the same interrupt swizzling for host bridges as p2p bridges 2012-05-01 21:47:00 +02:00
spapr_pci.h pseries: Use the same interrupt swizzling for host bridges as p2p bridges 2012-05-01 21:47:00 +02:00
spapr_rtas.c
spapr_vio.c pseries: Implement automatic PAPR VIO address allocation 2012-05-01 21:47:00 +02:00
spapr_vio.h pseries: Implement automatic PAPR VIO address allocation 2012-05-01 21:47:00 +02:00
spapr_vscsi.c pseries: Implement automatic PAPR VIO address allocation 2012-05-01 21:47:00 +02:00
spapr_vty.c pseries: Implement automatic PAPR VIO address allocation 2012-05-01 21:47:00 +02:00
sparc32_dma.c
sparc32_dma.h
spitz.c
srp.h
ssd0303.c
ssd0323.c
ssi-sd.c
ssi.c
ssi.h
stellaris.c
stellaris_enet.c
stellaris_input.c
strongarm.c
strongarm.h
sun4c_intctl.c
sun4m.c
sun4m.h
sun4m_iommu.c
sun4u.c
sysbus.c
sysbus.h
tc6393xb.c
tc6393xb_template.h
tc58128.c
tcx.c
tmp105.c
tosa.c
tsc210x.c
tsc2005.c
tusb6010.c
twl92230.c
unin_pci.c
usb.h
versatile_i2c.c realview: break out versatile i2c controller code 2012-04-20 15:38:52 +00:00
versatile_pci.c
versatilepb.c versatiblepb: add NOR flash support 2012-04-20 15:39:05 +00:00
vexpress.c
vga-isa-mm.c
vga-isa.c
vga-pci.c
vga.c vga: Don't switch to 1 x 1 character text screen 2012-05-01 10:45:43 +00:00
vga.h
vga_int.h
vga_template.h
vhost.c
vhost.h
vhost_net.c
vhost_net.h
virtex_ml507.c
virtio-balloon.c
virtio-balloon.h
virtio-blk.c
virtio-blk.h
virtio-console.c
virtio-net.c
virtio-net.h
virtio-pci.c
virtio-pci.h
virtio-scsi.c
virtio-scsi.h
virtio-serial-bus.c virtio-serial-bus: Unset guest_connected at reset and driver reset 2012-04-25 16:44:07 +05:30
virtio-serial.h
virtio.c virtio: order index/descriptor reads 2012-04-25 10:53:47 +03:00
virtio.h
vmmouse.c
vmport.c
vmware_vga.c
vmware_vga.h
vt82c686.c
vt82c686.h
watchdog.c
watchdog.h
wdt_i6300esb.c
wdt_ib700.c
wm8750.c
xen.h
xen_apic.c
xen_backend.c
xen_backend.h
xen_blkif.h
xen_common.h
xen_console.c
xen_devconfig.c
xen_disk.c
xen_domainbuild.c
xen_domainbuild.h
xen_machine_pv.c
xen_nic.c
xen_platform.c
xenfb.c
xgmac.c
xics.c
xics.h
xilinx.h
xilinx_axidma.c
xilinx_axidma.h
xilinx_axienet.c
xilinx_ethlite.c
xilinx_intc.c
xilinx_timer.c
xilinx_uartlite.c
xilinx_zynq.c
xio3130_downstream.c
xio3130_downstream.h
xio3130_upstream.c
xio3130_upstream.h
xtensa_bootparam.h
xtensa_lx60.c
xtensa_pic.c
xtensa_sim.c
z2.c
zaurus.c
zynq_slcr.c