From e6a7270f25ae6a319c56190ea5c043f816e6a5b2 Mon Sep 17 00:00:00 2001 From: Michael Neumann Date: Wed, 13 Oct 2010 21:07:18 +0200 Subject: [PATCH] Pull IMCR setting out of mptable_pass2() Apply commit a0eaef71e7c0ef8eac9c0a300e9f2e86d54b8569 for x86_64. --- sys/platform/pc64/x86_64/mp_machdep.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/sys/platform/pc64/x86_64/mp_machdep.c b/sys/platform/pc64/x86_64/mp_machdep.c index 969b365987..5250f06adb 100644 --- a/sys/platform/pc64/x86_64/mp_machdep.c +++ b/sys/platform/pc64/x86_64/mp_machdep.c @@ -313,6 +313,7 @@ static int mptable_map(struct mptable_pos *, vm_paddr_t); static void mptable_unmap(struct mptable_pos *); static void mptable_lapic_enumerate(struct mptable_pos *); static void mptable_lapic_default(void); +static void mptable_imcr(struct mptable_pos *); #ifdef APIC_IO static void setup_apic_irq_mapping(void); @@ -692,6 +693,8 @@ mp_enable(u_int boot_addr) mptable_lapic_enumerate(&mpt); KKASSERT(lapic); + mptable_imcr(&mpt); + /* * We can safely map physical memory into SMPpt after * mptable_pass1() completes. @@ -1025,9 +1028,6 @@ mptable_pass2(struct mptable_pos *mpt) } #endif - /* record whether PIC or virtual-wire mode */ - machintr_setvar_simple(MACHINTR_VAR_IMCR_PRESENT, fps->mpfb2 & 0x80); - /* check for use of 'default' configuration */ if (fps->mpfb1 != 0) { mptable_default(fps->mpfb1); @@ -3067,6 +3067,14 @@ mptable_lapic_enumerate(struct mptable_pos *mpt) lapic_init(lapic_addr); } +static void +mptable_imcr(struct mptable_pos *mpt) +{ + /* record whether PIC or virtual-wire mode */ + machintr_setvar_simple(MACHINTR_VAR_IMCR_PRESENT, + mpt->mp_fps->mpfb2 & 0x80); +} + static void lapic_init(vm_offset_t lapic_addr) { -- 2.41.0