On 09/02/2013 08:52 AM, Daniel P. Berrange wrote:
On Fri, Aug 30, 2013 at 12:41:36PM -0400, Cole Robinson wrote:
> Starting with qemu 1.6, the qemu-system-arm vexpress-a9 model has a
> hardcoded virtio-mmio transport which enables attaching all virtio
> devices.
>
> On the command line, we have to use virtio-XXX-device rather than
> virtio-XXX-pci, thankfully s390 already set the precedent here so
> it's fairly straight forward.
>
> At the XML level, this adds a new device address type virtio-mmio.
> The controller and addressing don't have any subelements at the
> moment because we they aren't needed for this usecase, but could
> be added later if needed.
>
> Add a test case for an ARM guest with one of every virtio device
> enabled.
> ---
> src/conf/domain_conf.c | 12 +++-
> src/conf/domain_conf.h | 1 +
> src/qemu/qemu_capabilities.c | 17 ++++--
> src/qemu/qemu_capabilities.h | 2 +
> src/qemu/qemu_command.c | 65 +++++++++++++++++-----
> .../qemuxml2argv-arm-vexpressa9-virtio.args | 14 +++++
> .../qemuxml2argv-arm-vexpressa9-virtio.xml | 45 +++++++++++++++
> tests/qemuxml2argvtest.c | 4 ++
> 8 files changed, 139 insertions(+), 21 deletions(-)
> create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-arm-vexpressa9-virtio.args
> create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-arm-vexpressa9-virtio.xml
ACK
> diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
> index 380e2bb..1d70eba 100644
> --- a/src/conf/domain_conf.h
> +++ b/src/conf/domain_conf.h
> @@ -207,6 +207,7 @@ enum virDomainDeviceAddressType {
> VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO,
> VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_S390,
> VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW,
> + VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_MMIO,
>
> VIR_DOMAIN_DEVICE_ADDRESS_TYPE_LAST
> };
So there's no kind of address properties needed for the MMIO
address type ?
There may be, when the qemu-system-arm -m virt machine lands, which AIUI will
behave more like qemu-system-x86, allowing us to fully specify topology on the
command line.
Right now the only virtio-mmio user (vexpress) hardcodes creation in the qemu
board init code. We might be able to explicitly specify addressing of virtio
devices with -device, but if we can it's not obvious to me, and it's pretty
pointless since we don't have that same control over the rest of the board config.
Long term I think the only qemu arm machine type we will really want to
'support' is -M virt since it's closer to what we are used to with x86.
- Cole