xen: branch for v6.9-rc7
-----BEGIN PGP SIGNATURE----- iHUEABYIAB0WIQRTLbB6QfY48x44uB6AXGG7T9hjvgUCZjTV0gAKCRCAXGG7T9hj vlCoAP4wxpMiuAi7AR2PGUiSeGjH/RwDBJR8xBXJawwpzou8TwD/eWK0uYGYyfAr R1P2KQcOynBibNQ8iNvVkYjO270v5QY= =/4ly -----END PGP SIGNATURE----- Merge tag 'for-linus-6.9a-rc7-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip Pull xen fixes from Juergen Gross: "Two fixes when running as Xen PV guests for issues introduced in the 6.9 merge window, both related to apic id handling" * tag 'for-linus-6.9a-rc7-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip: x86/xen: return a sane initial apic id when running as PV guest x86/xen/smp_pv: Register the boot CPU APIC properly
This commit is contained in:
commit
ddb4c3f25b
@ -219,13 +219,21 @@ static __read_mostly unsigned int cpuid_leaf5_edx_val;
|
|||||||
static void xen_cpuid(unsigned int *ax, unsigned int *bx,
|
static void xen_cpuid(unsigned int *ax, unsigned int *bx,
|
||||||
unsigned int *cx, unsigned int *dx)
|
unsigned int *cx, unsigned int *dx)
|
||||||
{
|
{
|
||||||
unsigned maskebx = ~0;
|
unsigned int maskebx = ~0;
|
||||||
|
unsigned int or_ebx = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mask out inconvenient features, to try and disable as many
|
* Mask out inconvenient features, to try and disable as many
|
||||||
* unsupported kernel subsystems as possible.
|
* unsupported kernel subsystems as possible.
|
||||||
*/
|
*/
|
||||||
switch (*ax) {
|
switch (*ax) {
|
||||||
|
case 0x1:
|
||||||
|
/* Replace initial APIC ID in bits 24-31 of EBX. */
|
||||||
|
/* See xen_pv_smp_config() for related topology preparations. */
|
||||||
|
maskebx = 0x00ffffff;
|
||||||
|
or_ebx = smp_processor_id() << 24;
|
||||||
|
break;
|
||||||
|
|
||||||
case CPUID_MWAIT_LEAF:
|
case CPUID_MWAIT_LEAF:
|
||||||
/* Synthesize the values.. */
|
/* Synthesize the values.. */
|
||||||
*ax = 0;
|
*ax = 0;
|
||||||
@ -248,6 +256,7 @@ static void xen_cpuid(unsigned int *ax, unsigned int *bx,
|
|||||||
: "0" (*ax), "2" (*cx));
|
: "0" (*ax), "2" (*cx));
|
||||||
|
|
||||||
*bx &= maskebx;
|
*bx &= maskebx;
|
||||||
|
*bx |= or_ebx;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool __init xen_check_mwait(void)
|
static bool __init xen_check_mwait(void)
|
||||||
|
@ -154,9 +154,9 @@ static void __init xen_pv_smp_config(void)
|
|||||||
u32 apicid = 0;
|
u32 apicid = 0;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
topology_register_boot_apic(apicid++);
|
topology_register_boot_apic(apicid);
|
||||||
|
|
||||||
for (i = 1; i < nr_cpu_ids; i++)
|
for (i = 0; i < nr_cpu_ids; i++)
|
||||||
topology_register_apic(apicid++, CPU_ACPIID_INVALID, true);
|
topology_register_apic(apicid++, CPU_ACPIID_INVALID, true);
|
||||||
|
|
||||||
/* Pretend to be a proper enumerated system */
|
/* Pretend to be a proper enumerated system */
|
||||||
|
Loading…
Reference in New Issue
Block a user