From 6864fa38972081833f79b39df74b9c08cc94f6cc Mon Sep 17 00:00:00 2001 From: Mark Cave-Ayland Date: Sun, 11 Jun 2017 10:12:08 +0100 Subject: [PATCH] sun4u: update PCI topology to include simba PCI bridges This patch updates the sun4u model to being much closer to a real Ultra 5 by moving devices behind the 2 simba PCI bridges (A and B) as found on real hardware. The most noticeable change introduced by this patchset is that in-built devices are no longer attached to the PCI root bus, but instead behind PCI bridge A. Along with this the interrupt routing is updated accordingly to match the official documentation. Since the existing code currently bypasses the PCI bridge interrupt swizzling, the interrupt mapping functions are reorganised so that pci_pbm_map_irq() is used by the PCI bridges and pci_apb_map_irq() is used by the PCI host bridge. Behind the sabre PCI host bridge, the PCI IO space now needs to be split into two separate halves at 0x8000000. Therefore we also setup a new PCI IO space region of increased size on the PCI host bridge and enable 32-bit PCI IO accesses to allow IO accesses to reach devices behind PCI bridge B correctly. As part of this change we also combine the onboard sunhme NIC and the ebus into a single multi-function device as done on a real Ultra 5. For other NICs the existing behaviour is preserved, i.e. we initialise them and place them into the next free slot on PCI bus B. Finally we mark the physically unavailable slots (plus slot 0 in busA) as reserved to ensure that users can't plug devices into non-existent slots which will break interrupt routing. Note: since this commit changes PCI topology and interrupt routing, an updated openbios-sparc64 binary is included with this commit containing the associated changes to maintain bisectability. Signed-off-by: Mark Cave-Ayland Reviewed-by: Artyom Tarasenko --- hw/pci-host/apb.c | 47 ++++++++++++++++++++++++++++--------- hw/sparc64/sun4u.c | 60 +++++++++++++++++++++++++++++++++-------------- pc-bios/openbios-sparc64 | Bin 1593408 -> 1593408 bytes 3 files changed, 79 insertions(+), 28 deletions(-) diff --git a/hw/pci-host/apb.c b/hw/pci-host/apb.c index 1edf57f600..64025cd8cc 100644 --- a/hw/pci-host/apb.c +++ b/hw/pci-host/apb.c @@ -599,16 +599,35 @@ static uint64_t apb_pci_config_read(void *opaque, hwaddr addr, /* The APB host has an IRQ line for each IRQ line of each slot. */ static int pci_apb_map_irq(PCIDevice *pci_dev, int irq_num) { - return ((pci_dev->devfn & 0x18) >> 1) + irq_num; + /* Return the irq as swizzled by the PBM */ + return irq_num; } static int pci_pbm_map_irq(PCIDevice *pci_dev, int irq_num) { + PBMPCIBridge *br = PBM_PCI_BRIDGE(pci_bridge_get_device( + PCI_BUS(qdev_get_parent_bus(DEVICE(pci_dev))))); + int bus_offset; - if (pci_dev->devfn & 1) - bus_offset = 16; - else - bus_offset = 0; + if (br->busA) { + bus_offset = 0x0; + + /* The on-board devices have fixed (legacy) OBIO intnos */ + switch (PCI_SLOT(pci_dev->devfn)) { + case 1: + /* Onboard NIC */ + return 0x21; + case 3: + /* Onboard IDE */ + return 0x20; + + default: + /* Normal intno, fall through */ + break; + } + } else { + bus_offset = 0x10; + } return (bus_offset + (PCI_SLOT(pci_dev->devfn) << 2) + irq_num) & 0x1f; } @@ -669,6 +688,12 @@ static void apb_pci_bridge_realize(PCIDevice *dev, Error **errp) PCI_STATUS_FAST_BACK | PCI_STATUS_66MHZ | PCI_STATUS_DEVSEL_MEDIUM); + /* Allow 32-bit IO addresses */ + pci_set_word(dev->config + PCI_IO_BASE, PCI_IO_RANGE_TYPE_32); + pci_set_word(dev->config + PCI_IO_LIMIT, PCI_IO_RANGE_TYPE_32); + pci_set_word(dev->wmask + PCI_IO_BASE_UPPER16, 0xffff); + pci_set_word(dev->wmask + PCI_IO_LIMIT_UPPER16, 0xffff); + pci_bridge_update_mappings(PCI_BRIDGE(br)); } @@ -690,9 +715,9 @@ PCIBus *pci_apb_init(hwaddr special_base, d = APB_DEVICE(dev); phb = PCI_HOST_BRIDGE(dev); phb->bus = pci_register_bus(DEVICE(phb), "pci", - pci_apb_set_irq, pci_pbm_map_irq, d, + pci_apb_set_irq, pci_apb_map_irq, d, &d->pci_mmio, - get_system_io(), + &d->pci_ioport, 0, 32, TYPE_PCI_BUS); qdev_init_nofail(dev); s = SYS_BUS_DEVICE(dev); @@ -725,14 +750,14 @@ PCIBus *pci_apb_init(hwaddr special_base, pci_dev = pci_create_multifunction(phb->bus, PCI_DEVFN(1, 0), true, TYPE_PBM_PCI_BRIDGE); br = PCI_BRIDGE(pci_dev); - pci_bridge_map_irq(br, "pciB", pci_apb_map_irq); + pci_bridge_map_irq(br, "pciB", pci_pbm_map_irq); qdev_init_nofail(&pci_dev->qdev); *busB = pci_bridge_get_sec_bus(br); pci_dev = pci_create_multifunction(phb->bus, PCI_DEVFN(1, 1), true, TYPE_PBM_PCI_BRIDGE); br = PCI_BRIDGE(pci_dev); - pci_bridge_map_irq(br, "pciA", pci_apb_map_irq); + pci_bridge_map_irq(br, "pciA", pci_pbm_map_irq); qdev_prop_set_bit(DEVICE(pci_dev), "busA", true); qdev_init_nofail(&pci_dev->qdev); *busA = pci_bridge_get_sec_bus(br); @@ -798,8 +823,8 @@ static int pci_pbm_init_device(SysBusDevice *dev) sysbus_init_mmio(dev, &s->pci_config); /* pci_ioport */ - memory_region_init_alias(&s->pci_ioport, OBJECT(s), "apb-pci-ioport", - get_system_io(), 0, 0x10000); + memory_region_init(&s->pci_ioport, OBJECT(s), "apb-pci-ioport", 0x1000000); + /* at region 2 */ sysbus_init_mmio(dev, &s->pci_ioport); diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c index 8282651aeb..55d81ee73e 100644 --- a/hw/sparc64/sun4u.c +++ b/hw/sparc64/sun4u.c @@ -27,6 +27,7 @@ #include "cpu.h" #include "hw/hw.h" #include "hw/pci/pci.h" +#include "hw/pci/pci_bus.h" #include "hw/pci-host/apb.h" #include "hw/i386/pc.h" #include "hw/char/serial.h" @@ -42,6 +43,7 @@ #include "hw/nvram/fw_cfg.h" #include "hw/sysbus.h" #include "hw/ide.h" +#include "hw/ide/pci.h" #include "hw/loader.h" #include "elf.h" #include "qemu/cutils.h" @@ -440,7 +442,8 @@ static void sun4uv_init(MemoryRegion *address_space_mem, DeviceState *dev; FWCfgState *fw_cfg; NICInfo *nd; - int onboard_nic_idx; + MACAddr macaddr; + bool onboard_nic; /* init CPUs */ cpu = sparc64_cpu_devinit(machine->cpu_model, hwdef->default_cpu_model, @@ -454,10 +457,17 @@ static void sun4uv_init(MemoryRegion *address_space_mem, ivec_irqs = qemu_allocate_irqs(sparc64_cpu_set_ivec_irq, cpu, IVEC_MAX); pci_bus = pci_apb_init(APB_SPECIAL_BASE, APB_MEM_BASE, ivec_irqs, &pci_busA, &pci_busB, &pbm_irqs); - pci_vga_init(pci_bus); - /* XXX Should be pci_busA */ - ebus = pci_create_simple(pci_bus, -1, "ebus"); + /* Only in-built Simba PBMs can exist on the root bus, slot 0 on busA is + reserved (leaving no slots free after on-board devices) however slots + 0-3 are free on busB */ + pci_bus->slot_reserved_mask = 0xfffffffc; + pci_busA->slot_reserved_mask = 0xfffffff1; + pci_busB->slot_reserved_mask = 0xfffffff0; + + ebus = pci_create_multifunction(pci_busA, PCI_DEVFN(1, 0), true, "ebus"); + qdev_init_nofail(DEVICE(ebus)); + isa_bus = pci_ebus_init(ebus, pbm_irqs); i = 0; @@ -470,27 +480,43 @@ static void sun4uv_init(MemoryRegion *address_space_mem, serial_hds_isa_init(isa_bus, i, MAX_SERIAL_PORTS); parallel_hds_isa_init(isa_bus, MAX_PARALLEL_PORTS); - onboard_nic_idx = -1; + pci_dev = pci_create_simple(pci_busA, PCI_DEVFN(2, 0), "VGA"); + + memset(&macaddr, 0, sizeof(MACAddr)); + onboard_nic = false; for (i = 0; i < nb_nics; i++) { nd = &nd_table[i]; - if (onboard_nic_idx == -1 && - (!nd->model || strcmp(nd->model, "sunhme") == 0)) { - pci_dev = pci_create(pci_bus, -1, "sunhme"); - dev = &pci_dev->qdev; - qdev_set_nic_properties(dev, nd); - qdev_init_nofail(dev); - - onboard_nic_idx = i; + if (!nd->model || strcmp(nd->model, "sunhme") == 0) { + if (!onboard_nic) { + pci_dev = pci_create_multifunction(pci_busA, PCI_DEVFN(1, 1), + true, "sunhme"); + memcpy(&macaddr, &nd->macaddr.a, sizeof(MACAddr)); + onboard_nic = true; + } else { + pci_dev = pci_create_simple(pci_busB, -1, "sunhme"); + } } else { - pci_nic_init_nofail(nd, pci_bus, "ne2k_pci", NULL); + pci_dev = pci_create_simple(pci_busB, -1, nd->model); } + + dev = &pci_dev->qdev; + qdev_set_nic_properties(dev, nd); + qdev_init_nofail(dev); + } + + /* If we don't have an onboard NIC, grab a default MAC address so that + * we have a valid machine id */ + if (!onboard_nic) { + qemu_macaddr_default_if_unset(&macaddr); } - onboard_nic_idx = MAX(onboard_nic_idx, 0); ide_drive_get(hd, ARRAY_SIZE(hd)); - pci_cmd646_ide_init(pci_bus, hd, 1); + pci_dev = pci_create(pci_busA, PCI_DEVFN(3, 0), "cmd646-ide"); + qdev_prop_set_uint32(&pci_dev->qdev, "secondary", 1); + qdev_init_nofail(&pci_dev->qdev); + pci_ide_create_devs(pci_dev, hd); isa_create_simple(isa_bus, "i8042"); @@ -531,7 +557,7 @@ static void sun4uv_init(MemoryRegion *address_space_mem, /* XXX: need an option to load a NVRAM image */ 0, graphic_width, graphic_height, graphic_depth, - (uint8_t *)&nd_table[onboard_nic_idx].macaddr); + (uint8_t *)&macaddr); dev = qdev_create(NULL, TYPE_FW_CFG_IO); qdev_prop_set_bit(dev, "dma_enabled", false); diff --git a/pc-bios/openbios-sparc64 b/pc-bios/openbios-sparc64 index 7bdd6a1f4977eae6693883468cab78ba3ba363cf..6e1e10c2c07889d69acc09703af5a8f37623df2f 100644 GIT binary patch delta 31839 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 LTe>CN^vC}L-n_Mn delta 31904 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 bgkh^NzY$fBFbrW2lWU&7J>5Lg@YnwWYNjB< -- 2.11.0