On 16-2-2015 18:46, Konstantin Belousov wrote:
On Mon, Feb 16, 2015 at 03:21:04PM +0100, Koop Mast wrote:
On 9-2-2015 22:00, Konstantin Belousov wrote:
Author: kib
Date: Mon Feb 9 21:00:56 2015
New Revision: 278473
URL: https://svnweb.freebsd.org/changeset/base/278473
Log:
Add x2APIC support. Enable it by default if CPU is capable. The
hw.x2apic_enable tunable allows disabling it from the loader prompt.
Hi Konstantin,
This commit broke my Sandybridge laptop. If x2APIC is enabled the kernel
freezes after the
"ACPI APIC Table: <_ASUS_ NoteBook>" line is printed. I can't get much
information out of it since I couldn't get into the kernel debugger nor
has the machine a serial cable.
Can you provide e.g. a photo of the machine screen with the hang boot,
of the same kernel you used for the dmesg log below ?
Also, please provide the output of acpidump -t.
https://people.freebsd.org/~kwm/x2apic/acpidump.txt
https://people.freebsd.org/~kwm/x2apic/x2apic-boot.jpg
The patch below didn't seem to have any noticable effect.
-Koop
I did notice that "x2APIC" is listed in the CPU Features2 list, but for
the cpu's it reports "x2APIC: 0". I don't know if this has to do with
disabled x2APIC or some hardware/bios issue?
x2APIC tag for the LAPIC reports appear when cpu declares support for
x2APIC mode, like in your case. The 0/1 indicates the final value used
by kernel, i.e. 0 means disabled, by user override (your case), by BIOS
request, or due to detection of incompatible hypervisor.
-Koop
Verbose dmesg with x2APIC disabled:
https://people.freebsd.org/~kwm/dmesg-x2apic.txt
Also, please try the following patch. Only the local_apic.c chunk could
matter for you.
diff --git a/sys/amd64/amd64/mp_machdep.c b/sys/amd64/amd64/mp_machdep.c
index 13c3d43..b767691 100644
--- a/sys/amd64/amd64/mp_machdep.c
+++ b/sys/amd64/amd64/mp_machdep.c
@@ -1507,6 +1507,7 @@ cpususpend_handler(void)
vmm_resume_p();
/* Resume MCA and local APIC */
+ lapic_xapic_mode();
mca_resume();
lapic_setup(0);
diff --git a/sys/i386/i386/mp_machdep.c b/sys/i386/i386/mp_machdep.c
index 32b9540..a80de54 100644
--- a/sys/i386/i386/mp_machdep.c
+++ b/sys/i386/i386/mp_machdep.c
@@ -1555,6 +1555,7 @@ cpususpend_handler(void)
cpu_ops.cpu_resume();
/* Resume MCA and local APIC */
+ lapic_xapic_mode();
mca_resume();
lapic_setup(0);
diff --git a/sys/x86/acpica/acpi_wakeup.c b/sys/x86/acpica/acpi_wakeup.c
index 74522be..e652419 100644
--- a/sys/x86/acpica/acpi_wakeup.c
+++ b/sys/x86/acpica/acpi_wakeup.c
@@ -270,6 +270,7 @@ acpi_wakeup_machdep(struct acpi_softc *sc, int state, int
sleep_result,
initializecpu();
PCPU_SET(switchtime, 0);
PCPU_SET(switchticks, ticks);
+ lapic_xapic_mode();
#ifdef SMP
if (!CPU_EMPTY(&suspcpus))
acpi_wakeup_cpus(sc);
diff --git a/sys/x86/x86/local_apic.c b/sys/x86/x86/local_apic.c
index 1809fa6..1b66674 100644
--- a/sys/x86/x86/local_apic.c
+++ b/sys/x86/x86/local_apic.c
@@ -527,7 +527,6 @@ native_lapic_xapic_mode(void)
saveintr = intr_disable();
if (x2apic_mode)
native_lapic_enable_x2apic();
- native_lapic_disable();
intr_restore(saveintr);
}
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"