Date: Sat, 18 Oct 2008 22:47:45 +0000 (UTC) From: Kip Macy <kmacy@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r184035 - in projects/release_6_3_xen/sys/i386: i386 xen Message-ID: <200810182247.m9IMljp5027626@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: kmacy Date: Sat Oct 18 22:47:44 2008 New Revision: 184035 URL: http://svn.freebsd.org/changeset/base/184035 Log: Use post 6.3 pcpu implementation, it simplifies the code and doesn't involve working around the default placement of privatespace in the hypervisor's address space Modified: projects/release_6_3_xen/sys/i386/i386/machdep.c projects/release_6_3_xen/sys/i386/xen/mp_machdep.c projects/release_6_3_xen/sys/i386/xen/xen_machdep.c Modified: projects/release_6_3_xen/sys/i386/i386/machdep.c ============================================================================== --- projects/release_6_3_xen/sys/i386/i386/machdep.c Sat Oct 18 22:22:25 2008 (r184034) +++ projects/release_6_3_xen/sys/i386/i386/machdep.c Sat Oct 18 22:47:44 2008 (r184035) @@ -126,7 +126,9 @@ __FBSDID("$FreeBSD$"); #include <machine/perfmon.h> #endif #ifdef SMP +#ifndef XEN #include <machine/privatespace.h> +#endif #include <machine/smp.h> #endif @@ -223,9 +225,12 @@ vm_paddr_t dump_avail[PHYSMAP_SIZE + 2]; struct kva_md_info kmi; static struct trapframe proc0_tf; -#ifndef SMP +#if !defined(SMP) && !defined(XEN) static struct pcpu __pcpu; #endif +#ifdef XEN +struct pcpu __pcpu[MAXCPU]; +#endif struct mtx icu_lock; @@ -2205,11 +2210,7 @@ init386(int first) gdt_segs[GUDATA_SEL].ssd_limit = atop(HYPERVISOR_VIRT_START + MTOPSIZE); gdt_segs[GBIOSLOWMEM_SEL].ssd_limit = atop(HYPERVISOR_VIRT_START + MTOPSIZE); -#ifdef SMP - pc = &SMP_prvspace[0].pcpu; -#else - pc = &__pcpu; -#endif + pc = &__pcpu[0]; gdt_segs[GPRIV_SEL].ssd_base = (int) pc; gdt_segs[GPROC0_SEL].ssd_base = (int) &pc->pc_common_tss; Modified: projects/release_6_3_xen/sys/i386/xen/mp_machdep.c ============================================================================== --- projects/release_6_3_xen/sys/i386/xen/mp_machdep.c Sat Oct 18 22:22:25 2008 (r184034) +++ projects/release_6_3_xen/sys/i386/xen/mp_machdep.c Sat Oct 18 22:47:44 2008 (r184035) @@ -81,7 +81,6 @@ __FBSDID("$FreeBSD$"); #include <machine/smp.h> #include <machine/smptests.h> /** COUNT_XINVLTLB_HITS */ #include <machine/specialreg.h> -#include <machine/privatespace.h> #include <machine/xen/hypervisor.h> #include <machine/xen/evtchn.h> @@ -623,7 +622,7 @@ start_all_aps(void) bootAPgdt = gdt + (512*cpu); /* Get per-cpu data */ - pc = &SMP_prvspace[bootAP].pcpu; + pc = &__pcpu[bootAP]; pcpu_init(pc, bootAP, sizeof(struct pcpu)); pc->pc_apic_id = cpu_apic_ids[bootAP]; pc->pc_prvspace = pc; Modified: projects/release_6_3_xen/sys/i386/xen/xen_machdep.c ============================================================================== --- projects/release_6_3_xen/sys/i386/xen/xen_machdep.c Sat Oct 18 22:22:25 2008 (r184034) +++ projects/release_6_3_xen/sys/i386/xen/xen_machdep.c Sat Oct 18 22:47:44 2008 (r184035) @@ -65,10 +65,6 @@ __FBSDID("$FreeBSD$"); #include <machine/xen/xenfunc.h> #include <xen/interface/memory.h> #include <machine/xen/features.h> -#ifdef SMP -#include <machine/privatespace.h> -#endif - #include <vm/vm_page.h> @@ -834,7 +830,7 @@ initvalues(start_info_t *startinfo) vm_paddr_t pdir_shadow_ma; #endif unsigned long i; - int ncpus; + int ncpus = MAXCPU; nkpt = min( min( @@ -842,12 +838,6 @@ initvalues(start_info_t *startinfo) NPGPTD*NPDEPG - KPTDI), (HYPERVISOR_VIRT_START - KERNBASE) >> PDRSHIFT); -#ifdef SMP - ncpus = MAXCPU; -#else - ncpus = 1; -#endif - HYPERVISOR_vm_assist(VMASST_CMD_enable, VMASST_TYPE_4gb_segments); #ifdef notyet /* @@ -873,7 +863,7 @@ initvalues(start_info_t *startinfo) cur_space += (4 * PAGE_SIZE); bootmem_end = (char *)cur_space; - /* allocate page for gdt */ + /* allocate pages for gdt */ gdt = (union descriptor *)cur_space; cur_space += PAGE_SIZE*ncpus; @@ -988,8 +978,6 @@ initvalues(start_info_t *startinfo) PT_UPDATES_FLUSH(); - - memcpy(((uint8_t *)IdlePTDnew) + ((unsigned int)(KERNBASE >> 18)), ((uint8_t *)IdlePTD) + ((KERNBASE >> 18) & PAGE_MASK), l1_pages*sizeof(pt_entry_t));
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200810182247.m9IMljp5027626>