Date: Tue, 4 Nov 2008 02:07:35 +0000 (UTC) From: Kip Macy <kmacy@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r184609 - in projects/releng_7_xen/sys: conf i386/conf i386/i386 i386/include i386/xen Message-ID: <200811040207.mA427Zm5083094@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: kmacy Date: Tue Nov 4 02:07:34 2008 New Revision: 184609 URL: http://svn.freebsd.org/changeset/base/184609 Log: make XEN config build Modified: projects/releng_7_xen/sys/conf/files projects/releng_7_xen/sys/i386/conf/DEFAULTS projects/releng_7_xen/sys/i386/conf/XEN projects/releng_7_xen/sys/i386/i386/apic_vector.s projects/releng_7_xen/sys/i386/i386/machdep.c projects/releng_7_xen/sys/i386/i386/support.s projects/releng_7_xen/sys/i386/include/pmap.h projects/releng_7_xen/sys/i386/xen/clock.c projects/releng_7_xen/sys/i386/xen/mp_machdep.c projects/releng_7_xen/sys/i386/xen/pmap.c Modified: projects/releng_7_xen/sys/conf/files ============================================================================== --- projects/releng_7_xen/sys/conf/files Tue Nov 4 01:45:49 2008 (r184608) +++ projects/releng_7_xen/sys/conf/files Tue Nov 4 02:07:34 2008 (r184609) @@ -1594,6 +1594,7 @@ libkern/strcasecmp.c standard libkern/strcat.c standard libkern/strcmp.c standard libkern/strcpy.c standard +libkern/strcspn.c standard libkern/strdup.c standard libkern/strlcat.c standard libkern/strlcpy.c standard Modified: projects/releng_7_xen/sys/i386/conf/DEFAULTS ============================================================================== --- projects/releng_7_xen/sys/i386/conf/DEFAULTS Tue Nov 4 01:45:49 2008 (r184608) +++ projects/releng_7_xen/sys/i386/conf/DEFAULTS Tue Nov 4 02:07:34 2008 (r184609) @@ -25,3 +25,5 @@ options GEOM_MBR # KSE support went from being default to a kernel option options KSE +options NATIVE +device atpic \ No newline at end of file Modified: projects/releng_7_xen/sys/i386/conf/XEN ============================================================================== --- projects/releng_7_xen/sys/i386/conf/XEN Tue Nov 4 01:45:49 2008 (r184608) +++ projects/releng_7_xen/sys/i386/conf/XEN Tue Nov 4 02:07:34 2008 (r184609) @@ -80,6 +80,7 @@ option XEN nodevice atpic nodevice isa options MCLSHIFT=12 +device genclock # To make an SMP kernel, the next two lines are needed options SMP # Symmetric MultiProcessor Kernel Modified: projects/releng_7_xen/sys/i386/i386/apic_vector.s ============================================================================== --- projects/releng_7_xen/sys/i386/i386/apic_vector.s Tue Nov 4 01:45:49 2008 (r184608) +++ projects/releng_7_xen/sys/i386/i386/apic_vector.s Tue Nov 4 02:07:34 2008 (r184609) @@ -270,6 +270,7 @@ IDTVEC(invlcache) /* * Handler for IPIs sent via the per-cpu IPI bitmap. */ +#ifndef XEN .text SUPERALIGN_TEXT IDTVEC(ipi_intr_bitmap_handler) @@ -284,7 +285,8 @@ IDTVEC(ipi_intr_bitmap_handler) call ipi_bitmap_handler MEXITCOUNT jmp doreti - +#endif + /* * Executed by a CPU when it receives an IPI_STOP from another CPU. */ Modified: projects/releng_7_xen/sys/i386/i386/machdep.c ============================================================================== --- projects/releng_7_xen/sys/i386/i386/machdep.c Tue Nov 4 01:45:49 2008 (r184608) +++ projects/releng_7_xen/sys/i386/i386/machdep.c Tue Nov 4 02:07:34 2008 (r184609) @@ -1218,7 +1218,7 @@ void cpu_idle(void) { -#ifdef SMP +#if defined(SMP) && !defined(XEN) if (mp_grab_cpu_hlt()) return; #endif Modified: projects/releng_7_xen/sys/i386/i386/support.s ============================================================================== --- projects/releng_7_xen/sys/i386/i386/support.s Tue Nov 4 01:45:49 2008 (r184608) +++ projects/releng_7_xen/sys/i386/i386/support.s Tue Nov 4 02:07:34 2008 (r184609) @@ -1459,10 +1459,11 @@ END(bcmp) */ /* void lgdt(struct region_descriptor *rdp); */ ENTRY(lgdt) - /* reload the descriptor table */ +#ifndef XEN + /* reload the descriptor table */ movl 4(%esp),%eax lgdt (%eax) - +#endif /* flush the prefetch q */ jmp 1f nop Modified: projects/releng_7_xen/sys/i386/include/pmap.h ============================================================================== --- projects/releng_7_xen/sys/i386/include/pmap.h Tue Nov 4 01:45:49 2008 (r184608) +++ projects/releng_7_xen/sys/i386/include/pmap.h Tue Nov 4 02:07:34 2008 (r184609) @@ -470,7 +470,9 @@ void pmap_bootstrap(vm_paddr_t); int pmap_change_attr(vm_offset_t, vm_size_t, int); void pmap_init_pat(void); void pmap_kenter(vm_offset_t va, vm_paddr_t pa); +#ifndef XEN void pmap_kenter_attr(vm_offset_t va, vm_paddr_t pa, int mode); +#endif void *pmap_kenter_temporary(vm_paddr_t pa, int i); void pmap_kremove(vm_offset_t); void *pmap_mapbios(vm_paddr_t, vm_size_t); Modified: projects/releng_7_xen/sys/i386/xen/clock.c ============================================================================== --- projects/releng_7_xen/sys/i386/xen/clock.c Tue Nov 4 01:45:49 2008 (r184608) +++ projects/releng_7_xen/sys/i386/xen/clock.c Tue Nov 4 02:07:34 2008 (r184609) @@ -908,27 +908,3 @@ idle_block(void) PANIC_IF(HYPERVISOR_set_timer_op(processed_system_time + NS_PER_TICK) != 0); HYPERVISOR_sched_op(SCHEDOP_block, 0); } - -int -timer_spkr_acquire(void) -{ - - return (0); -} - -int -timer_spkr_release(void) -{ - - return (0); -} - -void -timer_spkr_setfreq(int freq) -{ - -} - - - - Modified: projects/releng_7_xen/sys/i386/xen/mp_machdep.c ============================================================================== --- projects/releng_7_xen/sys/i386/xen/mp_machdep.c Tue Nov 4 01:45:49 2008 (r184608) +++ projects/releng_7_xen/sys/i386/xen/mp_machdep.c Tue Nov 4 02:07:34 2008 (r184609) @@ -154,40 +154,6 @@ extern void Xhypervisor_callback(void); extern void failsafe_callback(void); extern void pmap_lazyfix_action(void); -struct cpu_group * -cpu_topo(void) -{ - if (cpu_cores == 0) - cpu_cores = 1; - if (cpu_logical == 0) - cpu_logical = 1; - if (mp_ncpus % (cpu_cores * cpu_logical) != 0) { - printf("WARNING: Non-uniform processors.\n"); - printf("WARNING: Using suboptimal topology.\n"); - return (smp_topo_none()); - } - /* - * No multi-core or hyper-threaded. - */ - if (cpu_logical * cpu_cores == 1) - return (smp_topo_none()); - /* - * Only HTT no multi-core. - */ - if (cpu_logical > 1 && cpu_cores == 1) - return (smp_topo_1level(CG_SHARE_L1, cpu_logical, CG_FLAG_HTT)); - /* - * Only multi-core no HTT. - */ - if (cpu_cores > 1 && cpu_logical == 1) - return (smp_topo_1level(CG_SHARE_NONE, cpu_cores, 0)); - /* - * Both HTT and multi-core. - */ - return (smp_topo_2level(CG_SHARE_NONE, cpu_cores, - CG_SHARE_L1, cpu_logical, CG_FLAG_HTT)); -} - /* * Calculate usable address in base memory for AP trampoline code. */ @@ -381,7 +347,12 @@ smp_reschedule_interrupt(void *unused) #ifdef COUNT_IPIS (*ipi_preempt_counts[cpu])++; #endif - sched_preempt(curthread); + thread_lock(curthread); + if (curthread->td_critnest > 1) + curthread->td_owepreempt = 1; + else + mi_switch(SW_INVOL | SW_PREEMPT, NULL); + thread_unlock(curthread); } if (ipi_bitmap & (1 << IPI_AST)) { Modified: projects/releng_7_xen/sys/i386/xen/pmap.c ============================================================================== --- projects/releng_7_xen/sys/i386/xen/pmap.c Tue Nov 4 01:45:49 2008 (r184608) +++ projects/releng_7_xen/sys/i386/xen/pmap.c Tue Nov 4 02:07:34 2008 (r184609) @@ -2629,7 +2629,7 @@ retry: * insert this page into the given map NOW. */ void -pmap_enter(pmap_t pmap, vm_offset_t va, vm_prot_t access, vm_page_t m, +pmap_enter(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot, boolean_t wired) { vm_paddr_t pa; @@ -3433,56 +3433,6 @@ pmap_page_exists_quick(pmap_t pmap, vm_p } /* - * pmap_page_wired_mappings: - * - * Return the number of managed mappings to the given physical page - * that are wired. - */ -int -pmap_page_wired_mappings(vm_page_t m) -{ - pv_entry_t pv; - pt_entry_t *pte; - pmap_t pmap; - int count; - - count = 0; - if ((m->flags & PG_FICTITIOUS) != 0) - return (count); - mtx_assert(&vm_page_queue_mtx, MA_OWNED); - sched_pin(); - TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { - pmap = PV_PMAP(pv); - PMAP_LOCK(pmap); - pte = pmap_pte_quick(pmap, pv->pv_va); - if ((*pte & PG_W) != 0) - count++; - PMAP_UNLOCK(pmap); - } - sched_unpin(); - return (count); -} - -/* - * Returns TRUE if the given page is mapped individually or as part of - * a 4mpage. Otherwise, returns FALSE. - */ -boolean_t -pmap_page_is_mapped(vm_page_t m) -{ - struct md_page *pvh; - - if ((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) != 0) - return (FALSE); - mtx_assert(&vm_page_queue_mtx, MA_OWNED); - if (TAILQ_EMPTY(&m->md.pv_list)) { - pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m)); - return (!TAILQ_EMPTY(&pvh->pv_list)); - } else - return (TRUE); -} - -/* * Remove all pages from specified address space * this aids process exit speeds. Also, this code * is special cased for current process only, but @@ -4075,28 +4025,16 @@ pmap_activate(struct thread *td) critical_exit(); } -/* - * Increase the starting virtual address of the given mapping if a - * different alignment might result in more superpage mappings. - */ -void -pmap_align_superpage(vm_object_t object, vm_ooffset_t offset, - vm_offset_t *addr, vm_size_t size) +vm_offset_t +pmap_addr_hint(vm_object_t obj, vm_offset_t addr, vm_size_t size) { - vm_offset_t superpage_offset; - if (size < NBPDR) - return; - if (object != NULL && (object->flags & OBJ_COLORED) != 0) - offset += ptoa(object->pg_color); - superpage_offset = offset & PDRMASK; - if (size - ((NBPDR - superpage_offset) & PDRMASK) < NBPDR || - (*addr & PDRMASK) == superpage_offset) - return; - if ((*addr & PDRMASK) < superpage_offset) - *addr = (*addr & ~PDRMASK) + superpage_offset; - else - *addr = ((*addr + PDRMASK) & ~PDRMASK) + superpage_offset; + if ((obj == NULL) || (size < NBPDR) || (obj->type != OBJT_DEVICE)) { + return addr; + } + + addr = (addr + PDRMASK) & ~PDRMASK; + return addr; } #if defined(PMAP_DEBUG)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200811040207.mA427Zm5083094>