Date: Thu, 15 Jul 2004 22:16:51 GMT From: Robert Watson <rwatson@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 57418 for review Message-ID: <200407152216.i6FMGpZd072424@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=57418 Change 57418 by rwatson@rwatson_tislabs on 2004/07/15 22:16:26 Integrate netperf_socket from rwatson_netperf: More VM lockisms. More ACPIisms. More tty reformulation. Return EOPNOTSUPP for unrecognized module events. Affected files ... .. //depot/projects/netperf_socket/sys/alpha/alpha/pmap.c#12 integrate .. //depot/projects/netperf_socket/sys/alpha/alpha/promcons.c#6 integrate .. //depot/projects/netperf_socket/sys/alpha/linux/linux_sysvec.c#2 integrate .. //depot/projects/netperf_socket/sys/alpha/tlsb/zs_tlsb.c#7 integrate .. //depot/projects/netperf_socket/sys/amd64/amd64/pmap.c#20 integrate .. //depot/projects/netperf_socket/sys/cam/cam_periph.h#2 integrate .. //depot/projects/netperf_socket/sys/cam/cam_xpt.c#5 integrate .. //depot/projects/netperf_socket/sys/coda/coda_fbsd.c#5 integrate .. //depot/projects/netperf_socket/sys/compat/svr4/svr4_sysvec.c#2 integrate .. //depot/projects/netperf_socket/sys/conf/NOTES#28 integrate .. //depot/projects/netperf_socket/sys/conf/files.amd64#12 integrate .. //depot/projects/netperf_socket/sys/conf/files.i386#22 integrate .. //depot/projects/netperf_socket/sys/dev/acpica/acpi.c#32 integrate .. //depot/projects/netperf_socket/sys/dev/acpica/acpi_if.m#2 integrate .. //depot/projects/netperf_socket/sys/dev/aic7xxx/aic79xx_osm.c#2 integrate .. //depot/projects/netperf_socket/sys/dev/aic7xxx/aic7xxx_osm.c#2 integrate .. //depot/projects/netperf_socket/sys/dev/bktr/bktr_mem.c#4 integrate .. //depot/projects/netperf_socket/sys/dev/cx/if_cx.c#13 integrate .. //depot/projects/netperf_socket/sys/dev/cy/cy.c#12 integrate .. //depot/projects/netperf_socket/sys/dev/dcons/dcons.c#9 integrate .. //depot/projects/netperf_socket/sys/dev/digi/digi.c#13 integrate .. //depot/projects/netperf_socket/sys/dev/fb/fb.c#3 integrate .. //depot/projects/netperf_socket/sys/dev/fb/splashreg.h#2 integrate .. //depot/projects/netperf_socket/sys/dev/fdc/fdc.c#6 integrate .. //depot/projects/netperf_socket/sys/dev/fdc/fdc_acpi.c#1 branch .. //depot/projects/netperf_socket/sys/dev/fdc/fdc_isa.c#3 integrate .. //depot/projects/netperf_socket/sys/dev/fdc/fdc_pccard.c#4 integrate .. //depot/projects/netperf_socket/sys/dev/fdc/fdcvar.h#3 integrate .. //depot/projects/netperf_socket/sys/dev/firewire/firewire.c#7 integrate .. //depot/projects/netperf_socket/sys/dev/harp/if_harp.c#3 integrate .. //depot/projects/netperf_socket/sys/dev/hfa/hfa_freebsd.c#3 integrate .. //depot/projects/netperf_socket/sys/dev/ispfw/ispfw.c#4 integrate .. //depot/projects/netperf_socket/sys/dev/md/md.c#16 integrate .. //depot/projects/netperf_socket/sys/dev/nmdm/nmdm.c#10 integrate .. //depot/projects/netperf_socket/sys/dev/null/null.c#5 integrate .. //depot/projects/netperf_socket/sys/dev/ofw/ofw_console.c#9 integrate .. //depot/projects/netperf_socket/sys/dev/ofw/openpromio.c#4 integrate .. //depot/projects/netperf_socket/sys/dev/random/randomdev.c#10 integrate .. //depot/projects/netperf_socket/sys/dev/rc/rc.c#11 integrate .. //depot/projects/netperf_socket/sys/dev/rp/rp.c#9 integrate .. //depot/projects/netperf_socket/sys/dev/sab/sab.c#10 integrate .. //depot/projects/netperf_socket/sys/dev/si/si.c#10 integrate .. //depot/projects/netperf_socket/sys/dev/sio/sio.c#18 integrate .. //depot/projects/netperf_socket/sys/dev/snp/snp.c#7 integrate .. //depot/projects/netperf_socket/sys/dev/sound/driver.c#3 integrate .. //depot/projects/netperf_socket/sys/dev/streams/streams.c#4 integrate .. //depot/projects/netperf_socket/sys/dev/sx/sx.c#9 integrate .. //depot/projects/netperf_socket/sys/dev/syscons/syscons.c#9 integrate .. //depot/projects/netperf_socket/sys/dev/syscons/syscons.h#3 integrate .. //depot/projects/netperf_socket/sys/dev/syscons/sysmouse.c#6 integrate .. //depot/projects/netperf_socket/sys/dev/uart/uart_tty.c#9 integrate .. //depot/projects/netperf_socket/sys/dev/usb/ehci.c#5 integrate .. //depot/projects/netperf_socket/sys/dev/usb/ubser.c#8 integrate .. //depot/projects/netperf_socket/sys/dev/usb/ucom.c#10 integrate .. //depot/projects/netperf_socket/sys/dev/utopia/utopia.c#4 integrate .. //depot/projects/netperf_socket/sys/dev/vinum/vinum.c#4 integrate .. //depot/projects/netperf_socket/sys/dev/zs/zs.c#9 integrate .. //depot/projects/netperf_socket/sys/fs/pseudofs/pseudofs.c#3 integrate .. //depot/projects/netperf_socket/sys/fs/unionfs/union_subr.c#3 integrate .. //depot/projects/netperf_socket/sys/geom/gate/g_gate.c#7 integrate .. //depot/projects/netperf_socket/sys/i386/acpica/acpi_wakeup.c#5 integrate .. //depot/projects/netperf_socket/sys/i386/i386/pmap.c#18 integrate .. //depot/projects/netperf_socket/sys/i386/i386/swtch.s#5 integrate .. //depot/projects/netperf_socket/sys/i386/ibcs2/ibcs2_sysvec.c#2 integrate .. //depot/projects/netperf_socket/sys/i386/isa/pcvt/pcvt_drv.c#6 integrate .. //depot/projects/netperf_socket/sys/i386/isa/vesa.c#4 integrate .. //depot/projects/netperf_socket/sys/i386/linux/linux_sysvec.c#3 integrate .. //depot/projects/netperf_socket/sys/i4b/include/i4b_global.h#2 integrate .. //depot/projects/netperf_socket/sys/ia64/ia64/pmap.c#12 integrate .. //depot/projects/netperf_socket/sys/ia64/ia64/ssc.c#6 integrate .. //depot/projects/netperf_socket/sys/kern/kern_event.c#7 integrate .. //depot/projects/netperf_socket/sys/kern/kern_mac.c#4 integrate .. //depot/projects/netperf_socket/sys/kern/kern_module.c#3 integrate .. //depot/projects/netperf_socket/sys/kern/kern_shutdown.c#8 integrate .. //depot/projects/netperf_socket/sys/kern/kern_syscalls.c#2 integrate .. //depot/projects/netperf_socket/sys/kern/subr_bus.c#11 integrate .. //depot/projects/netperf_socket/sys/kern/tty.c#13 integrate .. //depot/projects/netperf_socket/sys/kern/tty_conf.c#6 integrate .. //depot/projects/netperf_socket/sys/kern/tty_pty.c#11 integrate .. //depot/projects/netperf_socket/sys/kern/tty_subr.c#2 integrate .. //depot/projects/netperf_socket/sys/kern/vfs_init.c#5 integrate .. //depot/projects/netperf_socket/sys/kern/vfs_subr.c#15 integrate .. //depot/projects/netperf_socket/sys/modules/fdc/Makefile#5 integrate .. //depot/projects/netperf_socket/sys/modules/sound/sound/Makefile#1 branch .. //depot/projects/netperf_socket/sys/net/if_disc.c#6 integrate .. //depot/projects/netperf_socket/sys/net/if_ef.c#4 integrate .. //depot/projects/netperf_socket/sys/net/if_faith.c#8 integrate .. //depot/projects/netperf_socket/sys/net/if_gif.c#8 integrate .. //depot/projects/netperf_socket/sys/net/if_gre.c#8 integrate .. //depot/projects/netperf_socket/sys/net/if_loop.c#7 integrate .. //depot/projects/netperf_socket/sys/net/if_ppp.c#7 integrate .. //depot/projects/netperf_socket/sys/net/if_sl.c#9 integrate .. //depot/projects/netperf_socket/sys/net/if_spppsubr.c#9 integrate .. //depot/projects/netperf_socket/sys/net/if_stf.c#8 integrate .. //depot/projects/netperf_socket/sys/net/if_tun.c#10 integrate .. //depot/projects/netperf_socket/sys/net/if_vlan.c#10 integrate .. //depot/projects/netperf_socket/sys/net/ppp_tty.c#4 integrate .. //depot/projects/netperf_socket/sys/netgraph/ng_base.c#8 integrate .. //depot/projects/netperf_socket/sys/netinet/ip_dummynet.c#6 integrate .. //depot/projects/netperf_socket/sys/netinet/ip_fw2.c#9 integrate .. //depot/projects/netperf_socket/sys/netinet/ip_mroute.c#9 integrate .. //depot/projects/netperf_socket/sys/netinet6/ip6_fw.c#3 integrate .. //depot/projects/netperf_socket/sys/nfsserver/nfs_srvsubs.c#8 integrate .. //depot/projects/netperf_socket/sys/pc98/pc98/fd.c#11 integrate .. //depot/projects/netperf_socket/sys/pc98/pc98/fdc_cbus.c#3 integrate .. //depot/projects/netperf_socket/sys/pc98/pc98/sio.c#16 integrate .. //depot/projects/netperf_socket/sys/powerpc/powerpc/pmap.c#11 integrate .. //depot/projects/netperf_socket/sys/sparc64/sparc64/pmap.c#8 integrate .. //depot/projects/netperf_socket/sys/sys/exec.h#3 integrate .. //depot/projects/netperf_socket/sys/sys/procfs.h#3 integrate .. //depot/projects/netperf_socket/sys/sys/tty.h#11 integrate .. //depot/projects/netperf_socket/sys/vm/vm_map.c#12 integrate .. //depot/projects/netperf_socket/sys/vm/vm_pageout.c#9 integrate Differences ... ==== //depot/projects/netperf_socket/sys/alpha/alpha/pmap.c#12 (text+ko) ==== @@ -148,7 +148,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.157 2004/07/14 05:49:44 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.158 2004/07/15 18:00:41 alc Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -1573,6 +1573,8 @@ */ if (pmap->pm_stats.resident_count == 0) return; + + vm_page_lock_queues(); PMAP_LOCK(pmap); /* @@ -1600,6 +1602,7 @@ nva = va + PAGE_SIZE; } out: + vm_page_unlock_queues(); PMAP_UNLOCK(pmap); } @@ -1700,6 +1703,7 @@ if ((sva & PAGE_MASK) || (eva & PAGE_MASK)) panic("pmap_protect: unaligned addresses"); + vm_page_lock_queues(); PMAP_LOCK(pmap); while (sva < eva) { @@ -1751,6 +1755,7 @@ sva += PAGE_SIZE; } + vm_page_unlock_queues(); PMAP_UNLOCK(pmap); } ==== //depot/projects/netperf_socket/sys/alpha/alpha/promcons.c#6 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/alpha/alpha/promcons.c,v 1.39 2004/06/16 09:46:26 phk Exp $"); +__FBSDID("$FreeBSD: src/sys/alpha/alpha/promcons.c,v 1.40 2004/07/15 20:47:36 phk Exp $"); #include <sys/param.h> #include <sys/kernel.h> @@ -149,7 +149,7 @@ untimeout(promtimeout, tp, promtimeouthandle); ttyld_close(tp, flag); - ttyclose(tp); + tty_close(tp); return 0; } ==== //depot/projects/netperf_socket/sys/alpha/linux/linux_sysvec.c#2 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/alpha/linux/linux_sysvec.c,v 1.92 2003/12/23 02:42:38 peter Exp $"); +__FBSDID("$FreeBSD: src/sys/alpha/linux/linux_sysvec.c,v 1.93 2004/07/15 08:25:59 phk Exp $"); /* XXX we use functions that might not exist. */ #include "opt_compat.h" @@ -274,6 +274,7 @@ printf("Could not deinstall ELF interpreter entry\n"); break; default: + return (EOPNOTSUPP); break; } return error; ==== //depot/projects/netperf_socket/sys/alpha/tlsb/zs_tlsb.c#7 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/alpha/tlsb/zs_tlsb.c,v 1.46 2004/07/10 20:50:19 marcel Exp $"); +__FBSDID("$FreeBSD: src/sys/alpha/tlsb/zs_tlsb.c,v 1.47 2004/07/15 20:47:36 phk Exp $"); #include <sys/param.h> #include <sys/kernel.h> @@ -318,7 +318,7 @@ s = spltty(); untimeout(zs_poll_intr, sc, sc->zst); ttyld_close(tp, flag); - ttyclose(tp); + tty_close(tp); splx(s); return (0); ==== //depot/projects/netperf_socket/sys/amd64/amd64/pmap.c#20 (text+ko) ==== @@ -75,7 +75,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.484 2004/07/14 07:13:33 peter Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.485 2004/07/15 18:00:41 alc Exp $"); /* * Manages physical address maps. @@ -1602,6 +1602,8 @@ */ if (pmap->pm_stats.resident_count == 0) return; + + vm_page_lock_queues(); PMAP_LOCK(pmap); /* @@ -1613,8 +1615,7 @@ pde = pmap_pde(pmap, sva); if (pde && (*pde & PG_PS) == 0) { pmap_remove_page(pmap, sva); - PMAP_UNLOCK(pmap); - return; + goto out; } } @@ -1684,6 +1685,8 @@ if (anyvalid) pmap_invalidate_all(pmap); +out: + vm_page_unlock_queues(); PMAP_UNLOCK(pmap); } @@ -1778,6 +1781,7 @@ anychanged = 0; + vm_page_lock_queues(); PMAP_LOCK(pmap); for (; sva < eva; sva = va_next) { @@ -1856,6 +1860,7 @@ } if (anychanged) pmap_invalidate_all(pmap); + vm_page_unlock_queues(); PMAP_UNLOCK(pmap); } ==== //depot/projects/netperf_socket/sys/cam/cam_periph.h#2 (text+ko) ==== @@ -25,7 +25,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/cam/cam_periph.h,v 1.13 2003/03/08 08:01:26 phk Exp $ + * $FreeBSD: src/sys/cam/cam_periph.h,v 1.14 2004/07/15 08:25:59 phk Exp $ */ #ifndef _CAM_CAM_PERIPH_H @@ -53,6 +53,8 @@ case MOD_UNLOAD: \ printf(#name " module unload - not possible for this module type\n"); \ return EINVAL; \ + default: \ + return EOPNOTSUPP; \ } \ return 0; \ } \ ==== //depot/projects/netperf_socket/sys/cam/cam_xpt.c#5 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.141 2004/06/21 19:01:55 ps Exp $"); +__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.142 2004/07/15 08:25:59 phk Exp $"); #include <sys/param.h> #include <sys/bus.h> @@ -1348,6 +1348,8 @@ xpt_init(NULL); } else if (what == MOD_UNLOAD) { return EBUSY; + } else { + return EOPNOTSUPP; } return 0; ==== //depot/projects/netperf_socket/sys/coda/coda_fbsd.c#5 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/coda/coda_fbsd.c,v 1.35 2004/06/17 17:16:40 phk Exp $"); +__FBSDID("$FreeBSD: src/sys/coda/coda_fbsd.c,v 1.36 2004/07/15 08:25:59 phk Exp $"); #include "vcoda.h" @@ -90,9 +90,9 @@ case MOD_LOAD: break; case MOD_UNLOAD: - break; + return (EBUSY); default: - break; + return (EOPNOTSUPP); } return 0; } ==== //depot/projects/netperf_socket/sys/compat/svr4/svr4_sysvec.c#2 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/compat/svr4/svr4_sysvec.c,v 1.36 2003/12/23 02:42:38 peter Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/svr4/svr4_sysvec.c,v 1.37 2004/07/15 08:26:00 phk Exp $"); /* XXX we use functions that might not exist. */ #include "opt_compat.h" @@ -411,6 +411,7 @@ printf("svr4 ELF exec handler removed\n"); break; default: + return (EOPNOTSUPP); break; } return error; ==== //depot/projects/netperf_socket/sys/conf/NOTES#28 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/NOTES,v 1.1244 2004/07/11 01:44:07 marcel Exp $ +# $FreeBSD: src/sys/conf/NOTES,v 1.1245 2004/07/15 07:52:27 roam Exp $ # # NOTES -- Lines that can be cut/pasted into kernel and hints configs. # @@ -1932,7 +1932,7 @@ # # The 'bktr' device is a PCI video capture device using the Brooktree # bt848/bt848a/bt849a/bt878/bt879 chipset. When used with a TV Tuner it forms a -# TV card, eg Miro PC/TV, Hauppauge WinCast/TV WinTV, VideoLogic Captivator, +# TV card, e.g. Miro PC/TV, Hauppauge WinCast/TV WinTV, VideoLogic Captivator, # Intel Smart Video III, AverMedia, IMS Turbo, FlyVideo. # # options OVERRIDE_CARD=xxx @@ -1948,11 +1948,11 @@ # options BROOKTREE_SYSTEM_DEFAULT=BROOKTREE_NTSC # Specifies the default video capture mode. # This is required for Dual Crystal (28&35Mhz) boards where PAL is used -# to prevent hangs during initialisation. eg VideoLogic Captivator PCI. +# to prevent hangs during initialisation, e.g. VideoLogic Captivator PCI. # # options BKTR_USE_PLL -# PAL or SECAM users who have a 28Mhz crystal (and no 35Mhz crystal) -# must enable PLL mode with this option. eg some new Bt878 cards. +# This is required for PAL or SECAM boards with a 28Mhz crystal and no 35Mhz +# crystal, e.g. some new Bt878 cards. # # options BKTR_GPIO_ACCESS # This enable IOCTLs which give user level access to the GPIO port. ==== //depot/projects/netperf_socket/sys/conf/files.amd64#12 (text+ko) ==== @@ -1,7 +1,7 @@ # This file tells config what files go into building a kernel, # files marked standard are always included. # -# $FreeBSD: src/sys/conf/files.amd64,v 1.41 2004/07/10 23:31:17 marcel Exp $ +# $FreeBSD: src/sys/conf/files.amd64,v 1.42 2004/07/15 16:43:52 njl Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -101,6 +101,7 @@ dev/fb/splash.c optional splash dev/fb/vga.c optional vga dev/fdc/fdc.c optional fdc +dev/fdc/fdc_acpi.c optional fdc dev/fdc/fdc_isa.c optional fdc isa dev/fdc/fdc_pccard.c optional fdc pccard dev/kbd/atkbd.c optional atkbd ==== //depot/projects/netperf_socket/sys/conf/files.i386#22 (text+ko) ==== @@ -1,7 +1,7 @@ # This file tells config what files go into building a kernel, # files marked standard are always included. # -# $FreeBSD: src/sys/conf/files.i386,v 1.498 2004/07/13 17:43:03 phk Exp $ +# $FreeBSD: src/sys/conf/files.i386,v 1.499 2004/07/15 16:43:52 njl Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -133,6 +133,7 @@ dev/fb/splash.c optional splash dev/fb/vga.c optional vga dev/fdc/fdc.c optional fdc +dev/fdc/fdc_acpi.c optional fdc dev/fdc/fdc_isa.c optional fdc isa dev/fdc/fdc_pccard.c optional fdc card dev/fdc/fdc_pccard.c optional fdc pccard ==== //depot/projects/netperf_socket/sys/dev/acpica/acpi.c#32 (text+ko) ==== @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/acpica/acpi.c,v 1.176 2004/07/13 18:59:49 njl Exp $ + * $FreeBSD: src/sys/dev/acpica/acpi.c,v 1.177 2004/07/15 16:29:08 njl Exp $ */ #include "opt_acpi.h" @@ -111,15 +111,16 @@ static ACPI_STATUS acpi_device_eval_obj(device_t bus, device_t dev, ACPI_STRING pathname, ACPI_OBJECT_LIST *parameters, ACPI_BUFFER *ret); -static ACPI_STATUS acpi_device_walk_ns(device_t bus, device_t dev, - ACPI_OBJECT_TYPE type, UINT32 max_depth, - ACPI_WALK_CALLBACK user_fn, void *context, void **ret); +static ACPI_STATUS acpi_device_scan_cb(ACPI_HANDLE h, UINT32 level, + void *context, void **retval); +static ACPI_STATUS acpi_device_scan_children(device_t bus, device_t dev, + int max_depth, acpi_scan_cb_t user_fn, void *arg); static int acpi_isa_pnp_probe(device_t bus, device_t child, - struct isa_pnp_id *ids); + struct isa_pnp_id *ids); static void acpi_probe_children(device_t bus); static int acpi_probe_order(ACPI_HANDLE handle, int *order); static ACPI_STATUS acpi_probe_child(ACPI_HANDLE handle, UINT32 level, - void *context, void **status); + void *context, void **status); static BOOLEAN acpi_MatchHid(ACPI_HANDLE h, const char *hid); static void acpi_shutdown_final(void *arg, int howto); static void acpi_enable_fixed_events(struct acpi_softc *sc); @@ -169,7 +170,7 @@ /* ACPI bus */ DEVMETHOD(acpi_id_probe, acpi_device_id_probe), DEVMETHOD(acpi_evaluate_object, acpi_device_eval_obj), - DEVMETHOD(acpi_walk_namespace, acpi_device_walk_ns), + DEVMETHOD(acpi_scan_children, acpi_device_scan_children), /* ISA emulation */ DEVMETHOD(isa_pnp_probe, acpi_isa_pnp_probe), @@ -1036,20 +1037,85 @@ { ACPI_HANDLE h; - if ((h = acpi_get_handle(dev)) == NULL) + if (dev == NULL) + h = ACPI_ROOT_OBJECT; + else if ((h = acpi_get_handle(dev)) == NULL) return (AE_BAD_PARAMETER); return (AcpiEvaluateObject(h, pathname, parameters, ret)); } +/* Callback arg for our implementation of walking the namespace. */ +struct acpi_device_scan_ctx { + acpi_scan_cb_t user_fn; + void *arg; + ACPI_HANDLE parent; +}; + +static ACPI_STATUS +acpi_device_scan_cb(ACPI_HANDLE h, UINT32 level, void *arg, void **retval) +{ + struct acpi_device_scan_ctx *ctx; + device_t dev, old_dev; + ACPI_STATUS status; + ACPI_OBJECT_TYPE type; + + /* + * Skip this device if we think we'll have trouble with it or it is + * the parent where the scan began. + */ + ctx = (struct acpi_device_scan_ctx *)arg; + if (acpi_avoid(h) || h == ctx->parent) + return (AE_OK); + + /* If this is not a valid device type (e.g., a method), skip it. */ + if (ACPI_FAILURE(AcpiGetType(h, &type))) + return (AE_OK); + if (type != ACPI_TYPE_DEVICE && type != ACPI_TYPE_PROCESSOR && + type != ACPI_TYPE_THERMAL && type != ACPI_TYPE_POWER) + return (AE_OK); + + /* + * Call the user function with the current device. If it is unchanged + * afterwards, return. Otherwise, we update the handle to the new dev. + */ + old_dev = acpi_get_device(h); + dev = old_dev; + status = ctx->user_fn(h, &dev, level, ctx->arg); + if (ACPI_FAILURE(status) || old_dev == dev) + return (status); + + /* Remove the old child and its connection to the handle. */ + if (old_dev != NULL) { + device_delete_child(device_get_parent(old_dev), old_dev); + AcpiDetachData(h, acpi_fake_objhandler); + } + + /* Recreate the handle association if the user created a device. */ + if (dev != NULL) + AcpiAttachData(h, acpi_fake_objhandler, dev); + + return (AE_OK); +} + static ACPI_STATUS -acpi_device_walk_ns(device_t bus, device_t dev, ACPI_OBJECT_TYPE type, - UINT32 max_depth, ACPI_WALK_CALLBACK user_fn, void *context, void **ret) +acpi_device_scan_children(device_t bus, device_t dev, int max_depth, + acpi_scan_cb_t user_fn, void *arg) { ACPI_HANDLE h; + struct acpi_device_scan_ctx ctx; + + if (acpi_disabled("children")) + return (AE_OK); - if ((h = acpi_get_handle(dev)) == NULL) + if (dev == NULL) + h = ACPI_ROOT_OBJECT; + else if ((h = acpi_get_handle(dev)) == NULL) return (AE_BAD_PARAMETER); - return (AcpiWalkNamespace(type, h, max_depth, user_fn, context, ret)); + ctx.user_fn = user_fn; + ctx.arg = arg; + ctx.parent = h; + return (AcpiWalkNamespace(ACPI_TYPE_ANY, h, max_depth, + acpi_device_scan_cb, &ctx, NULL)); } static int ==== //depot/projects/netperf_socket/sys/dev/acpica/acpi_if.m#2 (text+ko) ==== @@ -23,7 +23,7 @@ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # -# $FreeBSD: src/sys/dev/acpica/acpi_if.m,v 1.1 2004/06/29 18:56:14 njl Exp $ +# $FreeBSD: src/sys/dev/acpica/acpi_if.m,v 1.2 2004/07/15 16:29:08 njl Exp $ # #include <sys/bus.h> @@ -33,7 +33,28 @@ INTERFACE acpi; # -# Default implementation for the probe method. +# Callback function for each child handle traversed in acpi_scan_children(). +# +# ACPI_HANDLE h: current child device being considered +# +# device_t *dev: pointer to the child's original device_t or NULL if there +# was none. The callback should store a new device in *dev if it has +# created one. The method implementation will automatically clean up the +# previous device and properly associate the current ACPI_HANDLE with it. +# +# level: current level being scanned +# +# void *arg: argument passed in original call to acpi_scan_children() +# +# Returns: AE_OK if the scan should continue, otherwise an error +# +HEADER { + typedef ACPI_STATUS (*acpi_scan_cb_t)(ACPI_HANDLE h, device_t *dev, + int level, void *arg); +}; + +# +# Default implementation for acpi_id_probe(). # CODE { static char * @@ -44,7 +65,16 @@ }; # -# Probe +# Check a device for a match in a list of ID strings. The strings can be +# EISA PNP IDs or ACPI _HID/_CID values. +# +# device_t bus: parent bus for the device +# +# device_t dev: device being considered +# +# char **ids: array of ID strings to consider +# +# Returns: ID string matched or NULL if no match # METHOD char * id_probe { device_t bus; @@ -53,7 +83,22 @@ } DEFAULT acpi_generic_id_probe; # -# AcpiEvaluateObject +# Evaluate an ACPI method or object, given its path. +# +# device_t bus: parent bus for the device +# +# device_t dev: evaluate the object relative to this device's handle. +# Specify NULL to begin the search at the ACPI root. +# +# ACPI_STRING pathname: absolute or relative path to this object +# +# ACPI_OBJECT_LIST *parameters: array of arguments to pass to the object. +# Specify NULL if there are none. +# +# ACPI_BUFFER *ret: the result (if any) of the evaluation +# Specify NULL if there is none. +# +# Returns: AE_OK or an error value # METHOD ACPI_STATUS evaluate_object { device_t bus; @@ -64,14 +109,28 @@ }; # -# AcpiWalkNamespace +# Rescan a subtree and optionally reattach devices to handles. Users +# specify a callback that is called for each ACPI_HANDLE of type Device +# that is a child of "dev". +# +# device_t bus: parent bus for the device +# +# device_t dev: begin the scan starting with this device's handle. +# Specify NULL to begin the scan at the ACPI root. +# +# int max_depth: number of levels to traverse (i.e., 1 means just the +# immediate children. +# +# acpi_scan_cb_t user_fn: called for each child handle +# +# void *arg: argument to pass to the callback function +# +# Returns: AE_OK or an error value, based on the callback return value # -METHOD ACPI_STATUS walk_namespace { +METHOD ACPI_STATUS scan_children { device_t bus; device_t dev; - ACPI_OBJECT_TYPE type; - UINT32 max_depth; - ACPI_WALK_CALLBACK user_fn; - void *context; - void **ret; + int max_depth; + acpi_scan_cb_t user_fn; + void *arg; }; ==== //depot/projects/netperf_socket/sys/dev/aic7xxx/aic79xx_osm.c#2 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/aic7xxx/aic79xx_osm.c,v 1.16 2003/12/17 00:02:09 gibbs Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/aic7xxx/aic79xx_osm.c,v 1.17 2004/07/15 08:26:00 phk Exp $"); #include <dev/aic7xxx/aic79xx_osm.h> #include <dev/aic7xxx/aic79xx_inline.h> @@ -1540,6 +1540,7 @@ ahd_modevent(module_t mod, int type, void *data) { /* XXX Deal with busy status on unload. */ + /* XXX Deal with unknown events */ return 0; } ==== //depot/projects/netperf_socket/sys/dev/aic7xxx/aic7xxx_osm.c#2 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/aic7xxx/aic7xxx_osm.c,v 1.39 2003/12/17 00:02:10 gibbs Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/aic7xxx/aic7xxx_osm.c,v 1.40 2004/07/15 08:26:00 phk Exp $"); #include <dev/aic7xxx/aic7xxx_osm.h> #include <dev/aic7xxx/aic7xxx_inline.h> @@ -1663,6 +1663,7 @@ ahc_modevent(module_t mod, int type, void *data) { /* XXX Deal with busy status on unload. */ + /* XXX Deal with unknown events */ return 0; } ==== //depot/projects/netperf_socket/sys/dev/bktr/bktr_mem.c#4 (text+ko) ==== @@ -44,7 +44,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/bktr/bktr_mem.c,v 1.10 2004/06/11 18:47:44 schweikh Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/bktr/bktr_mem.c,v 1.11 2004/07/15 08:26:00 phk Exp $"); #include <sys/param.h> #include <sys/kernel.h> @@ -88,6 +88,7 @@ printf("bktr_mem: memory holder cannot be unloaded\n"); return EBUSY; default: + return EOPNOTSUPP; break; } return (0); ==== //depot/projects/netperf_socket/sys/dev/cx/if_cx.c#13 (text+ko) ==== @@ -23,7 +23,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/cx/if_cx.c,v 1.26 2004/07/11 15:18:37 phk Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/cx/if_cx.c,v 1.27 2004/07/15 20:47:37 phk Exp $"); #include <sys/param.h> @@ -1640,7 +1640,7 @@ cx_set_rts (d->chan, 0); ttydtrwaitstart(d->tty); } - ttyclose (d->tty); + tty_close (d->tty); splx (s); d->callout = 0; ==== //depot/projects/netperf_socket/sys/dev/cy/cy.c#12 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/cy/cy.c,v 1.158 2004/07/11 15:18:37 phk Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/cy/cy.c,v 1.159 2004/07/15 20:47:37 phk Exp $"); #include "opt_compat.h" @@ -786,7 +786,7 @@ ttyld_close(tp, flag); disc_optim(tp, &tp->t_termios, com); comhardclose(com); - ttyclose(tp); + tty_close(tp); siosettimeout(); splx(s); #ifdef broken /* session holds a ref to the tty; can't deallocate */ ==== //depot/projects/netperf_socket/sys/dev/dcons/dcons.c#9 (text+ko) ==== @@ -32,7 +32,7 @@ * SUCH DAMAGE. * * $Id: dcons.c,v 1.65 2003/10/24 03:24:55 simokawa Exp $ - * $FreeBSD: src/sys/dev/dcons/dcons.c,v 1.14 2004/07/13 09:41:45 simokawa Exp $ + * $FreeBSD: src/sys/dev/dcons/dcons.c,v 1.16 2004/07/15 20:47:37 phk Exp $ */ #include <sys/param.h> @@ -230,7 +230,7 @@ tp = dev->si_tty; if (tp->t_state & TS_ISOPEN) { ttyld_close(tp, flag); - ttyclose(tp); + tty_close(tp); } return (0); @@ -597,7 +597,7 @@ if (tp->t_state & TS_ISOPEN) { printf("dcons: still opened\n"); ttyld_close(tp, 0); - ttyclose(tp); + tty_close(tp); } /* XXX * must wait until all device are closed. @@ -651,6 +651,9 @@ break; case MOD_SHUTDOWN: break; + default: + err = EOPNOTSUPP; + break; } return(err); } ==== //depot/projects/netperf_socket/sys/dev/digi/digi.c#13 (text+ko) ==== @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/digi/digi.c,v 1.53 2004/07/13 19:36:58 phk Exp $ + * $FreeBSD: src/sys/dev/digi/digi.c,v 1.54 2004/07/15 20:47:37 phk Exp $ */ /*- @@ -893,7 +893,7 @@ ttyld_close(tp, flag); ttyldoptim(tp); digihardclose(port); - ttyclose(tp); + tty_close(tp); if (--sc->opencnt == 0) splx(s); return (0); ==== //depot/projects/netperf_socket/sys/dev/fb/fb.c#3 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/fb/fb.c,v 1.31 2004/02/21 21:10:42 phk Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/fb/fb.c,v 1.32 2004/07/15 08:26:00 phk Exp $"); #include "opt_fb.h" @@ -386,6 +386,8 @@ case MOD_UNLOAD: printf("fb module unload - not possible for this module type\n"); return EINVAL; + default: + return EOPNOTSUPP; } return 0; } ==== //depot/projects/netperf_socket/sys/dev/fb/splashreg.h#2 (text+ko) ==== @@ -23,7 +23,7 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/fb/splashreg.h,v 1.5 2000/04/29 13:33:18 peter Exp $ + * $FreeBSD: src/sys/dev/fb/splashreg.h,v 1.6 2004/07/15 08:26:01 phk Exp $ */ #ifndef _DEV_FB_SPLASHREG_H_ @@ -55,6 +55,7 @@ case MOD_UNLOAD: \ return splash_unregister(&sw); \ default: \ + return EOPNOTSUPP; \ break; \ } \ return 0; \ @@ -76,6 +77,7 @@ case MOD_UNLOAD: \ return splash_unregister(&sw); \ default: \ + return EOPNOTSUPP; \ break; \ } \ return 0; \ ==== //depot/projects/netperf_socket/sys/dev/fdc/fdc.c#6 (text+ko) ==== @@ -49,7 +49,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: src/sys/dev/fdc/fdc.c,v 1.280 2004/07/14 07:04:17 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/fdc/fdc.c,v 1.281 2004/07/15 16:39:40 njl Exp $"); #include "opt_fdc.h" @@ -241,7 +241,6 @@ static int fd_sense_drive_status(fdc_p, int *); static int fd_sense_int(fdc_p, int *, int *); static int fd_read_status(fdc_p); -static void fdc_add_child(device_t, const char *, int); static int fd_probe(device_t); static int fd_attach(device_t); static int fd_detach(device_t); @@ -517,29 +516,38 @@ device_t dev; dev = fdc->fdc_dev; + if (fdc->fdc_intr) { + BUS_TEARDOWN_INTR(device_get_parent(dev), dev, fdc->res_irq, + fdc->fdc_intr); + fdc->fdc_intr = NULL; + } if (fdc->res_irq != 0) { bus_deactivate_resource(dev, SYS_RES_IRQ, fdc->rid_irq, fdc->res_irq); bus_release_resource(dev, SYS_RES_IRQ, fdc->rid_irq, fdc->res_irq); + fdc->res_irq = NULL; } if (fdc->res_ctl != 0) { bus_deactivate_resource(dev, SYS_RES_IOPORT, fdc->rid_ctl, fdc->res_ctl); bus_release_resource(dev, SYS_RES_IOPORT, fdc->rid_ctl, fdc->res_ctl); + fdc->res_ctl = NULL; } if (fdc->res_ioport != 0) { bus_deactivate_resource(dev, SYS_RES_IOPORT, fdc->rid_ioport, fdc->res_ioport); bus_release_resource(dev, SYS_RES_IOPORT, fdc->rid_ioport, fdc->res_ioport); + fdc->res_ioport = NULL; } if (fdc->res_drq != 0) { bus_deactivate_resource(dev, SYS_RES_DRQ, fdc->rid_drq, fdc->res_drq); bus_release_resource(dev, SYS_RES_DRQ, fdc->rid_drq, fdc->res_drq); + fdc->res_ioport = NULL; } } @@ -613,14 +621,6 @@ /* reset controller, turn motor off */ fdout_wr(fdc, 0); - if ((fdc->flags & FDC_ATTACHED) == 0) { - device_printf(dev, "already unloaded\n"); - return (0); - } - fdc->flags &= ~FDC_ATTACHED; - - BUS_TEARDOWN_INTR(device_get_parent(dev), dev, fdc->res_irq, - fdc->fdc_intr); fdc_release_resources(fdc); return (0); } @@ -628,38 +628,36 @@ /* * Add a child device to the fdc controller. It will then be probed etc. */ -static void +device_t fdc_add_child(device_t dev, const char *name, int unit) { - int fdu, flags; + int flags; struct fdc_ivars *ivar; device_t child; >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200407152216.i6FMGpZd072424>