From owner-p4-projects@FreeBSD.ORG Tue Apr 12 17:25:43 2011 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C196C1065679; Tue, 12 Apr 2011 17:25:42 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 81B381065672 for ; Tue, 12 Apr 2011 17:25:42 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:4f8:fff6::2d]) by mx1.freebsd.org (Postfix) with ESMTP id 552308FC14 for ; Tue, 12 Apr 2011 17:25:42 +0000 (UTC) Received: from skunkworks.freebsd.org (localhost [127.0.0.1]) by skunkworks.freebsd.org (8.14.4/8.14.4) with ESMTP id p3CHPgTb028616 for ; Tue, 12 Apr 2011 17:25:42 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.4/8.14.4/Submit) id p3CHPgHH028613 for perforce@freebsd.org; Tue, 12 Apr 2011 17:25:42 GMT (envelope-from jhb@freebsd.org) Date: Tue, 12 Apr 2011 17:25:42 GMT Message-Id: <201104121725.p3CHPgHH028613@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 191384 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Apr 2011 17:25:43 -0000 http://p4web.freebsd.org/@@191384?ac=10 Change 191384 by jhb@jhb_fiver on 2011/04/12 17:25:40 Oops, the PCI-PCI bridge driver needs a custom release resource method in the NEW_PCIB case. Affected files ... .. //depot/projects/pci/sys/dev/pci/pci_pci.c#12 edit .. //depot/projects/pci/sys/dev/pci/pcib_private.h#7 edit Differences ... ==== //depot/projects/pci/sys/dev/pci/pci_pci.c#12 (text+ko) ==== @@ -76,7 +76,11 @@ DEVMETHOD(bus_write_ivar, pcib_write_ivar), DEVMETHOD(bus_alloc_resource, pcib_alloc_resource), DEVMETHOD(bus_adjust_resource, pcib_adjust_resource), +#ifdef NEW_PCIB + DEVMETHOD(bus_release_resource, pcib_release_resource), +#else DEVMETHOD(bus_release_resource, bus_generic_release_resource), +#endif DEVMETHOD(bus_activate_resource, bus_generic_activate_resource), DEVMETHOD(bus_deactivate_resource, bus_generic_deactivate_resource), DEVMETHOD(bus_setup_intr, bus_generic_setup_intr), @@ -1115,6 +1119,25 @@ #endif return (r); } + +int +pcib_release_resource(device_t dev, device_t child, int type, int rid, + struct resource *r) +{ + struct pcib_softc *sc; + int error; + + sc = device_get_softc(dev); + if (pcib_is_resource_managed(sc, type, r)) { + if (rman_get_flags(r) & RF_ACTIVE) { + error = bus_deactivate_resource(child, type, rid, r); + if (error) + return (error); + } + return (rman_release_resource(r)); + } + return (bus_generic_release_resource(dev, child, type, rid, r)); +} #else /* * We have to trap resource allocation requests and ensure that the bridge ==== //depot/projects/pci/sys/dev/pci/pcib_private.h#7 (text+ko) ==== @@ -100,6 +100,10 @@ u_long start, u_long end, u_long count, u_int flags); int pcib_adjust_resource(device_t bus, device_t child, int type, struct resource *r, u_long start, u_long end); +#ifdef NEW_PCIB +int pcib_release_resource(device_t dev, device_t child, int type, int rid, + struct resource *r); +#endif int pcib_maxslots(device_t dev); uint32_t pcib_read_config(device_t dev, u_int b, u_int s, u_int f, u_int reg, int width); void pcib_write_config(device_t dev, u_int b, u_int s, u_int f, u_int reg, uint32_t val, int width);