Re: [Xen-devel] [PATCH] xen, apic: Setup our own APIC driver and validator for APIC IDs.

From: Konrad Rzeszutek Wilk
Date: Mon Mar 02 2015 - 09:23:13 EST


On Mon, Mar 02, 2015 at 11:24:04AM +0000, David Vrabel wrote:
> On 27/02/15 21:14, Konrad Rzeszutek Wilk wrote:
> > Via CPUID masking and the different apic-> overrides we
> > effectively make PV guests only but with the default APIC
> > driver. That is OK as an PV guest should never access any
> > APIC registers. However, the APIC is also used to limit the
> > amount of CPUs if the APIC IDs are incorrect - and since we
> > mask the x2APIC from the CPUID - any APIC IDs above 0xFF
> > are deemed incorrect by the default APIC routines.
> >
> > As such add a new routine to check for APIC ID which will
> > be only used if the CPUID (native one) tells us the system
> > is using x2APIC.
>
> I was applying this but it breaks the build.

Could you send me your .config please.
>
> arch/x86/built-in.o:(.data+0x2a28): undefined reference to
> `xen_send_IPI_mask'
> arch/x86/built-in.o:(.data+0x2a30): undefined reference to
> `xen_send_IPI_mask_allbutself'
> arch/x86/built-in.o:(.data+0x2a38): undefined reference to
> `xen_send_IPI_allbutself'
> arch/x86/built-in.o:(.data+0x2a40): undefined reference to
> `xen_send_IPI_all'
> arch/x86/built-in.o:(.data+0x2a48): undefined reference to
> `xen_send_IPI_self'
>
> There are some minor things that I was going to fix up (see below).
>
> I also found the commit message a bit garbled so rewrote it to:
>
> x86/xen: Provide a "Xen PV" APIC driver to support >255 VCPUs
>
> Instead of mangling the default APIC driver, provide a Xen PV guest
> specific one that explicitly provides appropriate methods.
>
> This allows use to report that all APIC IDs are valid, allowing dom0
> to boot with more than 255 VCPUs.
>
> Since the probe order of APIC drivers is link dependent, we add in an
> late probe function to change to the Xen PV if it hadn't been done
> during bootup.
>
>
> > +static u32 xen_safe_apic_wait_icr_idle(void)
> > +{
> > + return 0;
> > +}
> > +
> > +
>
> Extra blank line.
>
> > +static int probe_xen(void)
>
> xen_apic_probe_pv
>
> > +static struct apic xen_apic = {
>
> static struct apic xen_pv_apic
>
> > +void __init xen_apic_check(void)
>
> static
>
> David
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/