sysbus: always allow explicit_ofw_unit_address() to override address generation
commitbe64d7776bcc48a542acf1f74765a3930692cef4
authorMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Sun, 5 Aug 2018 11:28:49 +0000 (5 12:28 +0100)
committerEduardo Habkost <ehabkost@redhat.com>
Fri, 17 Aug 2018 01:27:43 +0000 (16 22:27 -0300)
tree9b72e6cf3d25bcd3dce8e690075abdb7e5834bc6
parent3aeaac8fa2d008a1f55b040fde6d4ec06f2f5146
sysbus: always allow explicit_ofw_unit_address() to override address generation

Some SysBusDevices either use sysbus_init_mmio() without
sysbus_mmio_map() or the first MMIO memory region doesn't represent the
bus address, causing a firmware device path with an invalid address to
be generated.

SysBusDeviceClass does provide a virtual explicit_ofw_unit_address()
method that can be used to override this process, but it was originally intended
only as as a fallback option meaning that any existing MMIO memory regions still
take priority whilst determining the firmware device address.

There is currently only one user of explicit_ofw_unit_address() and that
is the PCI expander bridge (PXB) device which has no MMIO/PIO resources
defined. This enables us to allow explicit_ofw_unit_address() to take
priority without affecting backwards compatibility, allowing the address
to be customised as required.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Message-Id: <20180805112850.26063-2-mark.cave-ayland@ilande.co.uk>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
hw/core/sysbus.c