From owner-svn-src-projects@FreeBSD.ORG Mon May 16 16:55:17 2011 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 863901065673; Mon, 16 May 2011 16:55:17 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5B7678FC08; Mon, 16 May 2011 16:55:17 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id p4GGtHfg091078; Mon, 16 May 2011 16:55:17 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id p4GGtHFZ091076; Mon, 16 May 2011 16:55:17 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201105161655.p4GGtHFZ091076@svn.freebsd.org> From: Nathan Whitehorn Date: Mon, 16 May 2011 16:55:17 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r221997 - projects/pseries/powerpc/pseries X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 16 May 2011 16:55:17 -0000 Author: nwhitehorn Date: Mon May 16 16:55:17 2011 New Revision: 221997 URL: http://svn.freebsd.org/changeset/base/221997 Log: Set the maximum real address to the end of the first element of the physical memory array, per the PAPR spec. Modified: projects/pseries/powerpc/pseries/platform_chrp.c Modified: projects/pseries/powerpc/pseries/platform_chrp.c ============================================================================== --- projects/pseries/powerpc/pseries/platform_chrp.c Mon May 16 16:34:03 2011 (r221996) +++ projects/pseries/powerpc/pseries/platform_chrp.c Mon May 16 16:55:17 2011 (r221997) @@ -55,10 +55,13 @@ __FBSDID("$FreeBSD$"); extern void *ap_pcpu; #endif +static vm_offset_t realmaxaddr = VM_MAX_ADDRESS; + static int chrp_probe(platform_t); static int chrp_attach(platform_t); void chrp_mem_regions(platform_t, struct mem_region **phys, int *physsz, struct mem_region **avail, int *availsz); +static vm_offset_t chrp_real_maxaddr(platform_t); static u_long chrp_timebase_freq(platform_t, struct cpuref *cpuref); static int chrp_smp_first_cpu(platform_t, struct cpuref *cpuref); static int chrp_smp_next_cpu(platform_t, struct cpuref *cpuref); @@ -70,6 +73,7 @@ static platform_method_t chrp_methods[] PLATFORMMETHOD(platform_probe, chrp_probe), PLATFORMMETHOD(platform_attach, chrp_attach), PLATFORMMETHOD(platform_mem_regions, chrp_mem_regions), + PLATFORMMETHOD(platform_real_maxaddr, chrp_real_maxaddr), PLATFORMMETHOD(platform_timebase_freq, chrp_timebase_freq), PLATFORMMETHOD(platform_smp_first_cpu, chrp_smp_first_cpu), @@ -104,8 +108,14 @@ chrp_attach(platform_t plat) { #ifdef __powerpc64__ /* XXX: check for /rtas/ibm,hypertas-functions? */ - if (!(mfmsr() & PSL_HV)) + if (!(mfmsr() & PSL_HV)) { + struct mem_region *phys, *avail; + int nphys, navail; + mem_regions(&phys, &nphys, &avail, &navail); + realmaxaddr = phys[0].mr_size; + pmap_mmu_install("mmu_phyp", BUS_PROBE_SPECIFIC); + } #endif return (0); @@ -118,6 +128,12 @@ chrp_mem_regions(platform_t plat, struct ofw_mem_regions(phys,physsz,avail,availsz); } +static vm_offset_t +chrp_real_maxaddr(platform_t plat) +{ + return (realmaxaddr); +} + static u_long chrp_timebase_freq(platform_t plat, struct cpuref *cpuref) {