@@ -764,6 +764,7 @@ static void ppc_spapr_init(ram_addr_t ram_size,
}
/* Set up PCI */
+ pci_common_init();
spapr_create_phb(spapr, "pci", SPAPR_PCI_BUID,
SPAPR_PCI_MEM_WIN_ADDR,
SPAPR_PCI_MEM_WIN_SIZE,
@@ -788,7 +789,8 @@ static void ppc_spapr_init(ram_addr_t ram_size,
}
/* Graphics */
- if (spapr_vga_init(QLIST_FIRST(&spapr->phbs)->host_state.bus)) {
+ if (QLIST_FIRST(&spapr->phbs) &&
+ spapr_vga_init(QLIST_FIRST(&spapr->phbs)->host_state.bus)) {
spapr_has_graphics = 1;
usb_enabled = 1;
}
@@ -357,11 +357,6 @@ static void spapr_phb_class_init(ObjectClass *klass, void *data)
sdc->init = spapr_phb_init;
dc->props = spapr_phb_properties;
-
- spapr_rtas_register("read-pci-config", rtas_read_pci_config);
- spapr_rtas_register("write-pci-config", rtas_write_pci_config);
- spapr_rtas_register("ibm,read-pci-config", rtas_ibm_read_pci_config);
- spapr_rtas_register("ibm,write-pci-config", rtas_ibm_write_pci_config);
}
static TypeInfo spapr_phb_info = {
@@ -486,6 +481,14 @@ int spapr_populate_pci_dt(sPAPRPHBState *phb,
return 0;
}
+void pci_common_init(void)
+{
+ spapr_rtas_register("read-pci-config", rtas_read_pci_config);
+ spapr_rtas_register("write-pci-config", rtas_write_pci_config);
+ spapr_rtas_register("ibm,read-pci-config", rtas_ibm_read_pci_config);
+ spapr_rtas_register("ibm,write-pci-config", rtas_ibm_write_pci_config);
+}
+
static void register_types(void)
{
type_register_static(&spapr_phb_info);
@@ -58,4 +58,6 @@ int spapr_populate_pci_dt(sPAPRPHBState *phb,
uint32_t xics_phandle,
void *fdt);
+void pci_common_init(void);
+
#endif /* __HW_SPAPR_PCI_H__ */
Sometime when debugging PCI buses other than default emulated bus it helps to disable emulated PCI. To disable it by commenting out spapr_create_phb(SPAPR_PCI_BUID) call, this patch is submitted. The patch does 2 things: 1. adds a check to init the emulated VGA only if the emulated PCI bus has been created. 2. moves RTAS PCI config space access hooks out of the emulated PCI bus init code. Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> --- hw/spapr.c | 4 +++- hw/spapr_pci.c | 13 ++++++++----- hw/spapr_pci.h | 2 ++ 3 files changed, 13 insertions(+), 6 deletions(-)