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

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

x86: apic - unify disable_local_APIC



Signed-off-by: default avatarCyrill Gorcunov <gorcunov@gmail.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent f1ee3789
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -796,7 +796,7 @@ void clear_local_APIC(void)
 */
void disable_local_APIC(void)
{
	unsigned long value;
	unsigned int value;

	clear_local_APIC();

@@ -808,6 +808,7 @@ void disable_local_APIC(void)
	value &= ~APIC_SPIV_APIC_ENABLED;
	apic_write(APIC_SPIV, value);

#ifdef CONFIG_X86_32
	/*
	 * When LAPIC was disabled by the BIOS and enabled by the kernel,
	 * restore the disabled state.
@@ -819,6 +820,7 @@ void disable_local_APIC(void)
		l &= ~MSR_IA32_APICBASE_ENABLE;
		wrmsr(MSR_IA32_APICBASE, l, h);
	}
#endif
}

/*
+14 −0
Original line number Diff line number Diff line
@@ -691,6 +691,20 @@ void disable_local_APIC(void)
	value = apic_read(APIC_SPIV);
	value &= ~APIC_SPIV_APIC_ENABLED;
	apic_write(APIC_SPIV, value);

#ifdef CONFIG_X86_32
	/*
	 * When LAPIC was disabled by the BIOS and enabled by the kernel,
	 * restore the disabled state.
	 */
	if (enabled_via_apicbase) {
		unsigned int l, h;

		rdmsr(MSR_IA32_APICBASE, l, h);
		l &= ~MSR_IA32_APICBASE_ENABLE;
		wrmsr(MSR_IA32_APICBASE, l, h);
	}
#endif
}

void lapic_shutdown(void)