Christian Borntraeger <[email protected]> writes:
> since
>
> commit 18b6dade8c0799c48f5c5e124b8c407cd5e22e96
> qdev: refactor device creation to allow bus_info to be set only in class
>
> A user can specify a device that is no_user.
> For example on my i386 box, I can add a 2nd kvmvapic device.
>
> This patch checks for no-user and rejects the device_add.
>
> Signed-off-by: Christian Borntraeger <[email protected]>
I specifically broke this when QOM was introduced because no_user
precludes a management tool from constructing a machine directlt.
The real problem you're trying to solve is that it's an error to have
two kvmvapic devices, not that users shouldn't be allowed to create them
via -device.
Regards,
Anthony Liguori
> ---
> hw/qdev-monitor.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/hw/qdev-monitor.c b/hw/qdev-monitor.c
> index a1b4d6a..b2c34e7 100644
> --- a/hw/qdev-monitor.c
> +++ b/hw/qdev-monitor.c
> @@ -426,6 +426,11 @@ DeviceState *qdev_device_add(QemuOpts *opts)
> }
>
> k = DEVICE_CLASS(obj);
> + if (k->no_user) {
> + qerror_report(QERR_INVALID_PARAMETER_VALUE, "driver", "a driver
> name");
> + error_printf_unless_qmp("Try with argument 'help' for a list.\n");
> + return NULL;
> + }
>
> /* find bus */
> path = qemu_opt_get(opts, "bus");
> --
> 1.7.11.4