Module Name: src
Committed By: cherry
Date: Thu Feb 23 07:30:30 UTC 2012
Modified Files:
src/sys/arch/xen/x86: cpu.c
Log Message:
Cleanup.
- Remove cruft from native x86 origin.
- Remove access to privileged MSRs.
- Cleanup stale comments.
To generate a diff of this commit:
cvs rdiff -u -r1.84 -r1.85 src/sys/arch/xen/x86/cpu.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/xen/x86/cpu.c
diff -u src/sys/arch/xen/x86/cpu.c:1.84 src/sys/arch/xen/x86/cpu.c:1.85
--- src/sys/arch/xen/x86/cpu.c:1.84 Thu Feb 23 04:10:51 2012
+++ src/sys/arch/xen/x86/cpu.c Thu Feb 23 07:30:30 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: cpu.c,v 1.84 2012/02/23 04:10:51 cherry Exp $ */
+/* $NetBSD: cpu.c,v 1.85 2012/02/23 07:30:30 cherry Exp $ */
/* NetBSD: cpu.c,v 1.18 2004/02/20 17:35:01 yamt Exp */
/*-
@@ -66,7 +66,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: cpu.c,v 1.84 2012/02/23 04:10:51 cherry Exp $");
+__KERNEL_RCSID(0, "$NetBSD: cpu.c,v 1.85 2012/02/23 07:30:30 cherry Exp $");
#include "opt_ddb.h"
#include "opt_multiprocessor.h"
@@ -464,7 +464,6 @@ cpu_attach_common(device_t parent, devic
/* Every processor needs to init it's own ipi h/w (similar to lapic) */
xen_ipi_init();
- /* XXX: clock_init() */
/* Make sure DELAY() is initialized. */
DELAY(1);
@@ -477,9 +476,6 @@ cpu_attach_common(device_t parent, devic
case CPU_ROLE_SP:
atomic_or_32(&ci->ci_flags, CPUF_SP);
cpu_identify(ci);
-#if 0
- x86_errata();
-#endif
x86_cpu_idle_init();
break;
@@ -487,9 +483,6 @@ cpu_attach_common(device_t parent, devic
case CPU_ROLE_BP:
atomic_or_32(&ci->ci_flags, CPUF_BSP);
cpu_identify(ci);
-#if 0
- x86_errata();
-#endif
x86_cpu_idle_init();
break;
@@ -561,23 +554,6 @@ cpu_init(struct cpu_info *ci)
{
/*
- * On a P6 or above, enable global TLB caching if the
- * hardware supports it.
- */
- if (cpu_feature[0] & CPUID_PGE)
- lcr4(rcr4() | CR4_PGE); /* enable global TLB caching */
-
-#ifdef XXXMTRR
- /*
- * On a P6 or above, initialize MTRR's if the hardware supports them.
- */
- if (cpu_feature[0] & CPUID_MTRR) {
- if ((ci->ci_flags & CPUF_AP) == 0)
- i686_mtrr_init_first();
- mtrr_init_cpu(ci);
- }
-#endif
- /*
* If we have FXSAVE/FXRESTOR, use them.
*/
if (cpu_feature[0] & CPUID_FXSR) {
@@ -600,8 +576,6 @@ cpu_init(struct cpu_info *ci)
atomic_or_32(&cpus_running, ci->ci_cpumask);
atomic_or_32(&ci->ci_flags, CPUF_RUNNING);
-
- /* XXX: register vcpu_register_runstate_memory_area, and figure out how to make sure this VCPU is running ? */
}
@@ -739,15 +713,13 @@ cpu_hatch(void *v)
KASSERT((ci->ci_flags & CPUF_RUNNING) == 0);
pcb = lwp_getpcb(curlwp);
- pcb->pcb_cr3 = pmap_pdirpa(pmap_kernel(), 0); /* XXX: consider using pmap_load() ? */
+ pcb->pcb_cr3 = pmap_pdirpa(pmap_kernel(), 0);
pcb = lwp_getpcb(ci->ci_data.cpu_idlelwp);
xen_ipi_init();
xen_initclocks();
- /* XXX: lapic_initclocks(); */
-
#ifdef __x86_64__
fpuinit(ci);
#endif
@@ -760,9 +732,6 @@ cpu_hatch(void *v)
s = splhigh();
x86_enable_intr();
splx(s);
-#if 0
- x86_errata();
-#endif
aprint_debug_dev(ci->ci_dev, "running\n");
@@ -831,7 +800,7 @@ gdt_prepframes(paddr_t *frames, vaddr_t
}
#ifdef __x86_64__
-extern char *ldtstore; /* XXX: Xen MP todo */
+extern char *ldtstore;
static void
xen_init_amd64_vcpuctxt(struct cpu_info *ci,
@@ -855,13 +824,11 @@ xen_init_amd64_vcpuctxt(struct cpu_info
memset(initctx, 0, sizeof *initctx);
- gdt_ents = roundup(gdt_size, PAGE_SIZE) >> PAGE_SHIFT; /* XXX: re-investigate roundup(gdt_size... ) for gdt_ents. */
+ gdt_ents = roundup(gdt_size, PAGE_SIZE) >> PAGE_SHIFT;
KASSERT(gdt_ents <= 16);
gdt_prepframes(frames, (vaddr_t) ci->ci_gdt, gdt_ents);
- /* XXX: The stuff in here is amd64 specific. move to mptramp.[Sc] ? */
-
/* Initialise the vcpu context: We use idle_loop()'s pcb context. */
l = ci->ci_data.cpu_idlelwp;
@@ -911,7 +878,7 @@ xen_init_amd64_vcpuctxt(struct cpu_info
initctx->kernel_sp = pcb->pcb_rsp0;
initctx->ctrlreg[0] = pcb->pcb_cr0;
initctx->ctrlreg[1] = 0; /* "resuming" from kernel - no User cr3. */
- initctx->ctrlreg[2] = pcb->pcb_cr2; /* XXX: */
+ initctx->ctrlreg[2] = (vaddr_t) targetrip;
/*
* Use pmap_kernel() L4 PD directly, until we setup the
* per-cpu L4 PD in pmap_cpu_init_late()
@@ -953,7 +920,7 @@ xen_init_i386_vcpuctxt(struct cpu_info *
memset(initctx, 0, sizeof *initctx);
- gdt_ents = roundup(gdt_size, PAGE_SIZE) >> PAGE_SHIFT; /* XXX: re-investigate roundup(gdt_size... ) for gdt_ents. */
+ gdt_ents = roundup(gdt_size, PAGE_SIZE) >> PAGE_SHIFT;
KASSERT(gdt_ents <= 16);
gdt_prepframes(frames, (vaddr_t) ci->ci_gdt, gdt_ents);
@@ -1015,7 +982,7 @@ xen_init_i386_vcpuctxt(struct cpu_info *
initctx->kernel_sp = pcb->pcb_esp0;
initctx->ctrlreg[0] = pcb->pcb_cr0;
initctx->ctrlreg[1] = 0; /* "resuming" from kernel - no User cr3. */
- initctx->ctrlreg[2] = pcb->pcb_cr2; /* XXX: */
+ initctx->ctrlreg[2] = (vaddr_t) targeteip;
#ifdef PAE
initctx->ctrlreg[3] = xen_pfn_to_cr3(x86_btop(xpmap_ptom(ci->ci_pae_l3_pdirpa)));
#else /* PAE */
@@ -1081,14 +1048,6 @@ mp_cpu_start(struct cpu_info *ci, vaddr_
void
mp_cpu_start_cleanup(struct cpu_info *ci)
{
-#if 0
- /*
- * Ensure the NVRAM reset byte contains something vaguely sane.
- */
-
- outb(IO_RTC, NVRAM_RESET);
- outb(IO_RTC+1, NVRAM_RESET_RST);
-#endif
if (vcpu_is_up(ci)) {
aprint_debug_dev(ci->ci_dev, "is started.\n");
}