* [Qemu-devel] [PATCH] Revert "PCI: Convert pci_device_hot_add() to QObject"
@ 2010-04-26 17:44 Markus Armbruster
2010-04-26 18:21 ` [Qemu-devel] " Luiz Capitulino
0 siblings, 1 reply; 6+ messages in thread
From: Markus Armbruster @ 2010-04-26 17:44 UTC (permalink / raw)
To: qemu-devel; +Cc: Luiz Capitulino
We don't want pci_add in QMP. Use device_add instead.
This reverts commit 7a344f7ac7bb651d0556a933ed8060d3a9e5d949.
Conflicts:
hw/pci-hotplug.c
sysemu.h
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
hw/pci-hotplug.c | 46 +++++-----------------------------------------
qemu-monitor.hx | 3 +--
sysemu.h | 3 +--
3 files changed, 7 insertions(+), 45 deletions(-)
diff --git a/hw/pci-hotplug.c b/hw/pci-hotplug.c
index cc45c50..22a7ce4 100644
--- a/hw/pci-hotplug.c
+++ b/hw/pci-hotplug.c
@@ -33,7 +33,6 @@
#include "scsi.h"
#include "virtio-blk.h"
#include "qemu-config.h"
-#include "qemu-objects.h"
#if defined(TARGET_I386)
static PCIDevice *qemu_pci_hot_add_nic(Monitor *mon,
@@ -224,36 +223,7 @@ static PCIDevice *qemu_pci_hot_add_storage(Monitor *mon,
return dev;
}
-void pci_device_hot_add_print(Monitor *mon, const QObject *data)
-{
- QDict *qdict;
-
- assert(qobject_type(data) == QTYPE_QDICT);
- qdict = qobject_to_qdict(data);
-
- monitor_printf(mon, "OK domain %d, bus %d, slot %d, function %d\n",
- (int) qdict_get_int(qdict, "domain"),
- (int) qdict_get_int(qdict, "bus"),
- (int) qdict_get_int(qdict, "slot"),
- (int) qdict_get_int(qdict, "function"));
-
-}
-
-/**
- * pci_device_hot_add(): Hot add a PCI device
- *
- * Return a QDict with the following device information:
- *
- * - "domain": domain number
- * - "bus": bus number
- * - "slot": slot number
- * - "function": function number
- *
- * Example:
- *
- * { "domain": 0, "bus": 0, "slot": 5, "function": 0 }
- */
-int pci_device_hot_add(Monitor *mon, const QDict *qdict, QObject **ret_data)
+void pci_device_hot_add(Monitor *mon, const QDict *qdict)
{
PCIDevice *dev = NULL;
const char *pci_addr = qdict_get_str(qdict, "pci_addr");
@@ -278,20 +248,14 @@ int pci_device_hot_add(Monitor *mon, const QDict *qdict, QObject **ret_data)
dev = qemu_pci_hot_add_storage(mon, pci_addr, opts);
} else {
monitor_printf(mon, "invalid type: %s\n", type);
- return -1;
}
if (dev) {
- *ret_data =
- qobject_from_jsonf("{ 'domain': 0, 'bus': %d, 'slot': %d, "
- "'function': %d }", pci_bus_num(dev->bus),
- PCI_SLOT(dev->devfn), PCI_FUNC(dev->devfn));
- } else {
+ monitor_printf(mon, "OK domain %d, bus %d, slot %d, function %d\n",
+ 0, pci_bus_num(dev->bus), PCI_SLOT(dev->devfn),
+ PCI_FUNC(dev->devfn));
+ } else
monitor_printf(mon, "failed to add %s\n", opts);
- return -1;
- }
-
- return 0;
}
#endif
diff --git a/qemu-monitor.hx b/qemu-monitor.hx
index 5ea5748..501f9de 100644
--- a/qemu-monitor.hx
+++ b/qemu-monitor.hx
@@ -859,8 +859,7 @@ ETEXI
.args_type = "pci_addr:s,type:s,opts:s?",
.params = "auto|[[<domain>:]<bus>:]<slot> nic|storage [[vlan=n][,macaddr=addr][,model=type]] [file=file][,if=type][,bus=nr]...",
.help = "hot-add PCI device",
- .user_print = pci_device_hot_add_print,
- .mhandler.cmd_new = pci_device_hot_add,
+ .mhandler.cmd = pci_device_hot_add,
},
#endif
diff --git a/sysemu.h b/sysemu.h
index d0effa0..fcfccdf 100644
--- a/sysemu.h
+++ b/sysemu.h
@@ -199,8 +199,7 @@ extern DriveInfo *drive_init(QemuOpts *arg, void *machine, int *fatal_error);
DriveInfo *add_init_drive(const char *opts);
/* pci-hotplug */
-void pci_device_hot_add_print(Monitor *mon, const QObject *data);
-int pci_device_hot_add(Monitor *mon, const QDict *qdict, QObject **ret_data);
+void pci_device_hot_add(Monitor *mon, const QDict *qdict);
void drive_hot_add(Monitor *mon, const QDict *qdict);
int pci_device_hot_remove(Monitor *mon, const char *pci_addr);
int do_pci_device_hot_remove(Monitor *mon, const QDict *qdict,
--
1.6.6.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] Re: [PATCH] Revert "PCI: Convert pci_device_hot_add() to QObject"
2010-04-26 17:44 [Qemu-devel] [PATCH] Revert "PCI: Convert pci_device_hot_add() to QObject" Markus Armbruster
@ 2010-04-26 18:21 ` Luiz Capitulino
2010-05-03 9:29 ` Markus Armbruster
0 siblings, 1 reply; 6+ messages in thread
From: Luiz Capitulino @ 2010-04-26 18:21 UTC (permalink / raw)
To: Markus Armbruster; +Cc: qemu-devel
On Mon, 26 Apr 2010 19:44:19 +0200
Markus Armbruster <armbru@redhat.com> wrote:
> We don't want pci_add in QMP. Use device_add instead.
>
> This reverts commit 7a344f7ac7bb651d0556a933ed8060d3a9e5d949.
>
> Conflicts:
>
> hw/pci-hotplug.c
> sysemu.h
>
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
The patch looks ok and I'm assuming that device_add can do everything
pci_add does, right?
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] Re: [PATCH] Revert "PCI: Convert pci_device_hot_add() to QObject"
2010-04-26 18:21 ` [Qemu-devel] " Luiz Capitulino
@ 2010-05-03 9:29 ` Markus Armbruster
2010-05-03 16:59 ` Anthony Liguori
0 siblings, 1 reply; 6+ messages in thread
From: Markus Armbruster @ 2010-05-03 9:29 UTC (permalink / raw)
To: Luiz Capitulino; +Cc: qemu-devel
Luiz Capitulino <lcapitulino@redhat.com> writes:
> On Mon, 26 Apr 2010 19:44:19 +0200
> Markus Armbruster <armbru@redhat.com> wrote:
>
>> We don't want pci_add in QMP. Use device_add instead.
>>
>> This reverts commit 7a344f7ac7bb651d0556a933ed8060d3a9e5d949.
>>
>> Conflicts:
>>
>> hw/pci-hotplug.c
>> sysemu.h
>>
>> Signed-off-by: Markus Armbruster <armbru@redhat.com>
>
> The patch looks ok and I'm assuming that device_add can do everything
> pci_add does, right?
Not quite.
pci_add comes in several flavors:
* nic: Hot plug a PCI NIC. device_add is more general.
* storage: Hot plug a PCI disk controller, and a drive connected to it.
The controller is either virtio-blk-pci (if=virtio) or lsi53c895a
(if=scsi). With the latter, the drive is optional. Use drive_add to
hotplug additional SCSI drives. Except drive_add is not available in
QMP.
device_add is more general for controllers and the guest part of
drives. I'm working on a more general alternative for the host part
of drives.
Why am I proposing to remove pci_add from QMP before its replacement is
ready? I want it out sooner rather than later, because it isn't fully
functional (errors and drive_add are missing), and we do not plan to
complete the job. In other words, it's not really usable over QMP now,
and it's not what we want for QMP anyway. Since we don't want it to be
used over QMP, we should take it out, not leave it around as a trap for
the uninitiated.
Anyway, I'll respin with a more verbose commit message, and I'll throw
in the buddy patch Revert "monitor: Convert do_pci_device_hot_remove()
to QObject".
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] Re: [PATCH] Revert "PCI: Convert pci_device_hot_add() to QObject"
2010-05-03 9:29 ` Markus Armbruster
@ 2010-05-03 16:59 ` Anthony Liguori
2010-05-04 8:38 ` Markus Armbruster
2010-05-04 9:26 ` Daniel P. Berrange
0 siblings, 2 replies; 6+ messages in thread
From: Anthony Liguori @ 2010-05-03 16:59 UTC (permalink / raw)
To: Markus Armbruster; +Cc: qemu-devel, Luiz Capitulino
On 05/03/2010 04:29 AM, Markus Armbruster wrote:
> Luiz Capitulino<lcapitulino@redhat.com> writes:
>
>
>> On Mon, 26 Apr 2010 19:44:19 +0200
>> Markus Armbruster<armbru@redhat.com> wrote:
>>
>>
>>> We don't want pci_add in QMP. Use device_add instead.
>>>
>>> This reverts commit 7a344f7ac7bb651d0556a933ed8060d3a9e5d949.
>>>
>>> Conflicts:
>>>
>>> hw/pci-hotplug.c
>>> sysemu.h
>>>
>>> Signed-off-by: Markus Armbruster<armbru@redhat.com>
>>>
>> The patch looks ok and I'm assuming that device_add can do everything
>> pci_add does, right?
>>
> Not quite.
>
> pci_add comes in several flavors:
>
> * nic: Hot plug a PCI NIC. device_add is more general.
>
> * storage: Hot plug a PCI disk controller, and a drive connected to it.
>
> The controller is either virtio-blk-pci (if=virtio) or lsi53c895a
> (if=scsi). With the latter, the drive is optional. Use drive_add to
> hotplug additional SCSI drives. Except drive_add is not available in
> QMP.
>
> device_add is more general for controllers and the guest part of
> drives. I'm working on a more general alternative for the host part
> of drives.
>
> Why am I proposing to remove pci_add from QMP before its replacement is
> ready? I want it out sooner rather than later, because it isn't fully
> functional (errors and drive_add are missing), and we do not plan to
> complete the job. In other words, it's not really usable over QMP now,
> and it's not what we want for QMP anyway. Since we don't want it to be
> used over QMP, we should take it out, not leave it around as a trap for
> the uninitiated.
>
> Anyway, I'll respin with a more verbose commit message, and I'll throw
> in the buddy patch Revert "monitor: Convert do_pci_device_hot_remove()
> to QObject".
>
Does libvirt not use pci_add with QMP?
Regards,
Anthony Liguori
>
>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] Re: [PATCH] Revert "PCI: Convert pci_device_hot_add() to QObject"
2010-05-03 16:59 ` Anthony Liguori
@ 2010-05-04 8:38 ` Markus Armbruster
2010-05-04 9:26 ` Daniel P. Berrange
1 sibling, 0 replies; 6+ messages in thread
From: Markus Armbruster @ 2010-05-04 8:38 UTC (permalink / raw)
To: Anthony Liguori; +Cc: qemu-devel, Luiz Capitulino
Anthony Liguori <anthony@codemonkey.ws> writes:
> On 05/03/2010 04:29 AM, Markus Armbruster wrote:
[...]
>> Why am I proposing to remove pci_add from QMP before its replacement is
>> ready? I want it out sooner rather than later, because it isn't fully
>> functional (errors and drive_add are missing), and we do not plan to
>> complete the job. In other words, it's not really usable over QMP now,
>> and it's not what we want for QMP anyway. Since we don't want it to be
>> used over QMP, we should take it out, not leave it around as a trap for
>> the uninitiated.
>>
>> Anyway, I'll respin with a more verbose commit message, and I'll throw
>> in the buddy patch Revert "monitor: Convert do_pci_device_hot_remove()
>> to QObject".
>>
>
> Does libvirt not use pci_add with QMP?
Re QMP in general: libvirt has code for QMP, but it is disabled. It'll
get enabled as soon as a usable QMP ships, which we all expect for the
next release.
Re pci_add over QMP, git://libvirt.org/libvirt.git has:
commit efd4ee7871a631a9293e94d58fc4384c162388a7
Author: Daniel P. Berrange <berrange@redhat.com>
Date: Wed Apr 14 15:23:38 2010 +0100
Remove code from JSON monitor for commands that won't be ported
The QEMU developers have stated that they will not be porting
the commands 'pci_add', 'pci_del', 'usb_add', 'usb_del' to the
JSON mode monitor, since they're obsoleted by 'device_add'
and 'device_del'. libvirt has (untested) code that would have
supported those commands in theory, but since we already use
device_add/del where available, there's no need to keep the
legacy stuff anymore.
The text mode monitor keeps support for all commands for sake
of historical compatability.
* src/qemu/qemu_monitor_json.c: Remove 'pci_add', 'pci_del',
'usb_add', 'usb_del' commands
Does this answer your question?
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Qemu-devel] Re: [PATCH] Revert "PCI: Convert pci_device_hot_add() to QObject"
2010-05-03 16:59 ` Anthony Liguori
2010-05-04 8:38 ` Markus Armbruster
@ 2010-05-04 9:26 ` Daniel P. Berrange
1 sibling, 0 replies; 6+ messages in thread
From: Daniel P. Berrange @ 2010-05-04 9:26 UTC (permalink / raw)
To: Anthony Liguori; +Cc: Luiz Capitulino, Markus Armbruster, qemu-devel
On Mon, May 03, 2010 at 11:59:55AM -0500, Anthony Liguori wrote:
> On 05/03/2010 04:29 AM, Markus Armbruster wrote:
> >Why am I proposing to remove pci_add from QMP before its replacement is
> >ready? I want it out sooner rather than later, because it isn't fully
> >functional (errors and drive_add are missing), and we do not plan to
> >complete the job. In other words, it's not really usable over QMP now,
> >and it's not what we want for QMP anyway. Since we don't want it to be
> >used over QMP, we should take it out, not leave it around as a trap for
> >the uninitiated.
> >
> >Anyway, I'll respin with a more verbose commit message, and I'll throw
> >in the buddy patch Revert "monitor: Convert do_pci_device_hot_remove()
> >to QObject".
> >
>
> Does libvirt not use pci_add with QMP?
As of QEMU 0.12, libvirt uses -device syntax for everything.
As of QEMU 0.13, libvirt will use QMP for everything (if compiled with
the libyajl JSON library - otherwise text mode only).
When -device is in use, we use device_add exclusively. Therefore,
we will have no need for pci_add & friends when using QMP.
Regards,
Daniel
--
|: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2010-05-04 9:26 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-04-26 17:44 [Qemu-devel] [PATCH] Revert "PCI: Convert pci_device_hot_add() to QObject" Markus Armbruster
2010-04-26 18:21 ` [Qemu-devel] " Luiz Capitulino
2010-05-03 9:29 ` Markus Armbruster
2010-05-03 16:59 ` Anthony Liguori
2010-05-04 8:38 ` Markus Armbruster
2010-05-04 9:26 ` Daniel P. Berrange
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.