From owner-svn-src-user@FreeBSD.ORG Mon Sep 6 23:05:38 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E802C1065756; Mon, 6 Sep 2010 23:05:38 +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 BCD4D8FC12; Mon, 6 Sep 2010 23:05:38 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id o86N5csJ069647; Mon, 6 Sep 2010 23:05:38 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o86N5cLT069643; Mon, 6 Sep 2010 23:05:38 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201009062305.o86N5cLT069643@svn.freebsd.org> From: Nathan Whitehorn Date: Mon, 6 Sep 2010 23:05:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r212277 - in user/nwhitehorn/ps3: dev/ofw powerpc/aim powerpc/ps3 X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 06 Sep 2010 23:05:39 -0000 Author: nwhitehorn Date: Mon Sep 6 23:05:38 2010 New Revision: 212277 URL: http://svn.freebsd.org/changeset/base/212277 Log: Set the Data Address Breakpoint Register to throw exceptions on NULL pointer dereferences. Fix two that appeared related to FDT. Modified: user/nwhitehorn/ps3/dev/ofw/ofw_fdt.c user/nwhitehorn/ps3/powerpc/aim/nexus.c user/nwhitehorn/ps3/powerpc/ps3/platform_ps3.c Modified: user/nwhitehorn/ps3/dev/ofw/ofw_fdt.c ============================================================================== --- user/nwhitehorn/ps3/dev/ofw/ofw_fdt.c Mon Sep 6 22:59:58 2010 (r212276) +++ user/nwhitehorn/ps3/dev/ofw/ofw_fdt.c Mon Sep 6 23:05:38 2010 (r212277) @@ -95,6 +95,7 @@ OFW_DEF(ofw_fdt); static void *fdtp = NULL; +extern int pmap_bootstrapped; static int ofw_fdt_init(ofw_t ofw, void *data) { @@ -138,6 +139,9 @@ ofw_fdt_peer(ofw_t ofw, phandle_t node) phandle_t p; int depth, offset; + if (fdtp == NULL) + return (-1); + if (node == 0) { /* Find root node */ offset = fdt_path_offset(fdtp, "/"); @@ -382,6 +386,9 @@ ofw_fdt_finddevice(ofw_t ofw, const char phandle_t p; int offset; + if (fdtp == NULL) + return (-1); + offset = fdt_path_offset(fdtp, device); p = (phandle_t)(uintptr_t)fdt_offset_ptr(fdtp, offset, sizeof(p)); Modified: user/nwhitehorn/ps3/powerpc/aim/nexus.c ============================================================================== --- user/nwhitehorn/ps3/powerpc/aim/nexus.c Mon Sep 6 22:59:58 2010 (r212276) +++ user/nwhitehorn/ps3/powerpc/aim/nexus.c Mon Sep 6 23:05:38 2010 (r212277) @@ -211,9 +211,6 @@ nexus_attach(device_t dev) struct nexus_softc *sc; u_long start, end; - if ((root = OF_peer(0)) == -1) - panic("nexus_probe: OF_peer failed."); - sc = device_get_softc(dev); start = 0; @@ -227,6 +224,10 @@ nexus_attach(device_t dev) rman_manage_region(&sc->sc_rman, start, end)) panic("nexus_probe IRQ rman"); + if ((root = OF_peer(0)) == -1) + return (bus_generic_attach(dev)); + + /* * Now walk the OFW tree to locate top-level devices */ Modified: user/nwhitehorn/ps3/powerpc/ps3/platform_ps3.c ============================================================================== --- user/nwhitehorn/ps3/powerpc/ps3/platform_ps3.c Mon Sep 6 22:59:58 2010 (r212276) +++ user/nwhitehorn/ps3/powerpc/ps3/platform_ps3.c Mon Sep 6 23:05:38 2010 (r212277) @@ -156,6 +156,9 @@ ps3_attach(platform_t plat) pmap_mmu_install("mmu_ps3", BUS_PROBE_SPECIFIC); cpu_idle_hook = ps3_cpu_idle; + /* Set a breakpoint to make NULL an invalid address */ + lv1_set_dabr(0x7 /* read and write, MMU on */, 2 /* kernel accesses */); + return (0); }