Date: Tue, 23 Nov 2010 16:12:35 +0000 (UTC) From: Jung-uk Kim <jkim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r215753 - in head/sys/amd64: acpica amd64 Message-ID: <201011231612.oANGCZEl035596@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: jkim Date: Tue Nov 23 16:12:35 2010 New Revision: 215753 URL: http://svn.freebsd.org/changeset/base/215753 Log: Reinitialize PAT MSR via pmap_init_pat() while resuming. This function does better job since r215703 and it is safer now. Modified: head/sys/amd64/acpica/acpi_switch.S head/sys/amd64/acpica/acpi_wakecode.S head/sys/amd64/acpica/acpi_wakeup.c head/sys/amd64/amd64/mp_machdep.c Modified: head/sys/amd64/acpica/acpi_switch.S ============================================================================== --- head/sys/amd64/acpica/acpi_switch.S Tue Nov 23 15:08:56 2010 (r215752) +++ head/sys/amd64/acpica/acpi_switch.S Tue Nov 23 16:12:35 2010 (r215753) @@ -76,12 +76,6 @@ ENTRY(acpi_restorecpu) movl WAKEUP_CTX(efer), %eax wrmsr - /* Restore PAT. */ - movl $MSR_PAT, %ecx - movl WAKEUP_CTX(pat), %eax - movl 4 + WAKEUP_CTX(pat), %edx - wrmsr - /* Restore fast syscall stuff. */ movl $MSR_STAR, %ecx movl WAKEUP_CTX(star), %eax Modified: head/sys/amd64/acpica/acpi_wakecode.S ============================================================================== --- head/sys/amd64/acpica/acpi_wakecode.S Tue Nov 23 15:08:56 2010 (r215752) +++ head/sys/amd64/acpica/acpi_wakecode.S Tue Nov 23 16:12:35 2010 (r215753) @@ -274,8 +274,6 @@ wakeup_gdt: ALIGN_DATA wakeup_efer: .quad 0 -wakeup_pat: - .quad 0 wakeup_star: .quad 0 wakeup_lstar: Modified: head/sys/amd64/acpica/acpi_wakeup.c ============================================================================== --- head/sys/amd64/acpica/acpi_wakeup.c Tue Nov 23 15:08:56 2010 (r215752) +++ head/sys/amd64/acpica/acpi_wakeup.c Tue Nov 23 16:12:35 2010 (r215753) @@ -278,6 +278,7 @@ acpi_sleep_machdep(struct acpi_softc *sc for (;;) ia32_pause(); } else { + pmap_init_pat(); PCPU_SET(switchtime, 0); PCPU_SET(switchticks, ticks); #ifdef SMP @@ -372,7 +373,6 @@ acpi_install_wakeup_handler(struct acpi_ WAKECODE_FIXUP(wakeup_ctx, vm_offset_t, WAKECODE_VADDR(sc) + wakeup_ctx); WAKECODE_FIXUP(wakeup_efer, uint64_t, rdmsr(MSR_EFER)); - WAKECODE_FIXUP(wakeup_pat, uint64_t, rdmsr(MSR_PAT)); WAKECODE_FIXUP(wakeup_star, uint64_t, rdmsr(MSR_STAR)); WAKECODE_FIXUP(wakeup_lstar, uint64_t, rdmsr(MSR_LSTAR)); WAKECODE_FIXUP(wakeup_cstar, uint64_t, rdmsr(MSR_CSTAR)); Modified: head/sys/amd64/amd64/mp_machdep.c ============================================================================== --- head/sys/amd64/amd64/mp_machdep.c Tue Nov 23 15:08:56 2010 (r215752) +++ head/sys/amd64/amd64/mp_machdep.c Tue Nov 23 16:12:35 2010 (r215753) @@ -1410,6 +1410,7 @@ cpususpend_handler(void) wbinvd(); atomic_set_int(&stopped_cpus, cpumask); } else { + pmap_init_pat(); PCPU_SET(switchtime, 0); PCPU_SET(switchticks, ticks); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201011231612.oANGCZEl035596>