From owner-cvs-all Sat Dec 21 14:43:21 2002 Delivered-To: cvs-all@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id D54F537B401; Sat, 21 Dec 2002 14:43:19 -0800 (PST) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 8EE7343ED8; Sat, 21 Dec 2002 14:43:19 -0800 (PST) (envelope-from jake@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.6/8.12.6) with ESMTP id gBLMhJfh070847; Sat, 21 Dec 2002 14:43:19 -0800 (PST) (envelope-from jake@repoman.freebsd.org) Received: (from jake@localhost) by repoman.freebsd.org (8.12.6/8.12.6/Submit) id gBLMhJmR070846; Sat, 21 Dec 2002 14:43:19 -0800 (PST) Message-Id: <200212212243.gBLMhJmR070846@repoman.freebsd.org> From: Jake Burkholder Date: Sat, 21 Dec 2002 14:43:19 -0800 (PST) To: cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org Subject: cvs commit: src/sys/sparc64/include pmap.h tte.h src/sys/sparc64/sparc64 pmap.c tsb.c X-FreeBSD-CVS-Branch: HEAD Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG jake 2002/12/21 14:43:19 PST Modified files: sys/sparc64/include pmap.h tte.h sys/sparc64/sparc64 pmap.c tsb.c Log: - Add a pmap pointer to struct md_page, and use this to find the pmap that a mapping belongs to by setting it in the vm_page_t structure that backs the tsb page that the tte for a mapping is in. This allows the pmap that a mapping belongs to to be found without keeping a pointer to it in the tte itself. - Remove the pmap pointer from struct tte and use the space to make the tte pv lists doubly linked (TAILQs), like on other architectures. This makes entering or removing a mapping O(1) instead of O(n) where n is the number of pmaps a page is mapped by (including kernel_pmap). - Use atomic ops for setting and clearing bits in the ttes, now that they return the old value and can be easily used for this purpose. - Use __builtin_memset for zeroing ttes instead of bzero, so that gcc will inline it (4 inline stores using %g0 instead of a function call). - Initially set the virtual colour for all the vm_page_ts to be equal to their physical colour. This will be more useful once uma_small_alloc is implemented, but basically pages with virtual colour equal to phsyical colour are easier to handle at the pmap level because they can be safely accessed through cachable direct virtual to physical mappings with that colour, without fear of causing illegal dcache aliases. In total these changes give a minor performance improvement, about 1% reduction in system time during buildworld. Revision Changes Path 1.30 +6 -5 src/sys/sparc64/include/pmap.h 1.14 +5 -4 src/sys/sparc64/include/tte.h 1.94 +58 -58 src/sys/sparc64/sparc64/pmap.c 1.29 +1 -2 src/sys/sparc64/sparc64/tsb.c To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message