pci: set memory type for memory behind the bridge
As we make upper bits in IO and prefetcheable memory registers writeable, we should declare support for 64 bit prefetcheable memory and 32 bit io in the bridge. This changes the default for apb, dec, but I'm guessing they got the defaults wrong by accident. Alternatively, we could let bridges declare lack of 64 bit support and make the upper bits read-only zero. Reported-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
4eb812f760
commit
15ab7a7533
3
hw/pci.c
3
hw/pci.c
|
@ -663,8 +663,11 @@ static void pci_init_mask_bridge(PCIDevice *d)
|
|||
pci_set_word(d->w1cmask + PCI_BRIDGE_CONTROL,
|
||||
PCI_BRIDGE_CTL_DISCARD_STATUS);
|
||||
d->cmask[PCI_IO_BASE] |= PCI_IO_RANGE_TYPE_MASK;
|
||||
d->cmask[PCI_IO_LIMIT] |= PCI_IO_RANGE_TYPE_MASK;
|
||||
pci_word_test_and_set_mask(d->cmask + PCI_PREF_MEMORY_BASE,
|
||||
PCI_PREF_RANGE_TYPE_MASK);
|
||||
pci_word_test_and_set_mask(d->cmask + PCI_PREF_MEMORY_LIMIT,
|
||||
PCI_PREF_RANGE_TYPE_MASK);
|
||||
}
|
||||
|
||||
static int pci_init_multifunction(PCIBus *bus, PCIDevice *dev)
|
||||
|
|
Loading…
Reference in a new issue