Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c177b0bc authored by Cyrill Gorcunov's avatar Cyrill Gorcunov Committed by Ingo Molnar
Browse files

x86: apic - unify disconnect_bsp_APIC



- just #ifdef added

Signed-off-by: default avatarCyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent c40aaec6
Loading
Loading
Loading
Loading
+34 −32
Original line number Diff line number Diff line
@@ -1420,6 +1420,7 @@ void __init connect_bsp_APIC(void)
 */
void disconnect_bsp_APIC(int virt_wire_setup)
{
#ifdef CONFIG_X86_32
	if (pic_mode) {
		/*
		 * Put the board back into PIC mode (has an effect only on
@@ -1431,9 +1432,12 @@ void disconnect_bsp_APIC(int virt_wire_setup)
				"entering PIC mode.\n");
		outb(0x70, 0x22);
		outb(0x00, 0x23);
	} else {
		return;
	}
#endif

	/* Go back to Virtual Wire compatibility mode */
		unsigned long value;
	unsigned int value;

	/* For the spurious interrupt use vector F, and enable it */
	value = apic_read(APIC_SPIV);
@@ -1460,19 +1464,17 @@ void disconnect_bsp_APIC(int virt_wire_setup)
	}

	/*
		 * For LVT1 make it edge triggered, active high, nmi and
		 * enabled
	 * For LVT1 make it edge triggered, active high,
	 * nmi and enabled
	 */
	value = apic_read(APIC_LVT1);
		value &= ~(
			APIC_MODE_MASK | APIC_SEND_PENDING |
	value &= ~(APIC_MODE_MASK | APIC_SEND_PENDING |
			APIC_INPUT_POLARITY | APIC_LVT_REMOTE_IRR |
			APIC_LVT_LEVEL_TRIGGER | APIC_LVT_MASKED);
	value |= APIC_LVT_REMOTE_IRR | APIC_SEND_PENDING;
	value = SET_APIC_DELIVERY_MODE(value, APIC_MODE_NMI);
	apic_write(APIC_LVT1, value);
}
}

void __cpuinit generic_processor_info(int apicid, int version)
{
+21 −2
Original line number Diff line number Diff line
@@ -1348,8 +1348,24 @@ void __init connect_bsp_APIC(void)
 */
void disconnect_bsp_APIC(int virt_wire_setup)
{
#ifdef CONFIG_X86_32
	if (pic_mode) {
		/*
		 * Put the board back into PIC mode (has an effect only on
		 * certain older boards).  Note that APIC interrupts, including
		 * IPIs, won't work beyond this point!  The only exception are
		 * INIT IPIs.
		 */
		apic_printk(APIC_VERBOSE, "disabling APIC mode, "
				"entering PIC mode.\n");
		outb(0x70, 0x22);
		outb(0x00, 0x23);
		return;
	}
#endif

	/* Go back to Virtual Wire compatibility mode */
	unsigned long value;
	unsigned int value;

	/* For the spurious interrupt use vector F, and enable it */
	value = apic_read(APIC_SPIV);
@@ -1375,7 +1391,10 @@ void disconnect_bsp_APIC(int virt_wire_setup)
		apic_write(APIC_LVT0, APIC_LVT_MASKED);
	}

	/* For LVT1 make it edge triggered, active high, nmi and enabled */
	/*
	 * For LVT1 make it edge triggered, active high,
	 * nmi and enabled
	 */
	value = apic_read(APIC_LVT1);
	value &= ~(APIC_MODE_MASK | APIC_SEND_PENDING |
			APIC_INPUT_POLARITY | APIC_LVT_REMOTE_IRR |