* Re: [Qemu-devel] [Xen-devel] target-i386: Introduce ICC bus/device/bridge
2013-05-28 11:57 ` [Qemu-devel] [Xen-devel] " Andreas Färber
@ 2013-05-28 13:12 ` jacek burghardt
2013-05-28 13:44 ` Stefano Stabellini
2013-05-28 13:44 ` [Qemu-devel] " Stefano Stabellini
2 siblings, 0 replies; 19+ messages in thread
From: jacek burghardt @ 2013-05-28 13:12 UTC (permalink / raw)
To: Andreas Färber
Cc: Stefano Stabellini, qemu-devel, xen-devel@lists.xen.org,
Gerd Hoffmann, Paolo Bonzini, Igor Mammedov
[-- Attachment #1: Type: text/plain, Size: 3394 bytes --]
is it possible then to have proper icc buss added to the created cpu. I
only see invalid icc bridge when starting pvm but it works fine with hvm no
errors. I can test i just need to figure out how to patch downloaded
qemu-git at the time of creation of package for arch linux
On Tue, May 28, 2013 at 5:57 AM, Andreas Färber <afaerber@suse.de> wrote:
> Am 28.05.2013 13:49, schrieb Stefano Stabellini:
> > On Mon, 27 May 2013, Igor Mammedov wrote:
> >> On Fri, 24 May 2013 08:56:14 -0600
> >> jacek burghardt <jaceksburghardt@gmail.com> wrote:
> >>
> >>> I wonder if anyone has patch that allows to tlak to icc bus introduced
> in
> >>> qemu upstream ?
> >>>
> https://github.com/qemu/qemu/commit/f0513d2c0156799e0c75a108ab9a049eea4f9607
> >>>
> >>> icc-bridge will serve as a parent for icc-bus and provide
> >>> mmio mapping services to child icc-devices.
> >>> * icc-device will replace SysBusDevice as a parent of APIC
> >>> and IOAPIC devices.
> >>
> >> looking at xen_init_pv() it creates dummy CPU which appears
> >> not to be used by PV guest. What was the purpose in creating it?
> >>
> >
> > I think that the purpose used to be keeping the rest of QEMU happy,
> > because it used to assume that a CPU was being emulated. As a matter of
> > fact the Xen PV machine does not actually emulate anything, especially
> > it doesn't emulate the CPU.
> > Nowadays QEMU is capable of handling machines without cpus, so I suggest
> > removing this code from xen_init_pv altogether.
> >
> > jacek, can you please confirm that the patch below solves your problem?
>
> That's based on top of your other patches though, right? Accessing
> first_cpu with no CPU created is doomed to fail.
>
> qtest does create CPUs, it just doesn't execute them.
>
> Not arguing against this, just cautioning that additional NULL checks
> may be needed elsewhere.
>
> Cheers,
> Andreas
>
> > ---
> >
> >
> > xen_machine_pv: do not create a dummy CPU in machine->init
> >
> > QEMU can cope with machines without cpus.
> >
> > Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> >
> > diff --git a/hw/i386/xen_machine_pv.c b/hw/i386/xen_machine_pv.c
> > index f829a52..b02ffac 100644
> > --- a/hw/i386/xen_machine_pv.c
> > +++ b/hw/i386/xen_machine_pv.c
> > @@ -31,27 +31,12 @@
> >
> > static void xen_init_pv(QEMUMachineInitArgs *args)
> > {
> > - const char *cpu_model = args->cpu_model;
> > const char *kernel_filename = args->kernel_filename;
> > const char *kernel_cmdline = args->kernel_cmdline;
> > const char *initrd_filename = args->initrd_filename;
> > - X86CPU *cpu;
> > - CPUState *cs;
> > DriveInfo *dinfo;
> > int i;
> >
> > - /* Initialize a dummy CPU */
> > - if (cpu_model == NULL) {
> > -#ifdef TARGET_X86_64
> > - cpu_model = "qemu64";
> > -#else
> > - cpu_model = "qemu32";
> > -#endif
> > - }
> > - cpu = cpu_x86_init(cpu_model);
> > - cs = CPU(cpu);
> > - cs->halted = 1;
> > -
> > /* Initialize backend core & drivers */
> > if (xen_be_init() != 0) {
> > fprintf(stderr, "%s: xen backend core setup failed\n",
> __FUNCTION__);
> >
>
>
> --
> SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
> GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
>
[-- Attachment #2: Type: text/html, Size: 4531 bytes --]
^ permalink raw reply [flat|nested] 19+ messages in thread* Re: [Qemu-devel] target-i386: Introduce ICC bus/device/bridge
@ 2013-05-28 13:12 ` jacek burghardt
0 siblings, 0 replies; 19+ messages in thread
From: jacek burghardt @ 2013-05-28 13:12 UTC (permalink / raw)
To: Andreas Färber
Cc: Stefano Stabellini, qemu-devel, xen-devel@lists.xen.org,
Gerd Hoffmann, Paolo Bonzini, Igor Mammedov
[-- Attachment #1.1: Type: text/plain, Size: 3394 bytes --]
is it possible then to have proper icc buss added to the created cpu. I
only see invalid icc bridge when starting pvm but it works fine with hvm no
errors. I can test i just need to figure out how to patch downloaded
qemu-git at the time of creation of package for arch linux
On Tue, May 28, 2013 at 5:57 AM, Andreas Färber <afaerber@suse.de> wrote:
> Am 28.05.2013 13:49, schrieb Stefano Stabellini:
> > On Mon, 27 May 2013, Igor Mammedov wrote:
> >> On Fri, 24 May 2013 08:56:14 -0600
> >> jacek burghardt <jaceksburghardt@gmail.com> wrote:
> >>
> >>> I wonder if anyone has patch that allows to tlak to icc bus introduced
> in
> >>> qemu upstream ?
> >>>
> https://github.com/qemu/qemu/commit/f0513d2c0156799e0c75a108ab9a049eea4f9607
> >>>
> >>> icc-bridge will serve as a parent for icc-bus and provide
> >>> mmio mapping services to child icc-devices.
> >>> * icc-device will replace SysBusDevice as a parent of APIC
> >>> and IOAPIC devices.
> >>
> >> looking at xen_init_pv() it creates dummy CPU which appears
> >> not to be used by PV guest. What was the purpose in creating it?
> >>
> >
> > I think that the purpose used to be keeping the rest of QEMU happy,
> > because it used to assume that a CPU was being emulated. As a matter of
> > fact the Xen PV machine does not actually emulate anything, especially
> > it doesn't emulate the CPU.
> > Nowadays QEMU is capable of handling machines without cpus, so I suggest
> > removing this code from xen_init_pv altogether.
> >
> > jacek, can you please confirm that the patch below solves your problem?
>
> That's based on top of your other patches though, right? Accessing
> first_cpu with no CPU created is doomed to fail.
>
> qtest does create CPUs, it just doesn't execute them.
>
> Not arguing against this, just cautioning that additional NULL checks
> may be needed elsewhere.
>
> Cheers,
> Andreas
>
> > ---
> >
> >
> > xen_machine_pv: do not create a dummy CPU in machine->init
> >
> > QEMU can cope with machines without cpus.
> >
> > Signed-off-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com>
> >
> > diff --git a/hw/i386/xen_machine_pv.c b/hw/i386/xen_machine_pv.c
> > index f829a52..b02ffac 100644
> > --- a/hw/i386/xen_machine_pv.c
> > +++ b/hw/i386/xen_machine_pv.c
> > @@ -31,27 +31,12 @@
> >
> > static void xen_init_pv(QEMUMachineInitArgs *args)
> > {
> > - const char *cpu_model = args->cpu_model;
> > const char *kernel_filename = args->kernel_filename;
> > const char *kernel_cmdline = args->kernel_cmdline;
> > const char *initrd_filename = args->initrd_filename;
> > - X86CPU *cpu;
> > - CPUState *cs;
> > DriveInfo *dinfo;
> > int i;
> >
> > - /* Initialize a dummy CPU */
> > - if (cpu_model == NULL) {
> > -#ifdef TARGET_X86_64
> > - cpu_model = "qemu64";
> > -#else
> > - cpu_model = "qemu32";
> > -#endif
> > - }
> > - cpu = cpu_x86_init(cpu_model);
> > - cs = CPU(cpu);
> > - cs->halted = 1;
> > -
> > /* Initialize backend core & drivers */
> > if (xen_be_init() != 0) {
> > fprintf(stderr, "%s: xen backend core setup failed\n",
> __FUNCTION__);
> >
>
>
> --
> SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
> GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
>
[-- Attachment #1.2: Type: text/html, Size: 4531 bytes --]
[-- Attachment #2: Type: text/plain, Size: 126 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 19+ messages in thread* Re: [Qemu-devel] target-i386: Introduce ICC bus/device/bridge
2013-05-28 13:12 ` [Qemu-devel] " jacek burghardt
(?)
@ 2013-05-28 15:15 ` Stefano Stabellini
-1 siblings, 0 replies; 19+ messages in thread
From: Stefano Stabellini @ 2013-05-28 15:15 UTC (permalink / raw)
To: jacek burghardt
Cc: Stefano Stabellini, qemu-devel, xen-devel@lists.xen.org,
Gerd Hoffmann, Paolo Bonzini, Igor Mammedov, Andreas Färber
[-- Attachment #1: Type: text/plain, Size: 439 bytes --]
On Tue, 28 May 2013, jacek burghardt wrote:
> is it possible then to have proper icc buss added to the created cpu. I only see invalid icc bridge when starting pvm but it works
> fine with hvm no errors. I can test i just need to figure out how to patch downloaded qemu-git at the time of creation of package
> for arch linux
HVM guests and PV guests use two different machine types in QEMU, PV
guests don't actually need one.
[-- Attachment #2: Type: text/plain, Size: 126 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] [Xen-devel] target-i386: Introduce ICC bus/device/bridge
2013-05-28 13:12 ` [Qemu-devel] " jacek burghardt
(?)
(?)
@ 2013-05-28 15:15 ` Stefano Stabellini
-1 siblings, 0 replies; 19+ messages in thread
From: Stefano Stabellini @ 2013-05-28 15:15 UTC (permalink / raw)
To: jacek burghardt
Cc: Stefano Stabellini, qemu-devel, xen-devel@lists.xen.org,
Gerd Hoffmann, Paolo Bonzini, Igor Mammedov, Andreas Färber
[-- Attachment #1: Type: text/plain, Size: 439 bytes --]
On Tue, 28 May 2013, jacek burghardt wrote:
> is it possible then to have proper icc buss added to the created cpu. I only see invalid icc bridge when starting pvm but it works
> fine with hvm no errors. I can test i just need to figure out how to patch downloaded qemu-git at the time of creation of package
> for arch linux
HVM guests and PV guests use two different machine types in QEMU, PV
guests don't actually need one.
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] [Xen-devel] target-i386: Introduce ICC bus/device/bridge
2013-05-28 11:57 ` [Qemu-devel] [Xen-devel] " Andreas Färber
2013-05-28 13:12 ` [Qemu-devel] " jacek burghardt
@ 2013-05-28 13:44 ` Stefano Stabellini
2013-05-28 14:12 ` [Qemu-devel] " Paolo Bonzini
2013-05-28 14:12 ` [Qemu-devel] [Xen-devel] " Paolo Bonzini
2013-05-28 13:44 ` [Qemu-devel] " Stefano Stabellini
2 siblings, 2 replies; 19+ messages in thread
From: Stefano Stabellini @ 2013-05-28 13:44 UTC (permalink / raw)
To: Andreas Färber
Cc: Stefano Stabellini, qemu-devel, xen-devel@lists.xen.org, kraxel,
Paolo Bonzini, Igor Mammedov, jacek burghardt
[-- Attachment #1: Type: text/plain, Size: 3451 bytes --]
On Tue, 28 May 2013, Andreas Färber wrote:
> Am 28.05.2013 13:49, schrieb Stefano Stabellini:
> > On Mon, 27 May 2013, Igor Mammedov wrote:
> >> On Fri, 24 May 2013 08:56:14 -0600
> >> jacek burghardt <jaceksburghardt@gmail.com> wrote:
> >>
> >>> I wonder if anyone has patch that allows to tlak to icc bus introduced in
> >>> qemu upstream ?
> >>> https://github.com/qemu/qemu/commit/f0513d2c0156799e0c75a108ab9a049eea4f9607
> >>>
> >>> icc-bridge will serve as a parent for icc-bus and provide
> >>> mmio mapping services to child icc-devices.
> >>> * icc-device will replace SysBusDevice as a parent of APIC
> >>> and IOAPIC devices.
> >>
> >> looking at xen_init_pv() it creates dummy CPU which appears
> >> not to be used by PV guest. What was the purpose in creating it?
> >>
> >
> > I think that the purpose used to be keeping the rest of QEMU happy,
> > because it used to assume that a CPU was being emulated. As a matter of
> > fact the Xen PV machine does not actually emulate anything, especially
> > it doesn't emulate the CPU.
> > Nowadays QEMU is capable of handling machines without cpus, so I suggest
> > removing this code from xen_init_pv altogether.
> >
> > jacek, can you please confirm that the patch below solves your problem?
>
> That's based on top of your other patches though, right? Accessing
> first_cpu with no CPU created is doomed to fail.
That is done for HVM guests (pc_xen_hvm_init and xen-all.c), while this
code is for PV guests (xen_machine_pv.c).
> qtest does create CPUs, it just doesn't execute them.
>
> Not arguing against this, just cautioning that additional NULL checks
> may be needed elsewhere.
That's a good point.
I actually tested it and seems to work fine but I wouldn't want to paint
me into a corner by setting up a new use case that nobody else is
testing.
On the other hand I dislike having to create a "useless" x86 cpu, that
at the moment doesn't even work because cpu_x86_init seems to be broken
by the lack of the ICC bridge.
Overall if the QEMU machine model supports it (and it looks like it
does), I would rather choose the "no cpu" option.
See below the uglier alternative:
---
diff --git a/hw/i386/xen_machine_pv.c b/hw/i386/xen_machine_pv.c
index f829a52..260b211 100644
--- a/hw/i386/xen_machine_pv.c
+++ b/hw/i386/xen_machine_pv.c
@@ -22,6 +22,7 @@
* THE SOFTWARE.
*/
+#include "hw/cpu/icc_bus.h"
#include "hw/hw.h"
#include "hw/i386/pc.h"
#include "hw/boards.h"
@@ -35,10 +36,9 @@ static void xen_init_pv(QEMUMachineInitArgs *args)
const char *kernel_filename = args->kernel_filename;
const char *kernel_cmdline = args->kernel_cmdline;
const char *initrd_filename = args->initrd_filename;
- X86CPU *cpu;
- CPUState *cs;
DriveInfo *dinfo;
int i;
+ DeviceState *icc_bridge;
/* Initialize a dummy CPU */
if (cpu_model == NULL) {
@@ -48,9 +48,10 @@ static void xen_init_pv(QEMUMachineInitArgs *args)
cpu_model = "qemu32";
#endif
}
- cpu = cpu_x86_init(cpu_model);
- cs = CPU(cpu);
- cs->halted = 1;
+ icc_bridge = qdev_create(NULL, TYPE_ICC_BRIDGE);
+ object_property_add_child(qdev_get_machine(), "icc-bridge",
+ OBJECT(icc_bridge), NULL);
+ pc_cpus_init(cpu_model, icc_bridge);
/* Initialize backend core & drivers */
if (xen_be_init() != 0) {
^ permalink raw reply related [flat|nested] 19+ messages in thread* Re: [Qemu-devel] target-i386: Introduce ICC bus/device/bridge
2013-05-28 13:44 ` Stefano Stabellini
@ 2013-05-28 14:12 ` Paolo Bonzini
2013-05-28 14:12 ` [Qemu-devel] [Xen-devel] " Paolo Bonzini
1 sibling, 0 replies; 19+ messages in thread
From: Paolo Bonzini @ 2013-05-28 14:12 UTC (permalink / raw)
To: Stefano Stabellini
Cc: qemu-devel, xen-devel@lists.xen.org, kraxel, Igor Mammedov,
Andreas Färber, jacek burghardt
Il 28/05/2013 15:44, Stefano Stabellini ha scritto:
>
> I actually tested it and seems to work fine but I wouldn't want to paint
> me into a corner by setting up a new use case that nobody else is
> testing.
> On the other hand I dislike having to create a "useless" x86 cpu, that
> at the moment doesn't even work because cpu_x86_init seems to be broken
> by the lack of the ICC bridge.
>
> Overall if the QEMU machine model supports it (and it looks like it
> does), I would rather choose the "no cpu" option.
I also prefer this. I wonder if this change would make xen_machine_pv.c
work for any architecture rather than just i386, at least for xen_mode
== XEN_ATTACH.
Paolo
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] [Xen-devel] target-i386: Introduce ICC bus/device/bridge
2013-05-28 13:44 ` Stefano Stabellini
2013-05-28 14:12 ` [Qemu-devel] " Paolo Bonzini
@ 2013-05-28 14:12 ` Paolo Bonzini
2013-05-28 15:14 ` [Qemu-devel] " Stefano Stabellini
2013-05-28 15:14 ` [Qemu-devel] [Xen-devel] " Stefano Stabellini
1 sibling, 2 replies; 19+ messages in thread
From: Paolo Bonzini @ 2013-05-28 14:12 UTC (permalink / raw)
To: Stefano Stabellini
Cc: qemu-devel, xen-devel@lists.xen.org, kraxel, Igor Mammedov,
Andreas Färber, jacek burghardt
Il 28/05/2013 15:44, Stefano Stabellini ha scritto:
>
> I actually tested it and seems to work fine but I wouldn't want to paint
> me into a corner by setting up a new use case that nobody else is
> testing.
> On the other hand I dislike having to create a "useless" x86 cpu, that
> at the moment doesn't even work because cpu_x86_init seems to be broken
> by the lack of the ICC bridge.
>
> Overall if the QEMU machine model supports it (and it looks like it
> does), I would rather choose the "no cpu" option.
I also prefer this. I wonder if this change would make xen_machine_pv.c
work for any architecture rather than just i386, at least for xen_mode
== XEN_ATTACH.
Paolo
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] target-i386: Introduce ICC bus/device/bridge
2013-05-28 14:12 ` [Qemu-devel] [Xen-devel] " Paolo Bonzini
@ 2013-05-28 15:14 ` Stefano Stabellini
2013-05-28 15:14 ` [Qemu-devel] [Xen-devel] " Stefano Stabellini
1 sibling, 0 replies; 19+ messages in thread
From: Stefano Stabellini @ 2013-05-28 15:14 UTC (permalink / raw)
To: Paolo Bonzini
Cc: Stefano Stabellini, qemu-devel, xen-devel@lists.xen.org, kraxel,
Igor Mammedov, Andreas Färber, jacek burghardt
On Tue, 28 May 2013, Paolo Bonzini wrote:
> Il 28/05/2013 15:44, Stefano Stabellini ha scritto:
> >
> > I actually tested it and seems to work fine but I wouldn't want to paint
> > me into a corner by setting up a new use case that nobody else is
> > testing.
> > On the other hand I dislike having to create a "useless" x86 cpu, that
> > at the moment doesn't even work because cpu_x86_init seems to be broken
> > by the lack of the ICC bridge.
> >
> > Overall if the QEMU machine model supports it (and it looks like it
> > does), I would rather choose the "no cpu" option.
>
> I also prefer this. I wonder if this change would make xen_machine_pv.c
> work for any architecture rather than just i386, at least for xen_mode
> == XEN_ATTACH.
Right, that is might goal. I want to have xen_machine_pv on ARM.
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] [Xen-devel] target-i386: Introduce ICC bus/device/bridge
2013-05-28 14:12 ` [Qemu-devel] [Xen-devel] " Paolo Bonzini
2013-05-28 15:14 ` [Qemu-devel] " Stefano Stabellini
@ 2013-05-28 15:14 ` Stefano Stabellini
1 sibling, 0 replies; 19+ messages in thread
From: Stefano Stabellini @ 2013-05-28 15:14 UTC (permalink / raw)
To: Paolo Bonzini
Cc: Stefano Stabellini, qemu-devel, xen-devel@lists.xen.org, kraxel,
Igor Mammedov, Andreas Färber, jacek burghardt
On Tue, 28 May 2013, Paolo Bonzini wrote:
> Il 28/05/2013 15:44, Stefano Stabellini ha scritto:
> >
> > I actually tested it and seems to work fine but I wouldn't want to paint
> > me into a corner by setting up a new use case that nobody else is
> > testing.
> > On the other hand I dislike having to create a "useless" x86 cpu, that
> > at the moment doesn't even work because cpu_x86_init seems to be broken
> > by the lack of the ICC bridge.
> >
> > Overall if the QEMU machine model supports it (and it looks like it
> > does), I would rather choose the "no cpu" option.
>
> I also prefer this. I wonder if this change would make xen_machine_pv.c
> work for any architecture rather than just i386, at least for xen_mode
> == XEN_ATTACH.
Right, that is might goal. I want to have xen_machine_pv on ARM.
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [Qemu-devel] target-i386: Introduce ICC bus/device/bridge
2013-05-28 11:57 ` [Qemu-devel] [Xen-devel] " Andreas Färber
2013-05-28 13:12 ` [Qemu-devel] " jacek burghardt
2013-05-28 13:44 ` Stefano Stabellini
@ 2013-05-28 13:44 ` Stefano Stabellini
2 siblings, 0 replies; 19+ messages in thread
From: Stefano Stabellini @ 2013-05-28 13:44 UTC (permalink / raw)
To: Andreas Färber
Cc: Stefano Stabellini, qemu-devel, xen-devel@lists.xen.org, kraxel,
Paolo Bonzini, Igor Mammedov, jacek burghardt
[-- Attachment #1: Type: text/plain, Size: 3451 bytes --]
On Tue, 28 May 2013, Andreas Färber wrote:
> Am 28.05.2013 13:49, schrieb Stefano Stabellini:
> > On Mon, 27 May 2013, Igor Mammedov wrote:
> >> On Fri, 24 May 2013 08:56:14 -0600
> >> jacek burghardt <jaceksburghardt@gmail.com> wrote:
> >>
> >>> I wonder if anyone has patch that allows to tlak to icc bus introduced in
> >>> qemu upstream ?
> >>> https://github.com/qemu/qemu/commit/f0513d2c0156799e0c75a108ab9a049eea4f9607
> >>>
> >>> icc-bridge will serve as a parent for icc-bus and provide
> >>> mmio mapping services to child icc-devices.
> >>> * icc-device will replace SysBusDevice as a parent of APIC
> >>> and IOAPIC devices.
> >>
> >> looking at xen_init_pv() it creates dummy CPU which appears
> >> not to be used by PV guest. What was the purpose in creating it?
> >>
> >
> > I think that the purpose used to be keeping the rest of QEMU happy,
> > because it used to assume that a CPU was being emulated. As a matter of
> > fact the Xen PV machine does not actually emulate anything, especially
> > it doesn't emulate the CPU.
> > Nowadays QEMU is capable of handling machines without cpus, so I suggest
> > removing this code from xen_init_pv altogether.
> >
> > jacek, can you please confirm that the patch below solves your problem?
>
> That's based on top of your other patches though, right? Accessing
> first_cpu with no CPU created is doomed to fail.
That is done for HVM guests (pc_xen_hvm_init and xen-all.c), while this
code is for PV guests (xen_machine_pv.c).
> qtest does create CPUs, it just doesn't execute them.
>
> Not arguing against this, just cautioning that additional NULL checks
> may be needed elsewhere.
That's a good point.
I actually tested it and seems to work fine but I wouldn't want to paint
me into a corner by setting up a new use case that nobody else is
testing.
On the other hand I dislike having to create a "useless" x86 cpu, that
at the moment doesn't even work because cpu_x86_init seems to be broken
by the lack of the ICC bridge.
Overall if the QEMU machine model supports it (and it looks like it
does), I would rather choose the "no cpu" option.
See below the uglier alternative:
---
diff --git a/hw/i386/xen_machine_pv.c b/hw/i386/xen_machine_pv.c
index f829a52..260b211 100644
--- a/hw/i386/xen_machine_pv.c
+++ b/hw/i386/xen_machine_pv.c
@@ -22,6 +22,7 @@
* THE SOFTWARE.
*/
+#include "hw/cpu/icc_bus.h"
#include "hw/hw.h"
#include "hw/i386/pc.h"
#include "hw/boards.h"
@@ -35,10 +36,9 @@ static void xen_init_pv(QEMUMachineInitArgs *args)
const char *kernel_filename = args->kernel_filename;
const char *kernel_cmdline = args->kernel_cmdline;
const char *initrd_filename = args->initrd_filename;
- X86CPU *cpu;
- CPUState *cs;
DriveInfo *dinfo;
int i;
+ DeviceState *icc_bridge;
/* Initialize a dummy CPU */
if (cpu_model == NULL) {
@@ -48,9 +48,10 @@ static void xen_init_pv(QEMUMachineInitArgs *args)
cpu_model = "qemu32";
#endif
}
- cpu = cpu_x86_init(cpu_model);
- cs = CPU(cpu);
- cs->halted = 1;
+ icc_bridge = qdev_create(NULL, TYPE_ICC_BRIDGE);
+ object_property_add_child(qdev_get_machine(), "icc-bridge",
+ OBJECT(icc_bridge), NULL);
+ pc_cpus_init(cpu_model, icc_bridge);
/* Initialize backend core & drivers */
if (xen_be_init() != 0) {
[-- Attachment #2: Type: text/plain, Size: 126 bytes --]
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
^ permalink raw reply related [flat|nested] 19+ messages in thread