Skip to content

Commit

Permalink
pseries: Don't expose PCIe extended config space on older machine types
Browse files Browse the repository at this point in the history
bb99864 "spapr_pci: Advertise access to PCIe extended config space"
allowed guests to access the extended config space of PCI Express devices
via the PAPR interfaces, even though the paravirtualized bus mostly acts
like plain PCI.

However, that patch enabled access unconditionally, including for existing
machine types, which is an unwise change in behaviour.  This patch limits
the change to pseries-2.9 (and later) machine types.

Suggested-by: Andrea Bolognani <abologna@redhat.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
  • Loading branch information
dgibson committed Mar 14, 2017
1 parent 38a61d3 commit 8251626
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 3 deletions.
9 changes: 7 additions & 2 deletions hw/ppc/spapr.c
Expand Up @@ -3163,8 +3163,13 @@ DEFINE_SPAPR_MACHINE(2_9, "2.9", true);
/*
* pseries-2.8
*/
#define SPAPR_COMPAT_2_8 \
HW_COMPAT_2_8
#define SPAPR_COMPAT_2_8 \
HW_COMPAT_2_8 \
{ \
.driver = TYPE_SPAPR_PCI_HOST_BRIDGE, \
.property = "pcie-extended-configuration-space", \
.value = "off", \
},

static void spapr_machine_2_8_instance_options(MachineState *machine)
{
Expand Down
4 changes: 3 additions & 1 deletion hw/ppc/spapr_pci.c
Expand Up @@ -1321,7 +1321,7 @@ static int spapr_populate_pci_child_dt(PCIDevice *dev, void *fdt, int offset,
_FDT(fdt_setprop(fdt, offset, "assigned-addresses",
(uint8_t *)rp.assigned, rp.assigned_len));

if (pci_is_express(dev)) {
if (sphb->pcie_ecs && pci_is_express(dev)) {
_FDT(fdt_setprop_cell(fdt, offset, "ibm,pci-config-space-type", 0x1));
}

Expand Down Expand Up @@ -1858,6 +1858,8 @@ static Property spapr_phb_properties[] = {
DEFINE_PROP_UINT32("numa_node", sPAPRPHBState, numa_node, -1),
DEFINE_PROP_BOOL("pre-2.8-migration", sPAPRPHBState,
pre_2_8_migration, false),
DEFINE_PROP_BOOL("pcie-extended-configuration-space", sPAPRPHBState,
pcie_ecs, true),
DEFINE_PROP_END_OF_LIST(),
};

Expand Down
2 changes: 2 additions & 0 deletions include/hw/pci-host/spapr.h
Expand Up @@ -80,6 +80,8 @@ struct sPAPRPHBState {

uint32_t numa_node;

bool pcie_ecs; /* Allow access to PCIe extended config space? */

/* Fields for migration compatibility hacks */
bool pre_2_8_migration;
uint32_t mig_liobn;
Expand Down

0 comments on commit 8251626

Please sign in to comment.