[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] PVHVM VCPU hotplug mechanism via ACPI hotplug doesn't work in Xen 4.[1, 2, 3]



> -----Original Message-----
> From: xen-devel-bounces@xxxxxxxxxxxxx [mailto:xen-devel-
> bounces@xxxxxxxxxxxxx] On Behalf Of Ross Philipson
> Sent: Monday, May 06, 2013 5:07 PM
> To: Konrad Rzeszutek Wilk; jinsong.liu@xxxxxxxxx; Stefano Stabellini;
> xen-devel@xxxxxxxxxxxxxxxxxxx
> Subject: Re: [Xen-devel] PVHVM VCPU hotplug mechanism via ACPI hotplug
> doesn't work in Xen 4.[1, 2, 3]
> 
> > -----Original Message-----
> > From: xen-devel-bounces@xxxxxxxxxxxxx [mailto:xen-devel-
> > bounces@xxxxxxxxxxxxx] On Behalf Of Konrad Rzeszutek Wilk
> > Sent: Monday, May 06, 2013 11:45 AM
> > To: jinsong.liu@xxxxxxxxx; Stefano Stabellini; xen-
> > devel@xxxxxxxxxxxxxxxxxxx
> > Subject: [Xen-devel] PVHVM VCPU hotplug mechanism via ACPI hotplug
> > doesn't work in Xen 4.[1, 2, 3]
> >
> > Which is probably the case b/c the Linux side implementation for
> > such simple operation as :
> >
> > echo 0 > /sys/devices/system/cpu/cpu1/online
> > echo 1 > /sys/devices/system/cpu/cpu1/online
> >
> > would have blown up so nobody tested it?
> >
> > Now that is fixed (v3.10 + http://lists.xen.org/archives/html/xen-
> > devel/2013-05/msg00503.html)
> > I tried to do 'xm vcpu-set latest X' for a PVHVM guest.
> >
> > The first iteration was using this simple guest config:
> > builder='hvm'
> > disk = [ 'file:/mnt/lab/latest/root_image.iso,hdc:cdrom,r']
> > memory = 2048
> > boot="d"
> > maxvcpus=4
> > vcpus=4
> > serial='pty'
> > vnclisten="0.0.0.0"
> > name="latest"
> > vif = [ 'mac=00:0F:4B:00:00:68, bridge=switch' ]
> >
> > And I tried simple combinations of 'x[m|l] vcpu-set latest 2|3|4' and
> > none of them worked.
> >
> > In Xen 4.1 (and Xen 4.3 if I use:device_model_version="qemu-xen-
> > traditional")
> > I saw that the qemu log does the right thing:
> > .. snip..
> > Remove vcpu 2
> > Remove vcpu 1
> >
> > and the guest's ACPI SCI is incrementing:
> > # cat /proc/interrupts  |grep acpi
> >    9:          1          0          0   IO-APIC-fasteoi   acpi
> > # cat /proc/interrupts  |grep acpi
> >    9:          2          0          0   IO-APIC-fasteoi   acpi
> >
> > But nothing looks to be happening. Where should I look?
> > The ACPI DSDT is a bit daunting. Has this ever worked in the past?
> > If so, what code ran to hotplug CPUs?
> 
> I am looking at qemu-traditional (I believe it is traditional
> here: http://xenbits.xen.org/gitweb/?p=qemu-xen-unstable.git;a=summary).
> 
> The code for raising the SCI for processor hotplug doesn't
> look quite right to me. This is the code I see in
> qemu_cpu_add_remove:
> 
>     if (gpe_state.gpe0_en[0] & 4) {
>         qemu_set_irq(sci_irq, 1);
>         qemu_set_irq(sci_irq, 0);
>     }
> 
> I would expect the code to actually set the GPE status bit for
> the GPE register in question (in this case bit 2 for _L02), maybe:
> 
>     if ((gpe_state.gpe0_en[0] & 4)&&
>         ((gpe_state.gpe0_sts[0] & 4) == 0)) {
>         gpe_state.gpe0_sts[0] &= 4;
>         qemu_irq_raise(sci_irq);
>     }
> 
> I also don't understand why it is raising the SCI as level and
> then edge. That GPE is defined in the DSDT as level:
> 
>     /* Define GPE control method '_L02'. */
>     push_block("Scope", "\\_GPE");
>     push_block("Method", "_L02");
>     stmt("Return", "\\_SB.PRSC()");
> 
> Maybe look at how the PCI hotplug GPE's occur (ACPI_PHP_GPE_BIT).
> Without
> setting a status register the SCI may just be going in the bit bucket.
> 
> Anyway hope this is helpful at all...

Never mind, I missed the calls above to enable_processor
and disable_processor which seem to be doing the right
thing (long day on a plane). My sample code above had a
type-o but g->gpe0_sts[0] |= 4; looks right.

I still don't understand why it raises the SCI level then edge though.

Ross

> 
> Ross
> 
> >
> >
> > _______________________________________________
> > Xen-devel mailing list
> > Xen-devel@xxxxxxxxxxxxx
> > http://lists.xen.org/xen-devel
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxx
> http://lists.xen.org/xen-devel

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.