From owner-svn-src-all@FreeBSD.ORG Wed Jul 2 22:06:32 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D5BE1EFE; Wed, 2 Jul 2014 22:06:32 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id AA6B6274F; Wed, 2 Jul 2014 22:06:32 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.8/8.14.8) with ESMTP id s62M6WUJ021817; Wed, 2 Jul 2014 22:06:32 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.8/8.14.8/Submit) id s62M6WAm021812; Wed, 2 Jul 2014 22:06:32 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201407022206.s62M6WAm021812@svn.freebsd.org> From: Marcel Moolenaar Date: Wed, 2 Jul 2014 22:06:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org Subject: svn commit: r268184 - in stable/10/sys/ia64: ia64 include X-SVN-Group: stable-10 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 02 Jul 2014 22:06:32 -0000 Author: marcel Date: Wed Jul 2 22:06:31 2014 New Revision: 268184 URL: http://svnweb.freebsd.org/changeset/base/268184 Log: MFC r257477: Purge the translation cache of APs before we unleash them. Modified: stable/10/sys/ia64/ia64/mp_machdep.c stable/10/sys/ia64/ia64/pmap.c stable/10/sys/ia64/include/pmap.h Directory Properties: stable/10/ (props changed) Modified: stable/10/sys/ia64/ia64/mp_machdep.c ============================================================================== --- stable/10/sys/ia64/ia64/mp_machdep.c Wed Jul 2 22:04:14 2014 (r268183) +++ stable/10/sys/ia64/ia64/mp_machdep.c Wed Jul 2 22:06:31 2014 (r268184) @@ -240,6 +240,8 @@ ia64_ap_startup(void) KASSERT(PCPU_GET(idlethread) != NULL, ("no idle thread")); PCPU_SET(curthread, PCPU_GET(idlethread)); + pmap_invalidate_all(); + atomic_add_int(&ia64_ap_state.as_awake, 1); while (!smp_started) cpu_spinwait(); Modified: stable/10/sys/ia64/ia64/pmap.c ============================================================================== --- stable/10/sys/ia64/ia64/pmap.c Wed Jul 2 22:04:14 2014 (r268183) +++ stable/10/sys/ia64/ia64/pmap.c Wed Jul 2 22:06:31 2014 (r268184) @@ -262,7 +262,6 @@ static vm_page_t pmap_pv_reclaim(pmap_t static void pmap_enter_quick_locked(pmap_t pmap, vm_offset_t va, vm_page_t m, vm_prot_t prot); static void pmap_free_pte(struct ia64_lpte *pte, vm_offset_t va); -static void pmap_invalidate_all(void); static int pmap_remove_pte(pmap_t pmap, struct ia64_lpte *pte, vm_offset_t va, pv_entry_t pv, int freepte); static int pmap_remove_vhpt(vm_offset_t va); @@ -537,13 +536,12 @@ pmap_invalidate_page(vm_offset_t va) critical_exit(); } -static void -pmap_invalidate_all_1(void *arg) +void +pmap_invalidate_all(void) { uint64_t addr; int i, j; - critical_enter(); addr = pmap_ptc_e_base; for (i = 0; i < pmap_ptc_e_count1; i++) { for (j = 0; j < pmap_ptc_e_count2; j++) { @@ -552,20 +550,7 @@ pmap_invalidate_all_1(void *arg) } addr += pmap_ptc_e_stride1; } - critical_exit(); -} - -static void -pmap_invalidate_all(void) -{ - -#ifdef SMP - if (mp_ncpus > 1) { - smp_rendezvous(NULL, pmap_invalidate_all_1, NULL, NULL); - return; - } -#endif - pmap_invalidate_all_1(NULL); + ia64_srlz_i(); } static uint32_t Modified: stable/10/sys/ia64/include/pmap.h ============================================================================== --- stable/10/sys/ia64/include/pmap.h Wed Jul 2 22:04:14 2014 (r268183) +++ stable/10/sys/ia64/include/pmap.h Wed Jul 2 22:06:31 2014 (r268184) @@ -122,6 +122,7 @@ extern int pmap_vhpt_log2size; vm_offset_t pmap_alloc_vhpt(void); void pmap_bootstrap(void); +void pmap_invalidate_all(void); void pmap_kenter(vm_offset_t va, vm_offset_t pa); vm_paddr_t pmap_kextract(vm_offset_t va); void pmap_kremove(vm_offset_t);