I also hope that QEMU capabilities depend on the binary by QMP.
But the flags in virQEMUCapsObjectTypes are all set in virQEMUCapsInitQMP.

virQEMUCapsInitQMP -> virQEMUCapsProbeQMPObjects ->
                                  virQEMUCapsProcessStringFlags(qemuCaps,
                                  ARRAY_CARDINALITY(virQEMUCapsObjectTypes),
                                  virQEMUCapsObjectTypes,
                                  nvalues, values);


So, it is not reasonable to set all of these flags for every platform.
This is a problem for other non-x86 platforms.

I saw that capabilities changes a lot since I used 0.10.2 before.

Could you help look into the code to see this problem?

Thanks a lot. :)
-Li


On Wed, Feb 27, 2013 at 9:36 PM, Jiri Denemark <jdenemar@redhat.com> wrote:
On Wed, Feb 27, 2013 at 19:52:22 +0800, Li Zhang wrote:
> From: Li Zhang <zhlcindy@linux.vnet.ibm.com>
>
> Currently, PIIX3/PIIX4_USB capabilities are enabled for other platforms.
> Actually, it is only supported for X86.
>
> So this patch is to clear the capabilities for non-X86 platforms.
>
...
> diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
> index 40022c1..ef5c69a 100644
> --- a/src/qemu/qemu_capabilities.c
> +++ b/src/qemu/qemu_capabilities.c
> @@ -1307,8 +1307,11 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[] = {
>      { "hda-micro", QEMU_CAPS_HDA_MICRO },
>      { "ccid-card-emulated", QEMU_CAPS_CCID_EMULATED },
>      { "ccid-card-passthru", QEMU_CAPS_CCID_PASSTHRU },
> +#if defined (__x86_64__) || \
> +    defined (__i386__)
>      { "piix3-usb-uhci", QEMU_CAPS_PIIX3_USB_UHCI },
>      { "piix4-usb-uhci", QEMU_CAPS_PIIX4_USB_UHCI },
> +#endif
>      { "usb-ehci", QEMU_CAPS_USB_EHCI },
>      { "ich9-usb-ehci1", QEMU_CAPS_ICH9_USB_EHCI1 },
>      { "vt82c686b-usb-uhci", QEMU_CAPS_VT82C686B_USB_UHCI },

NACK. QEMU capabilities depend on the binary we are going to use
(emulator tag in domain XML), they don't depend on host architecture.

Jirka



--

Best Regards
-Li