spapr_pci: encode missing 64-bit memory address space
The properties reg/assigned-resources need to encode 64-bit memory address space as part of phys.hi dword. 00 if configuration space 01 if IO region, 10 if 32-bit MEM region 11 if 64-bit MEM region Signed-off-by: Nikunj A Dadhania <nikunj@linux.vnet.ibm.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
183930c0d7
commit
72187935b4
|
@ -787,7 +787,13 @@ typedef struct ResourceProps {
|
||||||
* phys.hi = 0xYYXXXXZZ, where:
|
* phys.hi = 0xYYXXXXZZ, where:
|
||||||
* 0xYY = npt000ss
|
* 0xYY = npt000ss
|
||||||
* ||| |
|
* ||| |
|
||||||
* ||| +-- space code: 1 if IO region, 2 if MEM region
|
* ||| +-- space code
|
||||||
|
* ||| |
|
||||||
|
* ||| + 00 if configuration space
|
||||||
|
* ||| + 01 if IO region,
|
||||||
|
* ||| + 10 if 32-bit MEM region
|
||||||
|
* ||| + 11 if 64-bit MEM region
|
||||||
|
* |||
|
||||||
* ||+------ for non-relocatable IO: 1 if aliased
|
* ||+------ for non-relocatable IO: 1 if aliased
|
||||||
* || for relocatable IO: 1 if below 64KB
|
* || for relocatable IO: 1 if below 64KB
|
||||||
* || for MEM: 1 if below 1MB
|
* || for MEM: 1 if below 1MB
|
||||||
|
@ -847,6 +853,8 @@ static void populate_resource_props(PCIDevice *d, ResourceProps *rp)
|
||||||
reg->phys_hi = cpu_to_be32(dev_id | b_rrrrrrrr(pci_bar(d, i)));
|
reg->phys_hi = cpu_to_be32(dev_id | b_rrrrrrrr(pci_bar(d, i)));
|
||||||
if (d->io_regions[i].type & PCI_BASE_ADDRESS_SPACE_IO) {
|
if (d->io_regions[i].type & PCI_BASE_ADDRESS_SPACE_IO) {
|
||||||
reg->phys_hi |= cpu_to_be32(b_ss(1));
|
reg->phys_hi |= cpu_to_be32(b_ss(1));
|
||||||
|
} else if (d->io_regions[i].type & PCI_BASE_ADDRESS_MEM_TYPE_64) {
|
||||||
|
reg->phys_hi |= cpu_to_be32(b_ss(3));
|
||||||
} else {
|
} else {
|
||||||
reg->phys_hi |= cpu_to_be32(b_ss(2));
|
reg->phys_hi |= cpu_to_be32(b_ss(2));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue