From owner-svn-src-stable-8@FreeBSD.ORG Sun May 23 02:12:44 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8EB2F1065677; Sun, 23 May 2010 02:12:44 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 62AA28FC20; Sun, 23 May 2010 02:12:44 +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 o4N2Cih1036771; Sun, 23 May 2010 02:12:44 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4N2Ciav036769; Sun, 23 May 2010 02:12:44 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201005230212.o4N2Ciav036769@svn.freebsd.org> From: Nathan Whitehorn Date: Sun, 23 May 2010 02:12:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208424 - stable/8/sys/powerpc/powermac X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 02:12:44 -0000 Author: nwhitehorn Date: Sun May 23 02:12:44 2010 New Revision: 208424 URL: http://svn.freebsd.org/changeset/base/208424 Log: MFC r205356: Let unin(4) attach to U3 controllers found on G5 machines. Submitted by: Andreas Tobler Modified: stable/8/sys/powerpc/powermac/uninorth.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/powerpc/powermac/uninorth.c ============================================================================== --- stable/8/sys/powerpc/powermac/uninorth.c Sat May 22 21:51:17 2010 (r208423) +++ stable/8/sys/powerpc/powermac/uninorth.c Sun May 23 02:12:44 2010 (r208424) @@ -611,7 +611,7 @@ unin_chip_probe(device_t dev) if (name == NULL) return (ENXIO); - if (strcmp(name, "uni-n") != 0) + if (strcmp(name, "uni-n") != 0 && strcmp(name, "u3") != 0) return (ENXIO); device_set_desc(dev, "Apple UniNorth System Controller"); @@ -622,7 +622,8 @@ static int unin_chip_attach(device_t dev) { phandle_t node; - u_int reg[2]; + u_int reg[3]; + int i = 0; uncsc = device_get_softc(dev); node = ofw_bus_get_node(dev); @@ -630,14 +631,18 @@ unin_chip_attach(device_t dev) if (OF_getprop(node, "reg", reg, sizeof(reg)) < 8) return (ENXIO); - uncsc->sc_physaddr = reg[0]; - uncsc->sc_size = reg[1]; + if (strcmp(ofw_bus_get_name(dev), "u3") == 0) + i = 1; /* #address-cells lies */ + + uncsc->sc_physaddr = reg[i]; + uncsc->sc_size = reg[i+1]; /* * Only map the first page, since that is where the registers * of interest lie. */ - uncsc->sc_addr = (vm_offset_t) pmap_mapdev(reg[0], PAGE_SIZE); + uncsc->sc_addr = (vm_offset_t) pmap_mapdev(uncsc->sc_physaddr, + PAGE_SIZE); uncsc->sc_version = *(u_int *)uncsc->sc_addr; device_printf(dev, "Version %d\n", uncsc->sc_version); From owner-svn-src-stable-8@FreeBSD.ORG Sun May 23 02:15:33 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6A9F0106564A; Sun, 23 May 2010 02:15:33 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 568E68FC16; Sun, 23 May 2010 02:15:33 +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 o4N2FV34037452; Sun, 23 May 2010 02:15:31 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4N2FVeg037447; Sun, 23 May 2010 02:15:31 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201005230215.o4N2FVeg037447@svn.freebsd.org> From: Nathan Whitehorn Date: Sun, 23 May 2010 02:15:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208425 - in stable/8/sys: conf dev/pci powerpc/include powerpc/powermac powerpc/powerpc X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 02:15:33 -0000 Author: nwhitehorn Date: Sun May 23 02:15:31 2010 New Revision: 208425 URL: http://svn.freebsd.org/changeset/base/208425 Log: MFC r208149,208285: Add support for the U4 PCI-Express bridge chipset used in late-generation Powermac G5 systems. MSI and several other things are not presently supported. The U3/U4 internal device support portions of this change were contributed by Andreas Tobler. Deleted: stable/8/sys/powerpc/powermac/cpchtvar.h Modified: stable/8/sys/conf/files.powerpc stable/8/sys/dev/pci/pci.c stable/8/sys/powerpc/include/intr_machdep.h stable/8/sys/powerpc/powermac/cpcht.c stable/8/sys/powerpc/powermac/uninorth.c stable/8/sys/powerpc/powermac/uninorthvar.h stable/8/sys/powerpc/powerpc/openpic.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/conf/files.powerpc ============================================================================== --- stable/8/sys/conf/files.powerpc Sun May 23 02:12:44 2010 (r208424) +++ stable/8/sys/conf/files.powerpc Sun May 23 02:15:31 2010 (r208425) @@ -140,7 +140,8 @@ powerpc/powermac/openpic_macio.c optiona powerpc/powermac/pswitch.c optional powermac pswitch powerpc/powermac/pmu.c optional powermac pmu powerpc/powermac/smu.c optional powermac smu -powerpc/powermac/uninorth.c optional powermac pci +powerpc/powermac/uninorth.c optional powermac +powerpc/powermac/uninorthpci.c optional powermac pci powerpc/powermac/vcoregpio.c optional powermac powerpc/powerpc/altivec.c optional aim powerpc/powerpc/atomic.S standard Modified: stable/8/sys/dev/pci/pci.c ============================================================================== --- stable/8/sys/dev/pci/pci.c Sun May 23 02:12:44 2010 (r208424) +++ stable/8/sys/dev/pci/pci.c Sun May 23 02:15:31 2010 (r208425) @@ -53,7 +53,7 @@ __FBSDID("$FreeBSD$"); #include #include -#if defined(__i386__) || defined(__amd64__) +#if defined(__i386__) || defined(__amd64__) || defined(__powerpc__) #include #endif @@ -529,7 +529,7 @@ pci_read_extcap(device_t pcib, pcicfgreg { #define REG(n, w) PCIB_READ_CONFIG(pcib, cfg->bus, cfg->slot, cfg->func, n, w) #define WREG(n, v, w) PCIB_WRITE_CONFIG(pcib, cfg->bus, cfg->slot, cfg->func, n, v, w) -#if defined(__i386__) || defined(__amd64__) +#if defined(__i386__) || defined(__amd64__) || defined(__powerpc__) uint64_t addr; #endif uint32_t val; @@ -573,7 +573,7 @@ pci_read_extcap(device_t pcib, pcicfgreg cfg->pp.pp_data = ptr + PCIR_POWER_DATA; } break; -#if defined(__i386__) || defined(__amd64__) +#if defined(__i386__) || defined(__amd64__) || defined(__powerpc__) case PCIY_HT: /* HyperTransport */ /* Determine HT-specific capability type. */ val = REG(ptr + PCIR_HT_COMMAND, 2); Modified: stable/8/sys/powerpc/include/intr_machdep.h ============================================================================== --- stable/8/sys/powerpc/include/intr_machdep.h Sun May 23 02:12:44 2010 (r208424) +++ stable/8/sys/powerpc/include/intr_machdep.h Sun May 23 02:15:31 2010 (r208425) @@ -30,6 +30,11 @@ #define INTR_VECTORS 256 +/* + * Default base address for MSI messages on PowerPC + */ +#define MSI_INTEL_ADDR_BASE 0xfee00000 + extern device_t pic; extern device_t pic8259; Modified: stable/8/sys/powerpc/powermac/cpcht.c ============================================================================== --- stable/8/sys/powerpc/powermac/cpcht.c Sun May 23 02:12:44 2010 (r208424) +++ stable/8/sys/powerpc/powermac/cpcht.c Sun May 23 02:15:31 2010 (r208425) @@ -1,5 +1,5 @@ /*- - * Copyright (C) 2008 Nathan Whitehorn + * Copyright (C) 2008-2010 Nathan Whitehorn * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -39,7 +39,9 @@ #include #include +#include #include +#include #include #include @@ -47,396 +49,341 @@ #include #include -#include #include #include #include "pcib_if.h" - -#include "opt_isa.h" - -#ifdef DEV_ISA -#include -#endif - -static MALLOC_DEFINE(M_CPCHT, "cpcht", "CPC HT device information"); +#include "pic_if.h" /* - * HT Driver methods. + * IBM CPC9X5 Hypertransport Device interface. */ static int cpcht_probe(device_t); static int cpcht_attach(device_t); -static ofw_bus_get_devinfo_t cpcht_get_devinfo; - - -static device_method_t cpcht_methods[] = { - /* Device interface */ - DEVMETHOD(device_probe, cpcht_probe), - DEVMETHOD(device_attach, cpcht_attach), - - /* Bus interface */ - DEVMETHOD(bus_print_child, bus_generic_print_child), - DEVMETHOD(bus_read_ivar, bus_generic_read_ivar), - DEVMETHOD(bus_setup_intr, bus_generic_setup_intr), - DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr), - DEVMETHOD(bus_alloc_resource, bus_generic_alloc_resource), - DEVMETHOD(bus_release_resource, bus_generic_release_resource), - DEVMETHOD(bus_activate_resource,bus_generic_activate_resource), - - /* ofw_bus interface */ - DEVMETHOD(ofw_bus_get_devinfo, cpcht_get_devinfo), - DEVMETHOD(ofw_bus_get_compat, ofw_bus_gen_get_compat), - DEVMETHOD(ofw_bus_get_model, ofw_bus_gen_get_model), - DEVMETHOD(ofw_bus_get_name, ofw_bus_gen_get_name), - DEVMETHOD(ofw_bus_get_node, ofw_bus_gen_get_node), - DEVMETHOD(ofw_bus_get_type, ofw_bus_gen_get_type), - - { 0, 0 } -}; - -static driver_t cpcht_driver = { - "cpcht", - cpcht_methods, - 0 -}; - -static devclass_t cpcht_devclass; - -DRIVER_MODULE(cpcht, nexus, cpcht_driver, cpcht_devclass, 0, 0); - -static int -cpcht_probe(device_t dev) -{ - const char *type, *compatible; - - type = ofw_bus_get_type(dev); - compatible = ofw_bus_get_compat(dev); - - if (type == NULL || compatible == NULL) - return (ENXIO); - - if (strcmp(type, "ht") != 0) - return (ENXIO); - - if (strcmp(compatible, "u3-ht") == 0) { - device_set_desc(dev, "IBM CPC925 HyperTransport Tunnel"); - return (0); - } else if (strcmp(compatible,"u4-ht") == 0) { - device_set_desc(dev, "IBM CPC945 HyperTransport Tunnel"); - return (0); - } - - return (ENXIO); -} - -static int -cpcht_attach(device_t dev) -{ - phandle_t root, child; - device_t cdev; - struct ofw_bus_devinfo *dinfo; - u_int32_t reg[6]; - - root = ofw_bus_get_node(dev); - - if (OF_getprop(root, "reg", reg, sizeof(reg)) < 8) - return (ENXIO); - - for (child = OF_child(root); child != 0; child = OF_peer(child)) { - dinfo = malloc(sizeof(*dinfo), M_CPCHT, M_WAITOK | M_ZERO); - - if (ofw_bus_gen_setup_devinfo(dinfo, child) != 0) { - free(dinfo, M_CPCHT); - continue; - } - cdev = device_add_child(dev, NULL, -1); - if (cdev == NULL) { - device_printf(dev, "<%s>: device_add_child failed\n", - dinfo->obd_name); - ofw_bus_gen_destroy_devinfo(dinfo); - free(dinfo, M_CPCHT); - continue; - } - device_set_ivars(cdev, dinfo); - } - - return (bus_generic_attach(dev)); -} - -static const struct ofw_bus_devinfo * -cpcht_get_devinfo(device_t dev, device_t child) -{ - return (device_get_ivars(child)); -} - -#ifdef DEV_ISA - -/* - * CPC ISA Device interface. - */ -static int cpcisa_probe(device_t); - -/* - * Driver methods. - */ -static device_method_t cpcisa_methods[] = { - /* Device interface */ - DEVMETHOD(device_probe, cpcisa_probe), - DEVMETHOD(device_attach, isab_attach), - /* Bus interface */ - DEVMETHOD(bus_print_child, bus_generic_print_child), - DEVMETHOD(bus_read_ivar, bus_generic_read_ivar), - DEVMETHOD(bus_setup_intr, bus_generic_setup_intr), - DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr), - DEVMETHOD(bus_alloc_resource, bus_generic_alloc_resource), - DEVMETHOD(bus_release_resource, bus_generic_release_resource), - DEVMETHOD(bus_activate_resource,bus_generic_activate_resource), - - {0,0} -}; - -static driver_t cpcisa_driver = { - "isab", - cpcisa_methods, - 0 -}; - -DRIVER_MODULE(cpcisa, cpcht, cpcisa_driver, isab_devclass, 0, 0); - -static int -cpcisa_probe(device_t dev) -{ - const char *type; - - type = ofw_bus_get_type(dev); - - if (type == NULL) - return (ENXIO); - - if (strcmp(type, "isa") != 0) - return (ENXIO); - - device_set_desc(dev, "HyperTransport-ISA bridge"); - - return (0); -} - -#endif /* DEV_ISA */ - -/* - * CPC PCI Device interface. - */ -static int cpcpci_probe(device_t); -static int cpcpci_attach(device_t); +static void cpcht_configure_htbridge(device_t, phandle_t); /* * Bus interface. */ -static int cpcpci_read_ivar(device_t, device_t, int, +static int cpcht_read_ivar(device_t, device_t, int, uintptr_t *); -static struct resource * cpcpci_alloc_resource(device_t bus, - device_t child, int type, int *rid, u_long start, - u_long end, u_long count, u_int flags); -static int cpcpci_activate_resource(device_t bus, device_t child, +static struct resource *cpcht_alloc_resource(device_t bus, device_t child, + int type, int *rid, u_long start, u_long end, + u_long count, u_int flags); +static int cpcht_activate_resource(device_t bus, device_t child, + int type, int rid, struct resource *res); +static int cpcht_release_resource(device_t bus, device_t child, + int type, int rid, struct resource *res); +static int cpcht_deactivate_resource(device_t bus, device_t child, int type, int rid, struct resource *res); /* * pcib interface. */ -static int cpcpci_maxslots(device_t); -static u_int32_t cpcpci_read_config(device_t, u_int, u_int, u_int, +static int cpcht_maxslots(device_t); +static u_int32_t cpcht_read_config(device_t, u_int, u_int, u_int, u_int, int); -static void cpcpci_write_config(device_t, u_int, u_int, u_int, +static void cpcht_write_config(device_t, u_int, u_int, u_int, u_int, u_int32_t, int); -static int cpcpci_route_interrupt(device_t, device_t, int); +static int cpcht_route_interrupt(device_t bus, device_t dev, + int pin); /* * ofw_bus interface */ -static phandle_t cpcpci_get_node(device_t bus, device_t child); +static phandle_t cpcht_get_node(device_t bus, device_t child); /* * Driver methods. */ -static device_method_t cpcpci_methods[] = { +static device_method_t cpcht_methods[] = { /* Device interface */ - DEVMETHOD(device_probe, cpcpci_probe), - DEVMETHOD(device_attach, cpcpci_attach), + DEVMETHOD(device_probe, cpcht_probe), + DEVMETHOD(device_attach, cpcht_attach), /* Bus interface */ DEVMETHOD(bus_print_child, bus_generic_print_child), - DEVMETHOD(bus_read_ivar, cpcpci_read_ivar), + DEVMETHOD(bus_read_ivar, cpcht_read_ivar), DEVMETHOD(bus_setup_intr, bus_generic_setup_intr), DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr), - DEVMETHOD(bus_alloc_resource, cpcpci_alloc_resource), - DEVMETHOD(bus_activate_resource, cpcpci_activate_resource), + DEVMETHOD(bus_alloc_resource, cpcht_alloc_resource), + DEVMETHOD(bus_release_resource, cpcht_release_resource), + DEVMETHOD(bus_activate_resource, cpcht_activate_resource), + DEVMETHOD(bus_deactivate_resource, cpcht_deactivate_resource), /* pcib interface */ - DEVMETHOD(pcib_maxslots, cpcpci_maxslots), - DEVMETHOD(pcib_read_config, cpcpci_read_config), - DEVMETHOD(pcib_write_config, cpcpci_write_config), - DEVMETHOD(pcib_route_interrupt, cpcpci_route_interrupt), + DEVMETHOD(pcib_maxslots, cpcht_maxslots), + DEVMETHOD(pcib_read_config, cpcht_read_config), + DEVMETHOD(pcib_write_config, cpcht_write_config), + DEVMETHOD(pcib_route_interrupt, cpcht_route_interrupt), /* ofw_bus interface */ - DEVMETHOD(ofw_bus_get_node, cpcpci_get_node), + DEVMETHOD(ofw_bus_get_node, cpcht_get_node), { 0, 0 } }; -static driver_t cpcpci_driver = { +struct cpcht_irq { + int ht_source; + + vm_offset_t ht_base; + vm_offset_t apple_eoi; + uint32_t eoi_data; + int edge; +}; + +static struct cpcht_irq *cpcht_irqmap = NULL; + +struct cpcht_softc { + device_t sc_dev; + phandle_t sc_node; + vm_offset_t sc_data; + uint64_t sc_populated_slots; + struct rman sc_mem_rman; + + struct cpcht_irq htirq_map[128]; +}; + +static driver_t cpcht_driver = { "pcib", - cpcpci_methods, - sizeof(struct cpcpci_softc) + cpcht_methods, + sizeof(struct cpcht_softc) }; -static devclass_t cpcpci_devclass; +static devclass_t cpcht_devclass; + +DRIVER_MODULE(cpcht, nexus, cpcht_driver, cpcht_devclass, 0, 0); -DRIVER_MODULE(cpcpci, cpcht, cpcpci_driver, cpcpci_devclass, 0, 0); +#define HTAPIC_REQUEST_EOI 0x20 +#define HTAPIC_TRIGGER_LEVEL 0x02 +#define HTAPIC_MASK 0x01 + +struct cpcht_range { + u_int32_t pci_hi; + u_int32_t pci_mid; + u_int32_t pci_lo; + u_int32_t junk; + u_int32_t host_hi; + u_int32_t host_lo; + u_int32_t size_hi; + u_int32_t size_lo; +}; static int -cpcpci_probe(device_t dev) +cpcht_probe(device_t dev) { - const char *type; + const char *type, *compatible; type = ofw_bus_get_type(dev); + compatible = ofw_bus_get_compat(dev); - if (type == NULL) + if (type == NULL || compatible == NULL) return (ENXIO); - if (strcmp(type, "pci") != 0) + if (strcmp(type, "ht") != 0) return (ENXIO); - device_set_desc(dev, "HyperTransport-PCI bridge"); - + if (strcmp(compatible, "u3-ht") != 0) + return (ENXIO); + + + device_set_desc(dev, "IBM CPC9X5 HyperTransport Tunnel"); return (0); } static int -cpcpci_attach(device_t dev) +cpcht_attach(device_t dev) { - struct cpcpci_softc *sc; - phandle_t node; - u_int32_t reg[2], busrange[2], config_base; - struct cpcpci_range *rp, *io, *mem[2]; - struct cpcpci_range fakeio; - int nmem, i; + struct cpcht_softc *sc; + phandle_t node, child; + u_int32_t reg[3]; + int error; node = ofw_bus_get_node(dev); sc = device_get_softc(dev); - if (OF_getprop(OF_parent(node), "reg", reg, sizeof(reg)) < 8) - return (ENXIO); - - if (OF_getprop(node, "bus-range", busrange, sizeof(busrange)) != 8) + if (OF_getprop(node, "reg", reg, sizeof(reg)) < 12) return (ENXIO); sc->sc_dev = dev; sc->sc_node = node; - sc->sc_bus = busrange[0]; - config_base = reg[1]; - if (sc->sc_bus) - config_base += 0x01000000UL + (sc->sc_bus << 16); - sc->sc_data = (vm_offset_t)pmap_mapdev(config_base, PAGE_SIZE << 4); - - bzero(sc->sc_range, sizeof(sc->sc_range)); - sc->sc_nrange = OF_getprop(node, "ranges", sc->sc_range, - sizeof(sc->sc_range)); + sc->sc_populated_slots = 0; + sc->sc_data = (vm_offset_t)pmap_mapdev(reg[1], reg[2]); - if (sc->sc_nrange == -1) { - device_printf(dev, "could not get ranges\n"); - return (ENXIO); - } + sc->sc_mem_rman.rm_type = RMAN_ARRAY; + sc->sc_mem_rman.rm_descr = "CPCHT Device Memory"; + error = rman_init(&sc->sc_mem_rman); + + if (error) { + device_printf(dev, "rman_init() failed. error = %d\n", error); + return (error); + } + + /* + * Set up the resource manager and the HT->MPIC mapping. For cpcht, + * the ranges are properties of the child bridges, and this is also + * where we get the HT interrupts properties. + */ + + bzero(sc->htirq_map, sizeof(sc->htirq_map)); + for (child = OF_child(node); child != 0; child = OF_peer(child)) + cpcht_configure_htbridge(dev, child); + + /* Now make the mapping table available to the MPIC */ + cpcht_irqmap = sc->htirq_map; + + device_add_child(dev, "pci", device_get_unit(dev)); + + return (bus_generic_attach(dev)); +} - sc->sc_range[6].pci_hi = 0; - io = NULL; - nmem = 0; +static void +cpcht_configure_htbridge(device_t dev, phandle_t child) +{ + struct cpcht_softc *sc; + struct ofw_pci_register pcir; + struct cpcht_range ranges[6], *rp; + int nranges, ptr, nextptr; + uint32_t vend, val; + int i, nirq, irq; + u_int f, s; + + sc = device_get_softc(dev); + if (OF_getprop(child, "reg", &pcir, sizeof(pcir)) == -1) + return; + + s = OFW_PCI_PHYS_HI_DEVICE(pcir.phys_hi); + f = OFW_PCI_PHYS_HI_FUNCTION(pcir.phys_hi); - for (rp = sc->sc_range; rp->pci_hi != 0; rp++) { + /* + * Mark this slot is populated. The remote south bridge does + * not like us talking to unpopulated slots on the root bus. + */ + sc->sc_populated_slots |= (1 << s); + + /* + * Next grab this child bus's bus ranges. + */ + bzero(ranges, sizeof(ranges)); + nranges = OF_getprop(child, "ranges", ranges, sizeof(ranges)); + + ranges[6].pci_hi = 0; + for (rp = ranges; rp->pci_hi != 0; rp++) { switch (rp->pci_hi & OFW_PCI_PHYS_HI_SPACEMASK) { case OFW_PCI_PHYS_HI_SPACE_CONFIG: break; case OFW_PCI_PHYS_HI_SPACE_IO: - io = rp; - break; case OFW_PCI_PHYS_HI_SPACE_MEM32: - mem[nmem] = rp; - nmem++; + rman_manage_region(&sc->sc_mem_rman, rp->pci_lo, + rp->pci_lo + rp->size_lo - 1); break; case OFW_PCI_PHYS_HI_SPACE_MEM64: + panic("64-bit CPCHT reserved memory!"); break; } } - if (io == NULL) { - /* - * On at least some machines, the I/O port range is - * not exported in the OF device tree. So hardcode it. - */ - - fakeio.host_lo = 0; - fakeio.pci_lo = reg[1]; - fakeio.size_lo = 0x00400000; - if (sc->sc_bus) - fakeio.pci_lo += 0x02000000UL + (sc->sc_bus << 14); - io = &fakeio; - } - sc->sc_io_rman.rm_type = RMAN_ARRAY; - sc->sc_io_rman.rm_descr = "CPC 9xx PCI I/O Ports"; - sc->sc_iostart = io->host_lo; - if (rman_init(&sc->sc_io_rman) != 0 || - rman_manage_region(&sc->sc_io_rman, io->pci_lo, - io->pci_lo + io->size_lo - 1) != 0) { - device_printf(dev, "failed to set up io range management\n"); - return (ENXIO); - } - - if (nmem == 0) { - device_printf(dev, "can't find mem ranges\n"); - return (ENXIO); - } - sc->sc_mem_rman.rm_type = RMAN_ARRAY; - sc->sc_mem_rman.rm_descr = "CPC 9xx PCI Memory"; - if (rman_init(&sc->sc_mem_rman) != 0) { - device_printf(dev, - "failed to init mem range resources\n"); - return (ENXIO); - } - for (i = 0; i < nmem; i++) { - if (rman_manage_region(&sc->sc_mem_rman, mem[i]->pci_lo, - mem[i]->pci_lo + mem[i]->size_lo - 1) != 0) { - device_printf(dev, - "failed to set up memory range management\n"); - return (ENXIO); + /* + * Next build up any HT->MPIC mappings for this sub-bus. One would + * naively hope that enabling, disabling, and EOIing interrupts would + * cause the appropriate HT bus transactions to that effect. This is + * not the case. + * + * Instead, we have to muck about on the HT peer's root PCI bridges, + * figure out what interrupts they send, enable them, and cache + * the location of their WaitForEOI registers so that we can + * send EOIs later. + */ + + /* All the devices we are interested in have caps */ + if (!(PCIB_READ_CONFIG(dev, 0, s, f, PCIR_STATUS, 2) + & PCIM_STATUS_CAPPRESENT)) + return; + + nextptr = PCIB_READ_CONFIG(dev, 0, s, f, PCIR_CAP_PTR, 1); + while (nextptr != 0) { + ptr = nextptr; + nextptr = PCIB_READ_CONFIG(dev, 0, s, f, + ptr + PCICAP_NEXTPTR, 1); + + /* Find the HT IRQ capabilities */ + if (PCIB_READ_CONFIG(dev, 0, s, f, + ptr + PCICAP_ID, 1) != PCIY_HT) + continue; + + val = PCIB_READ_CONFIG(dev, 0, s, f, ptr + PCIR_HT_COMMAND, 2); + if ((val & PCIM_HTCMD_CAP_MASK) != PCIM_HTCAP_INTERRUPT) + continue; + + /* Ask for the IRQ count */ + PCIB_WRITE_CONFIG(dev, 0, s, f, ptr + PCIR_HT_COMMAND, 0x1, 1); + nirq = PCIB_READ_CONFIG(dev, 0, s, f, ptr + 4, 4); + nirq = ((nirq >> 16) & 0xff) + 1; + + device_printf(dev, "%d HT IRQs on device %d.%d\n", nirq, s, f); + + for (i = 0; i < nirq; i++) { + PCIB_WRITE_CONFIG(dev, 0, s, f, + ptr + PCIR_HT_COMMAND, 0x10 + (i << 1), 1); + irq = PCIB_READ_CONFIG(dev, 0, s, f, ptr + 4, 4); + + /* + * Mask this interrupt for now. + */ + PCIB_WRITE_CONFIG(dev, 0, s, f, ptr + 4, + irq | HTAPIC_MASK, 4); + irq = (irq >> 16) & 0xff; + + sc->htirq_map[irq].ht_source = i; + sc->htirq_map[irq].ht_base = sc->sc_data + + (((((s & 0x1f) << 3) | (f & 0x07)) << 8) | (ptr)); + + PCIB_WRITE_CONFIG(dev, 0, s, f, + ptr + PCIR_HT_COMMAND, 0x11 + (i << 1), 1); + sc->htirq_map[irq].eoi_data = + PCIB_READ_CONFIG(dev, 0, s, f, ptr + 4, 4) | + 0x80000000; + + /* + * Apple uses a non-compliant IO/APIC that differs + * in how we signal EOIs. Check if this device was + * made by Apple, and act accordingly. + */ + vend = PCIB_READ_CONFIG(dev, 0, s, f, + PCIR_DEVVENDOR, 4); + if ((vend & 0xffff) == 0x106b) + sc->htirq_map[irq].apple_eoi = + (sc->htirq_map[irq].ht_base - ptr) + 0x60; } } - - ofw_bus_setup_iinfo(node, &sc->sc_pci_iinfo, sizeof(cell_t)); - - device_add_child(dev, "pci", device_get_unit(dev)); - - return (bus_generic_attach(dev)); } static int -cpcpci_maxslots(device_t dev) +cpcht_maxslots(device_t dev) { return (PCI_SLOTMAX); } static u_int32_t -cpcpci_read_config(device_t dev, u_int bus, u_int slot, u_int func, u_int reg, +cpcht_read_config(device_t dev, u_int bus, u_int slot, u_int func, u_int reg, int width) { - struct cpcpci_softc *sc; + struct cpcht_softc *sc; vm_offset_t caoff; sc = device_get_softc(dev); caoff = sc->sc_data + (((((slot & 0x1f) << 3) | (func & 0x07)) << 8) | reg); + if (bus == 0 && (!(sc->sc_populated_slots & (1 << slot)) || func > 0)) + return (0xffffffff); + + if (bus > 0) + caoff += 0x01000000UL + (bus << 16); + switch (width) { case 1: return (in8rb(caoff)); @@ -453,16 +400,22 @@ cpcpci_read_config(device_t dev, u_int b } static void -cpcpci_write_config(device_t dev, u_int bus, u_int slot, u_int func, +cpcht_write_config(device_t dev, u_int bus, u_int slot, u_int func, u_int reg, u_int32_t val, int width) { - struct cpcpci_softc *sc; + struct cpcht_softc *sc; vm_offset_t caoff; sc = device_get_softc(dev); caoff = sc->sc_data + (((((slot & 0x1f) << 3) | (func & 0x07)) << 8) | reg); + if (bus == 0 && (!(sc->sc_populated_slots & (1 << slot)) || func > 0)) + return; + + if (bus > 0) + caoff += 0x01000000UL + (bus << 16); + switch (width) { case 1: out8rb(caoff, val); @@ -477,9 +430,9 @@ cpcpci_write_config(device_t dev, u_int } static int -cpcpci_read_ivar(device_t dev, device_t child, int which, uintptr_t *result) +cpcht_read_ivar(device_t dev, device_t child, int which, uintptr_t *result) { - struct cpcpci_softc *sc; + struct cpcht_softc *sc; sc = device_get_softc(dev); @@ -488,38 +441,53 @@ cpcpci_read_ivar(device_t dev, device_t *result = device_get_unit(dev); return (0); case PCIB_IVAR_BUS: - *result = sc->sc_bus; + *result = 0; /* Root bus */ return (0); } return (ENOENT); } +static phandle_t +cpcht_get_node(device_t bus, device_t dev) +{ + struct cpcht_softc *sc; + + sc = device_get_softc(bus); + /* We only have one child, the PCI bus, which needs our own node. */ + return (sc->sc_node); +} + +static int +cpcht_route_interrupt(device_t bus, device_t dev, int pin) +{ + return (pin); +} + static struct resource * -cpcpci_alloc_resource(device_t bus, device_t child, int type, int *rid, +cpcht_alloc_resource(device_t bus, device_t child, int type, int *rid, u_long start, u_long end, u_long count, u_int flags) { - struct cpcpci_softc *sc; + struct cpcht_softc *sc; struct resource *rv; struct rman *rm; - int needactivate; + int needactivate, err; needactivate = flags & RF_ACTIVE; flags &= ~RF_ACTIVE; sc = device_get_softc(bus); + err = 0; switch (type) { + case SYS_RES_IOPORT: + end = min(end, start + count); + + /* FALLTHROUGH */ case SYS_RES_MEMORY: rm = &sc->sc_mem_rman; break; - case SYS_RES_IOPORT: - rm = &sc->sc_io_rman; - if (rm == NULL) - return (NULL); - break; - case SYS_RES_IRQ: return (bus_alloc_resource(bus, type, rid, start, end, count, flags)); @@ -553,11 +521,11 @@ cpcpci_alloc_resource(device_t bus, devi } static int -cpcpci_activate_resource(device_t bus, device_t child, int type, int rid, +cpcht_activate_resource(device_t bus, device_t child, int type, int rid, struct resource *res) { void *p; - struct cpcpci_softc *sc; + struct cpcht_softc *sc; sc = device_get_softc(bus); @@ -568,15 +536,9 @@ cpcpci_activate_resource(device_t bus, d vm_offset_t start; start = (vm_offset_t)rman_get_start(res); - /* - * For i/o-ports, convert the start address to the - * CPC PCI i/o window - */ - if (type == SYS_RES_IOPORT) - start += sc->sc_iostart; if (bootverbose) - printf("cpcpci mapdev: start %x, len %ld\n", start, + printf("cpcht mapdev: start %zx, len %ld\n", start, rman_get_size(res)); p = pmap_mapdev(start, (vm_size_t)rman_get_size(res)); @@ -590,36 +552,259 @@ cpcpci_activate_resource(device_t bus, d return (rman_activate_resource(res)); } -static phandle_t -cpcpci_get_node(device_t bus, device_t dev) +static int +cpcht_release_resource(device_t bus, device_t child, int type, int rid, + struct resource *res) { - struct cpcpci_softc *sc; - sc = device_get_softc(bus); - /* We only have one child, the PCI bus, which needs our own node. */ - return (sc->sc_node); + if (rman_get_flags(res) & RF_ACTIVE) { + int error = bus_deactivate_resource(child, type, rid, res); + if (error) + return error; + } + + return (rman_release_resource(res)); } static int -cpcpci_route_interrupt(device_t bus, device_t dev, int pin) +cpcht_deactivate_resource(device_t bus, device_t child, int type, int rid, + struct resource *res) { - struct cpcpci_softc *sc; - struct ofw_pci_register reg; - uint32_t pintr, mintr; - uint8_t maskbuf[sizeof(reg) + sizeof(pintr)]; - sc = device_get_softc(bus); - pintr = pin; - if (ofw_bus_lookup_imap(ofw_bus_get_node(dev), &sc->sc_pci_iinfo, ®, - sizeof(reg), &pintr, sizeof(pintr), &mintr, sizeof(mintr), maskbuf)) - return (mintr); - - /* Maybe it's a real interrupt, not an intpin */ - if (pin > 4) - return (pin); - - device_printf(bus, "could not route pin %d for device %d.%d\n", - pin, pci_get_slot(dev), pci_get_function(dev)); - return (PCI_INVALID_IRQ); + /* + * If this is a memory resource, unmap it. + */ + if ((type == SYS_RES_MEMORY) || (type == SYS_RES_IOPORT)) { + u_int32_t psize; + + psize = rman_get_size(res); + pmap_unmapdev((vm_offset_t)rman_get_virtual(res), psize); + } + + return (rman_deactivate_resource(res)); +} + +/* + * Driver for the integrated MPIC on U3/U4 (CPC925/CPC945) + */ + +static int openpic_cpcht_probe(device_t); +static int openpic_cpcht_attach(device_t); +static void openpic_cpcht_config(device_t, u_int irq, + enum intr_trigger trig, enum intr_polarity pol); +static void openpic_cpcht_enable(device_t, u_int irq, u_int vector); +static void openpic_cpcht_unmask(device_t, u_int irq); +static void openpic_cpcht_eoi(device_t, u_int irq); + +static device_method_t openpic_cpcht_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, openpic_cpcht_probe), + DEVMETHOD(device_attach, openpic_cpcht_attach), + + /* PIC interface */ + DEVMETHOD(pic_config, openpic_cpcht_config), + DEVMETHOD(pic_dispatch, openpic_dispatch), + DEVMETHOD(pic_enable, openpic_cpcht_enable), + DEVMETHOD(pic_eoi, openpic_cpcht_eoi), + DEVMETHOD(pic_ipi, openpic_ipi), + DEVMETHOD(pic_mask, openpic_mask), + DEVMETHOD(pic_unmask, openpic_cpcht_unmask), + + { 0, 0 }, +}; + +struct openpic_cpcht_softc { + struct openpic_softc sc_openpic; + + struct mtx sc_ht_mtx; +}; + +static driver_t openpic_cpcht_driver = { + "htpic", + openpic_cpcht_methods, + sizeof(struct openpic_cpcht_softc), +}; + +DRIVER_MODULE(openpic, unin, openpic_cpcht_driver, openpic_devclass, 0, 0); + +static int +openpic_cpcht_probe(device_t dev) +{ + const char *type = ofw_bus_get_type(dev); + + if (strcmp(type, "open-pic") != 0) + return (ENXIO); + + device_set_desc(dev, OPENPIC_DEVSTR); + return (0); +} + +static int +openpic_cpcht_attach(device_t dev) +{ + struct openpic_cpcht_softc *sc; + int err, irq; + + err = openpic_attach(dev); + if (err != 0) + return (err); + + /* + * The HT APIC stuff is not thread-safe, so we need a mutex to + * protect it. + */ + sc = device_get_softc(dev); + mtx_init(&sc->sc_ht_mtx, "htpic", NULL, MTX_SPIN); + + /* + * Interrupts 0-3 are internally sourced and are level triggered + * active low. Interrupts 4-123 are connected to a pulse generator + * and should be programmed as edge triggered low-to-high. + * + * IBM CPC945 Manual, Section 9.3. + */ + + for (irq = 0; irq < 4; irq++) + openpic_config(dev, irq, INTR_TRIGGER_LEVEL, INTR_POLARITY_LOW); + for (irq = 4; irq < 124; irq++) + openpic_config(dev, irq, INTR_TRIGGER_EDGE, INTR_POLARITY_LOW); + + return (0); +} + +static void +openpic_cpcht_config(device_t dev, u_int irq, enum intr_trigger trig, + enum intr_polarity pol) +{ + struct openpic_cpcht_softc *sc; + uint32_t ht_irq; + + /* + * The interrupt settings for the MPIC are completely determined + * by the internal wiring in the northbridge. Real changes to these + * settings need to be negotiated with the remote IO-APIC on the HT + * link. + */ + + sc = device_get_softc(dev); + + if (cpcht_irqmap != NULL && irq < 128 && + cpcht_irqmap[irq].ht_base > 0 && !cpcht_irqmap[irq].edge) { + mtx_lock_spin(&sc->sc_ht_mtx); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable-8@FreeBSD.ORG Sun May 23 02:16:30 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5041D1065678; Sun, 23 May 2010 02:16:30 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3E89A8FC0A; Sun, 23 May 2010 02:16:30 +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 o4N2GUqK037725; Sun, 23 May 2010 02:16:30 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4N2GUfg037723; Sun, 23 May 2010 02:16:30 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201005230216.o4N2GUfg037723@svn.freebsd.org> From: Nathan Whitehorn Date: Sun, 23 May 2010 02:16:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208426 - stable/8/sys/powerpc/cpufreq X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 02:16:30 -0000 Author: nwhitehorn Date: Sun May 23 02:16:29 2010 New Revision: 208426 URL: http://svn.freebsd.org/changeset/base/208426 Log: MFC r208150: On SMP G5 systems, sometimes the power-mode-data property is only found on CPU 0, so look there if it is not otherwise available. Modified: stable/8/sys/powerpc/cpufreq/pcr.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/powerpc/cpufreq/pcr.c ============================================================================== --- stable/8/sys/powerpc/cpufreq/pcr.c Sun May 23 02:15:31 2010 (r208425) +++ stable/8/sys/powerpc/cpufreq/pcr.c Sun May 23 02:16:29 2010 (r208426) @@ -202,6 +202,11 @@ pcr_attach(device_t dev) return (ENXIO); } + if (OF_getproplen(cpu, "power-mode-data") <= 0) { + /* Use the first CPU's node */ + cpu = OF_child(OF_parent(cpu)); + } + /* * Collect the PCR values for each mode from the device tree. * These include bus timing information, and so cannot be From owner-svn-src-stable-8@FreeBSD.ORG Sun May 23 02:18:40 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E44DC1065673; Sun, 23 May 2010 02:18:40 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B94E18FC17; Sun, 23 May 2010 02:18:40 +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 o4N2IeAm038242; Sun, 23 May 2010 02:18:40 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4N2IepZ038240; Sun, 23 May 2010 02:18:40 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201005230218.o4N2IepZ038240@svn.freebsd.org> From: Nathan Whitehorn Date: Sun, 23 May 2010 02:18:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208427 - stable/8/sys/powerpc/aim X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 02:18:41 -0000 Author: nwhitehorn Date: Sun May 23 02:18:40 2010 New Revision: 208427 URL: http://svn.freebsd.org/changeset/base/208427 Log: MFC r208152,208172: On PowerMac11,2 and (presumably) PowerMac12,1, we need to quiesce the firmware in order to take over control of the SMU. Without doing this, the firmware background process doing fan control will run amok as we take over the system and crash the management chip. This is limited to these two machines because our kernel is heavily dependent on firmware accesses, and so quiescing firmware can cause nasty problems. Modified: stable/8/sys/powerpc/aim/ofw_machdep.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/powerpc/aim/ofw_machdep.c ============================================================================== --- stable/8/sys/powerpc/aim/ofw_machdep.c Sun May 23 02:16:29 2010 (r208426) +++ stable/8/sys/powerpc/aim/ofw_machdep.c Sun May 23 02:18:40 2010 (r208427) @@ -75,6 +75,7 @@ static int (*ofwcall)(void *); static void *fdt; int ofw_real_mode; +static void ofw_quiesce(void); static int openfirmware(void *args); /* @@ -291,6 +292,12 @@ OF_bootstrap() return status; OF_init(openfirmware); + + /* + * On some machines, we need to quiesce OF to turn off + * background processes. + */ + ofw_quiesce(); } else { status = OF_install(OFW_FDT, 0); @@ -303,6 +310,39 @@ OF_bootstrap() return (status); } +static void +ofw_quiesce(void) +{ + phandle_t rootnode; + char model[32]; + struct { + cell_t name; + cell_t nargs; + cell_t nreturns; + } args; + + /* + * Only quiesce Open Firmware on PowerMac11,2 and 12,1. It is + * necessary there to shut down a background thread doing fan + * management, and is harmful on other machines. + * + * Note: we don't need to worry about which OF module we are + * using since this is called only from very early boot, within + * OF's boot context. + */ + + rootnode = OF_finddevice("/"); + if (OF_getprop(rootnode, "model", model, sizeof(model)) > 0) { + if (strcmp(model, "PowerMac11,2") == 0 || + strcmp(model, "PowerMac12,1") == 0) { + args.name = (cell_t)(uintptr_t)"quiesce"; + args.nargs = 0; + args.nreturns = 0; + openfirmware(&args); + } + } +} + static int openfirmware(void *args) { From owner-svn-src-stable-8@FreeBSD.ORG Sun May 23 02:20:26 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A02FA106566C; Sun, 23 May 2010 02:20:26 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8D07D8FC17; Sun, 23 May 2010 02:20:26 +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 o4N2KQOp038713; Sun, 23 May 2010 02:20:26 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4N2KQO9038712; Sun, 23 May 2010 02:20:26 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201005230220.o4N2KQO9038712@svn.freebsd.org> From: Nathan Whitehorn Date: Sun, 23 May 2010 02:20:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208428 - stable/8/sys/powerpc/powermac X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 02:20:26 -0000 Author: nwhitehorn Date: Sun May 23 02:20:26 2010 New Revision: 208428 URL: http://svn.freebsd.org/changeset/base/208428 Log: Add a file missed by svn in r208425 (the MFC of r208149,208285) Added: stable/8/sys/powerpc/powermac/uninorthpci.c (contents, props changed) Added: stable/8/sys/powerpc/powermac/uninorthpci.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/8/sys/powerpc/powermac/uninorthpci.c Sun May 23 02:20:26 2010 (r208428) @@ -0,0 +1,543 @@ +/*- + * Copyright (C) 2002 Benno Rice. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY Benno Rice ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; + * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (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$ + */ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include + +#include + +#include + +#include +#include + +#include "pcib_if.h" + +#define UNINORTH_DEBUG 0 + +/* + * Device interface. + */ +static int uninorth_probe(device_t); +static int uninorth_attach(device_t); + +/* + * Bus interface. + */ +static int uninorth_read_ivar(device_t, device_t, int, + uintptr_t *); +static struct resource * uninorth_alloc_resource(device_t bus, + device_t child, int type, int *rid, u_long start, + u_long end, u_long count, u_int flags); +static int uninorth_activate_resource(device_t bus, device_t child, + int type, int rid, struct resource *res); + +/* + * pcib interface. + */ +static int uninorth_maxslots(device_t); +static u_int32_t uninorth_read_config(device_t, u_int, u_int, u_int, + u_int, int); +static void uninorth_write_config(device_t, u_int, u_int, u_int, + u_int, u_int32_t, int); +static int uninorth_route_interrupt(device_t, device_t, int); + +/* + * OFW Bus interface + */ + +static phandle_t uninorth_get_node(device_t bus, device_t dev); + +/* + * Local routines. + */ +static int uninorth_enable_config(struct uninorth_softc *, u_int, + u_int, u_int, u_int); + +/* + * Driver methods. + */ +static device_method_t uninorth_methods[] = { + /* Device interface */ + DEVMETHOD(device_probe, uninorth_probe), + DEVMETHOD(device_attach, uninorth_attach), + + /* Bus interface */ + DEVMETHOD(bus_print_child, bus_generic_print_child), + DEVMETHOD(bus_read_ivar, uninorth_read_ivar), + DEVMETHOD(bus_setup_intr, bus_generic_setup_intr), + DEVMETHOD(bus_teardown_intr, bus_generic_teardown_intr), + DEVMETHOD(bus_alloc_resource, uninorth_alloc_resource), + DEVMETHOD(bus_activate_resource, uninorth_activate_resource), + + /* pcib interface */ + DEVMETHOD(pcib_maxslots, uninorth_maxslots), + DEVMETHOD(pcib_read_config, uninorth_read_config), + DEVMETHOD(pcib_write_config, uninorth_write_config), + DEVMETHOD(pcib_route_interrupt, uninorth_route_interrupt), + + /* ofw_bus interface */ + DEVMETHOD(ofw_bus_get_node, uninorth_get_node), + + { 0, 0 } +}; + +static driver_t uninorth_driver = { + "pcib", + uninorth_methods, + sizeof(struct uninorth_softc) +}; + +static devclass_t uninorth_devclass; + +DRIVER_MODULE(uninorth, nexus, uninorth_driver, uninorth_devclass, 0, 0); + +static int +uninorth_probe(device_t dev) +{ + const char *type, *compatible; + + type = ofw_bus_get_type(dev); + compatible = ofw_bus_get_compat(dev); + + if (type == NULL || compatible == NULL) + return (ENXIO); + + if (strcmp(type, "pci") != 0) + return (ENXIO); + + if (strcmp(compatible, "uni-north") == 0) { + device_set_desc(dev, "Apple UniNorth Host-PCI bridge"); + return (0); + } else if (strcmp(compatible, "u3-agp") == 0) { + device_set_desc(dev, "Apple U3 Host-AGP bridge"); + return (0); + } else if (strcmp(compatible, "u4-pcie") == 0) { + device_set_desc(dev, "IBM CPC945 PCI Express Root"); + return (0); + } + + return (ENXIO); +} + +static int +uninorth_attach(device_t dev) +{ + struct uninorth_softc *sc; + const char *compatible; + phandle_t node; + u_int32_t reg[3], busrange[2]; + struct uninorth_range *rp, *io, *mem[2]; + int nmem, i, error; + + node = ofw_bus_get_node(dev); + sc = device_get_softc(dev); + + if (OF_getprop(node, "reg", reg, sizeof(reg)) < 8) + return (ENXIO); + + if (OF_getprop(node, "bus-range", busrange, sizeof(busrange)) != 8) + return (ENXIO); + + sc->sc_ver = 0; + compatible = ofw_bus_get_compat(dev); + if (strcmp(compatible, "u3-agp") == 0) + sc->sc_ver = 3; + if (strcmp(compatible, "u4-pcie") == 0) + sc->sc_ver = 4; + + sc->sc_dev = dev; + sc->sc_node = node; + if (sc->sc_ver >= 3) { + sc->sc_addr = (vm_offset_t)pmap_mapdev(reg[1] + 0x800000, PAGE_SIZE); + sc->sc_data = (vm_offset_t)pmap_mapdev(reg[1] + 0xc00000, PAGE_SIZE); + } else { + sc->sc_addr = (vm_offset_t)pmap_mapdev(reg[0] + 0x800000, PAGE_SIZE); + sc->sc_data = (vm_offset_t)pmap_mapdev(reg[0] + 0xc00000, PAGE_SIZE); + } + sc->sc_bus = busrange[0]; + + bzero(sc->sc_range, sizeof(sc->sc_range)); + if (sc->sc_ver >= 3) { + /* + * On Apple U3 systems, we have an otherwise standard + * Uninorth controller driving AGP. The one difference + * is that it uses a new PCI ranges format, so do the + * translation. + */ + + struct uninorth_range64 range64[6]; + bzero(range64, sizeof(range64)); + + sc->sc_nrange = OF_getprop(node, "ranges", range64, + sizeof(range64)); + for (i = 0; range64[i].pci_hi != 0; i++) { + sc->sc_range[i].pci_hi = range64[i].pci_hi; + sc->sc_range[i].pci_mid = range64[i].pci_mid; + sc->sc_range[i].pci_lo = range64[i].pci_lo; + sc->sc_range[i].host = range64[i].host_lo; + sc->sc_range[i].size_hi = range64[i].size_hi; + sc->sc_range[i].size_lo = range64[i].size_lo; + } + } else { + sc->sc_nrange = OF_getprop(node, "ranges", sc->sc_range, + sizeof(sc->sc_range)); + } + + if (sc->sc_nrange == -1) { + device_printf(dev, "could not get ranges\n"); + return (ENXIO); + } + + sc->sc_range[6].pci_hi = 0; + io = NULL; + nmem = 0; + + for (rp = sc->sc_range; rp->pci_hi != 0; rp++) { + switch (rp->pci_hi & OFW_PCI_PHYS_HI_SPACEMASK) { + case OFW_PCI_PHYS_HI_SPACE_CONFIG: + break; + case OFW_PCI_PHYS_HI_SPACE_IO: + io = rp; + break; + case OFW_PCI_PHYS_HI_SPACE_MEM32: + mem[nmem] = rp; + nmem++; + break; + case OFW_PCI_PHYS_HI_SPACE_MEM64: + break; + } + } + + if (io == NULL) { + device_printf(dev, "can't find io range\n"); + return (ENXIO); + } + sc->sc_io_rman.rm_type = RMAN_ARRAY; + sc->sc_io_rman.rm_descr = "UniNorth PCI I/O Ports"; + sc->sc_iostart = io->host; + if (rman_init(&sc->sc_io_rman) != 0 || + rman_manage_region(&sc->sc_io_rman, io->pci_lo, + io->pci_lo + io->size_lo - 1) != 0) { + panic("uninorth_attach: failed to set up I/O rman"); + } + + if (nmem == 0) { + device_printf(dev, "can't find mem ranges\n"); + return (ENXIO); + } + sc->sc_mem_rman.rm_type = RMAN_ARRAY; + sc->sc_mem_rman.rm_descr = "UniNorth PCI Memory"; + error = rman_init(&sc->sc_mem_rman); + if (error) { + device_printf(dev, "rman_init() failed. error = %d\n", error); + return (error); + } + for (i = 0; i < nmem; i++) { + error = rman_manage_region(&sc->sc_mem_rman, mem[i]->pci_lo, + mem[i]->pci_lo + mem[i]->size_lo - 1); + if (error) { + device_printf(dev, + "rman_manage_region() failed. error = %d\n", error); + return (error); + } + } + + ofw_bus_setup_iinfo(node, &sc->sc_pci_iinfo, sizeof(cell_t)); + + device_add_child(dev, "pci", device_get_unit(dev)); + return (bus_generic_attach(dev)); +} + +static int +uninorth_maxslots(device_t dev) +{ + + return (PCI_SLOTMAX); +} + +static u_int32_t +uninorth_read_config(device_t dev, u_int bus, u_int slot, u_int func, u_int reg, + int width) +{ + struct uninorth_softc *sc; + vm_offset_t caoff; + + sc = device_get_softc(dev); + caoff = sc->sc_data + (reg & 0x07); + + if (uninorth_enable_config(sc, bus, slot, func, reg) != 0) { + switch (width) { + case 1: + return (in8rb(caoff)); + break; + case 2: + return (in16rb(caoff)); + break; + case 4: + return (in32rb(caoff)); + break; + } + } + + return (0xffffffff); +} + +static void +uninorth_write_config(device_t dev, u_int bus, u_int slot, u_int func, + u_int reg, u_int32_t val, int width) +{ + struct uninorth_softc *sc; + vm_offset_t caoff; + + sc = device_get_softc(dev); + caoff = sc->sc_data + (reg & 0x07); + + if (uninorth_enable_config(sc, bus, slot, func, reg)) { + switch (width) { + case 1: + out8rb(caoff, val); + break; + case 2: + out16rb(caoff, val); + break; + case 4: + out32rb(caoff, val); + break; + } + } +} + +static int +uninorth_route_interrupt(device_t bus, device_t dev, int pin) +{ + struct uninorth_softc *sc; + struct ofw_pci_register reg; + uint32_t pintr, mintr; + uint8_t maskbuf[sizeof(reg) + sizeof(pintr)]; + + sc = device_get_softc(bus); + pintr = pin; + if (ofw_bus_lookup_imap(ofw_bus_get_node(dev), &sc->sc_pci_iinfo, ®, + sizeof(reg), &pintr, sizeof(pintr), &mintr, sizeof(mintr), + maskbuf)) + return (mintr); + + /* Maybe it's a real interrupt, not an intpin */ + if (pin > 4) + return (pin); + + device_printf(bus, "could not route pin %d for device %d.%d\n", + pin, pci_get_slot(dev), pci_get_function(dev)); + return (PCI_INVALID_IRQ); +} + +static int +uninorth_read_ivar(device_t dev, device_t child, int which, uintptr_t *result) +{ + struct uninorth_softc *sc; + + sc = device_get_softc(dev); + + switch (which) { + case PCIB_IVAR_DOMAIN: + *result = device_get_unit(dev); + return (0); + case PCIB_IVAR_BUS: + *result = sc->sc_bus; + return (0); + } + + return (ENOENT); +} + +static struct resource * +uninorth_alloc_resource(device_t bus, device_t child, int type, int *rid, + u_long start, u_long end, u_long count, u_int flags) +{ + struct uninorth_softc *sc; + struct resource *rv; + struct rman *rm; + int needactivate; + + needactivate = flags & RF_ACTIVE; + flags &= ~RF_ACTIVE; + + sc = device_get_softc(bus); + + switch (type) { + case SYS_RES_MEMORY: + rm = &sc->sc_mem_rman; + break; + + case SYS_RES_IOPORT: + rm = &sc->sc_io_rman; + break; + + case SYS_RES_IRQ: + return (bus_alloc_resource(bus, type, rid, start, end, count, + flags)); + + default: + device_printf(bus, "unknown resource request from %s\n", + device_get_nameunit(child)); + return (NULL); + } + + rv = rman_reserve_resource(rm, start, end, count, flags, child); + if (rv == NULL) { + device_printf(bus, "failed to reserve resource for %s\n", + device_get_nameunit(child)); + return (NULL); + } + + rman_set_rid(rv, *rid); + + if (needactivate) { + if (bus_activate_resource(child, type, *rid, rv) != 0) { + device_printf(bus, + "failed to activate resource for %s\n", + device_get_nameunit(child)); + rman_release_resource(rv); + return (NULL); + } + } + + return (rv); +} + +static int +uninorth_activate_resource(device_t bus, device_t child, int type, int rid, + struct resource *res) +{ + void *p; + struct uninorth_softc *sc; + + sc = device_get_softc(bus); + + if (type == SYS_RES_IRQ) + return (bus_activate_resource(bus, type, rid, res)); + + if (type == SYS_RES_MEMORY || type == SYS_RES_IOPORT) { + vm_offset_t start; + + start = (vm_offset_t)rman_get_start(res); + /* + * For i/o-ports, convert the start address to the + * uninorth PCI i/o window + */ + if (type == SYS_RES_IOPORT) + start += sc->sc_iostart; + + if (bootverbose) + printf("uninorth mapdev: start %zx, len %ld\n", start, + rman_get_size(res)); + + p = pmap_mapdev(start, (vm_size_t)rman_get_size(res)); + if (p == NULL) + return (ENOMEM); + rman_set_virtual(res, p); + rman_set_bustag(res, &bs_le_tag); + rman_set_bushandle(res, (u_long)p); + } + + return (rman_activate_resource(res)); +} + +static int +uninorth_enable_config(struct uninorth_softc *sc, u_int bus, u_int slot, + u_int func, u_int reg) +{ + uint32_t cfgval; + uint32_t pass; + + if (resource_int_value(device_get_name(sc->sc_dev), + device_get_unit(sc->sc_dev), "skipslot", &pass) == 0) { + if (pass == slot) + return (0); + } + + /* + * Issue type 0 configuration space accesses for the root bus. + * + * NOTE: On U4, issue only type 1 accesses. There is a secret + * PCI Express <-> PCI Express bridge not present in the device tree, + * and we need to route all of our configuration space through it. + */ + if (sc->sc_bus == bus && sc->sc_ver < 4) { + /* + * No slots less than 11 on the primary bus on U3 and lower + */ + if (slot < 11) + return (0); + + cfgval = (1 << slot) | (func << 8) | (reg & 0xfc); + } else { + cfgval = (bus << 16) | (slot << 11) | (func << 8) | + (reg & 0xfc) | 1; + } + + /* Set extended register bits on U4 */ + if (sc->sc_ver == 4) + cfgval |= (reg >> 8) << 28; + + do { + out32rb(sc->sc_addr, cfgval); + } while (in32rb(sc->sc_addr) != cfgval); + + return (1); +} + +static phandle_t +uninorth_get_node(device_t bus, device_t dev) +{ + struct uninorth_softc *sc; + + sc = device_get_softc(bus); + /* We only have one child, the PCI bus, which needs our own node. */ + + return sc->sc_node; +} + From owner-svn-src-stable-8@FreeBSD.ORG Sun May 23 02:31:37 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A9525106564A; Sun, 23 May 2010 02:31:37 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8BC0F8FC13; Sun, 23 May 2010 02:31:37 +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 o4N2VbCD041229; Sun, 23 May 2010 02:31:37 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4N2VbI1041226; Sun, 23 May 2010 02:31:37 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201005230231.o4N2VbI1041226@svn.freebsd.org> From: Nathan Whitehorn Date: Sun, 23 May 2010 02:31:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208429 - stable/8/sys/powerpc/aim X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 02:31:37 -0000 Author: nwhitehorn Date: Sun May 23 02:31:37 2010 New Revision: 208429 URL: http://svn.freebsd.org/changeset/base/208429 Log: MFC r205497,208364,208405: Fix a long-standing bug in the PowerPC OFW call function on SMP machines by forcing all secondary CPUs into a busy wait with interrupts off during the call. This bug caused ofwdump -a to hang the system. Following section 8.4 of the Open Firmware PowerPC processor binding, the firmware is free to overwrite the system interrupt handlers during OF calls, restoring the OS handlers on exit. On single CPU systems, this process is invisible to the operating system. On multiple CPU systems, taking any exception on a secondary CPU while an OF call is in progress ends with that exception vectored into OF, resulting in a slow movement of the entire system into firmware context and a machine hang. Modified: stable/8/sys/powerpc/aim/ofw_machdep.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/powerpc/aim/ofw_machdep.c ============================================================================== --- stable/8/sys/powerpc/aim/ofw_machdep.c Sun May 23 02:20:26 2010 (r208428) +++ stable/8/sys/powerpc/aim/ofw_machdep.c Sun May 23 02:31:37 2010 (r208429) @@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -344,16 +345,13 @@ ofw_quiesce(void) } static int -openfirmware(void *args) +openfirmware_core(void *args) { long oldmsr; int result; u_int srsave[16]; u_int i; - if (pmap_bootstrapped && ofw_real_mode) - args = (void *)pmap_kextract((vm_offset_t)args); - __asm __volatile( "\t" "sync\n\t" "mfmsr %0\n\t" @@ -409,6 +407,61 @@ openfirmware(void *args) return (result); } +#ifdef SMP +struct ofw_rv_args { + void *args; + int retval; + volatile int in_progress; +}; + +static void +ofw_rendezvous_dispatch(void *xargs) +{ + struct ofw_rv_args *rv_args = xargs; + + /* NOTE: Interrupts are disabled here */ + + if (PCPU_GET(cpuid) == 0) { + /* + * Execute all OF calls on CPU 0 + */ + rv_args->retval = openfirmware_core(rv_args->args); + rv_args->in_progress = 0; + } else { + /* + * Spin with interrupts off on other CPUs while OF has + * control of the machine. + */ + while (rv_args->in_progress) + cpu_spinwait(); + } +} +#endif + +static int +openfirmware(void *args) +{ + int result; + #ifdef SMP + struct ofw_rv_args rv_args; + #endif + + if (pmap_bootstrapped && ofw_real_mode) + args = (void *)pmap_kextract((vm_offset_t)args); + + #ifdef SMP + rv_args.args = args; + rv_args.in_progress = 1; + smp_rendezvous(smp_no_rendevous_barrier, ofw_rendezvous_dispatch, + smp_no_rendevous_barrier, &rv_args); + result = rv_args.retval; + #else + result = openfirmware_core(args); + #endif + + return (result); +} + void OF_halt() { From owner-svn-src-stable-8@FreeBSD.ORG Sun May 23 02:32:53 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 28F27106564A; Sun, 23 May 2010 02:32:52 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D573F8FC0A; Sun, 23 May 2010 02:32:52 +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 o4N2WqU6041574; Sun, 23 May 2010 02:32:52 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4N2Wq60041572; Sun, 23 May 2010 02:32:52 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201005230232.o4N2Wq60041572@svn.freebsd.org> From: Nathan Whitehorn Date: Sun, 23 May 2010 02:32:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208430 - stable/8/sys/powerpc/powermac X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 02:32:53 -0000 Author: nwhitehorn Date: Sun May 23 02:32:52 2010 New Revision: 208430 URL: http://svn.freebsd.org/changeset/base/208430 Log: MFC r208167: Enable smu(4) to report fan speeds on late-model Powermac G5s. Modified: stable/8/sys/powerpc/powermac/smu.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/powerpc/powermac/smu.c ============================================================================== --- stable/8/sys/powerpc/powermac/smu.c Sun May 23 02:31:37 2010 (r208429) +++ stable/8/sys/powerpc/powermac/smu.c Sun May 23 02:32:52 2010 (r208430) @@ -643,14 +643,34 @@ static int smu_fan_read_rpm(device_t smu, struct smu_fan *fan) { struct smu_cmd cmd; + int rpm, error; - cmd.cmd = SMU_FAN; - cmd.len = 1; - cmd.data[0] = 1; + if (!fan->old_style) { + cmd.cmd = SMU_FAN; + cmd.len = 2; + cmd.data[0] = 0x31; + cmd.data[1] = fan->reg; + + error = smu_run_cmd(smu, &cmd, 1); + if (error) + fan->old_style = 1; + + rpm = (cmd.data[0] << 8) | cmd.data[1]; + } - smu_run_cmd(smu, &cmd, 1); + if (fan->old_style) { + cmd.cmd = SMU_FAN; + cmd.len = 1; + cmd.data[0] = 1; + + error = smu_run_cmd(smu, &cmd, 1); + if (error) + return (error); - return ((cmd.data[fan->reg*2+1] << 8) | cmd.data[fan->reg*2+2]); + rpm = (cmd.data[fan->reg*2+1] << 8) | cmd.data[fan->reg*2+2]; + } + + return (rpm); } static int @@ -666,6 +686,9 @@ smu_fanrpm_sysctl(SYSCTL_HANDLER_ARGS) fan = &sc->sc_fans[arg2]; rpm = smu_fan_read_rpm(smu, fan); + if (rpm < 0) + return (rpm); + error = sysctl_handle_int(oidp, &rpm, 0, req); if (error || !req->newptr) From owner-svn-src-stable-8@FreeBSD.ORG Sun May 23 02:40:04 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 91F5D106566B; Sun, 23 May 2010 02:40:04 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7ED998FC1A; Sun, 23 May 2010 02:40:04 +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 o4N2e4WA043296; Sun, 23 May 2010 02:40:04 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4N2e4Mv043292; Sun, 23 May 2010 02:40:04 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201005230240.o4N2e4Mv043292@svn.freebsd.org> From: Nathan Whitehorn Date: Sun, 23 May 2010 02:40:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208431 - in stable/8: sbin/geom/class/part sys/geom/part sys/sys X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 02:40:04 -0000 Author: nwhitehorn Date: Sun May 23 02:40:04 2010 New Revision: 208431 URL: http://svn.freebsd.org/changeset/base/208431 Log: MFC r200557,208173: Teach gpart about bootcode on APM. Modified: stable/8/sbin/geom/class/part/geom_part.c stable/8/sys/geom/part/g_part_apm.c stable/8/sys/sys/apm.h Directory Properties: stable/8/sbin/geom/ (props changed) stable/8/sbin/geom/class/stripe/ (props changed) stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sbin/geom/class/part/geom_part.c ============================================================================== --- stable/8/sbin/geom/class/part/geom_part.c Sun May 23 02:32:52 2010 (r208430) +++ stable/8/sbin/geom/class/part/geom_part.c Sun May 23 02:40:04 2010 (r208431) @@ -602,7 +602,7 @@ gpart_bootcode(struct gctl_req *req, uns if (gctl_has_param(req, bootcode_param)) { s = gctl_get_ascii(req, bootcode_param); - bootsize = 64 * 1024; /* Arbitrary limit. */ + bootsize = 800 * 1024; /* Arbitrary limit. */ bootcode = gpart_bootfile_read(s, &bootsize); error = gctl_change_param(req, bootcode_param, bootsize, bootcode); Modified: stable/8/sys/geom/part/g_part_apm.c ============================================================================== --- stable/8/sys/geom/part/g_part_apm.c Sun May 23 02:32:52 2010 (r208430) +++ stable/8/sys/geom/part/g_part_apm.c Sun May 23 02:40:04 2010 (r208431) @@ -128,6 +128,26 @@ apm_parse_type(const char *type, char *b strncpy(buf, type, bufsz); return (0); } + alias = g_part_alias_name(G_PART_ALIAS_APPLE_BOOT); + if (!strcasecmp(type, alias)) { + strcpy(buf, APM_ENT_TYPE_APPLE_BOOT); + return (0); + } + alias = g_part_alias_name(G_PART_ALIAS_APPLE_HFS); + if (!strcasecmp(type, alias)) { + strcpy(buf, APM_ENT_TYPE_APPLE_HFS); + return (0); + } + alias = g_part_alias_name(G_PART_ALIAS_APPLE_UFS); + if (!strcasecmp(type, alias)) { + strcpy(buf, APM_ENT_TYPE_APPLE_UFS); + return (0); + } + alias = g_part_alias_name(G_PART_ALIAS_FREEBSD_BOOT); + if (!strcasecmp(type, alias)) { + strcpy(buf, APM_ENT_TYPE_APPLE_BOOT); + return (0); + } alias = g_part_alias_name(G_PART_ALIAS_FREEBSD); if (!strcasecmp(type, alias)) { strcpy(buf, APM_ENT_TYPE_FREEBSD); @@ -429,6 +449,12 @@ g_part_apm_type(struct g_part_table *bas entry = (struct g_part_apm_entry *)baseentry; type = entry->ent.ent_type; + if (!strcmp(type, APM_ENT_TYPE_APPLE_BOOT)) + return (g_part_alias_name(G_PART_ALIAS_APPLE_BOOT)); + if (!strcmp(type, APM_ENT_TYPE_APPLE_HFS)) + return (g_part_alias_name(G_PART_ALIAS_APPLE_HFS)); + if (!strcmp(type, APM_ENT_TYPE_APPLE_UFS)) + return (g_part_alias_name(G_PART_ALIAS_APPLE_UFS)); if (!strcmp(type, APM_ENT_TYPE_FREEBSD)) return (g_part_alias_name(G_PART_ALIAS_FREEBSD)); if (!strcmp(type, APM_ENT_TYPE_FREEBSD_SWAP)) Modified: stable/8/sys/sys/apm.h ============================================================================== --- stable/8/sys/sys/apm.h Sun May 23 02:32:52 2010 (r208430) +++ stable/8/sys/sys/apm.h Sun May 23 02:40:04 2010 (r208431) @@ -61,6 +61,8 @@ struct apm_ent { #define APM_ENT_TYPE_FREEBSD_VINUM "FreeBSD-Vinum" #define APM_ENT_TYPE_FREEBSD_ZFS "FreeBSD-ZFS" +#define APM_ENT_TYPE_APPLE_BOOT "Apple_Bootstrap" #define APM_ENT_TYPE_APPLE_HFS "Apple_HFS" +#define APM_ENT_TYPE_APPLE_UFS "Apple_UNIX_SVR2" #endif /* _SYS_APM_H_ */ From owner-svn-src-stable-8@FreeBSD.ORG Sun May 23 02:55:59 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A6841106566C; Sun, 23 May 2010 02:55:59 +0000 (UTC) (envelope-from rmacklem@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9468E8FC12; Sun, 23 May 2010 02:55:59 +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 o4N2txV3046764; Sun, 23 May 2010 02:55:59 GMT (envelope-from rmacklem@svn.freebsd.org) Received: (from rmacklem@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4N2tx3U046762; Sun, 23 May 2010 02:55:59 GMT (envelope-from rmacklem@svn.freebsd.org) Message-Id: <201005230255.o4N2tx3U046762@svn.freebsd.org> From: Rick Macklem Date: Sun, 23 May 2010 02:55:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208432 - stable/8/sys/fs/nfsclient X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 02:55:59 -0000 Author: rmacklem Date: Sun May 23 02:55:59 2010 New Revision: 208432 URL: http://svn.freebsd.org/changeset/base/208432 Log: MFC: r208254 Allow the experimental NFSv4 client to use cached attributes when a write delegation is held. Also, add a missing mtx_unlock() call for the ACL debugging code. Modified: stable/8/sys/fs/nfsclient/nfs_clsubs.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/fs/nfsclient/nfs_clsubs.c ============================================================================== --- stable/8/sys/fs/nfsclient/nfs_clsubs.c Sun May 23 02:40:04 2010 (r208431) +++ stable/8/sys/fs/nfsclient/nfs_clsubs.c Sun May 23 02:55:59 2010 (r208432) @@ -188,11 +188,12 @@ ncl_getattrcache(struct vnode *vp, struc struct nfsnode *np; struct vattr *vap; struct nfsmount *nmp; - int timeo; + int timeo, mustflush; np = VTONFS(vp); vap = &np->n_vattr.na_vattr; nmp = VFSTONFS(vp->v_mount); + mustflush = nfscl_mustflush(vp); /* must be before mtx_lock() */ #ifdef NFS_ACDEBUG mtx_lock(&Giant); /* ncl_printf() */ #endif @@ -228,9 +229,13 @@ ncl_getattrcache(struct vnode *vp, struc (time_second - np->n_attrstamp), timeo); #endif - if ((time_second - np->n_attrstamp) >= timeo) { + if ((time_second - np->n_attrstamp) >= timeo && + mustflush != 0) { newnfsstats.attrcache_misses++; mtx_unlock(&np->n_mtx); +#ifdef NFS_ACDEBUG + mtx_unlock(&Giant); /* ncl_printf() */ +#endif return( ENOENT); } newnfsstats.attrcache_hits++; From owner-svn-src-stable-8@FreeBSD.ORG Sun May 23 07:04:21 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 80579106564A; Sun, 23 May 2010 07:04:21 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6E83E8FC17; Sun, 23 May 2010 07:04:21 +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 o4N74LXQ001339; Sun, 23 May 2010 07:04:21 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4N74Lg3001337; Sun, 23 May 2010 07:04:21 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201005230704.o4N74Lg3001337@svn.freebsd.org> From: Andriy Gapon Date: Sun, 23 May 2010 07:04:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208434 - stable/8/sys/ufs/ffs X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 07:04:21 -0000 Author: avg Date: Sun May 23 07:04:21 2010 New Revision: 208434 URL: http://svn.freebsd.org/changeset/base/208434 Log: MFC r207366: ffs_vfsops: restore alphabetic order of options in ffs_opts Modified: stable/8/sys/ufs/ffs/ffs_vfsops.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/ufs/ffs/ffs_vfsops.c ============================================================================== --- stable/8/sys/ufs/ffs/ffs_vfsops.c Sun May 23 05:01:18 2010 (r208433) +++ stable/8/sys/ufs/ffs/ffs_vfsops.c Sun May 23 07:04:21 2010 (r208434) @@ -127,8 +127,8 @@ static struct buf_ops ffs_ops = { static const char *ffs_opts[] = { "acls", "async", "noatime", "noclusterr", "noclusterw", "noexec", "export", "force", "from", "multilabel", - "snapshot", "nosuid", "suiddir", "nosymfollow", "sync", - "union", "nfsv4acls", NULL }; + "nfsv4acls", "snapshot", "nosuid", "suiddir", "nosymfollow", "sync", + "union", NULL }; static int ffs_mount(struct mount *mp) From owner-svn-src-stable-8@FreeBSD.ORG Sun May 23 07:21:50 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8280C106566B; Sun, 23 May 2010 07:21:50 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 709828FC1A; Sun, 23 May 2010 07:21:50 +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 o4N7LoZ0005232; Sun, 23 May 2010 07:21:50 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4N7LoGk005230; Sun, 23 May 2010 07:21:50 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201005230721.o4N7LoGk005230@svn.freebsd.org> From: Andriy Gapon Date: Sun, 23 May 2010 07:21:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208435 - stable/8/sys/ufs/ffs X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 07:21:50 -0000 Author: avg Date: Sun May 23 07:21:50 2010 New Revision: 208435 URL: http://svn.freebsd.org/changeset/base/208435 Log: MFC r208293: ffs_mount: accept and drop userland-only options that can be passed from loader(8) PR: kern/141050 Modified: stable/8/sys/ufs/ffs/ffs_vfsops.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/ufs/ffs/ffs_vfsops.c ============================================================================== --- stable/8/sys/ufs/ffs/ffs_vfsops.c Sun May 23 07:04:21 2010 (r208434) +++ stable/8/sys/ufs/ffs/ffs_vfsops.c Sun May 23 07:21:50 2010 (r208435) @@ -125,10 +125,16 @@ static struct buf_ops ffs_ops = { #endif }; +/* + * Note that userquota and groupquota options are not currently used + * by UFS/FFS code and generally mount(8) does not pass those options + * from userland, but they can be passed by loader(8) via + * vfs.root.mountfrom.options. + */ static const char *ffs_opts[] = { "acls", "async", "noatime", "noclusterr", - "noclusterw", "noexec", "export", "force", "from", "multilabel", - "nfsv4acls", "snapshot", "nosuid", "suiddir", "nosymfollow", "sync", - "union", NULL }; + "noclusterw", "noexec", "export", "force", "from", "groupquota", + "multilabel", "nfsv4acls", "snapshot", "nosuid", "suiddir", "nosymfollow", + "sync", "union", "userquota", NULL }; static int ffs_mount(struct mount *mp) @@ -158,6 +164,9 @@ ffs_mount(struct mount *mp) UMA_ALIGN_PTR, 0); } + vfs_deleteopt(mp->mnt_optnew, "groupquota"); + vfs_deleteopt(mp->mnt_optnew, "userquota"); + fspec = vfs_getopts(mp->mnt_optnew, "from", &error); if (error) return (error); From owner-svn-src-stable-8@FreeBSD.ORG Sun May 23 09:27:15 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0B5B51065676; Sun, 23 May 2010 09:27:15 +0000 (UTC) (envelope-from np@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id EEDE88FC19; Sun, 23 May 2010 09:27:14 +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 o4N9REwG032965; Sun, 23 May 2010 09:27:14 GMT (envelope-from np@svn.freebsd.org) Received: (from np@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4N9RE0p032963; Sun, 23 May 2010 09:27:14 GMT (envelope-from np@svn.freebsd.org) Message-Id: <201005230927.o4N9RE0p032963@svn.freebsd.org> From: Navdeep Parhar Date: Sun, 23 May 2010 09:27:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208439 - stable/8/sys/dev/cxgb X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 09:27:15 -0000 Author: np Date: Sun May 23 09:27:14 2010 New Revision: 208439 URL: http://svn.freebsd.org/changeset/base/208439 Log: MFC r208356. Remove bad assertion. Modified: stable/8/sys/dev/cxgb/cxgb_main.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/dev/cxgb/cxgb_main.c ============================================================================== --- stable/8/sys/dev/cxgb/cxgb_main.c Sun May 23 08:31:15 2010 (r208438) +++ stable/8/sys/dev/cxgb/cxgb_main.c Sun May 23 09:27:14 2010 (r208439) @@ -1983,7 +1983,6 @@ cxgb_set_lro(struct port_info *p, int en struct adapter *adp = p->adapter; struct sge_qset *q; - PORT_LOCK_ASSERT_OWNED(p); for (i = 0; i < p->nqsets; i++) { q = &adp->sge.qs[p->first_qset + i]; q->lro.enabled = (enabled != 0); From owner-svn-src-stable-8@FreeBSD.ORG Sun May 23 11:18:05 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AA58C106567D; Sun, 23 May 2010 11:18:05 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 98CD78FC25; Sun, 23 May 2010 11:18:05 +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 o4NBI5LT060102; Sun, 23 May 2010 11:18:05 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NBI5DW060100; Sun, 23 May 2010 11:18:05 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201005231118.o4NBI5DW060100@svn.freebsd.org> From: Marius Strobl Date: Sun, 23 May 2010 11:18:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208444 - stable/8/lib/libmagic X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 11:18:05 -0000 Author: marius Date: Sun May 23 11:18:05 2010 New Revision: 208444 URL: http://svn.freebsd.org/changeset/base/208444 Log: MFC: r208341 Update to a config.h created by a file 5.03 configure script. This causes file.1 to contain the correct version number and SIZEOF_LONG_LONG to be defined as appropriate, which is crucial for 64-bit big-endian ELF files to be handled correctly on big-endian systems. PR: 146387 Reviewed by: delphij Modified: stable/8/lib/libmagic/config.h Directory Properties: stable/8/lib/libmagic/ (props changed) Modified: stable/8/lib/libmagic/config.h ============================================================================== --- stable/8/lib/libmagic/config.h Sun May 23 10:13:11 2010 (r208443) +++ stable/8/lib/libmagic/config.h Sun May 23 11:18:05 2010 (r208444) @@ -1,18 +1,18 @@ /* $FreeBSD$ */ /* config.h. Generated from config.h.in by configure. */ -/* config.h.in. Generated from configure.in by autoheader. */ +/* config.h.in. Generated from configure.ac by autoheader. */ -/* Use the builtin ELF recognition code */ +/* Define in built-in ELF support is used */ #define BUILTIN_ELF 1 -/* Recognize ELF core files */ +/* Define for ELF core file support */ #define ELFCORE 1 /* Define to 1 if you have the `asprintf' function. */ #define HAVE_ASPRINTF 1 -/* */ +/* HAVE_DAYLIGHT */ /* #undef HAVE_DAYLIGHT */ /* Define to 1 if you have the header file. */ @@ -51,9 +51,6 @@ /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 -/* */ -#define HAVE_LONG_LONG 1 - /* Define to 1 if you have the `mbrtowc' function. */ #define HAVE_MBRTOWC 1 @@ -69,9 +66,6 @@ /* Define to 1 if you have the `mmap' function. */ #define HAVE_MMAP 1 -/* Define to 1 if you have the `snprintf' function. */ -#define HAVE_SNPRINTF 1 - /* Define to 1 if you have the header file. */ #define HAVE_STDINT_H 1 @@ -102,13 +96,12 @@ /* Define to 1 if you have the `strtoul' function. */ #define HAVE_STRTOUL 1 +/* HAVE_STRUCT_OPTION */ +#define HAVE_STRUCT_OPTION 1 + /* Define to 1 if `st_rdev' is member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_RDEV 1 -/* Define to 1 if your `struct stat' has `st_rdev'. Deprecated, use - `HAVE_STRUCT_STAT_ST_RDEV' instead. */ -#define HAVE_ST_RDEV 1 - /* Define to 1 if `tm_gmtoff' is member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_GMTOFF 1 @@ -133,7 +126,7 @@ /* Define to 1 if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 -/* */ +/* HAVE_TM_ISDST */ #define HAVE_TM_ISDST 1 /* HAVE_TM_ZONE */ @@ -169,9 +162,6 @@ /* Define to 1 if you have the `vasprintf' function. */ #define HAVE_VASPRINTF 1 -/* Define to 1 if you have the `vsnprintf' function. */ -#define HAVE_VSNPRINTF 1 - /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 @@ -199,34 +189,22 @@ #define PACKAGE "file" /* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "" +#define PACKAGE_BUGREPORT "christos@astron.com" /* Define to the full name of this package. */ -#define PACKAGE_NAME "" +#define PACKAGE_NAME "file" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "" +#define PACKAGE_STRING "file 5.03" /* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "" +#define PACKAGE_TARNAME "file" /* Define to the version of this package. */ -#define PACKAGE_VERSION VERSION - -/* */ -#define SIZEOF_INT64_T 8 +#define PACKAGE_VERSION "5.03" -/* */ -#define SIZEOF_UINT16_T 2 - -/* */ -#define SIZEOF_UINT32_T 4 - -/* */ -#define SIZEOF_UINT64_T 8 - -/* */ -#define SIZEOF_UINT8_T 1 +/* The size of `long long', as computed by sizeof. */ +#define SIZEOF_LONG_LONG 8 /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 @@ -235,7 +213,7 @@ /* #undef TM_IN_SYS_TIME */ /* Version number of package */ -#define VERSION "5.00" +#define VERSION "5.03" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ @@ -247,8 +225,49 @@ #endif #endif +/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ +/* #undef _LARGEFILE_SOURCE */ + /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ + +/* Define to a type if does not define. */ +/* #undef mbstate_t */ + +/* Define to `long int' if does not define. */ +/* #undef off_t */ + +/* Define to `unsigned int' if does not define. */ +/* #undef size_t */ + + +#ifndef HAVE_UINT8_T +typedef unsigned char uint8_t; +#endif +#ifndef HAVE_UINT16_T +typedef unsigned short uint16_t; +#endif +#ifndef HAVE_UINT32_T +typedef unsigned int uint32_t; +#endif +#ifndef HAVE_INT32_T +typedef int int32_t; +#endif +#ifndef HAVE_UINT64_T +#if SIZEOF_LONG_LONG == 8 +typedef unsigned long long uint64_t; +#else +typedef unsigned long uint64_t; +#endif +#endif +#ifndef HAVE_INT64_T +#if SIZEOF_LONG_LONG == 8 +typedef long long int64_t; +#else +typedef long int64_t; +#endif +#endif + From owner-svn-src-stable-8@FreeBSD.ORG Sun May 23 11:20:27 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4FD42106566B; Sun, 23 May 2010 11:20:27 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3E8E88FC19; Sun, 23 May 2010 11:20:27 +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 o4NBKRgq060672; Sun, 23 May 2010 11:20:27 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NBKRYp060669; Sun, 23 May 2010 11:20:27 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201005231120.o4NBKRYp060669@svn.freebsd.org> From: Marius Strobl Date: Sun, 23 May 2010 11:20:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208445 - in stable/8/sys/cam: ata scsi X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 11:20:27 -0000 Author: marius Date: Sun May 23 11:20:26 2010 New Revision: 208445 URL: http://svn.freebsd.org/changeset/base/208445 Log: MFC: r208348 Remove unnecessary headers which were inherited from cam_xpt.c without reason. Reviewed by: mav Modified: stable/8/sys/cam/ata/ata_xpt.c stable/8/sys/cam/scsi/scsi_xpt.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/cam/ata/ata_xpt.c ============================================================================== --- stable/8/sys/cam/ata/ata_xpt.c Sun May 23 11:18:05 2010 (r208444) +++ stable/8/sys/cam/ata/ata_xpt.c Sun May 23 11:20:26 2010 (r208445) @@ -44,10 +44,6 @@ __FBSDID("$FreeBSD$"); #include #include -#ifdef PC98 -#include /* geometry translation */ -#endif - #include #include #include Modified: stable/8/sys/cam/scsi/scsi_xpt.c ============================================================================== --- stable/8/sys/cam/scsi/scsi_xpt.c Sun May 23 11:18:05 2010 (r208444) +++ stable/8/sys/cam/scsi/scsi_xpt.c Sun May 23 11:20:26 2010 (r208445) @@ -47,10 +47,6 @@ __FBSDID("$FreeBSD$"); #include #include -#ifdef PC98 -#include /* geometry translation */ -#endif - #include #include #include From owner-svn-src-stable-8@FreeBSD.ORG Sun May 23 11:26:43 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9D8131065678; Sun, 23 May 2010 11:26:43 +0000 (UTC) (envelope-from bcr@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8C7F78FC14; Sun, 23 May 2010 11:26:43 +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 o4NBQhZY062125; Sun, 23 May 2010 11:26:43 GMT (envelope-from bcr@svn.freebsd.org) Received: (from bcr@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NBQhFA062123; Sun, 23 May 2010 11:26:43 GMT (envelope-from bcr@svn.freebsd.org) Message-Id: <201005231126.o4NBQhFA062123@svn.freebsd.org> From: Benedict Reuschling Date: Sun, 23 May 2010 11:26:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208446 - stable/8/usr.sbin/ntp/doc X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 11:26:43 -0000 Author: bcr (doc committer) Date: Sun May 23 11:26:43 2010 New Revision: 208446 URL: http://svn.freebsd.org/changeset/base/208446 Log: MFC r208273: Add a sentence to the man page explaining that the -d option can only be used when ntpd is compiled with DEBUG support. PR: docs/138206 Submitted by: Oliver Pinter (oliver dot pntr at gmail dot com) Approved by: roberto Modified: stable/8/usr.sbin/ntp/doc/ntpd.8 Modified: stable/8/usr.sbin/ntp/doc/ntpd.8 ============================================================================== --- stable/8/usr.sbin/ntp/doc/ntpd.8 Sun May 23 11:20:26 2010 (r208445) +++ stable/8/usr.sbin/ntp/doc/ntpd.8 Sun May 23 11:26:43 2010 (r208446) @@ -1,7 +1,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 17, 2006 +.Dd May 18, 2010 .Dt NTPD 8 .Os .Sh NAME @@ -108,6 +108,9 @@ Specify the name and path of the configu Specify debugging mode. This option may occur more than once, with each occurrence indicating greater detail of display. +You need to compile +.Nm +with DEBUG in order to use this. .It Fl D Ar level Specify debugging level directly. .It Fl f Ar driftfile From owner-svn-src-stable-8@FreeBSD.ORG Sun May 23 11:29:35 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 11D391065670; Sun, 23 May 2010 11:29:35 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id F3B928FC18; Sun, 23 May 2010 11:29:34 +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 o4NBTYGK062835; Sun, 23 May 2010 11:29:34 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NBTY5V062830; Sun, 23 May 2010 11:29:34 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201005231129.o4NBTY5V062830@svn.freebsd.org> From: Alexander Motin Date: Sun, 23 May 2010 11:29:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208448 - in stable/8/sys/dev: ahci ata mvs siis X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 11:29:35 -0000 Author: mav Date: Sun May 23 11:29:34 2010 New Revision: 208448 URL: http://svn.freebsd.org/changeset/base/208448 Log: MFC r208375, r208393: Improve suspend/resume support. Make sure controller is idle on suspend and reset it on resume. Modified: stable/8/sys/dev/ahci/ahci.c stable/8/sys/dev/ata/ata-all.c stable/8/sys/dev/mvs/mvs.c stable/8/sys/dev/siis/siis.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/dev/ahci/ahci.c ============================================================================== --- stable/8/sys/dev/ahci/ahci.c Sun May 23 11:28:04 2010 (r208447) +++ stable/8/sys/dev/ahci/ahci.c Sun May 23 11:29:34 2010 (r208448) @@ -60,6 +60,8 @@ static void ahci_intr(void *data); static void ahci_intr_one(void *data); static int ahci_suspend(device_t dev); static int ahci_resume(device_t dev); +static int ahci_ch_init(device_t dev); +static int ahci_ch_deinit(device_t dev); static int ahci_ch_suspend(device_t dev); static int ahci_ch_resume(device_t dev); static void ahci_ch_pm(void *arg); @@ -871,7 +873,7 @@ ahci_ch_attach(device_t dev) return (ENXIO); ahci_dmainit(dev); ahci_slotsalloc(dev); - ahci_ch_resume(dev); + ahci_ch_init(dev); mtx_lock(&ch->mtx); rid = ATA_IRQ_RID; if (!(ch->r_irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, @@ -963,7 +965,7 @@ ahci_ch_detach(device_t dev) bus_teardown_intr(dev, ch->r_irq, ch->ih); bus_release_resource(dev, SYS_RES_IRQ, ATA_IRQ_RID, ch->r_irq); - ahci_ch_suspend(dev); + ahci_ch_deinit(dev); ahci_slotsfree(dev); ahci_dmafini(dev); @@ -973,7 +975,32 @@ ahci_ch_detach(device_t dev) } static int -ahci_ch_suspend(device_t dev) +ahci_ch_init(device_t dev) +{ + struct ahci_channel *ch = device_get_softc(dev); + uint64_t work; + + /* Disable port interrupts */ + ATA_OUTL(ch->r_mem, AHCI_P_IE, 0); + /* Setup work areas */ + work = ch->dma.work_bus + AHCI_CL_OFFSET; + ATA_OUTL(ch->r_mem, AHCI_P_CLB, work & 0xffffffff); + ATA_OUTL(ch->r_mem, AHCI_P_CLBU, work >> 32); + work = ch->dma.rfis_bus; + ATA_OUTL(ch->r_mem, AHCI_P_FB, work & 0xffffffff); + ATA_OUTL(ch->r_mem, AHCI_P_FBU, work >> 32); + /* Activate the channel and power/spin up device */ + ATA_OUTL(ch->r_mem, AHCI_P_CMD, + (AHCI_P_CMD_ACTIVE | AHCI_P_CMD_POD | AHCI_P_CMD_SUD | + ((ch->pm_level == 2 || ch->pm_level == 3) ? AHCI_P_CMD_ALPE : 0) | + ((ch->pm_level > 2) ? AHCI_P_CMD_ASP : 0 ))); + ahci_start_fr(dev); + ahci_start(dev, 1); + return (0); +} + +static int +ahci_ch_deinit(device_t dev) { struct ahci_channel *ch = device_get_softc(dev); @@ -994,27 +1021,29 @@ ahci_ch_suspend(device_t dev) } static int +ahci_ch_suspend(device_t dev) +{ + struct ahci_channel *ch = device_get_softc(dev); + + mtx_lock(&ch->mtx); + xpt_freeze_simq(ch->sim, 1); + while (ch->oslots) + msleep(ch, &ch->mtx, PRIBIO, "ahcisusp", hz/100); + ahci_ch_deinit(dev); + mtx_unlock(&ch->mtx); + return (0); +} + +static int ahci_ch_resume(device_t dev) { struct ahci_channel *ch = device_get_softc(dev); - uint64_t work; - /* Disable port interrupts */ - ATA_OUTL(ch->r_mem, AHCI_P_IE, 0); - /* Setup work areas */ - work = ch->dma.work_bus + AHCI_CL_OFFSET; - ATA_OUTL(ch->r_mem, AHCI_P_CLB, work & 0xffffffff); - ATA_OUTL(ch->r_mem, AHCI_P_CLBU, work >> 32); - work = ch->dma.rfis_bus; - ATA_OUTL(ch->r_mem, AHCI_P_FB, work & 0xffffffff); - ATA_OUTL(ch->r_mem, AHCI_P_FBU, work >> 32); - /* Activate the channel and power/spin up device */ - ATA_OUTL(ch->r_mem, AHCI_P_CMD, - (AHCI_P_CMD_ACTIVE | AHCI_P_CMD_POD | AHCI_P_CMD_SUD | - ((ch->pm_level == 2 || ch->pm_level == 3) ? AHCI_P_CMD_ALPE : 0) | - ((ch->pm_level > 2) ? AHCI_P_CMD_ASP : 0 ))); - ahci_start_fr(dev); - ahci_start(dev, 1); + mtx_lock(&ch->mtx); + ahci_ch_init(dev); + ahci_reset(dev); + xpt_release_simq(ch->sim, TRUE); + mtx_unlock(&ch->mtx); return (0); } Modified: stable/8/sys/dev/ata/ata-all.c ============================================================================== --- stable/8/sys/dev/ata/ata-all.c Sun May 23 11:28:04 2010 (r208447) +++ stable/8/sys/dev/ata/ata-all.c Sun May 23 11:29:34 2010 (r208448) @@ -432,7 +432,13 @@ ata_suspend(device_t dev) if (!dev || !(ch = device_get_softc(dev))) return ENXIO; -#ifndef ATA_CAM +#ifdef ATA_CAM + mtx_lock(&ch->state_mtx); + xpt_freeze_simq(ch->sim, 1); + while (ch->state != ATA_IDLE) + msleep(ch, &ch->state_mtx, PRIBIO, "atasusp", hz/100); + mtx_unlock(&ch->state_mtx); +#else /* wait for the channel to be IDLE or detached before suspending */ while (ch->r_irq) { mtx_lock(&ch->state_mtx); @@ -452,16 +458,21 @@ ata_suspend(device_t dev) int ata_resume(device_t dev) { + struct ata_channel *ch; int error; /* check for valid device */ - if (!dev || !device_get_softc(dev)) + if (!dev || !(ch = device_get_softc(dev))) return ENXIO; +#ifdef ATA_CAM + mtx_lock(&ch->state_mtx); + error = ata_reinit(dev); + xpt_release_simq(ch->sim, TRUE); + mtx_unlock(&ch->state_mtx); +#else /* reinit the devices, we dont know what mode/state they are in */ error = ata_reinit(dev); - -#ifndef ATA_CAM /* kick off requests on the queue */ ata_start(dev); #endif Modified: stable/8/sys/dev/mvs/mvs.c ============================================================================== --- stable/8/sys/dev/mvs/mvs.c Sun May 23 11:28:04 2010 (r208447) +++ stable/8/sys/dev/mvs/mvs.c Sun May 23 11:29:34 2010 (r208448) @@ -51,6 +51,8 @@ __FBSDID("$FreeBSD$"); #include /* local prototypes */ +static int mvs_ch_init(device_t dev); +static int mvs_ch_deinit(device_t dev); static int mvs_ch_suspend(device_t dev); static int mvs_ch_resume(device_t dev); static void mvs_dmainit(device_t dev); @@ -133,7 +135,7 @@ mvs_ch_attach(device_t dev) return (ENXIO); mvs_dmainit(dev); mvs_slotsalloc(dev); - mvs_ch_resume(dev); + mvs_ch_init(dev); mtx_lock(&ch->mtx); rid = ATA_IRQ_RID; if (!(ch->r_irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, @@ -215,7 +217,7 @@ mvs_ch_detach(device_t dev) bus_teardown_intr(dev, ch->r_irq, ch->ih); bus_release_resource(dev, SYS_RES_IRQ, ATA_IRQ_RID, ch->r_irq); - mvs_ch_suspend(dev); + mvs_ch_deinit(dev); mvs_slotsfree(dev); mvs_dmafini(dev); @@ -225,19 +227,7 @@ mvs_ch_detach(device_t dev) } static int -mvs_ch_suspend(device_t dev) -{ - struct mvs_channel *ch = device_get_softc(dev); - - /* Stop EDMA */ - mvs_set_edma_mode(dev, MVS_EDMA_OFF); - /* Disable port interrupts. */ - ATA_OUTL(ch->r_mem, EDMA_IEM, 0); - return (0); -} - -static int -mvs_ch_resume(device_t dev) +mvs_ch_init(device_t dev) { struct mvs_channel *ch = device_get_softc(dev); uint32_t reg; @@ -264,6 +254,45 @@ mvs_ch_resume(device_t dev) return (0); } +static int +mvs_ch_deinit(device_t dev) +{ + struct mvs_channel *ch = device_get_softc(dev); + + /* Stop EDMA */ + mvs_set_edma_mode(dev, MVS_EDMA_OFF); + /* Disable port interrupts. */ + ATA_OUTL(ch->r_mem, EDMA_IEM, 0); + return (0); +} + +static int +mvs_ch_suspend(device_t dev) +{ + struct mvs_channel *ch = device_get_softc(dev); + + mtx_lock(&ch->mtx); + xpt_freeze_simq(ch->sim, 1); + while (ch->oslots) + msleep(ch, &ch->mtx, PRIBIO, "mvssusp", hz/100); + mvs_ch_deinit(dev); + mtx_unlock(&ch->mtx); + return (0); +} + +static int +mvs_ch_resume(device_t dev) +{ + struct mvs_channel *ch = device_get_softc(dev); + + mtx_lock(&ch->mtx); + mvs_ch_init(dev); + mvs_reset(dev); + xpt_release_simq(ch->sim, TRUE); + mtx_unlock(&ch->mtx); + return (0); +} + struct mvs_dc_cb_args { bus_addr_t maddr; int error; Modified: stable/8/sys/dev/siis/siis.c ============================================================================== --- stable/8/sys/dev/siis/siis.c Sun May 23 11:28:04 2010 (r208447) +++ stable/8/sys/dev/siis/siis.c Sun May 23 11:29:34 2010 (r208448) @@ -59,6 +59,8 @@ static int siis_setup_interrupt(device_t static void siis_intr(void *data); static int siis_suspend(device_t dev); static int siis_resume(device_t dev); +static int siis_ch_init(device_t dev); +static int siis_ch_deinit(device_t dev); static int siis_ch_suspend(device_t dev); static int siis_ch_resume(device_t dev); static void siis_ch_intr_locked(void *data); @@ -458,7 +460,7 @@ siis_ch_attach(device_t dev) return (ENXIO); siis_dmainit(dev); siis_slotsalloc(dev); - siis_ch_resume(dev); + siis_ch_init(dev); mtx_lock(&ch->mtx); rid = ATA_IRQ_RID; if (!(ch->r_irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, @@ -528,7 +530,7 @@ siis_ch_detach(device_t dev) bus_teardown_intr(dev, ch->r_irq, ch->ih); bus_release_resource(dev, SYS_RES_IRQ, ATA_IRQ_RID, ch->r_irq); - siis_ch_suspend(dev); + siis_ch_deinit(dev); siis_slotsfree(dev); siis_dmafini(dev); @@ -538,7 +540,24 @@ siis_ch_detach(device_t dev) } static int -siis_ch_suspend(device_t dev) +siis_ch_init(device_t dev) +{ + struct siis_channel *ch = device_get_softc(dev); + + /* Get port out of reset state. */ + ATA_OUTL(ch->r_mem, SIIS_P_CTLCLR, SIIS_P_CTL_PORT_RESET); + ATA_OUTL(ch->r_mem, SIIS_P_CTLCLR, SIIS_P_CTL_32BIT); + if (ch->pm_present) + ATA_OUTL(ch->r_mem, SIIS_P_CTLSET, SIIS_P_CTL_PME); + else + ATA_OUTL(ch->r_mem, SIIS_P_CTLCLR, SIIS_P_CTL_PME); + /* Enable port interrupts */ + ATA_OUTL(ch->r_mem, SIIS_P_IESET, SIIS_P_IX_ENABLED); + return (0); +} + +static int +siis_ch_deinit(device_t dev) { struct siis_channel *ch = device_get_softc(dev); @@ -548,19 +567,29 @@ siis_ch_suspend(device_t dev) } static int +siis_ch_suspend(device_t dev) +{ + struct siis_channel *ch = device_get_softc(dev); + + mtx_lock(&ch->mtx); + xpt_freeze_simq(ch->sim, 1); + while (ch->oslots) + msleep(ch, &ch->mtx, PRIBIO, "siissusp", hz/100); + siis_ch_deinit(dev); + mtx_unlock(&ch->mtx); + return (0); +} + +static int siis_ch_resume(device_t dev) { struct siis_channel *ch = device_get_softc(dev); - /* Get port out of reset state. */ - ATA_OUTL(ch->r_mem, SIIS_P_CTLCLR, SIIS_P_CTL_PORT_RESET); - ATA_OUTL(ch->r_mem, SIIS_P_CTLCLR, SIIS_P_CTL_32BIT); - if (ch->pm_present) - ATA_OUTL(ch->r_mem, SIIS_P_CTLSET, SIIS_P_CTL_PME); - else - ATA_OUTL(ch->r_mem, SIIS_P_CTLCLR, SIIS_P_CTL_PME); - /* Enable port interrupts */ - ATA_OUTL(ch->r_mem, SIIS_P_IESET, SIIS_P_IX_ENABLED); + mtx_lock(&ch->mtx); + siis_ch_init(dev); + siis_reset(dev); + xpt_release_simq(ch->sim, TRUE); + mtx_unlock(&ch->mtx); return (0); } From owner-svn-src-stable-8@FreeBSD.ORG Sun May 23 13:25:48 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7C76A1065675; Sun, 23 May 2010 13:25:48 +0000 (UTC) (envelope-from marck@rinet.ru) Received: from woozle.rinet.ru (woozle.rinet.ru [195.54.192.68]) by mx1.freebsd.org (Postfix) with ESMTP id B399B8FC1A; Sun, 23 May 2010 13:25:47 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by woozle.rinet.ru (8.14.4/8.14.4) with ESMTP id o4NDPj9Z059119; Sun, 23 May 2010 17:25:45 +0400 (MSD) (envelope-from marck@rinet.ru) Date: Sun, 23 May 2010 17:25:45 +0400 (MSD) From: Dmitry Morozovsky To: Nathan Whitehorn In-Reply-To: <201005230240.o4N2e4Mv043292@svn.freebsd.org> Message-ID: References: <201005230240.o4N2e4Mv043292@svn.freebsd.org> User-Agent: Alpine 2.00 (BSF 1167 2008-08-23) X-NCC-RegID: ru.rinet X-OpenPGP-Key-ID: 6B691B03 MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.5 (woozle.rinet.ru [0.0.0.0]); Sun, 23 May 2010 17:25:45 +0400 (MSD) Cc: svn-src-stable@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-stable-8@freebsd.org Subject: Re: svn commit: r208431 - in stable/8: sbin/geom/class/part sys/geom/part sys/sys X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 13:25:48 -0000 On Sun, 23 May 2010, Nathan Whitehorn wrote: NW> Author: nwhitehorn NW> Date: Sun May 23 02:40:04 2010 NW> New Revision: 208431 NW> URL: http://svn.freebsd.org/changeset/base/208431 NW> NW> Log: NW> MFC r200557,208173: NW> NW> Teach gpart about bootcode on APM. It seems stable/8 is now broken at building geom_part_apm module: ===> geom/geom_part/geom_part_apm (all) cc -O2 -pipe -fno-strict-aliasing -Werror -D_KERNEL -DKLD_MODULE -nostdinc -DHAVE_KERNEL_OPTION_HEADERS -include /usr/obj/FreeBSD/src.8/sys/GENERIC/opt_global.h -I. -I@ -I@/contrib/altq -finline-limit=8000 --param inline-unit-growth=100 --param large-function-growth=1000 -fno-common -g -fno-omit-frame-pointer -I/usr/obj/FreeBSD/src.8/sys/GENERIC -mcmodel=kernel -mno-red-zone -mfpmath=387 -mno-sse -mno-sse2 -mno-sse3 -mno-mmx -mno-3dnow -msoft-float -fno-asynchronous-unwind-tables -ffreestanding -fstack-protector -std=iso9899:1999 -fstack-protector -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Winline -Wcast-qual -Wundef -Wno-pointer-sign -fformat-extensions -c /FreeBSD/src.8/sys/modules/geom/geom_part/geom_part_apm/../../../../geom/part/g_part_apm.c /FreeBSD/src.8/sys/modules/geom/geom_part/geom_part_apm/../../../../geom/part/g_part_apm.c: In function 'apm_parse_type': /FreeBSD/src.8/sys/modules/geom/geom_part/geom_part_apm/../../../../geom/part/g_part_apm.c:131: error: 'G_PART_ALIAS_APPLE_BOOT' undeclared (first use in this function) /FreeBSD/src.8/sys/modules/geom/geom_part/geom_part_apm/../../../../geom/part/g_part_apm.c:131: error: (Each undeclared identifier is reported only once /FreeBSD/src.8/sys/modules/geom/geom_part/geom_part_apm/../../../../geom/part/g_part_apm.c:131: error: for each function it appears in.) /FreeBSD/src.8/sys/modules/geom/geom_part/geom_part_apm/../../../../geom/part/g_part_apm.c:141: error: 'G_PART_ALIAS_APPLE_UFS' undeclared (first use in this function) /FreeBSD/src.8/sys/modules/geom/geom_part/geom_part_apm/../../../../geom/part/g_part_apm.c: In function 'g_part_apm_type': /FreeBSD/src.8/sys/modules/geom/geom_part/geom_part_apm/../../../../geom/part/g_part_apm.c:453: error: 'G_PART_ALIAS_APPLE_BOOT' undeclared (first use in this function) /FreeBSD/src.8/sys/modules/geom/geom_part/geom_part_apm/../../../../geom/part/g_part_apm.c:457: error: 'G_PART_ALIAS_APPLE_UFS' undeclared (first use in this function) *** Error code 1 NW> NW> Modified: NW> stable/8/sbin/geom/class/part/geom_part.c NW> stable/8/sys/geom/part/g_part_apm.c NW> stable/8/sys/sys/apm.h NW> Directory Properties: NW> stable/8/sbin/geom/ (props changed) NW> stable/8/sbin/geom/class/stripe/ (props changed) NW> stable/8/sys/ (props changed) NW> stable/8/sys/amd64/include/xen/ (props changed) NW> stable/8/sys/cddl/contrib/opensolaris/ (props changed) NW> stable/8/sys/contrib/dev/acpica/ (props changed) NW> stable/8/sys/contrib/pf/ (props changed) NW> stable/8/sys/dev/xen/xenpci/ (props changed) NW> stable/8/sys/geom/sched/ (props changed) NW> NW> Modified: stable/8/sbin/geom/class/part/geom_part.c NW> ============================================================================== NW> --- stable/8/sbin/geom/class/part/geom_part.c Sun May 23 02:32:52 2010 (r208430) NW> +++ stable/8/sbin/geom/class/part/geom_part.c Sun May 23 02:40:04 2010 (r208431) NW> @@ -602,7 +602,7 @@ gpart_bootcode(struct gctl_req *req, uns NW> NW> if (gctl_has_param(req, bootcode_param)) { NW> s = gctl_get_ascii(req, bootcode_param); NW> - bootsize = 64 * 1024; /* Arbitrary limit. */ NW> + bootsize = 800 * 1024; /* Arbitrary limit. */ NW> bootcode = gpart_bootfile_read(s, &bootsize); NW> error = gctl_change_param(req, bootcode_param, bootsize, NW> bootcode); NW> NW> Modified: stable/8/sys/geom/part/g_part_apm.c NW> ============================================================================== NW> --- stable/8/sys/geom/part/g_part_apm.c Sun May 23 02:32:52 2010 (r208430) NW> +++ stable/8/sys/geom/part/g_part_apm.c Sun May 23 02:40:04 2010 (r208431) NW> @@ -128,6 +128,26 @@ apm_parse_type(const char *type, char *b NW> strncpy(buf, type, bufsz); NW> return (0); NW> } NW> + alias = g_part_alias_name(G_PART_ALIAS_APPLE_BOOT); NW> + if (!strcasecmp(type, alias)) { NW> + strcpy(buf, APM_ENT_TYPE_APPLE_BOOT); NW> + return (0); NW> + } NW> + alias = g_part_alias_name(G_PART_ALIAS_APPLE_HFS); NW> + if (!strcasecmp(type, alias)) { NW> + strcpy(buf, APM_ENT_TYPE_APPLE_HFS); NW> + return (0); NW> + } NW> + alias = g_part_alias_name(G_PART_ALIAS_APPLE_UFS); NW> + if (!strcasecmp(type, alias)) { NW> + strcpy(buf, APM_ENT_TYPE_APPLE_UFS); NW> + return (0); NW> + } NW> + alias = g_part_alias_name(G_PART_ALIAS_FREEBSD_BOOT); NW> + if (!strcasecmp(type, alias)) { NW> + strcpy(buf, APM_ENT_TYPE_APPLE_BOOT); NW> + return (0); NW> + } NW> alias = g_part_alias_name(G_PART_ALIAS_FREEBSD); NW> if (!strcasecmp(type, alias)) { NW> strcpy(buf, APM_ENT_TYPE_FREEBSD); NW> @@ -429,6 +449,12 @@ g_part_apm_type(struct g_part_table *bas NW> NW> entry = (struct g_part_apm_entry *)baseentry; NW> type = entry->ent.ent_type; NW> + if (!strcmp(type, APM_ENT_TYPE_APPLE_BOOT)) NW> + return (g_part_alias_name(G_PART_ALIAS_APPLE_BOOT)); NW> + if (!strcmp(type, APM_ENT_TYPE_APPLE_HFS)) NW> + return (g_part_alias_name(G_PART_ALIAS_APPLE_HFS)); NW> + if (!strcmp(type, APM_ENT_TYPE_APPLE_UFS)) NW> + return (g_part_alias_name(G_PART_ALIAS_APPLE_UFS)); NW> if (!strcmp(type, APM_ENT_TYPE_FREEBSD)) NW> return (g_part_alias_name(G_PART_ALIAS_FREEBSD)); NW> if (!strcmp(type, APM_ENT_TYPE_FREEBSD_SWAP)) NW> NW> Modified: stable/8/sys/sys/apm.h NW> ============================================================================== NW> --- stable/8/sys/sys/apm.h Sun May 23 02:32:52 2010 (r208430) NW> +++ stable/8/sys/sys/apm.h Sun May 23 02:40:04 2010 (r208431) NW> @@ -61,6 +61,8 @@ struct apm_ent { NW> #define APM_ENT_TYPE_FREEBSD_VINUM "FreeBSD-Vinum" NW> #define APM_ENT_TYPE_FREEBSD_ZFS "FreeBSD-ZFS" NW> NW> +#define APM_ENT_TYPE_APPLE_BOOT "Apple_Bootstrap" NW> #define APM_ENT_TYPE_APPLE_HFS "Apple_HFS" NW> +#define APM_ENT_TYPE_APPLE_UFS "Apple_UNIX_SVR2" NW> NW> #endif /* _SYS_APM_H_ */ NW> _______________________________________________ NW> svn-src-all@freebsd.org mailing list NW> http://lists.freebsd.org/mailman/listinfo/svn-src-all NW> To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org" NW> -- Sincerely, D.Marck [DM5020, MCK-RIPE, DM3-RIPN] [ FreeBSD committer: marck@FreeBSD.org ] ------------------------------------------------------------------------ *** Dmitry Morozovsky --- D.Marck --- Wild Woozle --- marck@rinet.ru *** ------------------------------------------------------------------------ From owner-svn-src-stable-8@FreeBSD.ORG Sun May 23 13:46:09 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 191DB1065670; Sun, 23 May 2010 13:46:09 +0000 (UTC) (envelope-from marck@rinet.ru) Received: from woozle.rinet.ru (woozle.rinet.ru [195.54.192.68]) by mx1.freebsd.org (Postfix) with ESMTP id 8C3448FC08; Sun, 23 May 2010 13:46:07 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by woozle.rinet.ru (8.14.4/8.14.4) with ESMTP id o4NDk7sn059423; Sun, 23 May 2010 17:46:07 +0400 (MSD) (envelope-from marck@rinet.ru) Date: Sun, 23 May 2010 17:46:07 +0400 (MSD) From: Dmitry Morozovsky To: Nathan Whitehorn In-Reply-To: Message-ID: References: <201005230240.o4N2e4Mv043292@svn.freebsd.org> User-Agent: Alpine 2.00 (BSF 1167 2008-08-23) X-NCC-RegID: ru.rinet X-OpenPGP-Key-ID: 6B691B03 MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.5 (woozle.rinet.ru [0.0.0.0]); Sun, 23 May 2010 17:46:07 +0400 (MSD) Cc: svn-src-stable@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-stable-8@freebsd.org Subject: Re: svn commit: r208431 - in stable/8: sbin/geom/class/part sys/geom/part sys/sys X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 13:46:09 -0000 DM> NW> Author: nwhitehorn DM> NW> Date: Sun May 23 02:40:04 2010 DM> NW> New Revision: 208431 DM> NW> URL: http://svn.freebsd.org/changeset/base/208431 DM> NW> DM> NW> Log: DM> NW> MFC r200557,208173: DM> NW> DM> NW> Teach gpart about bootcode on APM. DM> DM> It seems stable/8 is now broken at building geom_part_apm module: MFCing r200534 should help, I suppose... [snip] -- Sincerely, D.Marck [DM5020, MCK-RIPE, DM3-RIPN] [ FreeBSD committer: marck@FreeBSD.org ] ------------------------------------------------------------------------ *** Dmitry Morozovsky --- D.Marck --- Wild Woozle --- marck@rinet.ru *** ------------------------------------------------------------------------ From owner-svn-src-stable-8@FreeBSD.ORG Sun May 23 15:30:32 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 80D57106566B; Sun, 23 May 2010 15:30:32 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6D9368FC12; Sun, 23 May 2010 15:30:32 +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 o4NFUWo9015892; Sun, 23 May 2010 15:30:32 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NFUWTv015887; Sun, 23 May 2010 15:30:32 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201005231530.o4NFUWTv015887@svn.freebsd.org> From: Nathan Whitehorn Date: Sun, 23 May 2010 15:30:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208450 - in stable/8/sys: geom/part sys X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 15:30:32 -0000 Author: nwhitehorn Date: Sun May 23 15:30:32 2010 New Revision: 208450 URL: http://svn.freebsd.org/changeset/base/208450 Log: MFC r200534,200535: Simplify partition type parsing by using a data-oriented model. While there add more Apple and Linux partition types. This unbreaks the build after r208341. Reported by: many Pointy hat to: me Modified: stable/8/sys/geom/part/g_part.c stable/8/sys/geom/part/g_part.h stable/8/sys/geom/part/g_part_gpt.c stable/8/sys/sys/gpt.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/geom/part/g_part.c ============================================================================== --- stable/8/sys/geom/part/g_part.c Sun May 23 14:11:27 2010 (r208449) +++ stable/8/sys/geom/part/g_part.c Sun May 23 15:30:32 2010 (r208450) @@ -69,7 +69,13 @@ struct g_part_alias_list { const char *lexeme; enum g_part_alias alias; } g_part_alias_list[G_PART_ALIAS_COUNT] = { + { "apple-boot", G_PART_ALIAS_APPLE_BOOT }, { "apple-hfs", G_PART_ALIAS_APPLE_HFS }, + { "apple-label", G_PART_ALIAS_APPLE_LABEL }, + { "apple-raid", G_PART_ALIAS_APPLE_RAID }, + { "apple-raid-offline", G_PART_ALIAS_APPLE_RAID_OFFLINE }, + { "apple-tv-recovery", G_PART_ALIAS_APPLE_TV_RECOVERY }, + { "apple-ufs", G_PART_ALIAS_APPLE_UFS }, { "efi", G_PART_ALIAS_EFI }, { "freebsd", G_PART_ALIAS_FREEBSD }, { "freebsd-boot", G_PART_ALIAS_FREEBSD_BOOT }, @@ -77,6 +83,10 @@ struct g_part_alias_list { { "freebsd-ufs", G_PART_ALIAS_FREEBSD_UFS }, { "freebsd-vinum", G_PART_ALIAS_FREEBSD_VINUM }, { "freebsd-zfs", G_PART_ALIAS_FREEBSD_ZFS }, + { "linux-data", G_PART_ALIAS_LINUX_DATA }, + { "linux-lvm", G_PART_ALIAS_LINUX_LVM }, + { "linux-raid", G_PART_ALIAS_LINUX_RAID }, + { "linux-swap", G_PART_ALIAS_LINUX_SWAP }, { "mbr", G_PART_ALIAS_MBR } }; Modified: stable/8/sys/geom/part/g_part.h ============================================================================== --- stable/8/sys/geom/part/g_part.h Sun May 23 14:11:27 2010 (r208449) +++ stable/8/sys/geom/part/g_part.h Sun May 23 15:30:32 2010 (r208450) @@ -36,7 +36,13 @@ #define G_PART_PROBE_PRI_HIGH 0 enum g_part_alias { - G_PART_ALIAS_APPLE_HFS, /* An HFS file system entry. */ + G_PART_ALIAS_APPLE_BOOT, /* An Apple boot partition entry. */ + G_PART_ALIAS_APPLE_HFS, /* An HFS+ file system entry. */ + G_PART_ALIAS_APPLE_LABEL, /* An Apple label partition entry. */ + G_PART_ALIAS_APPLE_RAID, /* An Apple RAID partition entry. */ + G_PART_ALIAS_APPLE_RAID_OFFLINE,/* An Apple RAID (offline) part entry.*/ + G_PART_ALIAS_APPLE_TV_RECOVERY, /* An Apple TV recovery part entry. */ + G_PART_ALIAS_APPLE_UFS, /* An Apple UFS partition entry. */ G_PART_ALIAS_EFI, /* A EFI system partition entry. */ G_PART_ALIAS_FREEBSD, /* A BSD labeled partition entry. */ G_PART_ALIAS_FREEBSD_BOOT, /* A FreeBSD boot partition entry. */ @@ -45,6 +51,10 @@ enum g_part_alias { G_PART_ALIAS_FREEBSD_VINUM, /* A Vinum partition entry. */ G_PART_ALIAS_FREEBSD_ZFS, /* A ZFS file system entry. */ G_PART_ALIAS_MBR, /* A MBR (extended) partition entry. */ + G_PART_ALIAS_LINUX_DATA, /* A Linux data partition entry. */ + G_PART_ALIAS_LINUX_LVM, /* A Linux LVM partition entry. */ + G_PART_ALIAS_LINUX_RAID, /* A Linux RAID partition entry. */ + G_PART_ALIAS_LINUX_SWAP, /* A Linux swap partition entry. */ /* Keep the following last */ G_PART_ALIAS_COUNT }; Modified: stable/8/sys/geom/part/g_part_gpt.c ============================================================================== --- stable/8/sys/geom/part/g_part_gpt.c Sun May 23 14:11:27 2010 (r208449) +++ stable/8/sys/geom/part/g_part_gpt.c Sun May 23 15:30:32 2010 (r208450) @@ -131,7 +131,13 @@ static struct g_part_scheme g_part_gpt_s }; G_PART_SCHEME_DECLARE(g_part_gpt); +static struct uuid gpt_uuid_apple_boot = GPT_ENT_TYPE_APPLE_BOOT; static struct uuid gpt_uuid_apple_hfs = GPT_ENT_TYPE_APPLE_HFS; +static struct uuid gpt_uuid_apple_label = GPT_ENT_TYPE_APPLE_LABEL; +static struct uuid gpt_uuid_apple_raid = GPT_ENT_TYPE_APPLE_RAID; +static struct uuid gpt_uuid_apple_raid_offline = GPT_ENT_TYPE_APPLE_RAID_OFFLINE; +static struct uuid gpt_uuid_apple_tv_recovery = GPT_ENT_TYPE_APPLE_TV_RECOVERY; +static struct uuid gpt_uuid_apple_ufs = GPT_ENT_TYPE_APPLE_UFS; static struct uuid gpt_uuid_efi = GPT_ENT_TYPE_EFI; static struct uuid gpt_uuid_freebsd = GPT_ENT_TYPE_FREEBSD; static struct uuid gpt_uuid_freebsd_boot = GPT_ENT_TYPE_FREEBSD_BOOT; @@ -139,10 +145,39 @@ static struct uuid gpt_uuid_freebsd_swap static struct uuid gpt_uuid_freebsd_ufs = GPT_ENT_TYPE_FREEBSD_UFS; static struct uuid gpt_uuid_freebsd_vinum = GPT_ENT_TYPE_FREEBSD_VINUM; static struct uuid gpt_uuid_freebsd_zfs = GPT_ENT_TYPE_FREEBSD_ZFS; +static struct uuid gpt_uuid_linux_data = GPT_ENT_TYPE_LINUX_DATA; +static struct uuid gpt_uuid_linux_lvm = GPT_ENT_TYPE_LINUX_LVM; +static struct uuid gpt_uuid_linux_raid = GPT_ENT_TYPE_LINUX_RAID; static struct uuid gpt_uuid_linux_swap = GPT_ENT_TYPE_LINUX_SWAP; static struct uuid gpt_uuid_mbr = GPT_ENT_TYPE_MBR; static struct uuid gpt_uuid_unused = GPT_ENT_TYPE_UNUSED; +static struct g_part_uuid_alias { + struct uuid *uuid; + int alias; +} gpt_uuid_alias_match[] = { + { &gpt_uuid_apple_boot, G_PART_ALIAS_APPLE_BOOT }, + { &gpt_uuid_apple_hfs, G_PART_ALIAS_APPLE_HFS }, + { &gpt_uuid_apple_label, G_PART_ALIAS_APPLE_LABEL }, + { &gpt_uuid_apple_raid, G_PART_ALIAS_APPLE_RAID }, + { &gpt_uuid_apple_raid_offline, G_PART_ALIAS_APPLE_RAID_OFFLINE }, + { &gpt_uuid_apple_tv_recovery, G_PART_ALIAS_APPLE_TV_RECOVERY }, + { &gpt_uuid_apple_ufs, G_PART_ALIAS_APPLE_UFS }, + { &gpt_uuid_efi, G_PART_ALIAS_EFI }, + { &gpt_uuid_freebsd, G_PART_ALIAS_FREEBSD }, + { &gpt_uuid_freebsd_boot, G_PART_ALIAS_FREEBSD_BOOT }, + { &gpt_uuid_freebsd_swap, G_PART_ALIAS_FREEBSD_SWAP }, + { &gpt_uuid_freebsd_ufs, G_PART_ALIAS_FREEBSD_UFS }, + { &gpt_uuid_freebsd_vinum, G_PART_ALIAS_FREEBSD_VINUM }, + { &gpt_uuid_freebsd_zfs, G_PART_ALIAS_FREEBSD_ZFS }, + { &gpt_uuid_linux_data, G_PART_ALIAS_LINUX_DATA }, + { &gpt_uuid_linux_lvm, G_PART_ALIAS_LINUX_LVM }, + { &gpt_uuid_linux_raid, G_PART_ALIAS_LINUX_RAID }, + { &gpt_uuid_linux_swap, G_PART_ALIAS_LINUX_SWAP }, + { &gpt_uuid_mbr, G_PART_ALIAS_MBR }, + { NULL, 0 } +}; + static struct gpt_hdr * gpt_read_hdr(struct g_part_gpt_table *table, struct g_consumer *cp, enum gpt_elt elt) @@ -305,6 +340,7 @@ gpt_parse_type(const char *type, struct struct uuid tmp; const char *alias; int error; + struct g_part_uuid_alias *uap; if (type[0] == '!') { error = parse_uuid(type + 1, &tmp); @@ -315,50 +351,12 @@ gpt_parse_type(const char *type, struct *uuid = tmp; return (0); } - alias = g_part_alias_name(G_PART_ALIAS_EFI); - if (!strcasecmp(type, alias)) { - *uuid = gpt_uuid_efi; - return (0); - } - alias = g_part_alias_name(G_PART_ALIAS_FREEBSD); - if (!strcasecmp(type, alias)) { - *uuid = gpt_uuid_freebsd; - return (0); - } - alias = g_part_alias_name(G_PART_ALIAS_FREEBSD_BOOT); - if (!strcasecmp(type, alias)) { - *uuid = gpt_uuid_freebsd_boot; - return (0); - } - alias = g_part_alias_name(G_PART_ALIAS_FREEBSD_SWAP); - if (!strcasecmp(type, alias)) { - *uuid = gpt_uuid_freebsd_swap; - return (0); - } - alias = g_part_alias_name(G_PART_ALIAS_FREEBSD_UFS); - if (!strcasecmp(type, alias)) { - *uuid = gpt_uuid_freebsd_ufs; - return (0); - } - alias = g_part_alias_name(G_PART_ALIAS_FREEBSD_VINUM); - if (!strcasecmp(type, alias)) { - *uuid = gpt_uuid_freebsd_vinum; - return (0); - } - alias = g_part_alias_name(G_PART_ALIAS_FREEBSD_ZFS); - if (!strcasecmp(type, alias)) { - *uuid = gpt_uuid_freebsd_zfs; - return (0); - } - alias = g_part_alias_name(G_PART_ALIAS_MBR); - if (!strcasecmp(type, alias)) { - *uuid = gpt_uuid_mbr; - return (0); - } - alias = g_part_alias_name(G_PART_ALIAS_APPLE_HFS); - if (!strcasecmp(type, alias)) { - *uuid = gpt_uuid_apple_hfs; - return (0); + for (uap = &gpt_uuid_alias_match[0]; uap->uuid; uap++) { + alias = g_part_alias_name(uap->alias); + if (!strcasecmp(type, alias)) { + uuid = uap->uuid; + return (0); + } } return (EINVAL); } @@ -717,29 +715,16 @@ g_part_gpt_type(struct g_part_table *bas { struct g_part_gpt_entry *entry; struct uuid *type; + struct g_part_uuid_alias *uap; entry = (struct g_part_gpt_entry *)baseentry; type = &entry->ent.ent_type; - if (EQUUID(type, &gpt_uuid_efi)) - return (g_part_alias_name(G_PART_ALIAS_EFI)); - if (EQUUID(type, &gpt_uuid_freebsd)) - return (g_part_alias_name(G_PART_ALIAS_FREEBSD)); - if (EQUUID(type, &gpt_uuid_freebsd_boot)) - return (g_part_alias_name(G_PART_ALIAS_FREEBSD_BOOT)); - if (EQUUID(type, &gpt_uuid_freebsd_swap)) - return (g_part_alias_name(G_PART_ALIAS_FREEBSD_SWAP)); - if (EQUUID(type, &gpt_uuid_freebsd_ufs)) - return (g_part_alias_name(G_PART_ALIAS_FREEBSD_UFS)); - if (EQUUID(type, &gpt_uuid_freebsd_vinum)) - return (g_part_alias_name(G_PART_ALIAS_FREEBSD_VINUM)); - if (EQUUID(type, &gpt_uuid_freebsd_zfs)) - return (g_part_alias_name(G_PART_ALIAS_FREEBSD_ZFS)); - if (EQUUID(type, &gpt_uuid_mbr)) - return (g_part_alias_name(G_PART_ALIAS_MBR)); - if (EQUUID(type, &gpt_uuid_apple_hfs)) - return (g_part_alias_name(G_PART_ALIAS_APPLE_HFS)); + for (uap = &gpt_uuid_alias_match[0]; uap->uuid; uap++) + if (EQUUID(type, uap->uuid)) + return (g_part_alias_name(uap->alias)); buf[0] = '!'; snprintf_uuid(buf + 1, bufsz - 1, type); + return (buf); } Modified: stable/8/sys/sys/gpt.h ============================================================================== --- stable/8/sys/sys/gpt.h Sun May 23 14:11:27 2010 (r208449) +++ stable/8/sys/sys/gpt.h Sun May 23 15:30:32 2010 (r208450) @@ -117,6 +117,8 @@ struct gpt_ent { #define GPT_ENT_TYPE_LINUX_LVM \ {0xe6d6d379,0xf507,0x44c2,0xa2,0x3c,{0x23,0x8f,0x2a,0x3d,0xf9,0x28}} +#define GPT_ENT_TYPE_APPLE_BOOT \ + {0x426F6F74,0x0000,0x11aa,0xaa,0x11,{0x00,0x30,0x65,0x43,0xec,0xac}} #define GPT_ENT_TYPE_APPLE_HFS \ {0x48465300,0x0000,0x11aa,0xaa,0x11,{0x00,0x30,0x65,0x43,0xec,0xac}} #define GPT_ENT_TYPE_APPLE_UFS \ @@ -127,6 +129,10 @@ struct gpt_ent { {0x52414944,0x0000,0x11aa,0xaa,0x22,{0x00,0x30,0x65,0x43,0xec,0xac}} #define GPT_ENT_TYPE_APPLE_RAID_OFFLINE \ {0x52414944,0x5f4f,0x11aa,0xaa,0x22,{0x00,0x30,0x65,0x43,0xec,0xac}} +#define GPT_ENT_TYPE_APPLE_LABEL \ + {0x4C616265,0x6c00,0x11aa,0xaa,0x11,{0x00,0x30,0x65,0x43,0xec,0xac}} +#define GPT_ENT_TYPE_APPLE_TV_RECOVERY \ + {0x5265636f,0x7665,0x11AA,0xaa,0x11,{0x00,0x30,0x65,0x43,0xec,0xac}} #define GPT_ENT_TYPE_NETBSD_FFS \ {0x49f48d5a,0xb10e,0x11dc,0xb9,0x9b,{0x00,0x19,0xd1,0x87,0x96,0x48}} From owner-svn-src-stable-8@FreeBSD.ORG Sun May 23 16:16:33 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D0E12106566B; Sun, 23 May 2010 16:16:33 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BCA3F8FC16; Sun, 23 May 2010 16:16:33 +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 o4NGGX0k026047; Sun, 23 May 2010 16:16:33 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NGGXvc026040; Sun, 23 May 2010 16:16:33 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201005231616.o4NGGXvc026040@svn.freebsd.org> From: Marius Strobl Date: Sun, 23 May 2010 16:16:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208451 - in stable/8/sys: cam/ata conf dev/ata pc98/include pc98/pc98 sparc64/include sparc64/sparc64 X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 16:16:33 -0000 Author: marius Date: Sun May 23 16:16:33 2010 New Revision: 208451 URL: http://svn.freebsd.org/changeset/base/208451 Log: MFC: r208349 Change ad_firmware_geom_adjust() to operate on a struct disk * only and hook it up to ada(4) also. While at it, rename *ad_firmware_geom_adjust() to *ata_disk_firmware_geom_adjust() etc now that these are no longer limited to ad(4). This also allows to maintain a compatibility shim for pc98_ad_firmware_geom_adjust() for the tier-1 PC98 in stable/8. Reviewed by: mav (r208349) Modified: stable/8/sys/cam/ata/ata_da.c stable/8/sys/conf/files.sparc64 stable/8/sys/dev/ata/ata-disk.c stable/8/sys/pc98/include/md_var.h stable/8/sys/pc98/pc98/pc98_machdep.c stable/8/sys/sparc64/include/md_var.h stable/8/sys/sparc64/sparc64/ata_machdep.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/cam/ata/ata_da.c ============================================================================== --- stable/8/sys/cam/ata/ata_da.c Sun May 23 15:30:32 2010 (r208450) +++ stable/8/sys/cam/ata/ata_da.c Sun May 23 16:16:33 2010 (r208451) @@ -58,6 +58,8 @@ __FBSDID("$FreeBSD$"); #include +#include /* geometry translation */ + #ifdef _KERNEL #define ATA_MAX_28BIT_LBA 268435455UL @@ -178,6 +180,13 @@ static void adashutdown(void *arg, int #define ADA_DEFAULT_SEND_ORDERED 1 #endif +/* + * Most platforms map firmware geometry to actual, but some don't. If + * not overridden, default to nothing. + */ +#ifndef ata_disk_firmware_geom_adjust +#define ata_disk_firmware_geom_adjust(disk) +#endif static int ada_retry_count = ADA_DEFAULT_RETRY; static int ada_default_timeout = ADA_DEFAULT_TIMEOUT; @@ -737,9 +746,9 @@ adaregister(struct cam_periph *periph, v ata_logical_sector_offset(&cgd->ident_data)) % softc->disk->d_stripesize; } - /* XXX: these are not actually "firmware" values, so they may be wrong */ softc->disk->d_fwsectors = softc->params.secs_per_track; softc->disk->d_fwheads = softc->params.heads; + ata_disk_firmware_geom_adjust(softc->disk); disk_create(softc->disk, DISK_VERSION); mtx_lock(periph->sim->mtx); Modified: stable/8/sys/conf/files.sparc64 ============================================================================== --- stable/8/sys/conf/files.sparc64 Sun May 23 15:30:32 2010 (r208450) +++ stable/8/sys/conf/files.sparc64 Sun May 23 16:16:33 2010 (r208451) @@ -84,7 +84,7 @@ sparc64/pci/schizo.c optional pci sparc64/sbus/dma_sbus.c optional sbus sparc64/sbus/sbus.c optional sbus sparc64/sbus/lsi64854.c optional sbus -sparc64/sparc64/ata_machdep.c optional atadisk +sparc64/sparc64/ata_machdep.c optional ada | atadisk | da sparc64/sparc64/autoconf.c standard sparc64/sparc64/bus_machdep.c standard sparc64/sparc64/cache.c standard Modified: stable/8/sys/dev/ata/ata-disk.c ============================================================================== --- stable/8/sys/dev/ata/ata-disk.c Sun May 23 15:30:32 2010 (r208450) +++ stable/8/sys/dev/ata/ata-disk.c Sun May 23 16:16:33 2010 (r208451) @@ -67,8 +67,8 @@ static dumper_t ad_dump; * Most platforms map firmware geom to actual, but some don't. If * not overridden, default to nothing. */ -#ifndef ad_firmware_geom_adjust -#define ad_firmware_geom_adjust(dev, disk) +#ifndef ata_disk_firmware_geom_adjust +#define ata_disk_firmware_geom_adjust(disk) #endif /* local vars */ @@ -142,9 +142,9 @@ ad_attach(device_t dev) adp->disk->d_flags |= DISKFLAG_CANDELETE; strlcpy(adp->disk->d_ident, atadev->param.serial, sizeof(adp->disk->d_ident)); + ata_disk_firmware_geom_adjust(adp->disk); disk_create(adp->disk, DISK_VERSION); device_add_child(dev, "subdisk", device_get_unit(dev)); - ad_firmware_geom_adjust(dev, adp->disk); bus_generic_attach(dev); callout_init(&atadev->spindown_timer, 1); Modified: stable/8/sys/pc98/include/md_var.h ============================================================================== --- stable/8/sys/pc98/include/md_var.h Sun May 23 15:30:32 2010 (r208450) +++ stable/8/sys/pc98/include/md_var.h Sun May 23 16:16:33 2010 (r208451) @@ -41,13 +41,14 @@ extern int need_post_dma_flush; /* * The ad driver maps the IDE disk's actual geometry to the firmware's * notion of geometry. However, PC98 machines need to do something - * different sometimes, so override the hook so we can do so. We have to - * have a knowledge that a device_t is a struct device * here to avoid - * including too many things from this file. + * different sometimes, so override the hook so we can do so. */ struct disk; +void pc98_ata_disk_firmware_geom_adjust(struct disk *); +#define ata_disk_firmware_geom_adjust(disk) \ + pc98_ata_disk_firmware_geom_adjust(disk) +/* backwards compatibility shim */ struct device; void pc98_ad_firmware_geom_adjust(struct device *, struct disk *); -#define ad_firmware_geom_adjust(dev, dsk) pc98_ad_firmware_geom_adjust(dev, dsk) #endif /* !_PC98_INCLUDE_MD_VAR_H_ */ Modified: stable/8/sys/pc98/pc98/pc98_machdep.c ============================================================================== --- stable/8/sys/pc98/pc98/pc98_machdep.c Sun May 23 15:30:32 2010 (r208450) +++ stable/8/sys/pc98/pc98/pc98_machdep.c Sun May 23 16:16:33 2010 (r208451) @@ -211,7 +211,7 @@ scsi_da_bios_params(struct ccb_calc_geom /* IDE BIOS compatible mode. */ static void -pc98_ad_geom_adjust_idebios(struct disk *disk) +pc98_ata_disk_geom_adjust_idebios(struct disk *disk) { if (disk->d_mediasize < MEDIASIZE_4_3G) { @@ -236,7 +236,7 @@ pc98_ad_geom_adjust_idebios(struct disk /* SCSI BIOS compatible mode. */ static void -pc98_ad_geom_adjust_scsibios(struct disk *disk) +pc98_ata_disk_geom_adjust_scsibios(struct disk *disk) { if (disk->d_mediasize < MEDIASIZE_8G) { @@ -261,13 +261,13 @@ pc98_ad_geom_adjust_scsibios(struct disk /* Compatible with the revision 1.28. */ static void -pc98_ad_geom_adjust_cyl16bit(struct disk *disk) +pc98_ata_disk_geom_adjust_cyl16bit(struct disk *disk) { off_t totsec = disk->d_mediasize / disk->d_sectorsize; off_t cyl = totsec / disk->d_fwsectors / disk->d_fwheads; - + /* - * It is impossible to have more than 65535 cylendars, so if + * It is impossible to have more than 65535 cylinders, so if * we have more then try to adjust. This is lame, but it is * only POC. */ @@ -289,7 +289,7 @@ pc98_ad_geom_adjust_cyl16bit(struct disk } void -pc98_ad_firmware_geom_adjust(device_t dev, struct disk *disk) +pc98_ata_disk_firmware_geom_adjust(struct disk *disk) { u_int oldsectors, oldheads; @@ -298,13 +298,13 @@ pc98_ad_firmware_geom_adjust(device_t de switch (ad_geom_method) { case AD_GEOM_ADJUST_COMPATIDE: - pc98_ad_geom_adjust_idebios(disk); + pc98_ata_disk_geom_adjust_idebios(disk); break; case AD_GEOM_ADJUST_COMPATSCSI: - pc98_ad_geom_adjust_scsibios(disk); + pc98_ata_disk_geom_adjust_scsibios(disk); break; case AD_GEOM_ADJUST_COMPATCYL16: - pc98_ad_geom_adjust_cyl16bit(disk); + pc98_ata_disk_geom_adjust_cyl16bit(disk); break; default: /* Do nothing. */ @@ -313,9 +313,16 @@ pc98_ad_firmware_geom_adjust(device_t de if (bootverbose && (oldsectors != disk->d_fwsectors || oldheads != disk->d_fwheads)) - device_printf(dev, - "geometry adjusted from [%dH/%dS] to [%dH/%dS]\n", + printf( + "%s%d: geometry adjusted from [%dH/%dS] to [%dH/%dS]\n", + disk->d_name, disk->d_unit, oldheads, oldsectors, disk->d_fwheads, disk->d_fwsectors); +} + +void +pc98_ad_firmware_geom_adjust(device_t dev __unused, struct disk *disk) +{ + pc98_ata_disk_firmware_geom_adjust(disk); } Modified: stable/8/sys/sparc64/include/md_var.h ============================================================================== --- stable/8/sys/sparc64/include/md_var.h Sun May 23 15:30:32 2010 (r208450) +++ stable/8/sys/sparc64/include/md_var.h Sun May 23 16:16:33 2010 (r208451) @@ -66,13 +66,10 @@ extern cpu_block_zero_t *cpu_block_zero; * Given that the Sun disk label only uses 16-bit fields for cylinders, * heads and sectors we might need to adjust the geometry of large IDE * disks. - * We have to have a knowledge that a device_t is a struct device * here - * to avoid including too many things from this file. */ struct disk; -struct device; -void sparc64_ad_firmware_geom_adjust(struct device *dev, struct disk *disk); -#define ad_firmware_geom_adjust(dev, dsk) \ - sparc64_ad_firmware_geom_adjust(dev, dsk) +void sparc64_ata_disk_firmware_geom_adjust(struct disk *disk); +#define ata_disk_firmware_geom_adjust(disk) \ + sparc64_ata_disk_firmware_geom_adjust(disk) #endif /* !_MACHINE_MD_VAR_H_ */ Modified: stable/8/sys/sparc64/sparc64/ata_machdep.c ============================================================================== --- stable/8/sys/sparc64/sparc64/ata_machdep.c Sun May 23 15:30:32 2010 (r208450) +++ stable/8/sys/sparc64/sparc64/ata_machdep.c Sun May 23 16:16:33 2010 (r208451) @@ -32,7 +32,7 @@ __FBSDID("$FreeBSD$"); #include void -sparc64_ad_firmware_geom_adjust(device_t dev, struct disk *disk) +sparc64_ata_disk_firmware_geom_adjust(struct disk *disk) { /* From owner-svn-src-stable-8@FreeBSD.ORG Sun May 23 20:10:11 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C5E0A106567C; Sun, 23 May 2010 20:10:11 +0000 (UTC) (envelope-from brueffer@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B4E778FC0A; Sun, 23 May 2010 20:10:11 +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 o4NKABRh077721; Sun, 23 May 2010 20:10:11 GMT (envelope-from brueffer@svn.freebsd.org) Received: (from brueffer@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NKABto077719; Sun, 23 May 2010 20:10:11 GMT (envelope-from brueffer@svn.freebsd.org) Message-Id: <201005232010.o4NKABto077719@svn.freebsd.org> From: Christian Brueffer Date: Sun, 23 May 2010 20:10:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208463 - stable/8/share/man/man4 X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 20:10:11 -0000 Author: brueffer Date: Sun May 23 20:10:11 2010 New Revision: 208463 URL: http://svn.freebsd.org/changeset/base/208463 Log: MFC: r208053 Mention LSI Logic FC949E. Modified: stable/8/share/man/man4/mpt.4 Directory Properties: stable/8/share/man/man4/ (props changed) Modified: stable/8/share/man/man4/mpt.4 ============================================================================== --- stable/8/share/man/man4/mpt.4 Sun May 23 20:08:41 2010 (r208462) +++ stable/8/share/man/man4/mpt.4 Sun May 23 20:10:11 2010 (r208463) @@ -35,7 +35,7 @@ .\" .\" $FreeBSD$ .\" -.Dd August 15, 2009 +.Dd May 13, 2010 .Dt MPT 4 .Os .Sh NAME @@ -105,6 +105,7 @@ LSI Logic FC949X (Dual 4Gb/s .Tn Fibre Channel ) .It +LSI Logic FC949E, LSI Logic FC949ES (Dual 4Gb/s .Tn Fibre Channel PCI-Express) From owner-svn-src-stable-8@FreeBSD.ORG Sun May 23 20:18:51 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 849611065675; Sun, 23 May 2010 20:18:51 +0000 (UTC) (envelope-from brueffer@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7375E8FC17; Sun, 23 May 2010 20:18:51 +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 o4NKIpAS079763; Sun, 23 May 2010 20:18:51 GMT (envelope-from brueffer@svn.freebsd.org) Received: (from brueffer@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NKIp0b079761; Sun, 23 May 2010 20:18:51 GMT (envelope-from brueffer@svn.freebsd.org) Message-Id: <201005232018.o4NKIp0b079761@svn.freebsd.org> From: Christian Brueffer Date: Sun, 23 May 2010 20:18:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208465 - stable/8/usr.sbin/mtree X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 20:18:51 -0000 Author: brueffer Date: Sun May 23 20:18:51 2010 New Revision: 208465 URL: http://svn.freebsd.org/changeset/base/208465 Log: MFC: r208056 Wording fixes. Modified: stable/8/usr.sbin/mtree/mtree.8 Directory Properties: stable/8/usr.sbin/mtree/ (props changed) Modified: stable/8/usr.sbin/mtree/mtree.8 ============================================================================== --- stable/8/usr.sbin/mtree/mtree.8 Sun May 23 20:16:18 2010 (r208464) +++ stable/8/usr.sbin/mtree/mtree.8 Sun May 23 20:18:51 2010 (r208465) @@ -88,7 +88,7 @@ Do not complain about files that are in specification. .It Fl i Indent the output 4 spaces each time a directory level is descended when -create a specification with the +creating a specification with the .Fl c option. This does not affect either the /set statements or the comment before each @@ -126,7 +126,7 @@ instead of from the standard input. .Pp If this option is specified twice, the two specifications are compared to each other rather than to the file hierarchy. -The specifications be sorted like output generated using +The specifications will be sorted like output generated using .Fl c . The output format in this case is somewhat remniscent of .Xr comm 1 , From owner-svn-src-stable-8@FreeBSD.ORG Sun May 23 20:23:34 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7DE651065672; Sun, 23 May 2010 20:23:34 +0000 (UTC) (envelope-from brueffer@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6CE7E8FC16; Sun, 23 May 2010 20:23:34 +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 o4NKNY2T080884; Sun, 23 May 2010 20:23:34 GMT (envelope-from brueffer@svn.freebsd.org) Received: (from brueffer@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NKNYIu080882; Sun, 23 May 2010 20:23:34 GMT (envelope-from brueffer@svn.freebsd.org) Message-Id: <201005232023.o4NKNYIu080882@svn.freebsd.org> From: Christian Brueffer Date: Sun, 23 May 2010 20:23:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208467 - stable/8/usr.sbin/cron/crontab X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 20:23:34 -0000 Author: brueffer Date: Sun May 23 20:23:34 2010 New Revision: 208467 URL: http://svn.freebsd.org/changeset/base/208467 Log: MFC: r208054 List /var/cron/tabs in FILES and add descriptions for the other entries. Modified: stable/8/usr.sbin/cron/crontab/crontab.1 Directory Properties: stable/8/usr.sbin/cron/ (props changed) Modified: stable/8/usr.sbin/cron/crontab/crontab.1 ============================================================================== --- stable/8/usr.sbin/cron/crontab/crontab.1 Sun May 23 20:20:04 2010 (r208466) +++ stable/8/usr.sbin/cron/crontab/crontab.1 Sun May 23 20:23:34 2010 (r208467) @@ -17,7 +17,7 @@ .\" .\" $FreeBSD$ .\" -.Dd December 29, 1993 +.Dd May 13, 2010 .Dt CRONTAB 1 .Os .Sh NAME @@ -114,7 +114,11 @@ from the editor, the modified crontab wi .Sh FILES .Bl -tag -width /var/cron/allow -compact .It Pa /var/cron/allow +List of users allowed to use crontab .It Pa /var/cron/deny +List of users prohibited from using crontab +.It Pa /var/cron/tabs +Directory for personal crontab files .El .Sh DIAGNOSTICS A fairly informative usage message appears if you run it with a bad command From owner-svn-src-stable-8@FreeBSD.ORG Sun May 23 20:27:13 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A5A57106566C; Sun, 23 May 2010 20:27:13 +0000 (UTC) (envelope-from brueffer@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 94E718FC0C; Sun, 23 May 2010 20:27:13 +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 o4NKRDUj081839; Sun, 23 May 2010 20:27:13 GMT (envelope-from brueffer@svn.freebsd.org) Received: (from brueffer@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NKRDLx081837; Sun, 23 May 2010 20:27:13 GMT (envelope-from brueffer@svn.freebsd.org) Message-Id: <201005232027.o4NKRDLx081837@svn.freebsd.org> From: Christian Brueffer Date: Sun, 23 May 2010 20:27:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208470 - stable/8/sbin/restore X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 20:27:13 -0000 Author: brueffer Date: Sun May 23 20:27:13 2010 New Revision: 208470 URL: http://svn.freebsd.org/changeset/base/208470 Log: MFC: r207998 Fix grammar in a line of output. Modified: stable/8/sbin/restore/symtab.c Directory Properties: stable/8/sbin/restore/ (props changed) Modified: stable/8/sbin/restore/symtab.c ============================================================================== --- stable/8/sbin/restore/symtab.c Sun May 23 20:24:35 2010 (r208469) +++ stable/8/sbin/restore/symtab.c Sun May 23 20:27:13 2010 (r208470) @@ -443,7 +443,7 @@ dumpsymtable(char *filename, long checkp FILE *fd; struct symtableheader hdr; - vprintf(stdout, "Check pointing the restore\n"); + vprintf(stdout, "Checkpointing the restore\n"); if (Nflag) return; if ((fd = fopen(filename, "w")) == NULL) { From owner-svn-src-stable-8@FreeBSD.ORG Sun May 23 21:15:37 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 689D41065670; Sun, 23 May 2010 21:15:37 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3AE058FC15; Sun, 23 May 2010 21:15:37 +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 o4NLFb4q092571; Sun, 23 May 2010 21:15:37 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NLFbQs092566; Sun, 23 May 2010 21:15:37 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201005232115.o4NLFbQs092566@svn.freebsd.org> From: Doug Barton Date: Sun, 23 May 2010 21:15:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208473 - in stable/8/contrib/bind9: . lib/dns X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 21:15:37 -0000 Author: dougb Date: Sun May 23 21:15:36 2010 New Revision: 208473 URL: http://svn.freebsd.org/changeset/base/208473 Log: Upgrade to 9.6.2-P2, which addresses the following; Named could return SERVFAIL for negative responses from unsigned zones. Modified: stable/8/contrib/bind9/CHANGES stable/8/contrib/bind9/lib/dns/api stable/8/contrib/bind9/lib/dns/validator.c stable/8/contrib/bind9/version Directory Properties: stable/8/contrib/bind9/ (props changed) Modified: stable/8/contrib/bind9/CHANGES ============================================================================== --- stable/8/contrib/bind9/CHANGES Sun May 23 21:02:43 2010 (r208472) +++ stable/8/contrib/bind9/CHANGES Sun May 23 21:15:36 2010 (r208473) @@ -1,3 +1,8 @@ + --- 9.6.2-P2 released --- + +2876. [bug] Named could return SERVFAIL for negative responses + from unsigned zones. [RT #21131] + --- 9.6.2-P1 released --- 2852. [bug] Handle broken DNSSEC trust chains better. [RT #15619] Modified: stable/8/contrib/bind9/lib/dns/api ============================================================================== --- stable/8/contrib/bind9/lib/dns/api Sun May 23 21:02:43 2010 (r208472) +++ stable/8/contrib/bind9/lib/dns/api Sun May 23 21:15:36 2010 (r208473) @@ -1,3 +1,3 @@ LIBINTERFACE = 56 -LIBREVISION = 0 +LIBREVISION = 1 LIBAGE = 1 Modified: stable/8/contrib/bind9/lib/dns/validator.c ============================================================================== --- stable/8/contrib/bind9/lib/dns/validator.c Sun May 23 21:02:43 2010 (r208472) +++ stable/8/contrib/bind9/lib/dns/validator.c Sun May 23 21:15:36 2010 (r208473) @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: validator.c,v 1.164.12.11.8.2 2010/02/25 10:57:12 tbox Exp $ */ +/* $Id: validator.c,v 1.164.12.11.8.3 2010/04/21 04:29:01 marka Exp $ */ #include @@ -2961,7 +2961,7 @@ nsecvalidate(dns_validator_t *val, isc_b } findnsec3proofs(val); - if (val->authcount == val->authfail) + if (val->authfail != 0 && val->authcount == val->authfail) return (DNS_R_BROKENCHAIN); validator_log(val, ISC_LOG_DEBUG(3), "nonexistence proof(s) not found"); Modified: stable/8/contrib/bind9/version ============================================================================== --- stable/8/contrib/bind9/version Sun May 23 21:02:43 2010 (r208472) +++ stable/8/contrib/bind9/version Sun May 23 21:15:36 2010 (r208473) @@ -1,4 +1,4 @@ -# $Id: version,v 1.43.12.8.2.3 2010/03/04 00:08:28 marka Exp $ +# $Id: version,v 1.43.12.8.2.4 2010/05/10 02:07:03 marka Exp $ # # This file must follow /bin/sh rules. It is imported directly via # configure. @@ -7,4 +7,4 @@ MAJORVER=9 MINORVER=6 PATCHVER=2 RELEASETYPE=-P -RELEASEVER=1 +RELEASEVER=2 From owner-svn-src-stable-8@FreeBSD.ORG Sun May 23 21:57:45 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BE7E81065672; Sun, 23 May 2010 21:57:45 +0000 (UTC) (envelope-from alc@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id ADD188FC14; Sun, 23 May 2010 21:57:45 +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 o4NLvjQb001927; Sun, 23 May 2010 21:57:45 GMT (envelope-from alc@svn.freebsd.org) Received: (from alc@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NLvjUA001925; Sun, 23 May 2010 21:57:45 GMT (envelope-from alc@svn.freebsd.org) Message-Id: <201005232157.o4NLvjUA001925@svn.freebsd.org> From: Alan Cox Date: Sun, 23 May 2010 21:57:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208475 - stable/8/sys/vm X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 21:57:45 -0000 Author: alc Date: Sun May 23 21:57:45 2010 New Revision: 208475 URL: http://svn.freebsd.org/changeset/base/208475 Log: MFC r208159 Add a comment about the proper use of vm_object_page_remove(). Modified: stable/8/sys/vm/vm_object.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/vm/vm_object.c ============================================================================== --- stable/8/sys/vm/vm_object.c Sun May 23 21:16:34 2010 (r208474) +++ stable/8/sys/vm/vm_object.c Sun May 23 21:57:45 2010 (r208475) @@ -1882,7 +1882,8 @@ vm_object_collapse(vm_object_t object) * that contain managed pages. There are two exceptions. First, * it may be performed on the kernel and kmem objects. Second, * it may be used by msync(..., MS_INVALIDATE) to invalidate - * device-backed pages. + * device-backed pages. In both of these cases, "clean_only" + * must be FALSE. * * The object must be locked. */ From owner-svn-src-stable-8@FreeBSD.ORG Mon May 24 01:44:30 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7BD2D106564A; Mon, 24 May 2010 01:44:30 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6A5338FC0A; Mon, 24 May 2010 01:44:30 +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 o4O1iUne051460; Mon, 24 May 2010 01:44:30 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4O1iU4q051458; Mon, 24 May 2010 01:44:30 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201005240144.o4O1iU4q051458@svn.freebsd.org> From: Jung-uk Kim Date: Mon, 24 May 2010 01:44:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208477 - stable/8/sys/dev/fb X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 01:44:30 -0000 Author: jkim Date: Mon May 24 01:44:30 2010 New Revision: 208477 URL: http://svn.freebsd.org/changeset/base/208477 Log: MFC: r208276 Remove unnecessary pointer increment. A wrong pointer may be passed to free(9) and it can cause kernel panic when there are multiple graphics controllers in the system. Modified: stable/8/sys/dev/fb/vesa.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/dev/fb/vesa.c ============================================================================== --- stable/8/sys/dev/fb/vesa.c Sun May 23 22:10:20 2010 (r208476) +++ stable/8/sys/dev/fb/vesa.c Mon May 24 01:44:30 2010 (r208477) @@ -240,10 +240,10 @@ vesa_bios_post(void) /* Find the matching PCI video controller. */ dc = devclass_find("vgapci"); if (dc != NULL && devclass_get_devices(dc, &devs, &count) == 0) { - for (dev = NULL, i = 0; dev == NULL && i < count; devs++, i++) - if (device_get_flags(*devs) != 0 && - x86bios_match_device(0xc0000, *devs)) { - dev = *devs; + for (i = 0; i < count; i++) + if (device_get_flags(devs[i]) != 0 && + x86bios_match_device(0xc0000, devs[i])) { + dev = devs[i]; is_pci = 1; break; } From owner-svn-src-stable-8@FreeBSD.ORG Mon May 24 01:46:06 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B685A1065674; Mon, 24 May 2010 01:46:06 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A53678FC19; Mon, 24 May 2010 01:46:06 +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 o4O1k6tV051870; Mon, 24 May 2010 01:46:06 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4O1k6fD051868; Mon, 24 May 2010 01:46:06 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201005240146.o4O1k6fD051868@svn.freebsd.org> From: Jung-uk Kim Date: Mon, 24 May 2010 01:46:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208478 - stable/8/sys/dev/fb X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 01:46:06 -0000 Author: jkim Date: Mon May 24 01:46:06 2010 New Revision: 208478 URL: http://svn.freebsd.org/changeset/base/208478 Log: MFC: r208279 Restore the previous video mode after VESA BIOS POST, just in case. Modified: stable/8/sys/dev/fb/vesa.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/dev/fb/vesa.c ============================================================================== --- stable/8/sys/dev/fb/vesa.c Mon May 24 01:44:30 2010 (r208477) +++ stable/8/sys/dev/fb/vesa.c Mon May 24 01:46:06 2010 (r208478) @@ -1443,6 +1443,7 @@ vesa_load_state(video_adapter_t *adp, vo /* Try BIOS POST to restore a sane state. */ (void)vesa_bios_post(); (void)int10_set_mode(adp->va_initial_bios_mode); + (void)vesa_set_mode(adp, adp->va_mode); return (vesa_bios_save_restore(STATE_LOAD, ((adp_state_t *)p)->regs, vesa_state_buf_size)); From owner-svn-src-stable-8@FreeBSD.ORG Mon May 24 06:07:56 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 949FC106566B; Mon, 24 May 2010 06:07:56 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 805698FC1F; Mon, 24 May 2010 06:07:56 +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 o4O67uW6009597; Mon, 24 May 2010 06:07:56 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4O67uFG009587; Mon, 24 May 2010 06:07:56 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201005240607.o4O67uFG009587@svn.freebsd.org> From: Martin Matuska Date: Mon, 24 May 2010 06:07:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208481 - in stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs: . sys X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 06:07:56 -0000 Author: mm Date: Mon May 24 06:07:55 2010 New Revision: 208481 URL: http://svn.freebsd.org/changeset/base/208481 Log: MFC r208370, r208371, r208372, r208442, r208443: MFC r208370: Fix: vdev_reopen() can lead to failed allocations OpenSolaris onnv-revision: 7980:589f37f25048, Bug ID: 6764914 MFC r208371: Fix stack overflow in zfs send. OpenSolaris onnv-revision: 8012:8ea30813950f, Bug ID: 6765626 MFC r208372: Reorder some already introduced locking variables. OpenSolaris onnv revision: 8214:d7abf7c1f1c1, Bug ID: 6747934 MFC r208442: Fix mutex_exit misorder that can cause a kernel panic. OpenSolaris onnv revision: 8667:5c308a17eb7c, Bug ID: 6795440 MFC r208443: Fix kernel panic when calling spa_tryimport() on a corrupted pool. OpenSolaris onnv revision: 8680:005fe27123ba, Bug ID: 6786321 Approved by: pav, delphij (mentor) Obtained from: OpenSolaris (multiple Bug IDs) Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c Mon May 24 06:01:37 2010 (r208480) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c Mon May 24 06:07:55 2010 (r208481) @@ -134,6 +134,7 @@ static int traverse_visitbp(struct traverse_data *td, const dnode_phys_t *dnp, arc_buf_t *pbuf, blkptr_t *bp, const zbookmark_t *zb) { + zbookmark_t czb; int err = 0; arc_buf_t *buf = NULL; struct prefetch_data *pd = td->td_pfd; @@ -179,8 +180,6 @@ traverse_visitbp(struct traverse_data *t /* recursively visitbp() blocks below this */ cbp = buf->b_data; for (i = 0; i < epb; i++, cbp++) { - zbookmark_t czb; - SET_BOOKMARK(&czb, zb->zb_objset, zb->zb_object, zb->zb_level - 1, zb->zb_blkid * epb + i); @@ -203,8 +202,6 @@ traverse_visitbp(struct traverse_data *t dnp = buf->b_data; for (i = 0; i < epb && err == 0; i++, dnp++) { for (j = 0; j < dnp->dn_nblkptr; j++) { - zbookmark_t czb; - SET_BOOKMARK(&czb, zb->zb_objset, zb->zb_blkid * epb + i, dnp->dn_nlevels - 1, j); @@ -229,8 +226,6 @@ traverse_visitbp(struct traverse_data *t traverse_zil(td, &osp->os_zil_header); for (j = 0; j < osp->os_meta_dnode.dn_nblkptr; j++) { - zbookmark_t czb; - SET_BOOKMARK(&czb, zb->zb_objset, 0, osp->os_meta_dnode.dn_nlevels - 1, j); err = traverse_visitbp(td, &osp->os_meta_dnode, buf, Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c Mon May 24 06:01:37 2010 (r208480) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c Mon May 24 06:07:55 2010 (r208481) @@ -53,10 +53,11 @@ dnode_cons(void *arg, void *unused, int dnode_t *dn = arg; bzero(dn, sizeof (dnode_t)); - cv_init(&dn->dn_notxholds, NULL, CV_DEFAULT, NULL); rw_init(&dn->dn_struct_rwlock, NULL, RW_DEFAULT, NULL); mutex_init(&dn->dn_mtx, NULL, MUTEX_DEFAULT, NULL); mutex_init(&dn->dn_dbufs_mtx, NULL, MUTEX_DEFAULT, NULL); + cv_init(&dn->dn_notxholds, NULL, CV_DEFAULT, NULL); + refcount_create(&dn->dn_holds); refcount_create(&dn->dn_tx_holds); @@ -82,10 +83,10 @@ dnode_dest(void *arg, void *unused) int i; dnode_t *dn = arg; - cv_destroy(&dn->dn_notxholds); rw_destroy(&dn->dn_struct_rwlock); mutex_destroy(&dn->dn_mtx); mutex_destroy(&dn->dn_dbufs_mtx); + cv_destroy(&dn->dn_notxholds); refcount_destroy(&dn->dn_holds); refcount_destroy(&dn->dn_tx_holds); Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c Mon May 24 06:01:37 2010 (r208480) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c Mon May 24 06:07:55 2010 (r208481) @@ -781,7 +781,7 @@ top: /* * Don't allocate from faulted devices. */ - if (!vdev_writeable(vd)) + if (!vdev_allocatable(vd)) goto next; /* * Avoid writing single-copy data to a failing vdev Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Mon May 24 06:01:37 2010 (r208480) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Mon May 24 06:07:55 2010 (r208481) @@ -2082,10 +2082,10 @@ spa_create(const char *pool, nvlist_t *n if (version >= SPA_VERSION_ZPOOL_HISTORY && history_str != NULL) (void) spa_history_log(spa, history_str, LOG_CMD_POOL_CREATE); - mutex_exit(&spa_namespace_lock); - spa->spa_minref = refcount_count(&spa->spa_refcount); + mutex_exit(&spa_namespace_lock); + return (0); } @@ -2478,6 +2478,7 @@ spa_tryimport(nvlist_t *tryconfig) char *poolname; spa_t *spa; uint64_t state; + int error; if (nvlist_lookup_string(tryconfig, ZPOOL_CONFIG_POOL_NAME, &poolname)) return (NULL); @@ -2497,7 +2498,7 @@ spa_tryimport(nvlist_t *tryconfig) * Pass TRUE for mosconfig because the user-supplied config * is actually the one to trust when doing an import. */ - (void) spa_load(spa, tryconfig, SPA_LOAD_TRYIMPORT, B_TRUE); + error = spa_load(spa, tryconfig, SPA_LOAD_TRYIMPORT, B_TRUE); /* * If 'tryconfig' was at least parsable, return the current config. @@ -2516,7 +2517,7 @@ spa_tryimport(nvlist_t *tryconfig) * copy it out so that external consumers can tell which * pools are bootable. */ - if (spa->spa_bootfs) { + if ((!error || error == EEXIST) && spa->spa_bootfs) { char *tmpname = kmem_alloc(MAXPATHLEN, KM_SLEEP); /* Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c Mon May 24 06:01:37 2010 (r208480) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c Mon May 24 06:07:55 2010 (r208481) @@ -23,8 +23,6 @@ * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" - #include #include #include @@ -61,6 +59,7 @@ space_map_create(space_map_t *sm, uint64 bzero(sm, sizeof (*sm)); cv_init(&sm->sm_load_cv, NULL, CV_DEFAULT, NULL); + avl_create(&sm->sm_root, space_map_seg_compare, sizeof (space_seg_t), offsetof(struct space_seg, ss_node)); Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev.h ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev.h Mon May 24 06:01:37 2010 (r208480) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev.h Mon May 24 06:07:55 2010 (r208481) @@ -85,6 +85,7 @@ extern void vdev_clear(spa_t *spa, vdev_ extern boolean_t vdev_is_dead(vdev_t *vd); extern boolean_t vdev_readable(vdev_t *vd); extern boolean_t vdev_writeable(vdev_t *vd); +extern boolean_t vdev_allocatable(vdev_t *vd); extern boolean_t vdev_accessible(vdev_t *vd, zio_t *zio); extern void vdev_cache_init(vdev_t *vd); Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c Mon May 24 06:01:37 2010 (r208480) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c Mon May 24 06:07:55 2010 (r208481) @@ -79,6 +79,7 @@ txg_init(dsl_pool_t *dp, uint64_t txg) rw_init(&tx->tx_suspend, NULL, RW_DEFAULT, NULL); mutex_init(&tx->tx_sync_lock, NULL, MUTEX_DEFAULT, NULL); + cv_init(&tx->tx_sync_more_cv, NULL, CV_DEFAULT, NULL); cv_init(&tx->tx_sync_done_cv, NULL, CV_DEFAULT, NULL); cv_init(&tx->tx_quiesce_more_cv, NULL, CV_DEFAULT, NULL); @@ -99,14 +100,15 @@ txg_fini(dsl_pool_t *dp) ASSERT(tx->tx_threads == 0); - cv_destroy(&tx->tx_exit_cv); - cv_destroy(&tx->tx_quiesce_done_cv); - cv_destroy(&tx->tx_quiesce_more_cv); - cv_destroy(&tx->tx_sync_done_cv); - cv_destroy(&tx->tx_sync_more_cv); rw_destroy(&tx->tx_suspend); mutex_destroy(&tx->tx_sync_lock); + cv_destroy(&tx->tx_sync_more_cv); + cv_destroy(&tx->tx_sync_done_cv); + cv_destroy(&tx->tx_quiesce_more_cv); + cv_destroy(&tx->tx_quiesce_done_cv); + cv_destroy(&tx->tx_exit_cv); + for (c = 0; c < max_ncpus; c++) { int i; Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c Mon May 24 06:01:37 2010 (r208480) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c Mon May 24 06:07:55 2010 (r208481) @@ -1861,6 +1861,19 @@ vdev_writeable(vdev_t *vd) } boolean_t +vdev_allocatable(vdev_t *vd) +{ + /* + * We currently allow allocations from vdevs which maybe in the + * process of reopening (i.e. VDEV_STATE_CLOSED). If the device + * fails to reopen then we'll catch it later when we're holding + * the proper locks. + */ + return (!(vdev_is_dead(vd) && vd->vdev_state != VDEV_STATE_CLOSED) && + !vd->vdev_cant_write); +} + +boolean_t vdev_accessible(vdev_t *vd, zio_t *zio) { ASSERT(zio->io_vd == vd); Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Mon May 24 06:01:37 2010 (r208480) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Mon May 24 06:07:55 2010 (r208481) @@ -2367,9 +2367,10 @@ zfs_ioc_rollback(zfs_cmd_t *zc) } if (zfsvfs != NULL) { - char osname[MAXNAMELEN]; + char *osname; int mode; + osname = kmem_alloc(MAXNAMELEN, KM_SLEEP); error = zfs_suspend_fs(zfsvfs, osname, &mode); if (error == 0) { int resume_err; @@ -2381,6 +2382,7 @@ zfs_ioc_rollback(zfs_cmd_t *zc) } else { dmu_objset_close(os); } + kmem_free(osname, MAXNAMELEN); VFS_RELE(zfsvfs->z_vfs); } else { error = dmu_objset_rollback(os); @@ -2552,10 +2554,11 @@ zfs_ioc_recv(zfs_cmd_t *zc) error = dmu_recv_stream(&drc, fp, &off); if (error == 0 && zfsvfs) { - char osname[MAXNAMELEN]; + char *osname; int mode; /* online recv */ + osname = kmem_alloc(MAXNAMELEN, KM_SLEEP); error = zfs_suspend_fs(zfsvfs, osname, &mode); if (error == 0) { int resume_err; @@ -2566,6 +2569,7 @@ zfs_ioc_recv(zfs_cmd_t *zc) } else { dmu_recv_abort_cleanup(&drc); } + kmem_free(osname, MAXNAMELEN); } else if (error == 0) { error = dmu_recv_end(&drc); } @@ -2616,16 +2620,18 @@ zfs_ioc_send(zfs_cmd_t *zc) return (error); if (zc->zc_value[0] != '\0') { - char buf[MAXPATHLEN]; + char *buf; char *cp; - (void) strncpy(buf, zc->zc_name, sizeof (buf)); + buf = kmem_alloc(MAXPATHLEN, KM_SLEEP); + (void) strncpy(buf, zc->zc_name, MAXPATHLEN); cp = strchr(buf, '@'); if (cp) *(cp+1) = 0; - (void) strlcat(buf, zc->zc_value, sizeof (buf)); + (void) strlcat(buf, zc->zc_value, MAXPATHLEN); error = dmu_objset_open(buf, DMU_OST_ANY, DS_MODE_USER | DS_MODE_READONLY, &fromsnap); + kmem_free(buf, MAXPATHLEN); if (error) { dmu_objset_close(tosnap); return (error); From owner-svn-src-stable-8@FreeBSD.ORG Mon May 24 06:11:34 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 06F1E1065677; Mon, 24 May 2010 06:11:34 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E73758FC19; Mon, 24 May 2010 06:11:33 +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 o4O6BXAc010442; Mon, 24 May 2010 06:11:33 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4O6BXbS010436; Mon, 24 May 2010 06:11:33 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201005240611.o4O6BXbS010436@svn.freebsd.org> From: Martin Matuska Date: Mon, 24 May 2010 06:11:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208482 - in stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs: . sys X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 06:11:34 -0000 Author: mm Date: Mon May 24 06:11:33 2010 New Revision: 208482 URL: http://svn.freebsd.org/changeset/base/208482 Log: MFC r208373: Update L2ARC code and fix several bugs. - improve ARC memory consumption (Bug ID 6488341) - ARC/L2ARC metadata accounting (Bug ID 6748019) - L2ARC turbo warmup (Bud ID 6748023) - kstats for ARC content (Bug ID 6748023) - kstats for evicted bytes from ARC by L2ARC state (Bud ID 6871680) - fix panic on i386 systems (Bug ID 6821260) OpenSolaris onnv revisions: 8582:df9361868dbe, 8628:97dcded6e556, 9215:7c4584f76b47, 9274:a10f8bd993c1, 10357:29060492b29d OpenSolaris Bug IDs: 6748019, 6748023, 6748030, 6488341, 6798268, 6821260, 6790261, 6871680 Approved by: pjd, delphij (mentor) Obtained from: OpenSlaris (multiple bug IDs) Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Mon May 24 06:07:55 2010 (r208481) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Mon May 24 06:11:33 2010 (r208482) @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -152,14 +152,20 @@ typedef enum arc_reclaim_strategy { /* number of seconds before growing cache again */ static int arc_grow_retry = 60; +/* shift of arc_c for calculating both min and max arc_p */ +static int arc_p_min_shift = 4; + +/* log2(fraction of arc to reclaim) */ +static int arc_shrink_shift = 5; + /* * minimum lifespan of a prefetch block in clock ticks * (initialized in arc_init()) */ static int arc_min_prefetch_lifespan; -extern int zfs_prefetch_disable; static int arc_dead; +extern int zfs_prefetch_disable; /* * The arc has filled available memory and has now warmed up. @@ -173,6 +179,9 @@ uint64_t zfs_arc_max; uint64_t zfs_arc_min; uint64_t zfs_arc_meta_limit = 0; int zfs_mdcomp_disable = 0; +int zfs_arc_grow_retry = 0; +int zfs_arc_shrink_shift = 0; +int zfs_arc_p_min_shift = 0; TUNABLE_QUAD("vfs.zfs.arc_max", &zfs_arc_max); TUNABLE_QUAD("vfs.zfs.arc_min", &zfs_arc_min); @@ -277,6 +286,9 @@ typedef struct arc_stats { kstat_named_t arcstat_recycle_miss; kstat_named_t arcstat_mutex_miss; kstat_named_t arcstat_evict_skip; + kstat_named_t arcstat_evict_l2_cached; + kstat_named_t arcstat_evict_l2_eligible; + kstat_named_t arcstat_evict_l2_ineligible; kstat_named_t arcstat_hash_elements; kstat_named_t arcstat_hash_elements_max; kstat_named_t arcstat_hash_collisions; @@ -288,10 +300,14 @@ typedef struct arc_stats { kstat_named_t arcstat_c_max; kstat_named_t arcstat_size; kstat_named_t arcstat_hdr_size; + kstat_named_t arcstat_data_size; + kstat_named_t arcstat_other_size; kstat_named_t arcstat_l2_hits; kstat_named_t arcstat_l2_misses; kstat_named_t arcstat_l2_feeds; kstat_named_t arcstat_l2_rw_clash; + kstat_named_t arcstat_l2_read_bytes; + kstat_named_t arcstat_l2_write_bytes; kstat_named_t arcstat_l2_writes_sent; kstat_named_t arcstat_l2_writes_done; kstat_named_t arcstat_l2_writes_error; @@ -341,6 +357,9 @@ static arc_stats_t arc_stats = { { "recycle_miss", KSTAT_DATA_UINT64 }, { "mutex_miss", KSTAT_DATA_UINT64 }, { "evict_skip", KSTAT_DATA_UINT64 }, + { "evict_l2_cached", KSTAT_DATA_UINT64 }, + { "evict_l2_eligible", KSTAT_DATA_UINT64 }, + { "evict_l2_ineligible", KSTAT_DATA_UINT64 }, { "hash_elements", KSTAT_DATA_UINT64 }, { "hash_elements_max", KSTAT_DATA_UINT64 }, { "hash_collisions", KSTAT_DATA_UINT64 }, @@ -352,10 +371,14 @@ static arc_stats_t arc_stats = { { "c_max", KSTAT_DATA_UINT64 }, { "size", KSTAT_DATA_UINT64 }, { "hdr_size", KSTAT_DATA_UINT64 }, + { "data_size", KSTAT_DATA_UINT64 }, + { "other_size", KSTAT_DATA_UINT64 }, { "l2_hits", KSTAT_DATA_UINT64 }, { "l2_misses", KSTAT_DATA_UINT64 }, { "l2_feeds", KSTAT_DATA_UINT64 }, { "l2_rw_clash", KSTAT_DATA_UINT64 }, + { "l2_read_bytes", KSTAT_DATA_UINT64 }, + { "l2_write_bytes", KSTAT_DATA_UINT64 }, { "l2_writes_sent", KSTAT_DATA_UINT64 }, { "l2_writes_done", KSTAT_DATA_UINT64 }, { "l2_writes_error", KSTAT_DATA_UINT64 }, @@ -519,6 +542,8 @@ static void arc_access(arc_buf_hdr_t *bu static int arc_evict_needed(arc_buf_contents_t type); static void arc_evict_ghost(arc_state_t *state, spa_t *spa, int64_t bytes); +static boolean_t l2arc_write_eligible(spa_t *spa, arc_buf_hdr_t *ab); + #define GHOST_STATE(state) \ ((state) == arc_mru_ghost || (state) == arc_mfu_ghost || \ (state) == arc_l2c_only) @@ -546,6 +571,7 @@ static void arc_evict_ghost(arc_state_t #define HDR_IN_HASH_TABLE(hdr) ((hdr)->b_flags & ARC_IN_HASH_TABLE) #define HDR_IO_IN_PROGRESS(hdr) ((hdr)->b_flags & ARC_IO_IN_PROGRESS) #define HDR_IO_ERROR(hdr) ((hdr)->b_flags & ARC_IO_ERROR) +#define HDR_PREFETCH(hdr) ((hdr)->b_flags & ARC_PREFETCH) #define HDR_FREED_IN_READ(hdr) ((hdr)->b_flags & ARC_FREED_IN_READ) #define HDR_BUF_AVAILABLE(hdr) ((hdr)->b_flags & ARC_BUF_AVAILABLE) #define HDR_FREE_IN_PROGRESS(hdr) ((hdr)->b_flags & ARC_FREE_IN_PROGRESS) @@ -603,10 +629,10 @@ extern kmem_cache_t *zio_data_buf_cache[ * Level 2 ARC */ -#define L2ARC_WRITE_SIZE (64 * 1024 * 1024) /* initial write max */ -#define L2ARC_HEADROOM 128 /* num of writes */ -#define L2ARC_FEED_SECS 1 /* caching interval */ -#define L2ARC_FEED_SECS_SHIFT 1 /* caching interval shift */ +#define L2ARC_WRITE_SIZE (8 * 1024 * 1024) /* initial write max */ +#define L2ARC_HEADROOM 2 /* num of writes */ +#define L2ARC_FEED_SECS 1 /* caching interval secs */ +#define L2ARC_FEED_MIN_MS 200 /* min caching interval ms */ #define l2arc_writes_sent ARCSTAT(arcstat_l2_writes_sent) #define l2arc_writes_done ARCSTAT(arcstat_l2_writes_done) @@ -618,9 +644,10 @@ uint64_t l2arc_write_max = L2ARC_WRITE_S uint64_t l2arc_write_boost = L2ARC_WRITE_SIZE; /* extra write during warmup */ uint64_t l2arc_headroom = L2ARC_HEADROOM; /* number of dev writes */ uint64_t l2arc_feed_secs = L2ARC_FEED_SECS; /* interval seconds */ -uint64_t l2arc_feed_secs_shift = L2ARC_FEED_SECS_SHIFT; /* interval seconds shift */ +uint64_t l2arc_feed_min_ms = L2ARC_FEED_MIN_MS; /* min interval milliseconds */ boolean_t l2arc_noprefetch = B_FALSE; /* don't cache prefetch bufs */ - +boolean_t l2arc_feed_again = B_TRUE; /* turbo warmup */ +boolean_t l2arc_norw = B_TRUE; /* no reads during writes */ SYSCTL_QUAD(_vfs_zfs, OID_AUTO, l2arc_write_max, CTLFLAG_RW, &l2arc_write_max, 0, "max write size"); @@ -630,12 +657,15 @@ SYSCTL_QUAD(_vfs_zfs, OID_AUTO, l2arc_he &l2arc_headroom, 0, "number of dev writes"); SYSCTL_QUAD(_vfs_zfs, OID_AUTO, l2arc_feed_secs, CTLFLAG_RW, &l2arc_feed_secs, 0, "interval seconds"); -SYSCTL_QUAD(_vfs_zfs, OID_AUTO, l2arc_feed_secs_shift, CTLFLAG_RW, - &l2arc_feed_secs_shift, 0, "power of 2 division of feed seconds"); +SYSCTL_QUAD(_vfs_zfs, OID_AUTO, l2arc_feed_min_ms, CTLFLAG_RW, + &l2arc_feed_min_ms, 0, "min interval milliseconds"); SYSCTL_INT(_vfs_zfs, OID_AUTO, l2arc_noprefetch, CTLFLAG_RW, &l2arc_noprefetch, 0, "don't cache prefetch bufs"); - +SYSCTL_INT(_vfs_zfs, OID_AUTO, l2arc_feed_again, CTLFLAG_RW, + &l2arc_feed_again, 0, "turbo warmup"); +SYSCTL_INT(_vfs_zfs, OID_AUTO, l2arc_norw, CTLFLAG_RW, + &l2arc_norw, 0, "no reads during writes"); SYSCTL_QUAD(_vfs_zfs, OID_AUTO, anon_size, CTLFLAG_RD, &ARC_anon.arcs_size, 0, "size of anonymous state"); @@ -692,6 +722,7 @@ typedef struct l2arc_dev { uint64_t l2ad_end; /* last addr on device */ uint64_t l2ad_evict; /* last addr eviction reached */ boolean_t l2ad_first; /* first sweep through */ + boolean_t l2ad_writing; /* currently writing */ list_t *l2ad_buflist; /* buffer list */ list_node_t l2ad_node; /* device list node */ } l2arc_dev_t; @@ -722,7 +753,7 @@ typedef struct l2arc_write_callback { struct l2arc_buf_hdr { /* protected by arc_buf_hdr mutex */ l2arc_dev_t *b_dev; /* L2ARC device */ - daddr_t b_daddr; /* disk address, offset byte */ + uint64_t b_daddr; /* disk address, offset byte */ }; typedef struct l2arc_data_free { @@ -890,8 +921,8 @@ hdr_cons(void *vbuf, void *unused, int k refcount_create(&buf->b_refcnt); cv_init(&buf->b_cv, NULL, CV_DEFAULT, NULL); mutex_init(&buf->b_freeze_lock, NULL, MUTEX_DEFAULT, NULL); + arc_space_consume(sizeof (arc_buf_hdr_t), ARC_SPACE_HDRS); - ARCSTAT_INCR(arcstat_hdr_size, HDR_SIZE); return (0); } @@ -903,6 +934,8 @@ buf_cons(void *vbuf, void *unused, int k bzero(buf, sizeof (arc_buf_t)); rw_init(&buf->b_lock, NULL, RW_DEFAULT, NULL); + arc_space_consume(sizeof (arc_buf_t), ARC_SPACE_HDRS); + return (0); } @@ -919,8 +952,7 @@ hdr_dest(void *vbuf, void *unused) refcount_destroy(&buf->b_refcnt); cv_destroy(&buf->b_cv); mutex_destroy(&buf->b_freeze_lock); - - ARCSTAT_INCR(arcstat_hdr_size, -HDR_SIZE); + arc_space_return(sizeof (arc_buf_hdr_t), ARC_SPACE_HDRS); } /* ARGSUSED */ @@ -930,6 +962,7 @@ buf_dest(void *vbuf, void *unused) arc_buf_t *buf = vbuf; rw_destroy(&buf->b_lock); + arc_space_return(sizeof (arc_buf_t), ARC_SPACE_HDRS); } /* @@ -1245,15 +1278,49 @@ arc_change_state(arc_state_t *new_state, } void -arc_space_consume(uint64_t space) +arc_space_consume(uint64_t space, arc_space_type_t type) { + ASSERT(type >= 0 && type < ARC_SPACE_NUMTYPES); + + switch (type) { + case ARC_SPACE_DATA: + ARCSTAT_INCR(arcstat_data_size, space); + break; + case ARC_SPACE_OTHER: + ARCSTAT_INCR(arcstat_other_size, space); + break; + case ARC_SPACE_HDRS: + ARCSTAT_INCR(arcstat_hdr_size, space); + break; + case ARC_SPACE_L2HDRS: + ARCSTAT_INCR(arcstat_l2_hdr_size, space); + break; + } + atomic_add_64(&arc_meta_used, space); atomic_add_64(&arc_size, space); } void -arc_space_return(uint64_t space) +arc_space_return(uint64_t space, arc_space_type_t type) { + ASSERT(type >= 0 && type < ARC_SPACE_NUMTYPES); + + switch (type) { + case ARC_SPACE_DATA: + ARCSTAT_INCR(arcstat_data_size, -space); + break; + case ARC_SPACE_OTHER: + ARCSTAT_INCR(arcstat_other_size, -space); + break; + case ARC_SPACE_HDRS: + ARCSTAT_INCR(arcstat_hdr_size, -space); + break; + case ARC_SPACE_L2HDRS: + ARCSTAT_INCR(arcstat_l2_hdr_size, -space); + break; + } + ASSERT(arc_meta_used >= space); if (arc_meta_max < arc_meta_used) arc_meta_max = arc_meta_used; @@ -1353,6 +1420,7 @@ arc_buf_add_ref(arc_buf_t *buf, void* ta ASSERT(hdr->b_state == arc_mru || hdr->b_state == arc_mfu); add_reference(hdr, hash_lock, tag); + DTRACE_PROBE1(arc__hit, arc_buf_hdr_t *, hdr); arc_access(hdr, hash_lock); mutex_exit(hash_lock); ARCSTAT_BUMP(arcstat_hits); @@ -1400,11 +1468,12 @@ arc_buf_destroy(arc_buf_t *buf, boolean_ if (type == ARC_BUFC_METADATA) { arc_buf_data_free(buf->b_hdr, zio_buf_free, buf->b_data, size); - arc_space_return(size); + arc_space_return(size, ARC_SPACE_DATA); } else { ASSERT(type == ARC_BUFC_DATA); arc_buf_data_free(buf->b_hdr, zio_data_buf_free, buf->b_data, size); + ARCSTAT_INCR(arcstat_data_size, -size); atomic_add_64(&arc_size, -size); } } @@ -1699,6 +1768,21 @@ evict_start: buf->b_data == stolen, TRUE); } } + + if (ab->b_l2hdr) { + ARCSTAT_INCR(arcstat_evict_l2_cached, + ab->b_size); + } else { + if (l2arc_write_eligible(ab->b_spa, ab)) { + ARCSTAT_INCR(arcstat_evict_l2_eligible, + ab->b_size); + } else { + ARCSTAT_INCR( + arcstat_evict_l2_ineligible, + ab->b_size); + } + } + if (ab->b_datacnt == 0) { arc_change_state(evicted_state, ab, hash_lock); ASSERT(HDR_IN_HASH_TABLE(ab)); @@ -1871,61 +1955,63 @@ evict_start: static void arc_adjust(void) { - int64_t top_sz, mru_over, arc_over, todelete; + int64_t adjustment, delta; - top_sz = arc_anon->arcs_size + arc_mru->arcs_size + arc_meta_used; + /* + * Adjust MRU size + */ + + adjustment = MIN(arc_size - arc_c, + arc_anon->arcs_size + arc_mru->arcs_size + arc_meta_used - arc_p); - if (top_sz > arc_p && arc_mru->arcs_lsize[ARC_BUFC_DATA] > 0) { - int64_t toevict = - MIN(arc_mru->arcs_lsize[ARC_BUFC_DATA], top_sz - arc_p); - (void) arc_evict(arc_mru, NULL, toevict, FALSE, ARC_BUFC_DATA); - top_sz = arc_anon->arcs_size + arc_mru->arcs_size; + if (adjustment > 0 && arc_mru->arcs_lsize[ARC_BUFC_DATA] > 0) { + delta = MIN(arc_mru->arcs_lsize[ARC_BUFC_DATA], adjustment); + (void) arc_evict(arc_mru, NULL, delta, FALSE, ARC_BUFC_DATA); + adjustment -= delta; } - if (top_sz > arc_p && arc_mru->arcs_lsize[ARC_BUFC_METADATA] > 0) { - int64_t toevict = - MIN(arc_mru->arcs_lsize[ARC_BUFC_METADATA], top_sz - arc_p); - (void) arc_evict(arc_mru, NULL, toevict, FALSE, + if (adjustment > 0 && arc_mru->arcs_lsize[ARC_BUFC_METADATA] > 0) { + delta = MIN(arc_mru->arcs_lsize[ARC_BUFC_METADATA], adjustment); + (void) arc_evict(arc_mru, NULL, delta, FALSE, ARC_BUFC_METADATA); - top_sz = arc_anon->arcs_size + arc_mru->arcs_size; } - mru_over = top_sz + arc_mru_ghost->arcs_size - arc_c; + /* + * Adjust MFU size + */ - if (mru_over > 0) { - if (arc_mru_ghost->arcs_size > 0) { - todelete = MIN(arc_mru_ghost->arcs_size, mru_over); - arc_evict_ghost(arc_mru_ghost, NULL, todelete); - } + adjustment = arc_size - arc_c; + + if (adjustment > 0 && arc_mfu->arcs_lsize[ARC_BUFC_DATA] > 0) { + delta = MIN(adjustment, arc_mfu->arcs_lsize[ARC_BUFC_DATA]); + (void) arc_evict(arc_mfu, NULL, delta, FALSE, ARC_BUFC_DATA); + adjustment -= delta; } - if ((arc_over = arc_size - arc_c) > 0) { - int64_t tbl_over; + if (adjustment > 0 && arc_mfu->arcs_lsize[ARC_BUFC_METADATA] > 0) { + int64_t delta = MIN(adjustment, + arc_mfu->arcs_lsize[ARC_BUFC_METADATA]); + (void) arc_evict(arc_mfu, NULL, delta, FALSE, + ARC_BUFC_METADATA); + } - if (arc_mfu->arcs_lsize[ARC_BUFC_DATA] > 0) { - int64_t toevict = - MIN(arc_mfu->arcs_lsize[ARC_BUFC_DATA], arc_over); - (void) arc_evict(arc_mfu, NULL, toevict, FALSE, - ARC_BUFC_DATA); - arc_over = arc_size - arc_c; - } - - if (arc_over > 0 && - arc_mfu->arcs_lsize[ARC_BUFC_METADATA] > 0) { - int64_t toevict = - MIN(arc_mfu->arcs_lsize[ARC_BUFC_METADATA], - arc_over); - (void) arc_evict(arc_mfu, NULL, toevict, FALSE, - ARC_BUFC_METADATA); - } + /* + * Adjust ghost lists + */ - tbl_over = arc_size + arc_mru_ghost->arcs_size + - arc_mfu_ghost->arcs_size - arc_c * 2; + adjustment = arc_mru->arcs_size + arc_mru_ghost->arcs_size - arc_c; - if (tbl_over > 0 && arc_mfu_ghost->arcs_size > 0) { - todelete = MIN(arc_mfu_ghost->arcs_size, tbl_over); - arc_evict_ghost(arc_mfu_ghost, NULL, todelete); - } + if (adjustment > 0 && arc_mru_ghost->arcs_size > 0) { + delta = MIN(arc_mru_ghost->arcs_size, adjustment); + arc_evict_ghost(arc_mru_ghost, NULL, delta); + } + + adjustment = + arc_mru_ghost->arcs_size + arc_mfu_ghost->arcs_size - arc_c; + + if (adjustment > 0 && arc_mfu_ghost->arcs_size > 0) { + delta = MIN(arc_mfu_ghost->arcs_size, adjustment); + arc_evict_ghost(arc_mfu_ghost, NULL, delta); } } @@ -1999,8 +2085,6 @@ arc_flush(spa_t *spa) ASSERT(spa || arc_eviction_list == NULL); } -int arc_shrink_shift = 5; /* log2(fraction of arc to reclaim) */ - void arc_shrink(void) { @@ -2237,6 +2321,7 @@ static void arc_adapt(int bytes, arc_state_t *state) { int mult; + uint64_t arc_p_min = (arc_c >> arc_p_min_shift); if (state == arc_l2c_only) return; @@ -2254,12 +2339,15 @@ arc_adapt(int bytes, arc_state_t *state) mult = ((arc_mru_ghost->arcs_size >= arc_mfu_ghost->arcs_size) ? 1 : (arc_mfu_ghost->arcs_size/arc_mru_ghost->arcs_size)); - arc_p = MIN(arc_c, arc_p + bytes * mult); + arc_p = MIN(arc_c - arc_p_min, arc_p + bytes * mult); } else if (state == arc_mfu_ghost) { + uint64_t delta; + mult = ((arc_mfu_ghost->arcs_size >= arc_mru_ghost->arcs_size) ? 1 : (arc_mru_ghost->arcs_size/arc_mfu_ghost->arcs_size)); - arc_p = MAX(0, (int64_t)arc_p - bytes * mult); + delta = MIN(bytes * mult, arc_p); + arc_p = MAX(arc_p_min, arc_p - delta); } ASSERT((int64_t)arc_p >= 0); @@ -2359,10 +2447,11 @@ arc_get_data_buf(arc_buf_t *buf) if (!arc_evict_needed(type)) { if (type == ARC_BUFC_METADATA) { buf->b_data = zio_buf_alloc(size); - arc_space_consume(size); + arc_space_consume(size, ARC_SPACE_DATA); } else { ASSERT(type == ARC_BUFC_DATA); buf->b_data = zio_data_buf_alloc(size); + ARCSTAT_INCR(arcstat_data_size, size); atomic_add_64(&arc_size, size); } goto out; @@ -2379,21 +2468,22 @@ arc_get_data_buf(arc_buf_t *buf) if (state == arc_mru || state == arc_anon) { uint64_t mru_used = arc_anon->arcs_size + arc_mru->arcs_size; - state = (arc_mfu->arcs_lsize[type] > 0 && + state = (arc_mfu->arcs_lsize[type] >= size && arc_p > mru_used) ? arc_mfu : arc_mru; } else { /* MFU cases */ uint64_t mfu_space = arc_c - arc_p; - state = (arc_mru->arcs_lsize[type] > 0 && + state = (arc_mru->arcs_lsize[type] >= size && mfu_space > arc_mfu->arcs_size) ? arc_mru : arc_mfu; } if ((buf->b_data = arc_evict(state, NULL, size, TRUE, type)) == NULL) { if (type == ARC_BUFC_METADATA) { buf->b_data = zio_buf_alloc(size); - arc_space_consume(size); + arc_space_consume(size, ARC_SPACE_DATA); } else { ASSERT(type == ARC_BUFC_DATA); buf->b_data = zio_data_buf_alloc(size); + ARCSTAT_INCR(arcstat_data_size, size); atomic_add_64(&arc_size, size); } ARCSTAT_BUMP(arcstat_recycle_miss); @@ -2816,7 +2906,8 @@ top: uint64_t size = BP_GET_LSIZE(bp); arc_callback_t *acb; vdev_t *vd = NULL; - daddr_t addr; + uint64_t addr; + boolean_t devw = B_FALSE; if (hdr == NULL) { /* this block is not in the cache */ @@ -2895,6 +2986,7 @@ top: if (HDR_L2CACHE(hdr) && hdr->b_l2hdr != NULL && (vd = hdr->b_l2hdr->b_dev->l2ad_vdev) != NULL) { + devw = hdr->b_l2hdr->b_dev->l2ad_writing; addr = hdr->b_l2hdr->b_daddr; /* * Lock out device removal. @@ -2914,7 +3006,7 @@ top: demand, prefetch, hdr->b_type != ARC_BUFC_METADATA, data, metadata, misses); - if (vd != NULL) { + if (vd != NULL && l2arc_ndev != 0 && !(l2arc_norw && devw)) { /* * Read from the L2ARC if the following are true: * 1. The L2ARC vdev was previously cached. @@ -2922,9 +3014,11 @@ top: * 3. This buffer isn't currently writing to the L2ARC. * 4. The L2ARC entry wasn't evicted, which may * also have invalidated the vdev. + * 5. This isn't prefetch and l2arc_noprefetch is set. */ if (hdr->b_l2hdr != NULL && - !HDR_L2_WRITING(hdr) && !HDR_L2_EVICTED(hdr)) { + !HDR_L2_WRITING(hdr) && !HDR_L2_EVICTED(hdr) && + !(l2arc_noprefetch && HDR_PREFETCH(hdr))) { l2arc_read_callback_t *cb; DTRACE_PROBE1(l2arc__hit, arc_buf_hdr_t *, hdr); @@ -2950,6 +3044,7 @@ top: ZIO_FLAG_DONT_RETRY, B_FALSE); DTRACE_PROBE2(l2arc__read, vdev_t *, vd, zio_t *, rzio); + ARCSTAT_INCR(arcstat_l2_read_bytes, size); if (*arc_flags & ARC_NOWAIT) { zio_nowait(rzio); @@ -2969,6 +3064,14 @@ top: ARCSTAT_BUMP(arcstat_l2_rw_clash); spa_config_exit(spa, SCL_L2ARC, vd); } + } else { + if (vd != NULL) + spa_config_exit(spa, SCL_L2ARC, vd); + if (l2arc_ndev != 0) { + DTRACE_PROBE1(l2arc__miss, + arc_buf_hdr_t *, hdr); + ARCSTAT_BUMP(arcstat_l2_misses); + } } rzio = zio_read(pio, spa, bp, buf->b_data, size, @@ -3125,6 +3228,7 @@ arc_release(arc_buf_t *buf, void *tag) kmutex_t *hash_lock; l2arc_buf_hdr_t *l2hdr; uint64_t buf_size; + boolean_t released = B_FALSE; rw_enter(&buf->b_lock, RW_WRITER); hdr = buf->b_hdr; @@ -3140,12 +3244,12 @@ arc_release(arc_buf_t *buf, void *tag) ASSERT(buf->b_efunc == NULL); arc_buf_thaw(buf); rw_exit(&buf->b_lock); - return; + released = B_TRUE; + } else { + hash_lock = HDR_LOCK(hdr); + mutex_enter(hash_lock); } - hash_lock = HDR_LOCK(hdr); - mutex_enter(hash_lock); - l2hdr = hdr->b_l2hdr; if (l2hdr) { mutex_enter(&l2arc_buflist_mtx); @@ -3153,6 +3257,9 @@ arc_release(arc_buf_t *buf, void *tag) buf_size = hdr->b_size; } + if (released) + goto out; + /* * Do we have more than one buf? */ @@ -3220,6 +3327,7 @@ arc_release(arc_buf_t *buf, void *tag) buf->b_efunc = NULL; buf->b_private = NULL; +out: if (l2hdr) { list_remove(l2hdr->b_dev->l2ad_buflist, hdr); kmem_free(l2hdr, sizeof (l2arc_buf_hdr_t)); @@ -3697,6 +3805,15 @@ arc_init(void) if (arc_c_min < arc_meta_limit / 2 && zfs_arc_min == 0) arc_c_min = arc_meta_limit / 2; + if (zfs_arc_grow_retry > 0) + arc_grow_retry = zfs_arc_grow_retry; + + if (zfs_arc_shrink_shift > 0) + arc_shrink_shift = zfs_arc_shrink_shift; + + if (zfs_arc_p_min_shift > 0) + arc_p_min_shift = zfs_arc_p_min_shift; + /* if kmem_flags are set, lets try to use less memory */ if (kmem_debugging()) arc_c = arc_c / 2; @@ -3987,8 +4104,82 @@ arc_fini(void) * * Tunables may be removed or added as future performance improvements are * integrated, and also may become zpool properties. + * + * There are three key functions that control how the L2ARC warms up: + * + * l2arc_write_eligible() check if a buffer is eligible to cache + * l2arc_write_size() calculate how much to write + * l2arc_write_interval() calculate sleep delay between writes + * + * These three functions determine what to write, how much, and how quickly + * to send writes. */ +static boolean_t +l2arc_write_eligible(spa_t *spa, arc_buf_hdr_t *ab) +{ + /* + * A buffer is *not* eligible for the L2ARC if it: + * 1. belongs to a different spa. + * 2. is already cached on the L2ARC. + * 3. has an I/O in progress (it may be an incomplete read). + * 4. is flagged not eligible (zfs property). + */ + if (ab->b_spa != spa) { + ARCSTAT_BUMP(arcstat_l2_write_spa_mismatch); + return (B_FALSE); + } + if (ab->b_l2hdr != NULL) { + ARCSTAT_BUMP(arcstat_l2_write_in_l2); + return (B_FALSE); + } + if (HDR_IO_IN_PROGRESS(ab)) { + ARCSTAT_BUMP(arcstat_l2_write_hdr_io_in_progress); + return (B_FALSE); + } + if (!HDR_L2CACHE(ab)) { + ARCSTAT_BUMP(arcstat_l2_write_not_cacheable); + return (B_FALSE); + } + + return (B_TRUE); +} + +static uint64_t +l2arc_write_size(l2arc_dev_t *dev) +{ + uint64_t size; + + size = dev->l2ad_write; + + if (arc_warm == B_FALSE) + size += dev->l2ad_boost; + + return (size); + +} + +static clock_t +l2arc_write_interval(clock_t began, uint64_t wanted, uint64_t wrote) +{ + clock_t interval, next; + + /* + * If the ARC lists are busy, increase our write rate; if the + * lists are stale, idle back. This is achieved by checking + * how much we previously wrote - if it was more than half of + * what we wanted, schedule the next write much sooner. + */ + if (l2arc_feed_again && wrote > (wanted / 2)) + interval = (hz * l2arc_feed_min_ms) / 1000; + else + interval = hz * l2arc_feed_secs; + + next = MAX(LBOLT, MIN(LBOLT + interval, began + interval)); + + return (next); +} + static void l2arc_hdr_stat_add(void) { @@ -4410,7 +4601,7 @@ top: * An ARC_L2_WRITING flag is set so that the L2ARC buffers are not valid * for reading until they have completed writing. */ -static void +static uint64_t l2arc_write_buffers(spa_t *spa, l2arc_dev_t *dev, uint64_t target_sz) { arc_buf_hdr_t *ab, *ab_prev, *head; @@ -4473,15 +4664,6 @@ l2arc_write_buffers(spa_t *spa, l2arc_de continue; } - if (ab->b_l2hdr != NULL) { - /* - * Already in L2ARC. - */ - mutex_exit(hash_lock); - ARCSTAT_BUMP(arcstat_l2_write_in_l2); - continue; - } - passed_sz += ab->b_size; if (passed_sz > headroom) { /* @@ -4492,22 +4674,11 @@ l2arc_write_buffers(spa_t *spa, l2arc_de break; } - if (ab->b_spa != spa) { + if (!l2arc_write_eligible(spa, ab)) { mutex_exit(hash_lock); - ARCSTAT_BUMP(arcstat_l2_write_spa_mismatch); continue; } - if (HDR_IO_IN_PROGRESS(ab)) { - mutex_exit(hash_lock); - ARCSTAT_BUMP(arcstat_l2_write_hdr_io_in_progress); - continue; - } - if (!HDR_L2CACHE(ab)) { - mutex_exit(hash_lock); - ARCSTAT_BUMP(arcstat_l2_write_not_cacheable); - continue; - } if ((write_sz + ab->b_size) > target_sz) { full = B_TRUE; mutex_exit(hash_lock); @@ -4515,12 +4686,6 @@ l2arc_write_buffers(spa_t *spa, l2arc_de break; } - if (ab->b_buf == NULL) { - DTRACE_PROBE1(l2arc__buf__null, void *, ab); - mutex_exit(hash_lock); - continue; - } - if (pio == NULL) { /* * Insert a dummy header on the buflist so @@ -4589,11 +4754,12 @@ l2arc_write_buffers(spa_t *spa, l2arc_de if (pio == NULL) { ASSERT3U(write_sz, ==, 0); kmem_cache_free(hdr_cache, head); - return; + return (0); } ASSERT3U(write_sz, <=, target_sz); ARCSTAT_BUMP(arcstat_l2_writes_sent); + ARCSTAT_INCR(arcstat_l2_write_bytes, write_sz); ARCSTAT_INCR(arcstat_l2_size, write_sz); spa_l2cache_space_update(dev->l2ad_vdev, 0, write_sz); @@ -4609,7 +4775,11 @@ l2arc_write_buffers(spa_t *spa, l2arc_de dev->l2ad_first = B_FALSE; } + dev->l2ad_writing = B_TRUE; (void) zio_wait(pio); + dev->l2ad_writing = B_FALSE; + + return (write_sz); } /* @@ -4622,20 +4792,19 @@ l2arc_feed_thread(void *dummy __unused) callb_cpr_t cpr; l2arc_dev_t *dev; spa_t *spa; - uint64_t size; + uint64_t size, wrote; + clock_t begin, next = LBOLT; CALLB_CPR_INIT(&cpr, &l2arc_feed_thr_lock, callb_generic_cpr, FTAG); mutex_enter(&l2arc_feed_thr_lock); while (l2arc_thread_exit == 0) { - /* - * Pause for l2arc_feed_secs seconds between writes. - */ CALLB_CPR_SAFE_BEGIN(&cpr); (void) cv_timedwait(&l2arc_feed_thr_cv, &l2arc_feed_thr_lock, - hz * l2arc_feed_secs >> l2arc_feed_secs_shift); + next - LBOLT); CALLB_CPR_SAFE_END(&cpr, &l2arc_feed_thr_lock); + next = LBOLT + hz; /* * Quick check for L2ARC devices. @@ -4646,6 +4815,7 @@ l2arc_feed_thread(void *dummy __unused) continue; } mutex_exit(&l2arc_dev_mtx); + begin = LBOLT; /* * This selects the next l2arc device to write to, and in @@ -4674,9 +4844,7 @@ l2arc_feed_thread(void *dummy __unused) ARCSTAT_BUMP(arcstat_l2_feeds); - size = dev->l2ad_write; - if (arc_warm == B_FALSE) - size += dev->l2ad_boost; + size = l2arc_write_size(dev); /* * Evict L2ARC buffers that will be overwritten. @@ -4686,7 +4854,12 @@ l2arc_feed_thread(void *dummy __unused) /* * Write ARC buffers. */ - l2arc_write_buffers(spa, dev, size); + wrote = l2arc_write_buffers(spa, dev, size); + + /* + * Calculate interval between writes. + */ + next = l2arc_write_interval(begin, size, wrote); spa_config_exit(spa, SCL_L2ARC, dev); } @@ -4736,6 +4909,7 @@ l2arc_add_vdev(spa_t *spa, vdev_t *vd, u adddev->l2ad_hand = adddev->l2ad_start; adddev->l2ad_evict = adddev->l2ad_start; adddev->l2ad_first = B_TRUE; + adddev->l2ad_writing = B_FALSE; ASSERT3U(adddev->l2ad_write, >, 0); /* Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c Mon May 24 06:07:55 2010 (r208481) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c Mon May 24 06:11:33 2010 (r208482) @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -466,7 +466,7 @@ dbuf_read_impl(dmu_buf_impl_t *db, zio_t ASSERT3U(bonuslen, <=, db->db.db_size); db->db.db_data = zio_buf_alloc(DN_MAX_BONUSLEN); - arc_space_consume(DN_MAX_BONUSLEN); + arc_space_consume(DN_MAX_BONUSLEN, ARC_SPACE_OTHER); if (bonuslen < DN_MAX_BONUSLEN) bzero(db->db.db_data, DN_MAX_BONUSLEN); if (bonuslen) @@ -657,7 +657,7 @@ dbuf_fix_old_data(dmu_buf_impl_t *db, ui if (db->db_blkid == DB_BONUS_BLKID) { /* Note that the data bufs here are zio_bufs */ dr->dt.dl.dr_data = zio_buf_alloc(DN_MAX_BONUSLEN); - arc_space_consume(DN_MAX_BONUSLEN); + arc_space_consume(DN_MAX_BONUSLEN, ARC_SPACE_OTHER); bcopy(db->db.db_data, dr->dt.dl.dr_data, DN_MAX_BONUSLEN); } else if (refcount_count(&db->db_holds) > db->db_dirtycnt) { int size = db->db.db_size; @@ -1314,7 +1314,7 @@ dbuf_clear(dmu_buf_impl_t *db) ASSERT(db->db.db_data != NULL); if (db->db_blkid == DB_BONUS_BLKID) { zio_buf_free(db->db.db_data, DN_MAX_BONUSLEN); - arc_space_return(DN_MAX_BONUSLEN); + arc_space_return(DN_MAX_BONUSLEN, ARC_SPACE_OTHER); } db->db.db_data = NULL; db->db_state = DB_UNCACHED; @@ -1436,7 +1436,7 @@ dbuf_create(dnode_t *dn, uint8_t level, db->db.db_offset = DB_BONUS_BLKID; db->db_state = DB_UNCACHED; /* the bonus dbuf is not placed in the hash table */ - arc_space_consume(sizeof (dmu_buf_impl_t)); + arc_space_consume(sizeof (dmu_buf_impl_t), ARC_SPACE_OTHER); return (db); } else { int blocksize = @@ -1463,7 +1463,7 @@ dbuf_create(dnode_t *dn, uint8_t level, list_insert_head(&dn->dn_dbufs, db); db->db_state = DB_UNCACHED; mutex_exit(&dn->dn_dbufs_mtx); - arc_space_consume(sizeof (dmu_buf_impl_t)); + arc_space_consume(sizeof (dmu_buf_impl_t), ARC_SPACE_OTHER); if (parent && parent != dn->dn_dbuf) dbuf_add_ref(parent, db); @@ -1532,7 +1532,7 @@ dbuf_destroy(dmu_buf_impl_t *db) ASSERT(db->db_data_pending == NULL); kmem_cache_free(dbuf_cache, db); - arc_space_return(sizeof (dmu_buf_impl_t)); + arc_space_return(sizeof (dmu_buf_impl_t), ARC_SPACE_OTHER); } void @@ -1951,7 +1951,7 @@ dbuf_sync_leaf(dbuf_dirty_record_t *dr, bcopy(*datap, DN_BONUS(dn->dn_phys), dn->dn_phys->dn_bonuslen); if (*datap != db->db.db_data) { zio_buf_free(*datap, DN_MAX_BONUSLEN); - arc_space_return(DN_MAX_BONUSLEN); + arc_space_return(DN_MAX_BONUSLEN, ARC_SPACE_OTHER); } db->db_data_pending = NULL; drp = &db->db_last_dirty; Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c Mon May 24 06:07:55 2010 (r208481) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c Mon May 24 06:11:33 2010 (r208482) @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -301,7 +301,7 @@ dnode_create(objset_impl_t *os, dnode_ph list_insert_head(&os->os_dnodes, dn); mutex_exit(&os->os_lock); - arc_space_consume(sizeof (dnode_t)); + arc_space_consume(sizeof (dnode_t), ARC_SPACE_OTHER); return (dn); } @@ -336,7 +336,7 @@ dnode_destroy(dnode_t *dn) dn->dn_bonus = NULL; } kmem_cache_free(dnode_cache, dn); - arc_space_return(sizeof (dnode_t)); + arc_space_return(sizeof (dnode_t), ARC_SPACE_OTHER); } void Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h Mon May 24 06:07:55 2010 (r208481) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h Mon May 24 06:11:33 2010 (r208482) @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -68,8 +68,19 @@ typedef enum arc_buf_contents { #define ARC_CACHED (1 << 4) /* I/O was already in cache */ #define ARC_L2CACHE (1 << 5) /* cache in L2ARC */ -void arc_space_consume(uint64_t space); -void arc_space_return(uint64_t space); +/* + * The following breakdows of arc_size exist for kstat only. + */ +typedef enum arc_space_type { + ARC_SPACE_DATA, + ARC_SPACE_HDRS, + ARC_SPACE_L2HDRS, + ARC_SPACE_OTHER, + ARC_SPACE_NUMTYPES +} arc_space_type_t; + +void arc_space_consume(uint64_t space, arc_space_type_t type); +void arc_space_return(uint64_t space, arc_space_type_t type); void *arc_data_buf_alloc(uint64_t space); void arc_data_buf_free(void *buf, uint64_t space); arc_buf_t *arc_buf_alloc(spa_t *spa, int size, void *tag, From owner-svn-src-stable-8@FreeBSD.ORG Mon May 24 10:09:36 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B73E0106566C; Mon, 24 May 2010 10:09:36 +0000 (UTC) (envelope-from pjd@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A3EE18FC15; Mon, 24 May 2010 10:09:36 +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 o4OA9aMQ068030; Mon, 24 May 2010 10:09:36 GMT (envelope-from pjd@svn.freebsd.org) Received: (from pjd@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OA9a9A068022; Mon, 24 May 2010 10:09:36 GMT (envelope-from pjd@svn.freebsd.org) Message-Id: <201005241009.o4OA9a9A068022@svn.freebsd.org> From: Pawel Jakub Dawidek Date: Mon, 24 May 2010 10:09:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208487 - in stable/8: cddl/contrib/opensolaris/lib/libzpool/common/sys sys/cddl/compat/opensolaris/kern sys/cddl/compat/opensolaris/sys sys/cddl/contrib/opensolaris/uts/common/fs/zfs s... X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 10:09:36 -0000 Author: pjd Date: Mon May 24 10:09:36 2010 New Revision: 208487 URL: http://svn.freebsd.org/changeset/base/208487 Log: MFC r207920,r207934,r207936,r207937,r207970,r208142,r208147,r208148,r208166, r208454,r208455,r208458: r207920: Back out r205134. It is not stable. r207934: Add missing new line characters to the warnings. r207936: Eventhough r203504 eliminates taste traffic provoked by vdev_geom.c, ZFS still like to open all vdevs, close them and open them again, which in turn provokes taste traffic anyway. I don't know of any clean way to fix it, so do it the hard way - if we can't open provider for writing just retry 5 times with 0.5 pauses. This should elimitate accidental races caused by other classes tasting providers created on top of our vdevs. Reported by: James R. Van Artsdalen Reported by: Yuri Pankov r207937: I added vfs_lowvnodes event, but it was only used for a short while and now it is totally unused. Remove it. r207970: When there is no memory or KVA, try to help by reclaiming some vnodes. This helps with 'kmem_map too small' panics. No objections from: kib Tested by: Alexander V. Ribchansky r208142: The whole point of having dedicated worker thread for each leaf VDEV was to avoid calling zio_interrupt() from geom_up thread context. It turns out that when provider is forcibly removed from the system and we kill worker thread there can still be some ZIOs pending. To complete pending ZIOs when there is no worker thread anymore we still have to call zio_interrupt() from geom_up context. To avoid this race just remove use of worker threads altogether. This should be more or less fine, because I also thought that zio_interrupt() does more work, but it only makes small UMA allocation with M_WAITOK. It also saves one context switch per I/O request. PR: kern/145339 Reported by: Alex Bakhtin r208147: Add task structure to zio and use it instead of allocating one. This eliminates the only place where we can sleep when calling zio_interrupt(). As a side-effect this can actually improve performance a little as we allocate one less thing for every I/O. Prodded by: kib r208148: Allow to configure UMA usage for ZIO data via loader and turn it on by default for amd64. On i386 I saw performance degradation when UMA was used, but for amd64 it should help. r208166: Fix userland build by making io_task available only for the kernel and by providing taskq_dispatch_safe() macro. r208454: Remove ZIO_USE_UMA from arc.c as well. r208455: ZIO_USE_UMA is no longer used. r208458: Create UMA zones unconditionally. Added: stable/8/sys/cddl/compat/opensolaris/sys/taskq.h - copied unchanged from r208147, head/sys/cddl/compat/opensolaris/sys/taskq.h Modified: stable/8/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c stable/8/sys/cddl/compat/opensolaris/sys/dnlc.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c stable/8/sys/kern/vfs_subr.c stable/8/sys/modules/zfs/Makefile stable/8/sys/sys/eventhandler.h Directory Properties: stable/8/cddl/contrib/opensolaris/ (props changed) stable/8/cddl/contrib/opensolaris/cmd/zdb/ (props changed) stable/8/cddl/contrib/opensolaris/cmd/zfs/ (props changed) stable/8/cddl/contrib/opensolaris/lib/libzfs/ (props changed) stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h ============================================================================== --- stable/8/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Mon May 24 07:04:00 2010 (r208486) +++ stable/8/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h Mon May 24 10:09:36 2010 (r208487) @@ -343,6 +343,9 @@ extern void taskq_wait(taskq_t *); extern int taskq_member(taskq_t *, void *); extern void system_taskq_init(void); +#define taskq_dispatch_safe(tq, func, arg, task) \ + taskq_dispatch((tq), (func), (arg), TQ_SLEEP) + #define XVA_MAPSIZE 3 #define XVA_MAGIC 0x78766174 Modified: stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c ============================================================================== --- stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c Mon May 24 07:04:00 2010 (r208486) +++ stable/8/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c Mon May 24 10:09:36 2010 (r208487) @@ -40,12 +40,6 @@ __FBSDID("$FreeBSD$"); static uma_zone_t taskq_zone; -struct ostask { - struct task ost_task; - task_func_t *ost_func; - void *ost_arg; -}; - taskq_t *system_taskq = NULL; static void @@ -140,3 +134,32 @@ taskq_dispatch(taskq_t *tq, task_func_t return ((taskqid_t)(void *)task); } + +#define TASKQ_MAGIC 0x74541c + +static void +taskq_run_safe(void *arg, int pending __unused) +{ + struct ostask *task = arg; + + ASSERT(task->ost_magic == TASKQ_MAGIC); + task->ost_func(task->ost_arg); + task->ost_magic = 0; +} + +taskqid_t +taskq_dispatch_safe(taskq_t *tq, task_func_t func, void *arg, + struct ostask *task) +{ + + ASSERT(task->ost_magic != TASKQ_MAGIC); + + task->ost_magic = TASKQ_MAGIC; + task->ost_func = func; + task->ost_arg = arg; + + TASK_INIT(&task->ost_task, 0, taskq_run_safe, task); + taskqueue_enqueue(tq->tq_queue, &task->ost_task); + + return ((taskqid_t)(void *)task); +} Modified: stable/8/sys/cddl/compat/opensolaris/sys/dnlc.h ============================================================================== --- stable/8/sys/cddl/compat/opensolaris/sys/dnlc.h Mon May 24 07:04:00 2010 (r208486) +++ stable/8/sys/cddl/compat/opensolaris/sys/dnlc.h Mon May 24 10:09:36 2010 (r208487) @@ -35,6 +35,6 @@ #define dnlc_update(dvp, name, vp) do { } while (0) #define dnlc_remove(dvp, name) do { } while (0) #define dnlc_purge_vfsp(vfsp, count) (0) -#define dnlc_reduce_cache(percent) EVENTHANDLER_INVOKE(vfs_lowvnodes, (int)(intptr_t)(percent)) +#define dnlc_reduce_cache(percent) do { } while (0) #endif /* !_OPENSOLARIS_SYS_DNLC_H_ */ Copied: stable/8/sys/cddl/compat/opensolaris/sys/taskq.h (from r208147, head/sys/cddl/compat/opensolaris/sys/taskq.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/8/sys/cddl/compat/opensolaris/sys/taskq.h Mon May 24 10:09:36 2010 (r208487, copy of r208147, head/sys/cddl/compat/opensolaris/sys/taskq.h) @@ -0,0 +1,44 @@ +/*- + * Copyright (c) 2010 Pawel Jakub Dawidek + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (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$ + */ + +#ifndef _OPENSOLARIS_SYS_TASKQ_H_ +#define _OPENSOLARIS_SYS_TASKQ_H_ + +#include_next + +struct ostask { + struct task ost_task; + task_func_t *ost_func; + void *ost_arg; + int ost_magic; +}; + +taskqid_t taskq_dispatch_safe(taskq_t *tq, task_func_t func, void *arg, + struct ostask *task); + +#endif /* _OPENSOLARIS_SYS_TASKQ_H_ */ Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Mon May 24 07:04:00 2010 (r208486) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Mon May 24 10:09:36 2010 (r208487) @@ -195,11 +195,6 @@ SYSCTL_QUAD(_vfs_zfs, OID_AUTO, arc_min, SYSCTL_INT(_vfs_zfs, OID_AUTO, mdcomp_disable, CTLFLAG_RDTUN, &zfs_mdcomp_disable, 0, "Disable metadata compression"); -#ifdef ZIO_USE_UMA -extern kmem_cache_t *zio_buf_cache[]; -extern kmem_cache_t *zio_data_buf_cache[]; -#endif - /* * Note that buffers can be in one of 6 states: * ARC_anon - anonymous (discussed below) @@ -620,11 +615,6 @@ static buf_hash_table_t buf_hash_table; uint64_t zfs_crc64_table[256]; -#ifdef ZIO_USE_UMA -extern kmem_cache_t *zio_buf_cache[]; -extern kmem_cache_t *zio_data_buf_cache[]; -#endif - /* * Level 2 ARC */ @@ -2192,14 +2182,15 @@ arc_reclaim_needed(void) return (0); } +extern kmem_cache_t *zio_buf_cache[]; +extern kmem_cache_t *zio_data_buf_cache[]; + static void arc_kmem_reap_now(arc_reclaim_strategy_t strat) { -#ifdef ZIO_USE_UMA size_t i; kmem_cache_t *prev_cache = NULL; kmem_cache_t *prev_data_cache = NULL; -#endif #ifdef _KERNEL if (arc_meta_used >= arc_meta_limit) { @@ -2224,7 +2215,6 @@ arc_kmem_reap_now(arc_reclaim_strategy_t if (strat == ARC_RECLAIM_AGGR) arc_shrink(); -#ifdef ZIO_USE_UMA for (i = 0; i < SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT; i++) { if (zio_buf_cache[i] != prev_cache) { prev_cache = zio_buf_cache[i]; @@ -2235,7 +2225,6 @@ arc_kmem_reap_now(arc_reclaim_strategy_t kmem_cache_reap_now(zio_data_buf_cache[i]); } } -#endif kmem_cache_reap_now(buf_cache); kmem_cache_reap_now(hdr_cache); } Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h Mon May 24 07:04:00 2010 (r208486) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h Mon May 24 10:09:36 2010 (r208487) @@ -316,6 +316,11 @@ struct zio { /* FMA state */ uint64_t io_ena; + +#ifdef _KERNEL + /* FreeBSD only. */ + struct ostask io_task; +#endif }; extern zio_t *zio_null(zio_t *pio, spa_t *spa, Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c Mon May 24 07:04:00 2010 (r208486) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c Mon May 24 10:09:36 2010 (r208487) @@ -47,31 +47,6 @@ struct g_class zfs_vdev_class = { DECLARE_GEOM_CLASS(zfs_vdev_class, zfs_vdev); -typedef struct vdev_geom_ctx { - struct g_consumer *gc_consumer; - int gc_state; - struct bio_queue_head gc_queue; - struct mtx gc_queue_mtx; -} vdev_geom_ctx_t; - -static void -vdev_geom_release(vdev_t *vd) -{ - vdev_geom_ctx_t *ctx; - - ctx = vd->vdev_tsd; - vd->vdev_tsd = NULL; - - mtx_lock(&ctx->gc_queue_mtx); - ctx->gc_state = 1; - wakeup_one(&ctx->gc_queue); - while (ctx->gc_state != 2) - msleep(&ctx->gc_state, &ctx->gc_queue_mtx, 0, "vgeom:w", 0); - mtx_unlock(&ctx->gc_queue_mtx); - mtx_destroy(&ctx->gc_queue_mtx); - kmem_free(ctx, sizeof(*ctx)); -} - static void vdev_geom_orphan(struct g_consumer *cp) { @@ -96,8 +71,7 @@ vdev_geom_orphan(struct g_consumer *cp) ZFS_LOG(1, "Destroyed geom %s.", gp->name); g_wither_geom(gp, error); } - vdev_geom_release(vd); - + vd->vdev_tsd = NULL; vd->vdev_remove_wanted = B_TRUE; spa_async_request(vd->vdev_spa, SPA_ASYNC_REMOVE); } @@ -188,52 +162,6 @@ vdev_geom_detach(void *arg, int flag __u } } -static void -vdev_geom_worker(void *arg) -{ - vdev_geom_ctx_t *ctx; - zio_t *zio; - struct bio *bp; - - thread_lock(curthread); - sched_prio(curthread, PRIBIO); - thread_unlock(curthread); - - ctx = arg; - for (;;) { - mtx_lock(&ctx->gc_queue_mtx); - bp = bioq_takefirst(&ctx->gc_queue); - if (bp == NULL) { - if (ctx->gc_state == 1) { - ctx->gc_state = 2; - wakeup_one(&ctx->gc_state); - mtx_unlock(&ctx->gc_queue_mtx); - kthread_exit(); - } - msleep(&ctx->gc_queue, &ctx->gc_queue_mtx, - PRIBIO | PDROP, "vgeom:io", 0); - continue; - } - mtx_unlock(&ctx->gc_queue_mtx); - zio = bp->bio_caller1; - zio->io_error = bp->bio_error; - if (bp->bio_cmd == BIO_FLUSH && bp->bio_error == ENOTSUP) { - vdev_t *vd; - - /* - * If we get ENOTSUP, we know that no future - * attempts will ever succeed. In this case we - * set a persistent bit so that we don't bother - * with the ioctl in the future. - */ - vd = zio->io_vd; - vd->vdev_nowritecache = B_TRUE; - } - g_destroy_bio(bp); - zio_interrupt(zio); - } -} - static uint64_t nvlist_get_guid(nvlist_t *list) { @@ -396,7 +324,7 @@ vdev_geom_attach_by_guid_event(void *arg continue; ap->cp = vdev_geom_attach(pp); if (ap->cp == NULL) { - printf("ZFS WARNING: Unable to attach to %s.", + printf("ZFS WARNING: Unable to attach to %s.\n", pp->name); continue; } @@ -488,7 +416,6 @@ vdev_geom_open_by_path(vdev_t *vd, int c static int vdev_geom_open(vdev_t *vd, uint64_t *psize, uint64_t *ashift) { - vdev_geom_ctx_t *ctx; struct g_provider *pp; struct g_consumer *cp; int error, owned; @@ -530,10 +457,19 @@ vdev_geom_open(vdev_t *vd, uint64_t *psi ZFS_LOG(1, "Provider %s not found.", vd->vdev_path); error = ENOENT; } else if (cp->acw == 0 && (spa_mode & FWRITE) != 0) { + int i; + g_topology_lock(); - error = g_access(cp, 0, 1, 0); + for (i = 0; i < 5; i++) { + error = g_access(cp, 0, 1, 0); + if (error == 0) + break; + g_topology_unlock(); + tsleep(vd, 0, "vdev", hz / 2); + g_topology_lock(); + } if (error != 0) { - printf("ZFS WARNING: Unable to open %s for writing (error=%d).", + printf("ZFS WARNING: Unable to open %s for writing (error=%d).\n", vd->vdev_path, error); vdev_geom_detach(cp, 0); cp = NULL; @@ -548,19 +484,9 @@ vdev_geom_open(vdev_t *vd, uint64_t *psi } cp->private = vd; - - ctx = kmem_zalloc(sizeof(*ctx), KM_SLEEP); - bioq_init(&ctx->gc_queue); - mtx_init(&ctx->gc_queue_mtx, "zfs:vdev:geom:queue", NULL, MTX_DEF); - ctx->gc_consumer = cp; - ctx->gc_state = 0; - - vd->vdev_tsd = ctx; + vd->vdev_tsd = cp; pp = cp->provider; - kproc_kthread_add(vdev_geom_worker, ctx, &zfsproc, NULL, 0, 0, - "zfskern", "vdev %s", pp->name); - /* * Determine the actual size of the device. */ @@ -583,50 +509,49 @@ vdev_geom_open(vdev_t *vd, uint64_t *psi static void vdev_geom_close(vdev_t *vd) { - vdev_geom_ctx_t *ctx; struct g_consumer *cp; - if ((ctx = vd->vdev_tsd) == NULL) + cp = vd->vdev_tsd; + if (cp == NULL) return; - if ((cp = ctx->gc_consumer) == NULL) - return; - vdev_geom_release(vd); + vd->vdev_tsd = NULL; g_post_event(vdev_geom_detach, cp, M_WAITOK, NULL); } static void vdev_geom_io_intr(struct bio *bp) { - vdev_geom_ctx_t *ctx; zio_t *zio; zio = bp->bio_caller1; - ctx = zio->io_vd->vdev_tsd; - - if ((zio->io_error = bp->bio_error) == 0 && bp->bio_resid != 0) + zio->io_error = bp->bio_error; + if (zio->io_error == 0 && bp->bio_resid != 0) zio->io_error = EIO; + if (bp->bio_cmd == BIO_FLUSH && bp->bio_error == ENOTSUP) { + vdev_t *vd; - mtx_lock(&ctx->gc_queue_mtx); - bioq_insert_tail(&ctx->gc_queue, bp); - wakeup_one(&ctx->gc_queue); - mtx_unlock(&ctx->gc_queue_mtx); + /* + * If we get ENOTSUP, we know that no future + * attempts will ever succeed. In this case we + * set a persistent bit so that we don't bother + * with the ioctl in the future. + */ + vd = zio->io_vd; + vd->vdev_nowritecache = B_TRUE; + } + g_destroy_bio(bp); + zio_interrupt(zio); } static int vdev_geom_io_start(zio_t *zio) { vdev_t *vd; - vdev_geom_ctx_t *ctx; struct g_consumer *cp; struct bio *bp; int error; - cp = NULL; - vd = zio->io_vd; - ctx = vd->vdev_tsd; - if (ctx != NULL) - cp = ctx->gc_consumer; if (zio->io_type == ZIO_TYPE_IOCTL) { /* XXPOLICY */ @@ -655,6 +580,7 @@ vdev_geom_io_start(zio_t *zio) return (ZIO_PIPELINE_CONTINUE); } sendreq: + cp = vd->vdev_tsd; if (cp == NULL) { zio->io_error = ENXIO; return (ZIO_PIPELINE_CONTINUE); Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Mon May 24 07:04:00 2010 (r208486) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Mon May 24 10:09:36 2010 (r208487) @@ -33,6 +33,17 @@ #include #include +#if defined(__amd64__) +static int zio_use_uma = 1; +#else +static int zio_use_uma = 0; +#endif +SYSCTL_DECL(_vfs_zfs); +SYSCTL_NODE(_vfs_zfs, OID_AUTO, zio, CTLFLAG_RW, 0, "ZFS ZIO"); +TUNABLE_INT("vfs.zfs.zio.use_uma", &zio_use_uma); +SYSCTL_INT(_vfs_zfs_zio, OID_AUTO, use_uma, CTLFLAG_RDTUN, &zio_use_uma, 0, + "Use uma(9) for ZIO allocations"); + /* * ========================================================================== * I/O priority table @@ -69,10 +80,8 @@ char *zio_type_name[ZIO_TYPES] = { * ========================================================================== */ kmem_cache_t *zio_cache; -#ifdef ZIO_USE_UMA kmem_cache_t *zio_buf_cache[SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT]; kmem_cache_t *zio_data_buf_cache[SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT]; -#endif #ifdef _KERNEL extern vmem_t *zio_alloc_arena; @@ -88,13 +97,10 @@ extern vmem_t *zio_alloc_arena; void zio_init(void) { -#ifdef ZIO_USE_UMA size_t c; -#endif zio_cache = kmem_cache_create("zio_cache", sizeof (zio_t), 0, NULL, NULL, NULL, NULL, NULL, 0); -#ifdef ZIO_USE_UMA /* * For small buffers, we want a cache for each multiple of * SPA_MINBLOCKSIZE. For medium-size buffers, we want a cache @@ -138,7 +144,6 @@ zio_init(void) if (zio_data_buf_cache[c - 1] == NULL) zio_data_buf_cache[c - 1] = zio_data_buf_cache[c]; } -#endif zio_inject_init(); } @@ -146,7 +151,6 @@ zio_init(void) void zio_fini(void) { -#ifdef ZIO_USE_UMA size_t c; kmem_cache_t *last_cache = NULL; kmem_cache_t *last_data_cache = NULL; @@ -164,7 +168,6 @@ zio_fini(void) } zio_data_buf_cache[c] = NULL; } -#endif kmem_cache_destroy(zio_cache); @@ -186,15 +189,14 @@ zio_fini(void) void * zio_buf_alloc(size_t size) { -#ifdef ZIO_USE_UMA size_t c = (size - 1) >> SPA_MINBLOCKSHIFT; ASSERT(c < SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT); - return (kmem_cache_alloc(zio_buf_cache[c], KM_PUSHPAGE)); -#else - return (kmem_alloc(size, KM_SLEEP)); -#endif + if (zio_use_uma) + return (kmem_cache_alloc(zio_buf_cache[c], KM_PUSHPAGE)); + else + return (kmem_alloc(size, KM_SLEEP)); } /* @@ -206,43 +208,40 @@ zio_buf_alloc(size_t size) void * zio_data_buf_alloc(size_t size) { -#ifdef ZIO_USE_UMA size_t c = (size - 1) >> SPA_MINBLOCKSHIFT; ASSERT(c < SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT); - return (kmem_cache_alloc(zio_data_buf_cache[c], KM_PUSHPAGE)); -#else - return (kmem_alloc(size, KM_SLEEP)); -#endif + if (zio_use_uma) + return (kmem_cache_alloc(zio_data_buf_cache[c], KM_PUSHPAGE)); + else + return (kmem_alloc(size, KM_SLEEP)); } void zio_buf_free(void *buf, size_t size) { -#ifdef ZIO_USE_UMA size_t c = (size - 1) >> SPA_MINBLOCKSHIFT; ASSERT(c < SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT); - kmem_cache_free(zio_buf_cache[c], buf); -#else - kmem_free(buf, size); -#endif + if (zio_use_uma) + kmem_cache_free(zio_buf_cache[c], buf); + else + kmem_free(buf, size); } void zio_data_buf_free(void *buf, size_t size) { -#ifdef ZIO_USE_UMA size_t c = (size - 1) >> SPA_MINBLOCKSHIFT; ASSERT(c < SPA_MAXBLOCKSIZE >> SPA_MINBLOCKSHIFT); - kmem_cache_free(zio_data_buf_cache[c], buf); -#else - kmem_free(buf, size); -#endif + if (zio_use_uma) + kmem_cache_free(zio_data_buf_cache[c], buf); + else + kmem_free(buf, size); } /* @@ -908,8 +907,8 @@ zio_taskq_dispatch(zio_t *zio, enum zio_ if (t == ZIO_TYPE_WRITE && zio->io_vd && zio->io_vd->vdev_aux) t = ZIO_TYPE_NULL; - (void) taskq_dispatch(zio->io_spa->spa_zio_taskq[t][q], - (task_func_t *)zio_execute, zio, TQ_SLEEP); + (void) taskq_dispatch_safe(zio->io_spa->spa_zio_taskq[t][q], + (task_func_t *)zio_execute, zio, &zio->io_task); } static boolean_t @@ -2220,9 +2219,9 @@ zio_done(zio_t *zio) * Reexecution is potentially a huge amount of work. * Hand it off to the otherwise-unused claim taskq. */ - (void) taskq_dispatch( + (void) taskq_dispatch_safe( spa->spa_zio_taskq[ZIO_TYPE_CLAIM][ZIO_TASKQ_ISSUE], - (task_func_t *)zio_reexecute, zio, TQ_SLEEP); + (task_func_t *)zio_reexecute, zio, &zio->io_task); } return (ZIO_PIPELINE_STOP); } Modified: stable/8/sys/kern/vfs_subr.c ============================================================================== --- stable/8/sys/kern/vfs_subr.c Mon May 24 07:04:00 2010 (r208486) +++ stable/8/sys/kern/vfs_subr.c Mon May 24 10:09:36 2010 (r208487) @@ -800,7 +800,6 @@ vnlru_proc(void) } mtx_unlock(&mountlist_mtx); if (done == 0) { - EVENTHANDLER_INVOKE(vfs_lowvnodes, desiredvnodes / 10); #if 0 /* These messages are temporary debugging aids */ if (vnlru_nowhere < 5) @@ -822,6 +821,19 @@ static struct kproc_desc vnlru_kp = { }; SYSINIT(vnlru, SI_SUB_KTHREAD_UPDATE, SI_ORDER_FIRST, kproc_start, &vnlru_kp); + +static void +vfs_lowmem(void *arg __unused) +{ + + /* + * On low memory condition free 1/8th of the free vnodes. + */ + mtx_lock(&vnode_free_list_mtx); + vnlru_free(freevnodes / 8); + mtx_unlock(&vnode_free_list_mtx); +} +EVENTHANDLER_DEFINE(vm_lowmem, vfs_lowmem, NULL, 0); /* * Routines having to do with the management of the vnode table. Modified: stable/8/sys/modules/zfs/Makefile ============================================================================== --- stable/8/sys/modules/zfs/Makefile Mon May 24 07:04:00 2010 (r208486) +++ stable/8/sys/modules/zfs/Makefile Mon May 24 10:09:36 2010 (r208487) @@ -63,9 +63,6 @@ ZFS_SRCS= ${ZFS_OBJS:C/.o$/.c/} SRCS+= ${ZFS_SRCS} SRCS+= vdev_geom.c -# Use UMA for ZIO allocation. -CFLAGS+=-DZIO_USE_UMA - # Use FreeBSD's namecache. CFLAGS+=-DFREEBSD_NAMECACHE Modified: stable/8/sys/sys/eventhandler.h ============================================================================== --- stable/8/sys/sys/eventhandler.h Mon May 24 07:04:00 2010 (r208486) +++ stable/8/sys/sys/eventhandler.h Mon May 24 10:09:36 2010 (r208487) @@ -183,10 +183,6 @@ typedef void (*vm_lowmem_handler_t)(void #define LOWMEM_PRI_DEFAULT EVENTHANDLER_PRI_FIRST EVENTHANDLER_DECLARE(vm_lowmem, vm_lowmem_handler_t); -/* Low vnodes event */ -typedef void (*vfs_lowvnodes_handler_t)(void *, int); -EVENTHANDLER_DECLARE(vfs_lowvnodes, vfs_lowvnodes_handler_t); - /* Root mounted event */ typedef void (*mountroot_handler_t)(void *); EVENTHANDLER_DECLARE(mountroot, mountroot_handler_t); From owner-svn-src-stable-8@FreeBSD.ORG Mon May 24 10:45:51 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9A94F106566C; Mon, 24 May 2010 10:45:51 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8B6A58FC14; Mon, 24 May 2010 10:45:51 +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 o4OAjpvr076249; Mon, 24 May 2010 10:45:51 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OAjpCX076247; Mon, 24 May 2010 10:45:51 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201005241045.o4OAjpCX076247@svn.freebsd.org> From: Alexander Motin Date: Mon, 24 May 2010 10:45:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208490 - stable/8/share/man/man4 X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 10:45:51 -0000 Author: mav Date: Mon May 24 10:45:51 2010 New Revision: 208490 URL: http://svn.freebsd.org/changeset/base/208490 Log: MFC r208449: mvs(4) will first appear in FreeBSD 8.1. Modified: stable/8/share/man/man4/mvs.4 Directory Properties: stable/8/share/man/man4/ (props changed) Modified: stable/8/share/man/man4/mvs.4 ============================================================================== --- stable/8/share/man/man4/mvs.4 Mon May 24 10:35:57 2010 (r208489) +++ stable/8/share/man/man4/mvs.4 Mon May 24 10:45:51 2010 (r208490) @@ -171,6 +171,6 @@ for each port. The .Nm driver first appeared in -.Fx 9.0 . +.Fx 8.1 . .Sh AUTHORS .An Alexander Motin Aq mav@FreeBSD.org . From owner-svn-src-stable-8@FreeBSD.ORG Mon May 24 10:54:50 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8453A106566B; Mon, 24 May 2010 10:54:50 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 74C118FC12; Mon, 24 May 2010 10:54:50 +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 o4OAsoga078243; Mon, 24 May 2010 10:54:50 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OAsowk078238; Mon, 24 May 2010 10:54:50 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201005241054.o4OAsowk078238@svn.freebsd.org> From: Alexander Motin Date: Mon, 24 May 2010 10:54:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208491 - in stable/8/sys/dev: ahci mvs siis X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 10:54:50 -0000 Author: mav Date: Mon May 24 10:54:50 2010 New Revision: 208491 URL: http://svn.freebsd.org/changeset/base/208491 Log: MFC r208414: Fill rman range start/end values. It makes devinfo output more readable. Modified: stable/8/sys/dev/ahci/ahci.c stable/8/sys/dev/mvs/mvs_pci.c stable/8/sys/dev/mvs/mvs_soc.c stable/8/sys/dev/siis/siis.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/dev/ahci/ahci.c ============================================================================== --- stable/8/sys/dev/ahci/ahci.c Mon May 24 10:45:51 2010 (r208490) +++ stable/8/sys/dev/ahci/ahci.c Mon May 24 10:54:50 2010 (r208491) @@ -330,6 +330,8 @@ ahci_attach(device_t dev) &ctlr->r_rid, RF_ACTIVE))) return ENXIO; /* Setup our own memory management for channels. */ + ctlr->sc_iomem.rm_start = rman_get_start(ctlr->r_mem); + ctlr->sc_iomem.rm_end = rman_get_end(ctlr->r_mem); ctlr->sc_iomem.rm_type = RMAN_ARRAY; ctlr->sc_iomem.rm_descr = "I/O memory addresses"; if ((error = rman_init(&ctlr->sc_iomem)) != 0) { Modified: stable/8/sys/dev/mvs/mvs_pci.c ============================================================================== --- stable/8/sys/dev/mvs/mvs_pci.c Mon May 24 10:45:51 2010 (r208490) +++ stable/8/sys/dev/mvs/mvs_pci.c Mon May 24 10:54:50 2010 (r208491) @@ -139,6 +139,8 @@ mvs_attach(device_t dev) &ctlr->r_rid, RF_ACTIVE))) return ENXIO; /* Setup our own memory management for channels. */ + ctlr->sc_iomem.rm_start = rman_get_start(ctlr->r_mem); + ctlr->sc_iomem.rm_end = rman_get_end(ctlr->r_mem); ctlr->sc_iomem.rm_type = RMAN_ARRAY; ctlr->sc_iomem.rm_descr = "I/O memory addresses"; if ((error = rman_init(&ctlr->sc_iomem)) != 0) { Modified: stable/8/sys/dev/mvs/mvs_soc.c ============================================================================== --- stable/8/sys/dev/mvs/mvs_soc.c Mon May 24 10:45:51 2010 (r208490) +++ stable/8/sys/dev/mvs/mvs_soc.c Mon May 24 10:54:50 2010 (r208491) @@ -131,6 +131,8 @@ mvs_attach(device_t dev) &ctlr->r_rid, RF_ACTIVE))) return ENXIO; /* Setup our own memory management for channels. */ + ctlr->sc_iomem.rm_start = rman_get_start(ctlr->r_mem); + ctlr->sc_iomem.rm_end = rman_get_end(ctlr->r_mem); ctlr->sc_iomem.rm_type = RMAN_ARRAY; ctlr->sc_iomem.rm_descr = "I/O memory addresses"; if ((error = rman_init(&ctlr->sc_iomem)) != 0) { Modified: stable/8/sys/dev/siis/siis.c ============================================================================== --- stable/8/sys/dev/siis/siis.c Mon May 24 10:45:51 2010 (r208490) +++ stable/8/sys/dev/siis/siis.c Mon May 24 10:54:50 2010 (r208491) @@ -152,6 +152,8 @@ siis_attach(device_t dev) &ctlr->r_rid, RF_ACTIVE))) return (ENXIO); /* Setup our own memory management for channels. */ + ctlr->sc_iomem.rm_start = rman_get_start(ctlr->r_mem); + ctlr->sc_iomem.rm_end = rman_get_end(ctlr->r_mem); ctlr->sc_iomem.rm_type = RMAN_ARRAY; ctlr->sc_iomem.rm_descr = "I/O memory addresses"; if ((error = rman_init(&ctlr->sc_iomem)) != 0) { From owner-svn-src-stable-8@FreeBSD.ORG Mon May 24 11:01:57 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 60CD9106566C; Mon, 24 May 2010 11:01:57 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5030C8FC0C; Mon, 24 May 2010 11:01:57 +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 o4OB1vaV079916; Mon, 24 May 2010 11:01:57 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OB1vVC079909; Mon, 24 May 2010 11:01:57 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201005241101.o4OB1vVC079909@svn.freebsd.org> From: Alexander Motin Date: Mon, 24 May 2010 11:01:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208492 - in stable/8/sys/dev: ahci ata mvs siis X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 11:01:57 -0000 Author: mav Date: Mon May 24 11:01:56 2010 New Revision: 208492 URL: http://svn.freebsd.org/changeset/base/208492 Log: MFC r208410: Report ATA/SATA channel number to NewBus at location string. Modified: stable/8/sys/dev/ahci/ahci.c stable/8/sys/dev/ata/ata-pci.c stable/8/sys/dev/ata/ata-pci.h stable/8/sys/dev/mvs/mvs_pci.c stable/8/sys/dev/mvs/mvs_soc.c stable/8/sys/dev/siis/siis.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/dev/ahci/ahci.c ============================================================================== --- stable/8/sys/dev/ahci/ahci.c Mon May 24 10:54:50 2010 (r208491) +++ stable/8/sys/dev/ahci/ahci.c Mon May 24 11:01:56 2010 (r208492) @@ -774,6 +774,16 @@ ahci_print_child(device_t dev, device_t return (retval); } +static int +ahci_child_location_str(device_t dev, device_t child, char *buf, + size_t buflen) +{ + + snprintf(buf, buflen, "channel=%d", + (int)(intptr_t)device_get_ivars(child)); + return (0); +} + devclass_t ahci_devclass; static device_method_t ahci_methods[] = { DEVMETHOD(device_probe, ahci_probe), @@ -786,6 +796,7 @@ static device_method_t ahci_methods[] = DEVMETHOD(bus_release_resource, ahci_release_resource), DEVMETHOD(bus_setup_intr, ahci_setup_intr), DEVMETHOD(bus_teardown_intr,ahci_teardown_intr), + DEVMETHOD(bus_child_location_str, ahci_child_location_str), { 0, 0 } }; static driver_t ahci_driver = { @@ -805,6 +816,7 @@ static device_method_t ahci_ata_methods[ DEVMETHOD(bus_release_resource, ahci_release_resource), DEVMETHOD(bus_setup_intr, ahci_setup_intr), DEVMETHOD(bus_teardown_intr,ahci_teardown_intr), + DEVMETHOD(bus_child_location_str, ahci_child_location_str), { 0, 0 } }; static driver_t ahci_ata_driver = { Modified: stable/8/sys/dev/ata/ata-pci.c ============================================================================== --- stable/8/sys/dev/ata/ata-pci.c Mon May 24 10:54:50 2010 (r208491) +++ stable/8/sys/dev/ata/ata-pci.c Mon May 24 11:01:56 2010 (r208492) @@ -544,6 +544,16 @@ ata_pci_dmafini(device_t dev) ata_dmafini(dev); } +int +ata_pci_child_location_str(device_t dev, device_t child, char *buf, + size_t buflen) +{ + + snprintf(buf, buflen, "channel=%d", + (int)(intptr_t)device_get_ivars(child)); + return (0); +} + static device_method_t ata_pci_methods[] = { /* device interface */ DEVMETHOD(device_probe, ata_pci_probe), @@ -564,6 +574,7 @@ static device_method_t ata_pci_methods[] DEVMETHOD(bus_teardown_intr, ata_pci_teardown_intr), DEVMETHOD(pci_read_config, ata_pci_read_config), DEVMETHOD(pci_write_config, ata_pci_write_config), + DEVMETHOD(bus_child_location_str, ata_pci_child_location_str), { 0, 0 } }; Modified: stable/8/sys/dev/ata/ata-pci.h ============================================================================== --- stable/8/sys/dev/ata/ata-pci.h Mon May 24 10:54:50 2010 (r208491) +++ stable/8/sys/dev/ata/ata-pci.h Mon May 24 11:01:56 2010 (r208492) @@ -502,6 +502,8 @@ int ata_pci_write_ivar(device_t dev, dev uint32_t ata_pci_read_config(device_t dev, device_t child, int reg, int width); void ata_pci_write_config(device_t dev, device_t child, int reg, uint32_t val, int width); +int ata_pci_child_location_str(device_t dev, device_t child, char *buf, + size_t buflen); struct resource * ata_pci_alloc_resource(device_t dev, device_t child, int type, int *rid, u_long start, u_long end, u_long count, u_int flags); int ata_pci_release_resource(device_t dev, device_t child, int type, int rid, struct resource *r); int ata_pci_setup_intr(device_t dev, device_t child, struct resource *irq, int flags, driver_filter_t *filter, driver_intr_t *function, void *argument, void **cookiep); @@ -550,6 +552,7 @@ static device_method_t __CONCAT(dname,_m DEVMETHOD(bus_teardown_intr, ata_pci_teardown_intr), \ DEVMETHOD(pci_read_config, ata_pci_read_config), \ DEVMETHOD(pci_write_config, ata_pci_write_config), \ + DEVMETHOD(bus_child_location_str, ata_pci_child_location_str), \ { 0, 0 } \ }; \ static driver_t __CONCAT(dname,_driver) = { \ Modified: stable/8/sys/dev/mvs/mvs_pci.c ============================================================================== --- stable/8/sys/dev/mvs/mvs_pci.c Mon May 24 10:54:50 2010 (r208491) +++ stable/8/sys/dev/mvs/mvs_pci.c Mon May 24 11:01:56 2010 (r208492) @@ -484,6 +484,16 @@ mvs_print_child(device_t dev, device_t c return (retval); } +static int +mvs_child_location_str(device_t dev, device_t child, char *buf, + size_t buflen) +{ + + snprintf(buf, buflen, "channel=%d", + (int)(intptr_t)device_get_ivars(child)); + return (0); +} + static device_method_t mvs_methods[] = { DEVMETHOD(device_probe, mvs_probe), DEVMETHOD(device_attach, mvs_attach), @@ -495,6 +505,7 @@ static device_method_t mvs_methods[] = { DEVMETHOD(bus_release_resource, mvs_release_resource), DEVMETHOD(bus_setup_intr, mvs_setup_intr), DEVMETHOD(bus_teardown_intr,mvs_teardown_intr), + DEVMETHOD(bus_child_location_str, mvs_child_location_str), DEVMETHOD(mvs_edma, mvs_edma), { 0, 0 } }; Modified: stable/8/sys/dev/mvs/mvs_soc.c ============================================================================== --- stable/8/sys/dev/mvs/mvs_soc.c Mon May 24 10:54:50 2010 (r208491) +++ stable/8/sys/dev/mvs/mvs_soc.c Mon May 24 11:01:56 2010 (r208492) @@ -415,6 +415,16 @@ mvs_print_child(device_t dev, device_t c return (retval); } +static int +mvs_child_location_str(device_t dev, device_t child, char *buf, + size_t buflen) +{ + + snprintf(buf, buflen, "channel=%d", + (int)(intptr_t)device_get_ivars(child)); + return (0); +} + static device_method_t mvs_methods[] = { DEVMETHOD(device_probe, mvs_probe), DEVMETHOD(device_attach, mvs_attach), @@ -427,6 +437,7 @@ static device_method_t mvs_methods[] = { DEVMETHOD(bus_setup_intr, mvs_setup_intr), DEVMETHOD(bus_teardown_intr,mvs_teardown_intr), DEVMETHOD(mvs_edma, mvs_edma), + DEVMETHOD(bus_child_location_str, mvs_child_location_str), { 0, 0 } }; static driver_t mvs_driver = { Modified: stable/8/sys/dev/siis/siis.c ============================================================================== --- stable/8/sys/dev/siis/siis.c Mon May 24 10:54:50 2010 (r208491) +++ stable/8/sys/dev/siis/siis.c Mon May 24 11:01:56 2010 (r208492) @@ -400,6 +400,16 @@ siis_print_child(device_t dev, device_t return (retval); } +static int +siis_child_location_str(device_t dev, device_t child, char *buf, + size_t buflen) +{ + + snprintf(buf, buflen, "channel=%d", + (int)(intptr_t)device_get_ivars(child)); + return (0); +} + devclass_t siis_devclass; static device_method_t siis_methods[] = { DEVMETHOD(device_probe, siis_probe), @@ -412,6 +422,7 @@ static device_method_t siis_methods[] = DEVMETHOD(bus_release_resource, siis_release_resource), DEVMETHOD(bus_setup_intr, siis_setup_intr), DEVMETHOD(bus_teardown_intr,siis_teardown_intr), + DEVMETHOD(bus_child_location_str, siis_child_location_str), { 0, 0 } }; static driver_t siis_driver = { From owner-svn-src-stable-8@FreeBSD.ORG Mon May 24 12:10:54 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0D7F7106566C; Mon, 24 May 2010 12:10:54 +0000 (UTC) (envelope-from gallatin@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id F01E18FC23; Mon, 24 May 2010 12:10:53 +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 o4OCArd0095107; Mon, 24 May 2010 12:10:53 GMT (envelope-from gallatin@svn.freebsd.org) Received: (from gallatin@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OCArwC095104; Mon, 24 May 2010 12:10:53 GMT (envelope-from gallatin@svn.freebsd.org) Message-Id: <201005241210.o4OCArwC095104@svn.freebsd.org> From: Andrew Gallatin Date: Mon, 24 May 2010 12:10:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208495 - stable/8/sys/dev/mxge X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 12:10:54 -0000 Author: gallatin Date: Mon May 24 12:10:53 2010 New Revision: 208495 URL: http://svn.freebsd.org/changeset/base/208495 Log: MFC 208309: Update mxge firmware to latest available from Myricom. Modified: stable/8/sys/dev/mxge/eth_z8e.h stable/8/sys/dev/mxge/ethp_z8e.h stable/8/sys/dev/mxge/rss_eth_z8e.h stable/8/sys/dev/mxge/rss_ethp_z8e.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/dev/mxge/eth_z8e.h ============================================================================== --- stable/8/sys/dev/mxge/eth_z8e.h Mon May 24 11:40:49 2010 (r208494) +++ stable/8/sys/dev/mxge/eth_z8e.h Mon May 24 12:10:53 2010 (r208495) @@ -1,6 +1,6 @@ /******************************************************************************* -Copyright (c) 2006-2009, Myricom Inc. +Copyright (c) 2006-2010, Myricom Inc. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -28,7255 +28,7287 @@ POSSIBILITY OF SUCH DAMAGE. $FreeBSD$ ***************************************************************************/ -static unsigned int eth_z8e_uncompressed_length = 366788 ; -static unsigned int eth_z8e_length = 115959 ; -static unsigned char eth_z8e[115959 + 1] = - "\x78\x9c\xec\xbd\x7f\x7c\x54\xd5\xb5\x37\xbc\x32\x19\x60\x12\x23" - "\x13\x31\xd2\x29\xa5\x3a\x5a\xb4\xd1\x0b\x12\x15\x5b\xb4\xa0\x51" - "\xc0\x82\x0d\x10\x15\x6d\x54\x34\xa0\x81\x06\x8d\x18\x21\xc0\x00" - "\x21\x33\x0c\x70\x9d\x44\x7e\x44\x8d\x18\x21\x90\x44\x62\x9b\xdb" - "\x52\x4d\x2c\x2a\xd8\x50\x63\x49\xef\x43\xef\x85\x0c\xb7\x2f\xbe" - "\x6f\x6e\x5f\xbc\x1d\xd2\x88\x29\x4f\x80\x91\x0c\x64\x48\x66\xce" - "\x7e\xbf\x6b\xef\x73\x92\x99\x61\x82\x72\x7b\x3f\xcf\xfb\x4f\xf9" - "\x7c\xc2\x9c\xb3\x7f\xac\xbd\xf6\xda\x6b\xad\xbd\xf6\xde\x6b\xaf" - "\x43\xf4\x77\xfc\x33\x7d\xe4\xf8\x7b\xaa\xff\xe3\xdf\x3f\xfe\xfd" - "\xe3\xdf\x3f\xfe\xfd\xe3\xdf\x3f\xfe\xfd\xe3\xdf\xff\x3f\xff\xce" - "\x9a\xcc\xf4\xfb\x72\xa2\x1e\xb7\xc5\xe6\xa3\x0b\xf6\x37\x5f\x17" - "\x21\x24\x27\xf8\xc8\x62\xe3\x5f\xfd\x8f\x5e\x43\xba\xa9\x9c\x2c" - "\x37\xa4\x52\xca\x94\x1d\x44\x15\x23\x45\xd7\xeb\x5b\x85\x7f\xdd" - "\x56\xd1\x35\xf5\x1d\xa2\x96\x31\x44\xaf\x8f\x14\x01\xc0\x99\xeb" - "\xa3\xa7\x2b\x18\xce\x3a\xbc\x73\xfe\xfa\x91\xc2\x8f\xf4\x22\x1f" - "\xe5\xa6\x70\xfa\xda\x91\x80\x95\x46\xe4\xde\x2a\x82\x11\x70\x2d" - "\x5c\x9f\x61\x4e\xbd\x5e\xe2\x53\x17\x03\x87\x61\xec\x05\x8c\xf5" - "\x97\x80\x91\x62\xe0\x15\x30\x51\x02\xc3\xeb\x76\x93\x2d\xe0\x6e" - "\xbe\x06\x75\x03\xe8\x53\x3a\xd7\xdd\x82\x32\xc2\x4d\x89\x2d\x8e" - "\x10\xd9\x6f\xa0\x84\x13\x94\x5c\x8b\x5f\x13\x7e\xdf\xe0\xfe\xae" - "\x53\xf5\xc6\x30\x0c\xd4\x4d\xe8\x71\x27\x65\xf4\xd7\x05\x6c\x7b" - "\x09\x99\x51\x76\x51\xc0\xd4\x6c\x52\x65\x53\x93\xf4\xb2\x26\x94" - "\x9d\x6b\x94\x55\x79\xa6\x19\x7a\xde\x15\xc8\x73\x44\xe7\x99\x5f" - "\xd3\xf3\x52\x90\x57\x11\x83\x9f\xd9\xdb\x1b\xa2\x13\x94\xb4\x1b" - "\xb8\xd8\x0f\x60\x54\xb8\x8e\x5e\xfe\x2a\x94\x6f\x89\x86\x45\xa4" - "\xe7\x8d\x40\x9e\x2f\x3a\xef\x77\x19\x7a\xde\xb7\x90\x17\x8a\xce" - "\x4b\x30\xea\xd9\x7a\xdc\xc9\xb6\x38\xfd\xe4\xf6\x13\x54\xdb\xdc" - "\x87\xe4\x49\x28\xe3\xe2\x32\x73\xec\x2e\xe2\xb1\xe2\xbc\x03\x35" - "\xfd\xed\x73\x99\x79\x06\x1c\x1f\xea\x47\xd0\x14\xb4\x4c\x2e\x36" - "\xea\x4f\xb5\x33\x0c\x92\x34\x64\x38\x3e\x4a\x9a\xce\x70\xf8\x1d" - "\xcf\xa3\xb9\xdf\xfa\xb3\x9d\xfb\x17\x39\xe6\x44\x66\x80\x1d\x62" - "\x21\x1a\x8a\xbf\x61\x16\x83\x07\x96\xda\x84\xe6\xfc\x36\x99\x45" - "\x59\x4d\xa6\xe6\x16\xe4\x75\x04\xc9\x3e\x8a\x9c\xed\x74\x85\x0d" - "\xf8\xd1\xe6\x55\x64\x71\x16\x8a\xa0\xd7\xd1\x45\xad\xfe\x2e\x72" - "\xfa\x45\xa7\x37\x74\x8e\x4a\xce\x91\xc5\x1b\x3a\x45\x25\x2f\x91" - "\xad\xa5\xf8\x0b\x8a\xc7\x5f\x9a\x49\x90\x73\x34\xd7\xed\xa0\xd6" - "\xaa\x0e\x72\x56\x45\xd7\x75\x7e\x97\x6c\x87\xf1\x8e\xb1\xb3\x32" - "\x1e\x2d\xf6\x10\x85\x92\x6b\x32\x8b\xdf\x22\xb3\xf3\x7a\x32\x1d" - "\xce\x6b\x36\x70\xf1\x31\x2e\xeb\x4f\x92\x65\xd7\x42\xf0\xd0\x49" - "\xc6\xb7\x3e\xf3\xbd\x55\x41\xd3\x01\x5b\x16\x1d\xb0\x1d\xa3\x16" - "\xdb\x64\x6a\x71\x4c\xa5\xcd\x27\x29\xe5\x40\x70\x12\xb5\x98\x1f" - "\x80\x8c\x4d\x25\x6f\x17\x9e\xed\x61\x94\x09\x90\x7d\x39\x81\x3f" - "\xae\x38\x52\xf1\x1c\x59\x7c\x0a\x26\xe8\x7b\xc5\xb1\x4f\x8b\x88" - "\x98\xbe\xfc\x1e\xaf\x1f\x4b\xbf\x4d\x36\xe0\xd7\x09\x5c\xee\x6a" - "\xa7\x94\x6b\xc6\xd8\x28\x03\x38\x0f\xf3\x56\x86\xc8\x5c\x4c\x49" - "\x83\xc8\x56\x9a\xe6\x96\x32\xde\xb5\x73\xab\xe8\x64\x1e\xed\x5e" - "\x9d\x03\x39\x4d\xc9\x42\xdb\x5d\xdc\xde\x66\xc8\xba\xb3\x96\xcc" - "\xdd\x2b\x72\x12\xaa\xb7\x8a\x0e\xe4\xe5\x1b\x79\xe0\xa7\x0e\xe4" - "\x77\x8e\x4f\xa3\x54\x6f\x28\x93\x3e\xe9\xed\x34\x33\x8c\xe1\x01" - "\x4a\x60\x78\x56\x07\x25\xa2\x3f\x43\x80\xcf\x5d\xd5\x48\xff\x1e" - "\xca\xa1\x7e\xbd\x8f\x5e\x9d\xc7\xf5\xc5\xb7\x9e\x0c\x68\xdf\x7a" - "\xf2\x9c\xf6\xe6\x93\xdd\xe2\xcd\x27\xcf\x86\xdf\x7c\xf2\x2b\xe7" - "\x4a\xb2\x84\xbf\xf5\xa4\xbf\xb5\x50\x8e\x41\x6a\x6b\x21\xc6\x20" - "\x4c\x96\x35\xa7\x28\xf5\xe9\x97\x30\xf6\xa1\xcf\x69\xcd\x22\xb2" - "\x69\x49\x3f\x0f\x7a\x43\x9f\xd1\xd3\xc5\x24\xb4\xa4\x5f\x58\xe2" - "\xf5\xaf\x3b\xb9\xde\xa5\x64\xc8\x82\x3e\x5d\x69\xf7\x99\xaa\x27" - "\x72\xbb\xfe\xa4\x06\x17\xfe\xd6\xe3\xcf\x83\xbf\x8d\x22\xb9\x7e" - "\x23\x68\xe5\x1c\xbe\x36\x81\x76\xf6\x12\x8d\xd7\x28\xe1\x24\x5d" - "\x39\x09\xf8\xa7\x0e\x42\xb7\xd1\x5a\xd9\x6f\xe7\x7d\xdf\x45\x25" - "\x3d\x3d\xf9\xc4\xba\x89\xf5\x12\xeb\x29\xb4\xe3\x41\x3b\x0e\x29" - "\x8b\x5b\x45\x40\x24\xff\x76\x1e\xd2\x3b\x03\xab\xf3\x13\xfc\xab" - "\xf3\x4d\xdd\xc9\xbf\x7d\x16\x65\x76\xa3\x4c\x83\x4e\xc3\x4e\x86" - "\x05\x99\xf0\x5f\x19\xa2\x44\xc0\x2c\xfc\xe8\x7c\x9b\x79\xc7\x56" - "\x71\x0c\xe5\x8e\xf6\xc3\x02\x6c\xc0\x01\xfd\xaf\xec\x34\xd2\x40" - "\xeb\x8e\x4d\x28\xc7\xf5\xbd\xc1\x4c\xd6\xdf\x3e\x6f\x41\x27\x59" - "\x43\x94\x2c\xfa\x54\x7b\x28\xd3\xc9\x7a\xf6\xca\x20\x0d\xed\x71" - "\x53\x36\xc3\xe6\x7a\xde\xae\x4e\x42\xbd\x67\x85\x33\x1f\xfa\x8d" - "\x66\xf5\x88\xfc\x04\xe8\xf4\x8e\x03\xa8\xaf\xda\x1e\x9e\x6d\xe0" - "\xc8\x6d\xf0\x58\x4b\x3c\xc1\x0f\x07\x0a\x82\x74\x65\x25\x25\xa2" - "\xde\x23\x0c\x8f\x61\x81\x0f\x7c\xe8\xeb\xb3\x07\x0a\xfc\xa4\x89" - "\x28\x98\x3e\x1d\x5e\x4d\x14\x3c\xa4\x0b\xc0\x63\xfe\x6b\x41\x9d" - "\x2b\x6b\x24\xbc\x87\x3f\xd2\x18\x5e\x90\xcc\x76\x89\xef\x63\x0c" - "\xa3\x87\x75\x0c\x60\x36\x2f\xbf\x9f\xba\xc8\x6a\xf1\x3b\xf3\x13" - "\x5b\x8b\x89\xb8\xfe\x7b\x25\x9d\x43\x44\x77\x4e\x22\xf3\x1c\xe7" - "\x7b\x43\x67\x51\x66\xf8\xdf\x44\x77\x7e\xe2\x95\x5d\x64\x66\x9c" - "\x51\xdf\xc1\x78\x46\x8e\xe5\xc3\xd3\x1e\x9b\x4c\x8f\x4d\x9d\x31" - "\x75\x32\xcd\xbc\x6f\xca\x64\xca\xb8\x6b\x5c\xc6\x1d\x3f\x9c\x78" - "\x07\x65\xff\xf4\xe1\xc9\x94\x3d\x6b\x32\x3d\x82\xbf\xec\x47\xa6" - "\x3d\x3c\x75\xda\x23\x93\x29\xe7\x81\x19\x78\x9b\x32\xf9\xb6\x8c" - "\x1f\x8f\xcb\x9e\x32\x63\x1a\x3d\x34\xe7\xf6\x8c\xdb\x6f\xa7\xfb" - "\xa6\x65\xdd\x96\x91\xa1\xff\xde\x96\xc1\x45\x9e\x98\x38\xed\x91" - "\x71\xd9\x4b\x5e\x2c\x7a\x71\xdc\xac\x19\x53\x62\xe6\xd9\xf4\xf0" - "\x79\x8d\xe9\x1b\x10\x67\xa6\x93\x06\x7d\xb1\x13\xe3\x8e\xbf\xae" - "\xe6\x92\x76\xc8\x7d\xea\x7f\xec\xe4\xf1\x92\x7a\xd5\xca\x73\x95" - "\xb9\xc7\x6d\x6d\x03\xdd\xfc\x4c\x37\xcc\x67\x28\x73\xcd\x39\xe4" - "\xdd\xac\xcf\x1b\x43\x90\x1f\x8c\xce\xbf\xea\x10\xf2\xc7\xb7\xda" - "\x89\xbc\xf8\x03\xad\x03\xd0\x7f\xa0\xa9\x9f\xba\x9d\x39\x43\xc0" - "\xd3\x09\x68\xa3\x03\xf2\x78\xa4\xc7\x9d\x3a\x21\x42\xce\x3b\x30" - "\x26\x47\xec\xab\x28\xf1\x34\xa5\x5e\xd9\x5a\x94\x49\x3c\x36\xde" - "\x22\x1d\xc6\xb9\x7e\x18\xc9\x12\x06\xc6\x1b\x70\x8e\xea\x70\x8a" - "\x23\x74\x82\x8f\xe1\x6c\x46\x9e\x0e\xeb\xa1\x56\xe8\x06\xe8\xee" - "\x07\x35\x67\x3a\x89\xe4\x9a\xe9\x5a\x5f\xba\x9c\x0f\x50\x6f\x8f" - "\xc1\xcb\x28\x1f\x68\x29\x44\xb9\x5d\xd3\x13\x30\xf6\x09\x98\xa7" - "\xd0\x17\x6b\x33\x78\x3a\xa0\x95\x35\x94\x8b\x9e\x1c\x52\x69\x57" - "\x01\x06\xde\xcb\x1a\x5e\x15\x4e\xa4\xad\x92\x69\x09\x9c\x86\x71" - "\x4e\x64\x79\x14\xab\x65\x7a\x22\xd2\x97\x01\xbf\xb6\x30\xd7\x3f" - "\x23\xeb\x0f\x43\xda\xa3\x28\xfb\xaa\x96\xdc\xf0\x1a\xf8\x86\xd3" - "\x60\x23\x8c\x4c\x03\xbc\xd7\x35\x91\x43\xc2\x12\xca\xc1\x73\x45" - "\xf3\xaa\x2e\x3a\x51\x48\x26\x1f\xf2\x34\x27\x60\xf6\xf5\xb7\x3f" - "\x86\xeb\xa2\x2d\x73\x4f\x5f\x3e\xe6\xb7\xab\xd2\x79\x2e\x0c\x33" - "\x3e\x67\xfa\xcb\xa4\x71\x9b\x2c\xd3\x18\x8b\x09\x18\xa7\xa4\x1e" - "\xf7\x55\x35\x31\xe3\xb4\x17\x70\x5e\x05\xdd\xdb\x00\x23\x55\xeb" - "\xce\xe7\x7e\xbd\x0a\xb8\x26\x1d\xae\x01\x23\xa0\xf8\xe0\x2a\x5f" - "\x0c\x1f\xfc\x27\x60\x4f\x1e\xc8\x1f\x41\x31\xf9\xfb\x91\x7f\xbf" - "\x9e\x0f\xd9\x1a\x61\x8f\xce\x1f\x31\x09\xf9\x0f\xa0\xfd\x00\x64" - "\x27\xd1\x47\xa9\x75\x3b\xd9\xf6\x1b\x28\x9f\x1d\x53\xbe\x00\xe5" - "\x1f\xc4\xd8\x06\x58\xaf\x73\xf9\x6a\x9d\x57\x51\xde\x82\xf2\xae" - "\x98\xf6\x77\xa0\xfc\x23\x11\xf8\xc5\xf4\xff\xea\x7c\xe4\xe7\x30" - "\x6f\xe1\x37\x0f\x65\x86\xb1\xbc\xb2\xae\x38\x50\xc0\xb6\xe2\x88" - "\x23\x31\xed\x33\x2d\x9f\xd7\x0c\x1a\x75\x33\x8d\x52\xeb\x74\x3b" - "\xe4\x98\xc2\xe1\x6a\x73\x4c\x1b\x63\x50\x67\x29\xf8\xe7\x55\x83" - "\x37\xe2\xd4\x99\x18\x53\x27\x47\xf2\x96\x6a\x47\x1f\x63\x55\x47" - "\xd7\x43\x91\x30\xb8\x6f\xb0\x8d\xae\x2e\x8e\xe9\x7b\x0e\xda\x5d" - "\xbd\x49\xc9\xf9\x15\xe0\x89\xdb\x91\x36\x03\x30\xdf\x60\x3e\x62" - "\x5e\xf7\xfa\x83\xd0\x93\xd3\x53\xd4\x7c\x7f\xf5\xe7\xd6\x62\xe2" - "\xe7\x71\xfc\xcc\xb0\x45\x5f\x96\x2e\x03\x57\x7f\x8e\x5f\x4e\x6f" - "\xe1\x74\x96\x3d\xd1\xf7\x13\x4d\xc1\x4c\x4b\x80\x8c\x9a\xf0\x1e" - "\xd6\xdb\xb8\x0f\xef\x09\xc0\xff\x35\xe8\x60\xf0\xec\x74\xe6\xc7" - "\x09\x48\xbf\x4b\xcf\xbf\x8d\xcb\xe3\xf9\x36\xfd\x99\xf9\xf6\x35" - "\x9d\x6f\x21\x07\xd7\xdc\x2c\xdb\x96\xb2\xa0\xea\x6b\x8a\xef\xa7" - "\x20\xef\x1a\xfc\xce\xc0\x2f\xe3\xf5\x10\xda\xfe\xdc\x79\x8e\x6c" - "\xce\x30\x6c\x0e\xf5\xfe\x47\xfc\x3e\x8c\xdf\x0f\xf0\xfb\x08\x7e" - "\x6b\x59\x6e\xfd\x2b\xf2\x29\x86\x67\xba\x34\x25\xab\xc3\xd4\x18" - "\xa6\x95\xeb\xf2\xa3\xe4\xf7\xcc\x40\x9a\x50\x69\x26\x45\x73\x3d" - "\xad\x6f\x3a\xb7\x9f\x0d\xf8\x05\xdc\xbe\x2e\xf7\x43\xd4\x38\xa9" - "\x32\x9a\xaa\x67\x56\xe3\xad\xa7\xa9\x72\x09\x91\x6d\xe2\x37\xb3" - "\x24\x20\x04\x7e\xc7\x32\x5d\x7d\x74\x4d\x06\x68\x62\xc6\x3b\xeb" - "\x3e\x93\x2c\x2f\xe1\x5e\x5d\x15\x31\xde\xb0\xc5\xaf\x29\x88\x1e" - "\xef\xd4\x3a\xa6\x19\x8f\xb7\x81\x2f\xe3\x0e\x7e\xe6\x39\x6d\xa8" - "\xc1\x33\xe0\xed\x2e\xe8\xc7\x40\x62\x31\xf3\xdd\x35\x0d\x3e\xfa" - "\x65\xb9\xb4\x83\xca\x1a\xb6\x72\x7e\x00\x7a\x86\x79\x23\xb1\x90" - "\xe5\xe5\x9a\x23\x46\xbe\xcc\x4b\xfa\xad\x8f\xe1\x27\x16\xc8\xbc" - "\x2e\x1f\xd8\xc5\xc8\x63\xdc\x58\x8e\x13\x8b\x38\x6f\xa4\x65\x00" - "\x6e\x4d\xbe\x0e\x37\x91\xed\x07\xb6\x03\x30\x1f\x77\xa2\xcc\x58" - "\x1f\x5d\x99\x33\xd8\x9a\x4b\x78\x6a\x72\xc6\x11\x99\x6e\x71\xd1" - "\x10\x6f\xe8\x28\xcd\x0e\x89\xf0\x38\x17\x25\x79\x43\xbb\x09\x0c" - "\x72\x95\x37\x74\x8c\x6e\x21\xba\xde\x1b\xaa\xc0\x7c\x5b\xc7\xf9" - "\x9f\xa4\x53\x42\x02\x7e\x9d\x37\xb9\x4c\x09\xde\xd0\x7a\x1a\xe3" - "\x32\xe3\xb7\x80\x1e\x18\x22\x7a\xbc\xa1\x2c\x94\xcb\xa3\xd9\x61" - "\x71\x66\xea\x10\xf1\x97\xdc\x30\xa5\x66\x6d\x10\x4e\x6f\x08\xb6" - "\x6f\xe8\x10\xd2\x35\x31\x3b\x7c\x01\x7f\x3d\x42\xf3\xd4\xe4\xcf" - "\x0e\x9f\x11\x53\x36\x7c\x82\xf7\xbf\x08\x61\x22\xe1\x0d\x4d\xa2" - "\xd6\x40\x00\xe5\x9c\x42\x94\xd6\xe4\x3c\x7d\xce\x44\x7d\x98\x3b" - "\xb5\xd2\x9a\x7c\xf4\xd1\xd1\x87\xfe\x61\x5e\x59\xd1\xb7\x1a\xbf" - "\x65\x35\xcb\xe5\xbb\xa7\xc6\x23\x2c\x35\x8e\x5b\xb1\x90\xe0\x3e" - "\x78\x43\x1d\x94\x0b\x53\x78\xf6\x4a\xbf\x60\xfc\x87\xaf\xe5\x75" - "\xc4\x24\x82\xee\xb3\xce\x5e\xe9\x14\xc8\xb3\x88\xa4\x1a\x87\x37" - "\xd4\x45\x68\xc3\x03\x78\x1b\x24\x3c\x4f\x4d\x3d\xca\xfa\xb9\x5c" - "\x24\x1c\x86\xc1\x65\x67\x87\xc9\x8a\xf2\xf5\x7d\x49\x35\x95\xf8" - "\xdb\x8b\xbf\x4e\xd4\xed\x15\xee\xb4\x4f\x05\xe6\x39\xe1\xa9\xb5" - "\x88\xe4\x5a\x5b\x0f\xec\x76\x49\xcb\x30\x0d\x13\xa5\xb5\x18\x7f" - "\x9a\x0a\xde\x02\xbe\xb5\x13\x25\xbe\x65\xb5\x3f\xec\x91\xfd\xa8" - "\xfd\x81\xea\x47\xed\x9d\x9c\xde\x8d\x39\x1e\xcf\x39\xdd\x2a\xef" - "\xa7\xa8\x37\x47\xd6\xf3\xd4\xe6\x08\x4b\x6d\x7e\x10\x32\x03\xba" - "\xba\x98\x8e\xa0\xab\x8b\x69\x09\xf8\x39\x5e\xc7\x46\x12\x49\xb5" - "\xf9\x7d\x49\xb5\x0e\xd4\x2f\xeb\x93\x73\x6f\x6d\x65\x8f\x82\xfd" - "\x26\xe0\xcc\x05\x5f\x26\x02\x46\x25\x60\xd5\xf7\xb9\xed\x34\x7b" - "\xa5\x08\xce\x0e\xad\x0d\xe5\xae\xa4\xc4\xb1\xe4\x02\xbe\xfb\x41" - "\xa3\x3c\xf4\xb3\x05\xbf\x53\x91\x4f\x57\xa3\xad\x4f\x00\xb7\x92" - "\xdb\x43\x3b\xf5\x80\xf9\x0e\x60\xe5\x31\x4e\x17\xdc\x94\x8a\xf7" - "\xbd\x17\x14\x7e\x6d\x9a\xa7\x36\xa8\x59\x6a\x3b\x0d\x1e\x62\xfe" - "\x51\x74\xab\xa0\x59\x01\x11\xf2\x86\x76\x10\x78\x2c\xb5\x35\x70" - "\x8c\xf3\x61\xeb\xef\xc6\x38\x33\x4f\xad\xc7\x6f\x1d\x31\xff\xb4" - "\x16\x2e\xe3\xb2\x9f\x30\x0f\xcd\x2a\x0c\xac\x1d\x47\x85\x09\x78" - "\x77\xe6\x86\x2c\xf4\x74\xa1\xd9\x15\xf6\xd4\x1e\x6c\x2d\xe4\x71" - "\x39\x8a\x3a\x5c\xaf\x80\xac\x09\xb0\x77\x13\x44\xc8\xea\xf0\x9b" - "\xaf\xcc\x77\x8a\xd6\x40\x16\xca\x16\x12\xf7\x87\xf9\x88\xcb\xcf" - "\xec\x12\xbe\xb0\xe5\x6d\x07\xf7\x4d\x0c\x77\xd1\xe1\xae\x3b\x89" - "\xd7\x1c\x87\xbb\xea\x98\x4f\x35\x61\x79\x7b\x3a\x78\xb4\x6f\x66" - "\x97\x6b\xc8\xd3\xe7\x28\x01\x69\xe1\xc3\xf9\xbb\x91\xdf\x82\x72" - "\x87\x24\xdf\xce\x3a\x17\xb2\x86\x2c\xb5\x7b\x43\x9e\xb7\x73\x66" - "\x9d\xeb\x13\x87\xf3\x2b\xe8\xa9\x2e\x17\x68\xb5\x9b\x66\x9e\x0a" - "\x25\xb6\x16\xe6\xa1\x4c\x0f\xd2\xeb\x24\xff\xcf\x3c\xd5\x2d\x66" - "\xbd\x24\xce\xcc\x3a\xf7\x17\x31\x33\x5f\x7c\x92\xeb\xa0\xe1\x57" - "\xac\x15\x1a\xcb\xc5\xa1\x8e\xdd\x74\xc5\x31\x1f\xb1\x4c\x64\xcd" - "\xd7\xc4\xcc\x53\x67\xc4\xd3\x2f\x31\x6d\x26\xd1\xe1\x7c\xc8\x8f" - "\xa3\x82\xe9\xdd\x76\x38\xbf\x09\xed\x4f\x05\x5c\xa7\xf0\x3a\x76" - "\xa0\x6c\xb3\xf5\xa9\x53\xa9\x74\xa8\xa3\x82\x42\x49\xb5\x7b\xc3" - "\xa5\xb5\x07\xb5\xa4\xda\x4e\xad\xb4\x36\x28\x92\xde\x9e\x1e\x2a" - "\x7d\x3b\x27\x9c\xf4\x36\x78\xe0\xed\x83\x18\xa7\x24\x1e\xf3\x5e" - "\xac\xc1\xf1\xfe\xaf\xbd\x3c\xfe\x9e\xb7\xdb\xd0\xd7\x20\xf4\x9d" - "\x50\xbc\xff\x76\x1b\xaf\xa3\x51\x37\xd8\x97\xf4\x76\x27\xca\x05" - "\x95\x7c\xed\xb2\x30\x5f\xca\xf9\xa6\x6c\xd7\x30\xcc\x0f\x89\x7d" - "\x49\xbb\x6c\xf8\x4b\xc7\xdf\x44\xa4\x79\x00\xff\x2a\xc9\x53\x9e" - "\x5d\x1e\x71\x4f\x39\x6c\xc7\x73\xcc\x93\x4e\x91\xb4\xab\x7e\x76" - "\x78\xa2\x13\x74\x84\xac\xec\xf2\x68\xa5\xbb\x2a\x01\xef\x60\x50" - "\xf2\xff\xae\xff\xc5\xf0\xfb\x56\xa7\xf3\x1a\xdb\x8c\xfc\x36\x51" - "\x56\xf7\x60\x0f\xf3\xab\xa5\x6e\xba\x66\xa9\xab\x17\x9e\xba\x9c" - "\x9f\x6c\x10\xfe\xb0\xa7\xce\xa1\x79\xea\xf2\x43\x43\x61\x97\x3a" - "\x9a\x88\x75\x54\xe8\x77\x02\x74\xf8\x03\x68\x52\x27\x79\xc0\xeb" - "\x80\x1c\xac\x1c\xe5\x3a\xdc\x05\x7e\x28\xfc\xb5\xd4\x4f\xad\x81" - "\xa3\x92\xae\x22\xa9\x6e\x3a\xf3\x15\x8f\xf1\xd3\x85\xe4\x12\xa5" - "\x75\x39\x5a\x69\x5d\x7e\xb8\x14\x70\x93\xd0\x4e\xf2\xcf\x4f\x06" - "\xa5\xcc\xfe\x1c\x3c\xdb\x84\x3a\x7f\x20\xc5\xe7\x3f\xef\x1c\x4c" - "\x4f\xb2\xbe\x62\x1d\x35\x3b\x14\x64\xbe\xf9\x92\x75\x9b\xd2\x55" - "\x94\x6b\xe8\x2a\xd6\x53\x6c\xeb\xb3\xae\xd2\x74\x5d\xa5\xe9\xba" - "\x4a\xbe\x5b\xa0\x6f\x3c\x35\x0e\xd6\x49\xb3\x1d\x4a\xd7\xcc\x0e" - "\x67\x08\xf0\x47\x0a\x60\x38\xd4\x78\xa0\x4c\x59\xcd\x06\x59\x5e" - "\xd2\xa9\xa6\x5e\x83\xce\xc1\xdf\x5e\x4d\xe9\x9c\xa0\xae\x73\x4c" - "\x86\xce\x09\x63\xfe\x82\x5c\x69\xf1\x74\x8e\xa6\xeb\x9c\xb0\x50" - "\x3a\x47\xd3\x75\x0e\xa7\x87\x75\x9d\x13\x8e\xa3\x73\x20\xd3\xdc" - "\xdf\x44\x5d\xd7\xb8\x58\xd7\x70\x7f\xc1\x6f\xf9\x9a\xd2\x35\x1e" - "\xd8\xf9\x26\xd6\x35\x61\xd4\xd1\x0c\x5d\xd3\x23\xeb\xd7\xb3\xbe" - "\xe9\xfb\x67\x82\x0e\xb5\x13\xeb\x19\xa9\x53\x42\xd7\x87\x58\xa7" - "\x80\x7e\xf7\xc6\xea\x14\xc0\xdb\x8b\xe7\x54\x5d\x57\x75\x5a\xd7" - "\x8a\x10\x74\xca\xc1\xd9\x8e\x00\xc6\xfa\x73\xac\x75\xa1\xbb\x1d" - "\x45\x2e\xaf\x23\x44\xd0\x05\x41\xd1\xea\x22\xe0\x08\x1e\x0e\x43" - "\x5f\x10\x41\x36\xa7\x87\x20\xe7\xe0\xf3\x9c\xd6\xc2\xcf\x28\x0c" - "\x79\x9d\xd9\xd5\xed\x7d\x3a\x90\x9e\x3a\xf3\x94\xf0\x83\x3e\xbe" - "\xa7\x0b\x5d\xd0\x31\xe9\xfe\xc3\x5d\xfb\x29\xab\x43\x68\x59\xf3" - "\x7c\x76\xc8\x41\xce\xcc\x45\xcd\xd6\xa7\x5f\x4a\x85\xac\x89\x66" - "\xe8\xc6\xff\x6b\xe6\xa9\x54\xeb\xdc\x0e\xba\x36\x6b\xbe\xd0\xc2" - "\x90\x35\xf4\xf7\x20\xfa\xdd\x06\xdc\x3b\x21\x77\x41\xc8\xda\xf4" - "\x50\x8c\xac\x89\xe4\xb7\xff\x15\xcf\x76\x45\xbf\xb7\x83\x90\xb5" - "\x36\x4d\xce\x69\x1d\x72\x7d\x85\x76\xe4\xde\x13\xe4\xad\x4d\x2b" - "\x55\xf2\xa6\x09\x25\x6f\x1a\xd3\xcf\xa4\xcb\x1b\xc6\x02\x72\x63" - "\xc3\x5f\x3a\xfe\xe2\xcb\x5b\x61\x8c\xbc\xbd\xa4\xcb\x5b\x92\x92" - "\x37\x8c\x6b\x62\x78\xb5\x92\x39\x6e\x83\xd7\x61\xfd\x32\x97\x5c" - "\x37\x5d\xb0\xed\x28\xf9\x47\xca\x1d\xe6\x97\x3a\x07\x64\x2e\x1f" - "\x32\x07\x78\xc2\xcf\xfa\x13\xfc\xf9\x5f\x3c\xe7\xcd\x2a\x14\xff" - "\x95\x1b\x1e\xe5\x82\x4c\x39\xa0\xd3\xfe\x02\x7d\xfa\x5f\x4f\x07" - "\xa8\x06\x32\x35\x1d\xb2\x94\x03\x99\xca\x87\x6c\xb1\x4c\x75\x86" - "\x57\x33\xcc\x9f\x77\xf6\xc3\x90\x73\x66\xb4\x4c\xa9\x9d\xeb\xf8" - "\xfb\x7f\x3d\xee\x6b\xa1\x19\x3f\x6c\x62\x7b\x05\xcf\x9d\x3e\xfa" - "\xa8\x5c\x7f\x0e\xf8\x68\xfb\x46\x69\xeb\x40\x16\x0b\x4b\xe8\x9a" - "\x93\x74\x5d\x3d\xf8\x9e\xf0\x9c\x82\xe7\xdd\xb3\x6f\xfe\x04\x36" - "\xc5\x97\x1e\xb4\xdd\xc3\xf2\x28\xdc\x13\xb0\xb6\xa0\x4c\xf0\xa3" - "\x45\xf4\xa4\xa7\x88\xe4\xc6\x6b\x45\x9f\x8d\xf7\x98\xac\x78\x1f" - "\x0e\x1a\x8c\xc1\xef\x88\x1d\xe7\x29\x0d\x7f\xb6\x1d\x6e\xcd\xc5" - "\xf6\x15\x9e\x33\xc4\x0a\x5b\xf2\xe6\xe5\x34\xd6\x1a\x20\x4b\xb5" - "\x5b\xcb\xb1\xae\x4d\xe5\xbd\x96\x34\x7e\x16\xee\xea\x86\xea\xf3" - "\x64\x66\x3b\x52\x4b\x42\x7b\x0e\xab\x10\x4b\xd3\xa9\x7a\x09\xf4" - "\x84\x9b\x6c\xd5\x6e\xd1\x10\xee\x61\x3a\xd4\xe4\x18\xb8\x30\x6e" - "\xc0\xf3\xbb\xc0\xb3\xe9\xd1\x95\x99\xf4\x07\x07\xc5\xdd\xa3\xec" - "\x71\x5f\xd7\xdf\xff\x41\xf2\x43\x06\x4d\xe2\xe7\xdb\x47\x1b\x74" - "\x1a\x64\x3f\xcb\xcc\xf3\x75\x78\xb9\xf0\x6f\x79\x8e\x98\x16\x36" - "\x67\x48\xfc\x15\x74\x74\x95\x84\xe9\xbb\xb3\x57\x5e\x27\xbc\x5d" - "\xa2\xd9\xeb\x38\x45\xd5\xc8\x2f\x29\x16\x9a\x96\xd4\x08\xde\x6d" - "\x08\x75\x2f\x17\xa1\x1d\xd2\xee\xb5\xbb\x7c\x74\xb7\x5d\x8d\x45" - "\x6d\x9b\x5c\xd7\x59\x1a\x42\x80\x75\x15\xc3\x3a\x8c\xfa\xe1\xd2" - "\x46\xd8\xa7\xf6\x7a\x1f\xb5\xc8\x33\x03\xc8\x73\x5b\xe1\x2a\xfa" - "\xce\x49\xb2\xfb\xa4\x6d\xef\x69\x4c\x63\xbd\x80\xb4\x54\xa4\x75" - "\x89\xd2\x46\x1b\xca\x63\x7d\xdc\xe0\x53\xb6\xae\xbd\xcb\x28\x87" - "\xe7\x66\x7e\x8e\xe2\x21\x79\xaa\x41\x18\x2f\xfb\xc0\x61\x48\x82" - "\xce\x56\xc6\xbf\x54\xfc\x65\xc6\xcf\x1e\xd0\xeb\x6f\xe7\xc0\xee" - "\x22\xe7\x1a\x1a\x8d\xf1\x01\x7e\xd7\xcf\x77\x3a\xc4\x09\xe1\xb6" - "\x07\x77\xad\x0a\x62\x5d\x70\x7d\x81\x8f\x5e\xee\x18\xdc\x7e\x86" - "\xdd\x73\x5e\x74\x6e\x59\xde\x4f\xcb\xe3\xb3\x57\x6a\x82\x9f\x59" - "\x2f\x55\x23\x9d\xe9\x06\x38\x7b\x0c\x9a\x0d\x3e\x2e\x8d\xa9\x6a" - "\x1d\x78\x43\x9a\x70\x0b\x6a\xbe\x96\xcf\x0f\x6e\xb8\x46\xd1\xe1" - "\xed\xce\x6e\xe8\x13\xde\x1f\xad\x06\xbd\x97\xda\x44\xb0\xc7\x7d" - "\x03\xec\xff\x5b\xca\xf5\xbd\x98\x80\x37\x34\x8d\x75\x4c\xdc\xf9" - "\x8b\xcf\x67\x06\xe0\x7f\x6f\x42\xeb\x68\xe8\x23\xa9\xa3\x9a\xc6" - "\x94\x28\xbc\x83\x0c\xb7\xb9\xe4\x2c\x75\x20\x7f\x69\x40\x74\x0a" - "\x4f\x93\x8d\xd7\x1a\xcd\xcb\x7b\x39\xed\x4e\xf0\xb6\x68\x5e\xc2" - "\x38\x7d\xef\xce\xe6\x6b\x7b\xe9\x04\xd6\x79\x58\xe3\xf9\xd5\xbe" - "\xcc\xf7\xec\x07\x8a\x48\xdf\xeb\xb9\xa1\xc6\x47\x63\x73\x0c\xbc" - "\xd8\xde\x00\x7d\x99\xd6\x6d\x6c\x77\xf0\x9e\xfb\xd2\x62\x11\x64" - "\xfb\x03\x65\x0f\x19\x7d\xe0\xfe\xe9\xfd\xf2\x45\xf6\x0b\x38\xf8" - "\xb1\x66\x96\x34\x58\xba\x92\x2c\x76\x45\x6b\x0b\xf7\x97\xfb\xc2" - "\x7d\x96\x7d\x91\xba\x16\x73\x45\xe8\x4e\xac\xc1\x64\x3a\x60\x7d" - "\x0f\xeb\x9f\x5b\x02\x8a\xa7\x6e\xa8\x89\xe5\xa3\xfe\x71\xb4\xd4" - "\xd6\x3b\x2f\xd0\xb5\x4e\x4d\xb4\x03\xe6\x3e\xd0\x29\x91\x7f\x35" - "\xb6\xb9\x83\xcc\xbf\x1f\xfa\x78\x6e\xf6\x16\x9f\x63\x5b\x9b\xcb" - "\x5e\x8d\xb2\x1d\x28\xf3\x2f\x7a\xd9\x7f\x51\xe7\x2d\xf2\x77\x18" - "\xff\x62\x3e\x7b\x07\x78\x34\xfb\xe5\xbc\xff\x5b\x9f\xf1\x2e\xf0" - "\x8e\x5f\x87\x28\xfd\xd0\x17\x1f\x97\xba\x7a\x9e\xd7\xc2\xe7\x45" - "\x17\xda\xf9\x16\xf3\x94\x73\x25\x7d\x1b\x7c\x79\xbc\x64\x0d\x5d" - "\xcd\xfc\x24\x92\x1a\x47\x2b\xba\x8f\x49\x11\x6e\xd8\xa1\xd0\xaa" - "\x85\xcb\xe9\x3b\x90\xa3\xb4\x93\x34\xe6\xfa\xdc\x62\x3b\x70\x25" - "\xda\x72\x9a\x48\xea\xa0\xa4\x46\x9b\x37\xf4\x05\x55\x9f\xe6\xfd" - "\x96\x31\x99\x06\x2f\xe2\x39\xeb\x52\xfa\x02\xf3\x4d\xba\xda\x2f" - "\x18\xb3\x8f\xf7\xd7\xdb\x69\x4c\x1d\xf7\x17\x7f\x09\x48\x7b\x43" - "\x9c\x17\x73\x85\x9c\xdb\x76\xd9\x7c\x34\xe6\x08\x7e\xd3\xe5\x9f" - "\x9b\xe6\xe9\xef\x36\x94\x5b\x2f\xce\x6b\x5c\x26\x1d\x69\x55\xc2" - "\x9d\xc0\x32\xd1\x84\xb6\x0f\xfa\x68\xf2\x44\x35\x36\x63\x2a\x18" - "\xd6\x20\x38\xd8\x30\xb6\xc4\xbc\x79\x82\x6e\xbc\xcd\x5e\x92\x00" - "\x3c\x6e\x1c\x22\xe5\x02\xb0\xaa\x4d\x4a\x6f\x6b\xc0\x75\xa7\x5b" - "\xcb\x87\x8e\xce\xd7\xca\xf6\x65\xca\x67\x3d\x4f\xe8\xf3\x69\x7c" - "\xf8\x4d\x63\x9a\x47\x31\x8f\xdf\xb8\x51\xc1\x69\xb2\x35\x8f\x3a" - "\xc9\xef\x9b\xf8\x3d\x60\xf9\x38\xd3\x5b\x99\x89\xf6\x4f\x72\xbb" - "\x1b\xd5\x3e\xc0\x8d\x9b\xba\xd1\x46\x8f\xfb\xc6\x8d\x3e\x1a\x97" - "\xa7\xce\x1a\x3e\xce\x1c\x44\xf6\x52\x59\x76\x58\xe6\x94\x4c\x7f" - "\x7f\xe6\xe1\x1a\x96\xbf\x5d\x96\x6e\xcb\xae\x74\x5d\x6f\xf0\xde" - "\x4a\x4a\x3b\x7d\x3f\xeb\xb0\x4d\xf2\xb7\x49\x98\x6e\xec\x7a\x57" - "\xf3\x9b\xf8\x3c\x48\xa9\xaf\xef\x67\x5d\xfc\x77\x13\x14\xe0\x4d" - "\x19\xf8\x9b\xa4\xbf\x4f\xc7\xdf\x5c\xfc\xed\xc6\xfb\x24\x49\xbb" - "\xed\x79\x09\x3e\xe4\x75\xc3\x7e\xe7\x77\x1f\xdd\x94\x2e\xb6\x8f" - "\x31\x09\x8b\x7a\xae\xfe\x36\xef\x25\xdc\x34\x07\x63\x70\x4c\x8d" - "\x05\xc3\xa1\x04\xe0\xc6\x74\x17\xce\x4a\x11\x6c\x29\x09\x00\xef" - "\x9b\xd6\xb7\x54\x06\xc8\x7e\x13\xf7\xff\x26\x0f\xf7\x29\x00\xfa" - "\xf3\xef\xd2\x4a\xe1\x3f\x50\x15\x22\x3e\x97\x02\x2c\xc8\xff\xcf" - "\xa6\xaa\x7d\x89\xa6\x4c\x86\xa7\xf3\x84\x30\xfa\xaf\x74\xda\xc7" - "\x99\x3c\x96\x80\xf5\x19\xfa\x6e\x3d\x4d\xdf\xbf\x46\x24\xef\xcb" - "\x3c\x90\x4f\xb4\x03\x7a\x04\x73\x8d\xdc\x2f\x87\x5e\x62\x98\x98" - "\xff\x6f\x9c\x64\x9c\xa3\x6c\x42\xfe\x66\xe4\x61\xee\xf1\x1f\xce" - "\x0f\x12\xc3\x0a\x73\xff\x50\x7f\xbf\xe6\x37\x63\xae\xc6\x98\x7f" - "\x9c\x59\x52\x08\x3d\xd3\xaf\xb7\x6e\x6a\x5a\x73\x4a\x04\x8d\xfe" - "\xf1\x59\x65\x8f\xfb\xfb\xe0\xff\x45\xf3\x06\xe5\xff\x7e\x9c\xd3" - "\x17\x1d\x18\xa3\xc6\x4c\x03\x5d\xa2\xc7\x2c\x3d\x5f\x8d\xd7\xf7" - "\xab\xa2\xc7\x2b\x1d\x3d\xf9\x7e\x07\xfe\x42\x78\x4e\x51\xef\x91" - "\x7f\xdf\x3f\x12\xf1\x0e\xee\x48\x9f\x03\x7c\x30\xff\x8f\xc9\x51" - "\xe3\xc0\xe9\xe8\x07\xf3\xc8\x57\x64\xe1\xfd\x39\x3e\xa7\xe4\x74" - "\xe6\x67\x4e\xd7\x60\xcf\xa0\x3f\x7e\xe4\xa7\xb2\xac\x6e\xd1\x28" - "\x2a\xdf\xbb\x1e\x3c\xb7\xaa\x97\xf1\xbf\x4f\xee\x29\xae\xf5\x78" - "\x98\x4f\x51\x27\x60\x0d\x79\x60\x57\xa6\x67\x19\x74\x45\xbd\x09" - "\x9c\xcf\x3c\x89\xf4\x3c\xd0\xa5\x46\x9e\x43\x62\xed\x17\xdf\xd6" - "\x48\xf7\xf4\xdb\x64\x96\x5d\x1e\xd6\x47\x5d\x74\x73\x05\x74\x16" - "\xc6\x76\xdf\x44\x35\xd7\xdc\xfc\x06\xbf\x43\x57\x1e\xc7\x73\xf9" - "\x61\xe8\xa4\xde\xb2\x06\x57\x9f\x89\x86\xf5\x9a\x28\x33\x54\xf6" - "\xe5\xee\x50\x72\xfd\x46\x6f\xe7\x1e\x6a\x0d\xbd\x4f\xf6\xe7\x24" - "\x8c\x52\x2f\x7a\xee\x5c\x29\xc2\xef\xf5\xd6\x9b\xbd\xa1\x33\xcd" - "\x98\x9b\xaf\x3b\x49\x37\x4b\x7a\xbc\xd2\x8e\x59\xff\x69\x09\x5b" - "\xa7\xcf\x97\x9e\xcd\x0b\x45\x68\xf3\x09\x11\x80\x7d\x97\xbc\xa9" - "\x97\xc6\x6e\x5b\x45\x19\x55\xbd\x34\x66\x67\x2f\xa5\x8b\x2f\xd3" - "\x4d\x55\xb0\xdb\x9e\x3e\x97\x4a\xd0\x09\x39\xc3\x0b\xc9\xb2\x73" - "\x15\x49\x1e\x09\x97\xc2\x7e\x0b\xc1\x7e\x3b\x93\xce\xba\xb1\xdf" - "\x7e\xeb\x93\xb6\x71\xe3\x7a\xc5\x47\x8d\xeb\xaf\xcc\xa7\x84\x94" - "\x79\x94\x0a\xfc\x9c\xa7\x29\xfd\x8f\x29\x1d\xb0\x1d\xd1\x67\x9f" - "\xde\x5f\xd0\xee\x98\x35\x9f\x86\xc9\xbe\x42\x5f\x8b\xd2\x7d\x13" - "\x07\x9d\x87\x4d\xcc\x53\x01\x96\x1b\xee\xc3\x71\x3e\x2b\xdd\x33" - "\x2a\x68\x5e\x5a\x25\x82\x9c\x5e\x74\xbd\x08\x22\xfd\x20\xb7\xdd" - "\x80\xf4\x1e\xf7\xcd\x7e\x9f\xa9\x6a\xee\x60\x3c\x8a\x75\x92\xae" - "\x57\x6e\x79\x49\x98\x5c\xcc\xa3\x07\xd7\x84\x60\x7f\x9f\x66\x99" - "\xbd\xa5\x70\x76\x81\x08\xd9\x17\xf3\xb9\xf5\x2d\xf3\xf8\x4c\x9d" - "\xcf\xd2\xde\x85\x6d\xf3\x75\xe7\xe8\x3c\x5f\xf0\x7a\xc1\x5a\x00" - "\x98\x65\xbb\x0e\x0a\xac\xd3\xbf\xa9\x1d\xcf\xbe\x1c\xaf\x4b\xbf" - "\x91\x5b\x76\xfb\xe8\x27\x66\xc6\x9d\xcf\x4c\x59\x77\xc2\xde\xba" - "\x1a\x78\x75\x06\x40\x07\xe4\x63\xfe\xff\x71\x9b\x7e\xee\x29\xfd" - "\x51\x90\x86\xf9\x7f\xc6\x68\x4e\x2b\xba\x9e\x6c\x45\x76\x31\x98" - "\x4d\x63\x96\x3e\x22\x26\xfa\x56\x8f\xfb\x9f\xd2\x0c\x38\x98\xa7" - "\x7e\xd9\x6d\x7a\xf4\x51\xa4\xa5\x1b\x70\x50\xe6\x1a\xbc\x4f\xec" - "\x2f\xa3\xea\x4c\x8f\xa8\xf3\x68\xb7\xe9\x96\x5f\x22\x6d\x6e\x4c" - "\x9d\x82\x98\x3a\xc5\x11\x75\x5c\x7a\x3b\xe5\x31\x75\x6a\x62\xea" - "\x34\xc4\xc1\xad\x25\xa6\xce\xd1\x98\x3a\x1d\x71\x70\x0b\x46\xd7" - "\x19\x6b\x89\xae\x33\xd6\x16\x41\x4b\xf6\xd7\xc8\x40\xda\xd8\x98" - "\x3a\x93\x62\xea\x64\x19\xef\x83\xf9\xe4\x2c\xdd\x41\x36\xf0\x66" - "\x27\x8f\xe7\xeb\x18\x9f\xee\x37\x9f\xef\xd1\xeb\x7a\x2e\xee\xd7" - "\xd8\xaa\x98\xf6\x76\xc7\xb4\xd7\x74\x71\xbf\xc6\x1e\x89\xa9\xe3" - "\x8b\xa9\xe3\x8f\xa8\x53\xa3\xda\x19\x67\x8e\xae\x33\x2e\x2d\xba" - "\xce\xb8\x31\x17\xf3\xd5\xb8\x89\x31\x75\xa6\xc7\xd4\xc9\xf9\x1a" - "\x5a\xf0\x3c\xae\x7c\xa7\x46\xb2\xad\x7c\x3f\x6c\x84\x71\x9f\xb2" - "\x4f\xc0\x16\xb4\xb1\xab\x37\x38\x84\xcf\x3f\x78\xbe\x3a\xe0\x08" - "\x62\x6e\x19\x87\xf5\xcf\x1d\x76\x63\xce\x62\x7f\x09\x96\x69\x65" - "\x63\x8f\xf3\x0c\x66\x8b\x72\x3b\x86\x2f\x15\xb7\x75\x60\x34\xcf" - "\x53\xe3\x02\xfd\x36\xb1\xf2\x2f\x22\x05\xe7\xd6\x19\x0c\x87\xdb" - "\xaf\x56\x7e\x18\x09\x6c\x93\x1f\x70\x70\x9d\x5b\xd3\x23\xec\x68" - "\x6e\x3f\xb0\x67\x55\xd0\x1c\x8d\xc7\xad\x96\x4b\xe0\x91\x02\xdb" - "\xc8\xd2\x5a\x45\xc4\x67\xcc\x87\xab\x60\x03\xc1\xee\x67\xdc\xda" - "\xe9\xd6\x72\x69\x93\x2d\xee\x25\x7e\xf6\x16\xdf\x2d\xcf\xa0\x95" - "\x4d\x7a\xeb\xc1\x16\xb4\xcf\xb6\x7b\x4b\xe1\x59\xea\x96\xf3\x2f" - "\xdb\x6e\xb7\x9e\x3b\x50\xec\x67\xbc\x9a\x0d\xff\x0c\x1f\xdd\x1a" - "\x90\xb6\x86\xa7\x49\x9e\x8f\xf3\x99\xd1\x81\xc0\x44\x2e\x03\xfe" - "\x1f\x77\xc8\xe8\x2f\xe6\x7a\xf0\xc0\xad\x55\x97\xa2\x99\x1a\xc3" - "\xf1\xa3\xa3\x79\x72\x08\x78\x65\x7c\x46\xf4\xb8\x8f\xcf\x8c\x1e" - "\xf7\xf1\xd9\xd1\x3c\x69\x02\x4f\x8e\xcf\x8b\xa9\x53\x14\x53\x67" - "\x7d\x44\x9d\x72\xbd\x9d\xca\x98\x3a\xf5\x31\x75\xf6\x46\xbc\xa3" - "\x8f\xe3\x0f\xf6\xaf\x7d\xa4\xef\xcf\xf8\xb6\x88\x77\x53\x85\xd4" - "\x9f\xe3\xbb\x8c\x34\xde\x43\xda\xb9\x55\xf9\x9e\x28\x78\x19\x96" - "\x18\x79\x47\xf9\x8c\xd1\xd1\x38\x64\x8c\x8d\xc6\x21\xa3\x5f\xfe" - "\xb7\xa8\xb5\xdb\xef\x4f\xd0\x6d\x69\x92\x87\x20\x23\x98\xb3\x67" - "\xf3\x3b\x60\x55\xa2\x3c\xe8\x90\x51\x10\x03\xaf\x38\x06\xde\xc6" - "\x88\xf7\x54\xbc\x57\x45\xf4\x21\x35\xd1\x26\xfd\xf8\x60\xbf\x65" - "\xec\x31\xd2\x79\x4d\x09\x7c\x3b\x9d\x72\xae\xc9\x64\x9f\xaa\x11" - "\xed\x94\x51\xcb\xeb\x4f\x1d\x66\xa4\xfc\x93\xde\xaf\x40\x34\x1e" - "\xb7\x99\xa3\xf1\xb8\x2d\x2d\xa2\x5f\x01\xeb\x5a\x7a\xc8\x1a\x7a" - "\xf8\x71\xb6\x7d\xd8\x17\x4e\xfa\x36\xad\x81\xcd\x76\x8e\x52\xd9" - "\xa7\xec\x44\x11\x25\x7a\x1d\x9d\x58\xcb\x35\xba\x06\xe5\xa7\xe4" - "\xa6\x54\xdd\x2f\xcf\x0e\xf8\x45\x06\x3f\x6a\x65\x4d\xa9\x5a\xe9" - "\xde\xb1\x48\x83\xfe\x1b\x4f\xca\xce\xfd\xc8\x21\x9c\x39\x95\xa0" - "\x27\xd6\x45\xb7\x2f\xd3\xd7\x11\x63\xd8\x37\x0a\xba\xa7\x13\x73" - "\x7c\x8a\x3a\x1b\xbf\xad\x29\x82\xaf\x03\xf6\x55\xf7\x8a\x76\xba" - "\x7d\x2d\xdb\x00\x2c\xa3\xec\x63\x75\x20\xe4\x27\x5e\x7b\x7b\x43" - "\x27\xa5\xed\x86\x7c\x97\x5e\x37\x18\x51\xd7\xaf\xaf\x8d\x79\x1e" - "\x35\x8f\x0f\x91\xf9\x40\xc0\x4f\x80\x93\xa6\xec\xbd\xdb\xd7\x1e" - "\x80\xbc\xf6\xb8\x6f\x1f\x6b\xd4\xe1\x75\x34\xd7\xb1\x16\x91\xf9" - "\xd6\x62\x32\x37\xaf\x6a\x97\xb0\xf5\xb1\xef\x84\x2d\xdd\xe5\x2d" - "\xee\x24\x6f\xa0\x8d\xf7\xba\xcc\xca\x4f\xe5\x76\x57\x62\x90\x2c" - "\xdd\xa5\x4d\xb0\x2b\x6f\x77\x85\x4b\x9b\x78\xbd\x64\xf7\xd1\x6d" - "\x75\xac\x6f\x22\x69\x37\x6d\x5a\xf6\xc3\xb3\x67\x8e\xfb\xe9\xc3" - "\x33\xe6\x4c\xbb\xdb\x3e\x67\xd1\x0b\x0b\xf2\xc6\xbd\xb8\xac\xc8" - "\xbe\x62\xc9\xa2\xa2\x45\x8b\x7f\x66\xcf\x70\xdc\xe8\xb0\xcf\x2f" - "\x52\xbf\xe9\x05\xf3\x97\x16\x4d\xe6\xc7\xb1\xf6\xc2\x25\x0b\x96" - "\xcb\xc7\x9b\x93\x29\x1a\xc8\xa2\xa2\x05\x4b\xec\x37\xe6\x8d\xb5" - "\x3f\x30\x7f\x51\xc1\xb2\x25\x0b\xe2\xc2\xba\xdb\xbe\x64\xc1\x92" - "\x05\xf3\xf3\xec\x93\xed\x19\x0c\x39\x12\x5c\xc4\x78\x66\x18\xf3" - "\x18\xcf\x5f\x5b\xdc\xe2\x88\x3e\x9f\xf9\x14\xff\xdc\x31\xe7\xe2" - "\xb9\xec\x8e\xfc\x68\x9e\xbb\xc3\x11\xcd\x73\x77\x78\x2e\x9e\xcb" - "\xee\x88\x99\xff\xee\x88\x99\xff\xee\x68\xba\x78\x2e\xbb\x23\x66" - "\xfe\xbb\x23\x66\xfe\xbb\xa3\x7f\xfe\x03\x2f\xf9\xd6\x49\xbd\x30" - "\x21\x66\xfe\x9b\x10\x33\xff\x4d\x18\x13\xf3\x3e\x21\xe2\xfd\x6a" - "\xbc\x4f\x8d\x9c\x1f\xf1\x3e\xc7\x90\xcf\x01\xfd\x32\x21\xdf\x28" - "\xc3\xba\x1e\xba\xb9\x43\x2f\xeb\x8a\x28\xdb\xa9\x97\xad\xe8\x97" - "\x3f\x3e\xfb\x46\xba\x5a\xaf\x4f\xb8\xc0\x3a\x9d\xfd\xd0\x78\x6e" - "\x82\x7c\x5c\x77\x9a\x26\xbc\xc4\xb0\x98\x87\xd9\x2f\x51\xbc\xf9" - "\x64\x4f\xf5\x08\xb2\x70\x9d\xea\xd7\xc8\x2c\xdc\xb7\x6f\xc4\x2f" - "\x21\x2d\x05\x7f\xd0\x29\x13\x60\xff\xee\x18\xab\xe6\x8b\x3b\x33" - "\xa5\xcd\x8f\x3a\x0a\xfe\x9d\x72\x5d\x03\x38\x36\xd4\xb1\x6c\x51" - "\x73\x71\x07\x9e\x53\x98\xa7\x51\xdf\x2c\x4c\xb7\xff\x07\x7e\x09" - "\x69\xa9\xf8\x4b\xeb\x71\xdf\x99\x69\xc0\xe3\x33\xf2\x78\xf2\x1f" - "\x6b\xe7\xf6\xaf\x07\x4d\x64\xdd\xe2\xd6\xda\xbc\x1a\xdb\xd6\x77" - "\x16\xa9\xbd\x85\x86\x1a\xe1\xfe\x24\xa7\x1a\xe9\xf1\xd7\x49\x77" - "\xc2\xfe\xbb\x33\x5f\xed\xb7\xdc\x89\xf1\xff\x49\x85\xda\x3b\x6d" - "\xa8\x81\xbe\xed\x3d\x41\x3f\x78\x14\xbf\x7d\xf8\xbd\xcb\x80\xdf" - "\x2c\xd7\xdb\x77\x1e\x15\xee\x84\x47\x18\x6e\x4c\x7a\x17\xf4\x5b" - "\xaf\x35\xe4\xca\xb9\x38\xef\x07\x58\xc3\x24\x3e\x1c\x27\xdd\x0e" - "\x9b\xa1\xd7\x47\x3f\x98\xc3\xf8\x46\xa4\x4f\x14\xee\xe1\x73\xb8" - "\xbc\x8f\xdb\x43\x9d\xc1\x6c\x6d\xc3\xef\x54\xf9\x89\xff\x60\x7d" - "\x4c\x3f\x2e\x9c\xa0\x1f\x26\xa8\x7e\xfc\xf0\xa9\x98\xb6\xab\xe2" - "\xf7\xe3\x07\x7b\xd0\x8f\x0b\x83\xf4\xe3\x88\xa4\xad\x09\x7d\x31" - "\x5d\x94\xc7\xf6\xcf\x05\x49\xf7\xa8\xf4\x1f\x9a\x75\x5b\x28\x80" - "\x75\x58\x2a\xf2\x64\xdd\x47\x8a\x07\xc6\x4d\x2f\x37\xd6\x5a\x49" - "\xd9\x17\xb7\xf9\xc3\xa9\xc2\x3d\xec\x11\x1f\xfd\xb0\x58\xc2\x19" - "\x48\x9f\xab\x70\x01\x9d\x4c\x4c\x27\xf4\x07\xf5\x06\x1b\x6f\x63" - "\x5d\xa2\xf6\x42\x7e\x08\xf9\xff\xc1\x3c\x63\x2f\x73\x69\xb1\xf0" - "\x1b\x74\x44\xde\xc1\x98\xbc\x60\x44\x5e\x47\x54\xde\x9a\xfe\xf4" - "\x90\x91\xfe\xcd\xc6\x69\xe2\xd8\x98\x71\xc2\xf8\x4c\xdc\x1f\xdd" - "\xef\x89\x93\x54\xff\x30\x46\x17\xd1\x7a\x62\x0e\xc6\xa8\x2f\xfe" - "\x18\x4d\x2c\x8a\xcf\x6b\x13\xe5\x3e\x9a\x18\x41\xf1\xe0\xd5\x63" - "\xec\xfa\x24\x0f\xea\xe3\x74\xf1\xf8\x4c\x3c\x64\x8c\xcf\x37\xeb" - "\xe3\x5d\xa9\x31\x7d\x0c\x9f\xa0\xbb\x36\xa9\xbe\xde\xf5\x79\x34" - "\xec\xbb\xd2\xe3\xf3\xe2\x5d\x99\xe8\x67\x38\x7e\x3f\xef\x9a\x3b" - "\x38\x2f\xde\xe5\x40\x7f\xc2\x17\xf3\xe2\x5d\xca\x87\x49\xe7\xc1" - "\x98\xbc\xdd\xc2\x1d\xb7\x9d\x16\x67\x88\xed\xdc\xbb\xf8\x2c\xc5" - "\x16\x91\x7e\x2c\x9a\xff\xd0\x07\xae\xc7\xf4\x0b\x29\x3d\xcb\xe3" - "\x70\xc2\x4e\xa6\xaf\xe3\xc9\x1e\xf7\xdd\x93\x62\x68\x75\xe6\x04" - "\xdd\xbd\xbf\xdb\x94\x50\xa7\xe8\xf5\xa3\xb5\xd1\x38\xdd\x9d\x13" - "\x9f\x5e\x77\x17\x82\x5e\x67\xe2\xd3\xeb\xee\x8d\x83\xd3\xeb\x6e" - "\x1e\xff\x33\x17\xd3\xeb\xee\xe6\x48\x7a\xc1\xd6\x95\xfd\xfb\x9e" - "\x0d\xbc\xd1\x97\x2b\xaa\xb9\xaf\x61\x4a\xb5\x82\x57\x54\x9d\x2e" - "\xae\x13\xb0\x06\x15\x9f\xc0\x86\xb4\x9c\xa6\xbb\x8f\x19\xf2\x3f" - "\xbc\x92\x86\x89\xbe\x27\xd9\xa7\x28\x81\xeb\x79\x1d\x67\x9a\xbd" - "\xa1\x0c\xe2\xf5\x47\x74\xbb\x3f\x9a\x18\x5f\x17\xfc\x28\x1b\x34" - "\x7d\x2d\x4e\x7a\xbe\xf2\x27\xfb\x51\x4d\xb4\x8e\xf8\x91\x2b\x7a" - "\x8c\x40\x37\xd4\xa3\x81\x3b\x38\x97\xfc\xbb\xf4\x98\xfd\xc8\x7f" - "\xf1\x98\x4d\x7a\x55\x8d\xd7\xa4\x97\xa2\xf1\x9b\x64\x89\x3f\x5e" - "\x93\xec\x83\x8f\xd7\xa4\x49\x83\x8f\xd7\xa4\x1c\x1e\x2f\x1f\x4d" - "\x2a\x8f\x9e\x37\x26\x15\x46\xf7\x77\x92\x94\x61\x61\x1a\x7a\x35" - "\xbf\x7f\xd3\x7e\x1b\x7f\xac\xe3\x78\xac\xaa\x4b\x08\xbc\x9c\x70" - "\x3d\xe3\x78\xb9\x30\x06\x85\x0d\x1a\x96\xaf\x8a\x7f\xde\xca\x6b" - "\xdc\xd6\x4a\x22\x3e\x47\xb6\x5f\xcb\xb6\xfb\xe4\x05\x9a\x89\xda" - "\xf0\x6c\x3a\x41\xf7\xde\xa6\x99\x4c\xc5\x7c\xe6\x29\x7d\xb7\xe5" - "\x1e\xc2\xe4\xe2\xc8\xb1\xe0\xb3\x4f\x5e\x9b\x6e\x56\x6b\xa7\xbf" - "\x9c\xa0\x7b\x86\xa8\x71\xb9\xf7\xaa\x68\x3a\x4e\xae\x89\x3f\x2e" - "\x93\xf7\x62\x5c\xfe\x12\x7f\x5c\x26\x1f\x1d\x7c\x5c\x26\xfb\x31" - "\x2e\x7f\xb9\x58\x8e\xee\xb1\xe8\x72\xb4\x8e\xeb\xd8\x17\xf3\x7a" - "\xfc\x9e\x95\x5c\x06\xcf\x90\x91\x7b\xe6\x73\xfe\xb8\x2e\x43\x8e" - "\x64\x9d\x49\x80\x25\xdb\xd7\xcb\x4c\xd4\x61\x44\xc2\x9d\x67\xed" - "\x8a\x27\x27\xf7\xf0\x1d\xf2\x84\x5b\x0b\xc9\x02\x1a\xe6\xec\x60" - "\x18\x4b\x88\x00\xe3\x30\x97\xe3\x74\xac\xf0\x23\xe4\xe4\x9e\x7a" - "\xa3\x1c\xeb\x3a\xbd\x6c\x8d\xe8\xc9\xe7\x9d\x80\xd8\x36\xf5\xfe" - "\x0f\x93\xf3\x08\x97\xe7\x72\x31\x65\x82\x4a\x1e\xef\x9d\x14\x2d" - "\x8f\xf7\xa6\x46\xf3\xe7\x64\x49\x27\x0d\x7a\x0e\xcf\x79\xc0\xe1" - "\x1b\xf3\xd7\xa5\x65\xf3\xde\x8d\x31\xb2\x09\x1e\xc8\x1c\xa7\x78" - "\x20\xf3\xca\x68\x5c\xef\xad\x8b\xcf\x03\xf7\x36\x0d\xce\x03\xf7" - "\xb6\x0d\xce\x03\xf7\x06\x98\x07\x7c\x94\x39\x36\x5a\x36\x33\x53" - "\xa2\xfb\x8e\x76\xa5\x6c\xd2\x55\x97\x23\x9b\xb0\x85\xae\x1e\x4c" - "\x0e\x59\xa6\xd8\x87\xa4\xba\xd7\x38\xeb\xf8\x46\x34\xb3\x40\xae" - "\x18\xbf\x66\xde\x53\x82\x8e\x9f\xc8\x34\xdc\x29\xef\x06\x66\x1e" - "\x8d\xa4\xe3\x66\x75\x7f\xcd\x79\x82\xee\x7b\x9c\xcf\x95\x15\x3d" - "\xef\xbf\x3e\xba\xff\x99\x81\xf8\xf4\xbc\x2f\x05\xf4\x74\xc6\xa7" - "\xe7\x7d\xe9\x83\xd3\xf3\xbe\xa9\x7c\x37\xe8\x62\x99\xba\x6f\xae" - "\x7d\xb9\xb4\x51\x64\x9d\xd3\x74\xdf\x07\xdf\x6c\x7e\xba\xaf\x22" - "\x7a\x7e\xba\xaf\xf8\xf2\xe7\xa7\xfb\xda\xe2\xcf\x4f\xf7\xf9\xe3" - "\xcf\x4f\xf7\x5b\x94\x3c\xdc\x9f\x19\x2d\x0f\xf7\xdb\xa3\x79\x22" - "\x33\xf0\x3f\x37\x3f\xdd\x5f\x1e\x23\x03\x5b\x4e\xd0\x94\xab\x60" - "\x53\xb8\xd4\xb8\x4d\xf9\x2c\x06\xc7\xdd\xf1\xc7\xed\xfe\x16\x8c" - "\xdb\x96\xf8\xe3\x76\xbf\x6f\xf0\x71\xbb\x3f\x84\x71\xdb\x72\xf1" - "\xb8\x4d\x49\xbb\x7c\x9b\x62\xca\xf4\xe8\x31\x9b\x92\x71\xf9\x63" - "\x36\x65\x63\xfc\x31\x9b\x52\x17\x7f\xcc\xa6\x34\xa9\x31\x9b\x12" - "\x88\x1e\xb3\x29\x47\xa3\xc7\x0c\x74\xfb\x3b\xc7\x0c\xe3\x53\xa7" - "\xfc\x13\xa6\x3e\x8a\x75\xfb\xb0\x1e\xf7\xd4\x2c\x1f\x4d\x4b\x53" - "\x6b\xeb\x69\x6a\xee\x50\x63\xf8\x1e\xca\x64\x5e\x3c\x0f\x4c\xcd" - "\xd7\xd3\x7e\x7a\xf1\x38\x4c\x5d\x0f\x1d\xdd\xd5\x52\x2c\xcf\xb6" - "\xd4\x18\x32\xcd\x51\xae\x79\x15\x9f\x4f\x4d\x95\xfe\xeb\x18\x63" - "\xe1\x0d\x86\x88\xf5\x3a\xca\x07\x18\x0e\xdf\x89\x8c\x81\x75\xe4" - "\x72\xe6\xf8\xc1\x7d\x6a\x1a\xea\x9a\x4b\x6e\x07\xbc\x69\x5f\x28" - "\x5e\x9d\x16\x6b\xff\x56\x23\x6f\x9f\xe2\xd3\x1f\x6f\x88\xc6\x61" - "\xda\x9c\xf8\x7c\x3a\xad\x00\x7d\xa8\x8e\xcf\xa7\xd3\x3c\x83\xf3" - "\xe9\x34\x8c\x3f\x55\x47\xac\x7d\x46\x3c\x1d\xf2\xc5\xac\x7d\xa6" - "\x1d\xb4\x06\x14\xef\x48\x9b\xa8\xb4\xa1\x0e\x38\xc7\xda\x7f\x18" - "\x9b\x07\x5e\xd0\x71\x5e\x10\x5d\xff\x81\x41\xec\xbf\x07\xd8\xfe" - "\x7b\x2f\x3e\xce\x0f\x5c\xc2\xfe\x7b\x80\xed\xbf\xf7\x2e\x96\xad" - "\x07\x74\xfb\x2f\xde\x1a\xef\x81\x8d\xf1\xc7\xff\x81\x98\xf1\xa7" - "\x9c\x22\xac\x87\x65\xfd\xe8\x72\x87\x22\xcb\xb1\x6f\x12\x97\x65" - "\x1e\x89\x53\x36\x18\x0b\x33\x7e\xb9\x1f\xdb\x2f\xe2\x3d\xf6\xa5" - "\x8a\xcb\x7b\x3f\xce\x52\xf2\xf8\xe3\xba\x68\x79\xfc\x71\x5e\xb4" - "\x3c\x3e\x10\x33\x76\x3f\x5e\x1f\x9d\x0f\xfe\xf9\x1f\xd3\xb1\x3f" - "\x0e\xc4\xf0\xc0\x27\x27\x68\xfa\x4b\x8a\x07\xa6\xff\x31\x1a\x8f" - "\xe9\x29\xf1\x79\x60\xfa\x18\xf4\xff\x93\xf8\x3c\x30\x3d\x73\x70" - "\x1e\x98\xce\x3e\x3e\x9f\x44\xf2\xed\x23\xc5\x99\xc3\x62\xca\xb8" - "\xe2\xeb\xbc\xe9\x95\xf1\xf7\x08\xa6\x37\x28\x1a\x4f\xef\x8c\xa6" - "\xf1\xf4\x83\xd1\x34\x44\x5f\xfe\x7e\x1a\xf6\xc7\x26\xe8\x71\xcf" - "\x88\x95\x7f\xef\x09\x9a\xa1\xcb\xff\x83\x8d\xd1\x38\xce\x98\xa3" - "\x70\x89\xb7\x2f\x32\x83\xd7\xbf\xde\xf8\xb4\x9c\xb1\x31\x7e\x9f" - "\x67\xd4\x61\x0e\xf2\x6a\x17\xc9\xd2\x8c\x26\xa4\x3f\xc2\xfb\xa1" - "\xbc\x1f\xb2\x13\xe9\x8f\x84\xc8\x22\xe7\xab\xfe\x79\x69\x86\x8f" - "\x7d\x51\x98\xfe\xcc\xbf\xd6\xd1\x94\xcd\x73\x10\xe3\x95\x5b\x2c" - "\xfd\x16\xac\xeb\x99\xd7\x6f\x60\x5e\x7f\x50\xda\x7f\x7c\xce\xc2" - "\x7e\x84\x56\x07\x65\x7b\x03\x21\x32\xf8\x9d\xcb\x47\xc3\x7e\x70" - "\x12\xcb\x05\x97\x37\xca\xaa\x7d\x33\x57\x0c\x7f\x3f\x98\x17\x7f" - "\x8c\x1f\x2c\x1e\x9c\x77\x1e\xac\x54\xe3\xfc\xe0\xa1\xe8\x71\x7e" - "\xb0\x41\x73\x0f\x9f\xc3\x7d\xf5\x81\xce\x97\x33\xc6\x45\x76\xe1" - "\x1f\x54\xdf\xaf\x7b\xb2\xad\xb0\x84\xae\x3d\x49\x3f\x99\x20\xdb" - "\x33\x89\xa0\x75\x6d\x02\xb5\x48\x1d\xf0\x93\x52\x89\x27\xca\xe4" - "\x86\xc8\x24\xd6\x3d\xdf\xc6\x79\xd5\x6e\x11\x44\xb9\x23\x7c\x26" - "\xc0\x77\x8a\xc1\x0b\x57\xb7\xd3\x4f\x66\x46\xd5\x37\x13\x79\x15" - "\x0c\x4f\xb5\x94\xc7\x9f\xac\x37\xf6\x74\xd7\xe3\x3d\xfe\xbe\xef" - "\x4f\xea\x0d\xdf\x07\xe5\x33\xf6\x93\x41\xcf\x2f\x19\x27\xbe\x37" - "\xc3\x38\x5d\x5a\x0f\xfc\x24\x64\xf0\xaf\xf2\xb5\xcc\x4a\x19\xf0" - "\xe5\xcb\xb2\x21\xaf\xf9\x12\x7b\x83\x11\x72\x90\x35\x35\x12\x8e" - "\x8a\xcf\x91\x95\x63\xf8\xe3\xe1\x39\xef\x6b\x60\xe9\xf8\x64\x6d" - "\x8c\xc1\xa7\x0a\x76\x4a\x91\x0e\xa3\xfe\x52\x30\x78\xcc\x15\xcf" - "\x32\x3f\x64\x35\x5f\x6a\xcf\x2f\xd1\x46\xd9\xaf\x5f\xc4\x5b\x59" - "\xd2\x5e\x62\x18\x97\xc6\x71\x66\x46\xd4\xda\x42\x9e\xdd\xf3\xd9" - "\xd6\xcc\xb0\x92\xfb\x99\x31\x7b\x84\x33\xb3\xa4\x3f\x95\x2e\xf7" - "\x4f\x87\x62\xe5\x60\x66\x81\x31\x47\xc7\xa4\xaf\x37\xe4\x1e\xeb" - "\x5a\x86\x1b\xb3\xcf\x3a\xb3\x4e\xc9\xc2\xcc\x90\x96\x14\xb9\x5e" - "\x9b\x29\xed\x3f\x63\xbf\x14\xf9\x75\x31\xf5\x62\xf6\xff\x66\x66" - "\x89\xc1\xf7\xe9\x53\x30\xbe\x01\x3e\xdb\x52\x31\x0a\x66\x8d\x8d" - "\xd9\xaf\xf0\x6f\x96\x77\xd0\xff\x0c\xb8\xb3\x74\xbd\x37\xbb\x36" - "\xba\xbd\x59\x59\xce\x53\x97\xea\xff\xac\x41\xfa\x3f\x6b\xa0\xff" - "\x8b\x25\xdc\x98\xbd\xc4\x59\xb2\xff\xe1\x8b\xf4\xdf\xac\x26\xe8" - "\x2f\x83\x6e\xb0\xb9\x67\x5f\x63\xd8\xea\xbc\x7f\x30\xb8\xad\x3e" - "\x6b\x60\xff\x4f\xd6\x9b\x35\xb0\xff\xe7\x8f\x67\xab\xfb\x48\x9e" - "\xad\x46\xb5\x3d\x7b\xa2\xb5\x2a\x5e\x5f\x66\x0f\xb2\xff\x37\x5b" - "\xdf\xff\x9b\xdd\x1c\xad\xcf\x66\xbb\xa2\xc7\x70\x56\xcc\x18\xce" - "\xae\x89\x1e\xc3\x59\x59\xff\xdd\x79\x0d\xef\x94\x98\x98\x68\x4a" - "\x4c\x30\x25\x24\x22\x1b\x5d\xa4\x61\x89\xe6\xc4\x21\xf8\x1b\xaa" - "\xff\x0e\x33\x25\x9a\xcc\xf8\x1b\xa2\xff\x0e\x8d\x79\x1f\xc6\x75" - "\xf1\x67\xd6\x7f\x87\xc4\xbc\x0f\xfd\x9a\xfc\x61\x7a\xbb\x46\xfb" - "\xe6\x98\xf7\x21\x5f\x93\x3f\xf4\xef\xac\x4f\x17\xbd\x47\xfb\xa1" - "\xcd\x58\xbc\x7c\x7e\xc1\xa2\x3c\x79\x5e\xbc\xc0\x3e\xff\xd9\x67" - "\x17\x2c\x5d\x6a\x2f\x7a\xd1\x7e\xff\x7d\x0f\xdf\x7e\xb7\x5d\x1d" - "\x3b\x17\x4c\xbe\x31\x2f\x99\x66\xae\x58\xc2\x19\x33\x1f\x99\x91" - "\x63\xcf\xbe\xff\xbe\xe8\x4c\x03\x8c\x3c\x5e\xbe\x14\x94\x08\xf9" - "\xcb\x2c\x1d\x49\xb4\x71\xa4\xd4\x3d\x1d\xec\xe7\xab\xf6\x3c\x1e" - "\xbb\xea\x10\xb8\x5f\xf4\x3a\x45\xf3\x0d\x7c\xa6\xff\xd0\x1f\xb8" - "\x13\xe3\x6a\x5c\x54\xb8\x90\xef\xaf\x3c\x74\x5c\xfc\xce\x4f\xf6" - "\x07\xc9\xd4\x4e\x4f\x5e\xdf\x32\x1d\x65\xf1\xee\xed\x08\x91\xdd" - "\x49\x96\x13\xf4\xe8\xa7\xc8\x4b\x10\xf7\x68\x48\x0b\xe8\xbe\xd0" - "\x73\xfe\x43\xa6\xfd\xce\x65\x94\xb3\x9e\xa0\x87\x37\x88\xdf\x09" - "\xf9\xce\xf7\x84\x54\xb9\x87\x1f\xd7\xdc\x0f\xd9\x58\x37\x54\xbd" - "\x46\xe6\x9d\xaf\x11\xbd\x35\x82\x2c\x6f\x8d\xe4\x58\x1d\x0f\x67" - "\x19\x67\xa1\xa5\x78\xf7\xd1\x93\x76\x6e\x9b\xcb\x6a\xa6\x87\xee" - "\x97\xe5\x47\x44\x95\x2f\x1e\x38\x8b\x7d\x38\xcb\x84\x72\xb3\xbf" - "\x20\x6b\x30\xb9\xde\xe5\x2d\x76\x91\x35\x2c\xbe\xba\x75\x3a\x25" - "\xb4\xc2\x12\x5e\x19\x12\xa1\xe6\x25\x27\xb9\xfd\x3f\x5a\x57\x8a" - "\xaf\xbc\xd0\xd6\x33\xbb\x9c\x62\xf3\x29\x32\x43\xae\x13\x9a\x97" - "\xb0\x9f\xc2\xc3\x0d\x3b\x2f\x90\x19\x34\x18\x7d\x92\x1e\xf1\x15" - "\xcf\x14\x61\xe7\x4c\x32\xff\x9b\x83\x7d\x0e\x1b\xaf\xdd\xfc\x27" - "\x32\xff\xaa\xd7\x65\xea\x15\x36\x2a\x2e\x12\x9d\x82\x63\xf8\x04" - "\x44\x90\xfd\xfc\x0f\xcd\x0b\x73\x99\xe1\x3d\x4e\x1b\xb5\x16\x05" - "\x68\xcd\x31\x11\xf4\xfc\x49\xdd\x0f\x38\xdc\x15\x60\x1f\x46\xcb" - "\x9a\x99\x94\x78\x22\x87\x4c\x87\xf3\x2b\xc9\x3b\x37\x40\xc5\xc7" - "\x44\xe7\xa1\x79\x5f\x50\x6b\x7e\x03\xe5\xb6\x91\xe9\x50\xc7\xe7" - "\x24\xe3\xd0\x94\x7d\x59\x53\x72\x8e\x6c\x6b\x16\x71\xda\x39\x5a" - "\xb5\x86\xae\x5c\xf5\x19\x59\xbd\x9d\x6d\x68\xe7\x14\x3d\x71\x94" - "\x12\x00\xcf\xb4\xfa\x73\xb2\xad\x7e\x9c\x7d\x7d\x33\xa9\xaa\x84" - "\x6c\xc2\x99\x9e\xd2\xeb\x4c\x4f\xed\x15\xe9\x23\x7a\x9c\xe9\x69" - "\xad\x85\x28\xdf\xb1\x9f\x86\xb7\x51\xda\xef\x4e\xb6\x99\x2a\xcf" - "\xd2\x68\xfb\x2c\x1e\xff\x47\x8e\x55\x9d\x45\xf9\xb2\xfd\xd9\x1a" - "\xea\x46\xd6\x09\x25\xed\xcf\xf7\xe6\x04\x49\x03\xac\xca\x5e\x1a" - "\x5d\xd5\x4b\x36\xad\x74\x7f\x36\xd3\xa2\xaf\xac\xc1\x05\x5d\x38" - "\xec\xbd\x67\xf6\x9a\xbd\x87\xba\xe8\x70\xa0\x97\x5a\xe9\xcf\xe4" - "\x75\x7c\xd9\xfc\xab\x67\xf6\x0e\xd1\xc0\xfc\xcd\xab\x3a\x00\x5f" - "\xf1\x8c\xf3\x30\xdf\x57\x76\xd1\x96\x12\x4a\x29\x5c\x45\xc3\x4e" - "\x22\x5d\xad\xe9\x77\x79\xbc\xa1\x2f\x9b\x57\x49\x3f\xdc\x27\xed" - "\x25\x87\x29\xb1\x35\x50\xc9\xfe\x9e\xa6\x70\xf2\x97\x35\xde\xc0" - "\x11\xf2\x16\xfe\xa5\x59\xb3\x7c\xe9\xd9\xa8\x91\xe5\xd7\xe7\x8f" - "\x98\xbc\xe6\xf3\xe4\xcd\x09\xd0\x27\x68\x5b\x94\x7d\xc9\x7b\x0f" - "\x99\xad\x81\x20\xdf\x73\xca\x10\xdd\xb6\xe4\x2d\x4b\x68\xec\xce" - "\xb3\x34\x66\xc7\x59\x4a\x17\x3d\xe9\x26\xf6\xad\xe5\xfb\xa9\x3b" - "\xf0\x9b\xd2\x41\x16\xf4\x57\xf9\x61\x27\xe9\x3e\xb6\x7d\xe9\x54" - "\xdd\x3b\xe0\x63\xdb\xdb\x3d\xe0\x63\x0b\x5e\xca\x66\x3f\xdb\x76" - "\x7a\xd8\xc2\xfc\xbc\xe5\x34\x99\xd7\x9d\x26\xba\xd5\x65\x22\xfb" - "\x33\x7c\xaf\xe2\xd1\x0f\xbc\x79\xa7\xe4\x73\x3b\x3d\x5a\x80\xdf" - "\x14\xfc\x25\x20\x5d\xee\x67\x77\xe8\x7c\x8b\x34\x13\xd2\x1e\xc5" - "\x6f\x22\x7e\x67\x3a\xab\x84\x1f\x6d\xb4\x75\x9b\x28\x99\xf9\x57" - "\xf7\xe7\x6d\xeb\x71\x3f\x0a\xfb\xe7\xb9\x02\x83\x8f\x95\x4e\x7f" - "\x38\xfb\x93\x13\xa7\x38\x2e\x94\x5f\xe2\xd3\x97\x9f\xc0\x31\xa2" - "\xf4\x74\xc6\xe1\xd7\xdc\x2e\xda\x2f\xc7\xaf\x15\x7f\x2c\x97\x63" - "\x8c\xba\xdd\x7d\xf9\xdc\xe6\x3b\x48\x17\x46\x3a\xfa\x6b\xe6\xbc" - "\xdf\x9c\x38\x65\x52\x65\xd2\x4d\x80\x19\xd4\xe1\x43\xd6\x1f\x0a" - "\xb0\x4c\x77\x9b\xac\xe2\x40\xde\x04\xaa\x1a\x29\x8e\xec\xd8\x2a" - "\x5a\x94\xac\x3d\x8a\xb6\x9f\x37\xe2\xe8\xb4\x6c\x44\xde\x01\xac" - "\x62\x99\x2e\x2d\xf3\xd8\x7f\xec\x31\x8e\x1b\x35\x26\xb2\x0f\xc2" - "\x3d\x9b\xef\xf7\x5a\xdf\x2d\x69\x1e\x22\x4c\xd9\xc1\x56\x5f\x17" - "\xfd\xaa\xb7\x73\x88\xf3\x8f\x64\xf2\x86\xda\x69\x7c\x1a\xd9\xd8" - "\xfe\xab\xde\x2a\x7c\xf8\xed\x64\x7f\x4e\xf0\xc9\x77\x4f\xd2\x63" - "\x8f\xfe\x53\x1a\xa5\xfd\xbb\x83\x74\x7d\xf4\xd8\x0b\x03\xfa\xe8" - "\x89\x73\x87\x3b\xf6\x46\xe8\xa2\x27\xde\xb9\x58\x17\x3d\x5e\xab" - "\x74\x91\x08\x29\xdd\x13\xf6\xe9\xe9\x9b\x62\xd2\x75\xbf\x90\xc7" - "\x5f\x8a\x49\x0f\xea\xe9\x4f\xc5\xa4\xfb\x55\x7a\xce\x0e\x43\xd7" - "\xb5\x32\x1e\x2b\x58\xd7\xe5\xac\x65\x5d\xd7\x9a\xa7\xeb\x3a\xe9" - "\x63\x98\xb3\x40\xbc\xed\x22\xbe\xb3\x84\xe7\xc9\x8c\xbf\xf8\x1d" - "\x19\xb8\x27\x9d\xa0\x9f\x86\x39\xad\xfc\xcf\x64\xc6\x9f\xd4\x73" - "\xc2\xfd\x50\x2e\xeb\x39\xd6\x71\xec\x77\xb2\x7d\xa4\x68\xdb\xbe" - "\x55\x1c\xad\xda\x2a\x0e\xf5\xb8\x7f\x5a\x60\xe8\xbb\x57\x90\xb6" - "\x11\x69\xaf\x20\x9f\xf5\x1e\xd3\xe4\x70\xce\x5e\x8e\xe3\xd0\x01" - "\x1e\x1b\x6d\x4d\xa0\xc2\xcd\xe0\x79\xbe\x5f\xb8\x1e\xf4\xf5\x16" - "\xf1\xbd\xd5\x30\xc9\x78\x4a\xa6\x0c\xe8\xa8\x0e\x96\xb7\x91\xeb" - "\x20\x5f\x5e\xc7\x17\x54\x12\x10\x27\xf9\x9e\x1d\xe3\x90\xbb\xf2" - "\x41\x8e\x11\x94\xd0\x02\xeb\x82\xfd\xc0\xd9\x5f\x05\x7a\xd7\x5c" - "\x0e\x9c\x54\x8c\x94\x9f\x62\xfd\x5f\xad\xdf\x63\x7a\xd2\xce\xf1" - "\xc7\xda\xe9\xa7\x13\xb1\xbe\x0b\x72\xdf\xac\x61\x17\xf1\xbd\x17" - "\xc8\x28\xaf\xf1\xf2\xb7\xe3\xaf\xdc\xb8\xfb\xc2\xb1\xe8\x50\xc6" - "\xdb\x16\x24\xc6\xd9\x47\x3f\x5d\x7f\xb8\x78\x2f\xd7\x4f\x67\xda" - "\x08\xb7\xd3\x80\x91\x20\xef\xce\xb8\xc9\xc2\x77\x67\x7c\x94\x23" - "\x63\x08\x8a\xe4\x06\xd7\xe1\xb9\x7e\x62\x3d\xef\xed\x04\x8c\xe2" - "\x76\x05\x03\xb0\x04\xf4\x7e\x54\x9e\x0e\xff\xca\x35\xe2\xab\x76" - "\x7a\x2c\xc0\xe3\xc5\xf7\x20\xf9\x7c\x0d\x74\x49\x61\xdf\x78\x65" - "\x7b\xfe\x74\x4d\xf5\x9f\x89\xf4\xbb\x9c\xe0\xb7\x9f\x16\xf3\x3d" - "\x25\xbe\xbf\x29\xef\x6e\x9a\x26\x90\x58\x91\x9e\xd2\x7f\x7f\xf3" - "\xff\xc0\xdd\x4d\xd0\xdf\xb6\xd3\x24\x1a\x80\x7f\x31\xdf\xdf\x04" - "\xfe\xc7\x98\x0f\xf5\x3e\xb9\xde\x78\x82\x69\xfe\x58\x0b\xa7\x61" - "\xad\x78\xd0\x18\x7f\xee\x2f\xf7\x05\x79\xf5\xca\x26\x14\x47\x7c" - "\xf4\xb8\x8b\xf3\x91\x56\xc1\xe5\xc7\x43\x8f\x79\xf3\xc2\xf4\xde" - "\x89\xb0\x69\xcb\x2a\x32\x2b\x9d\xf6\xc4\x5b\x5c\x5f\xe9\xb4\x27" - "\xb2\x07\x74\xda\x13\xd3\x94\x4e\x53\x34\x56\x3a\xed\x89\xbb\x94" - "\x4e\x7b\xe2\x36\x79\x0e\x06\x9d\xc6\x79\xac\xd7\x0c\x9d\xb6\x63" - "\xa4\x38\xc8\xba\xa3\xc7\xfd\x84\xdd\xd0\x6d\x9b\x90\xc6\xba\x83" - "\x71\x54\x7a\x2a\xc7\x21\xfe\xdf\x74\x52\x7e\x06\xfc\x9c\xcf\xf7" - "\x15\x3a\xf5\x67\x8c\xcb\x13\xaf\x2a\x1d\xf7\x44\xd1\x80\x8e\x7b" - "\x3c\x38\x50\x97\x75\xdc\x13\xa5\x4a\xc7\xa9\xf4\xea\x27\x58\xc7" - "\xe5\x38\x98\x06\x3a\x7c\x13\xef\xd9\xe9\xe5\x99\x8e\xae\x48\x1d" - "\x17\x2d\x5f\x4f\x1c\x32\x74\x1c\xeb\x36\xbc\xc3\x06\x49\x3e\x28" - "\xe5\x0d\xe5\x2a\x40\x73\x43\xee\x78\x0c\xb8\xcf\x1c\x67\x8c\xe9" - "\x36\xe5\x14\x0d\xd3\xef\x0a\xe9\xfd\x7e\xd2\x66\xf8\x3a\xfa\xe8" - "\x09\x7b\x3c\xbb\xd9\xb0\xd3\xc0\x8f\xd7\x85\x39\x4e\x87\x0b\x73" - "\x69\xa5\x70\xb5\x86\x8e\xd2\xd3\x45\x64\xd2\x12\x9f\x3f\xce\x63" - "\x8b\x75\xc6\x50\xfe\x65\xdd\x83\x39\xf4\xa9\xdc\x00\x0d\xc5\xda" - "\xfc\xf8\x16\x13\xf2\x1c\xf4\xa3\x88\xbc\x95\xdc\x4e\x44\xbd\x71" - "\x11\x79\x32\x1e\xe5\xb8\xd3\x1c\x63\xee\xc9\xcc\xc1\xd6\xfe\x97" - "\x89\xcb\xdf\x06\xc7\x65\xee\x90\xc1\x71\x99\x2b\xed\x80\x71\x5d" - "\x94\x80\xb5\xd9\x55\xa7\xe9\x49\xb9\x1f\x23\xe3\xde\xac\x8b\xd7" - "\xce\xdc\x87\xf4\xfc\x21\x11\xf9\x91\x6d\xbd\x14\xa7\x7e\x64\x7b" - "\xaf\x7e\x0d\xfc\xc6\xaf\x81\xff\x1f\x5f\x03\xff\x2b\xd6\x81\xa0" - "\x9d\x55\x33\x45\x97\xbb\x35\x24\x65\xf0\x20\xdf\xd7\x3b\x49\x4f" - "\x7d\x5b\xdf\xf3\x39\xee\xbc\x5e\xae\x05\xe5\xbd\xad\xcd\xc8\xe7" - "\x7b\xf9\xac\x9f\xa7\x62\x04\xd5\x19\x75\x7f\x9d\x99\xb1\xb8\x0d" - "\x0f\x19\xb8\xc9\xfc\x17\x62\x71\x43\xfe\xb8\x88\xfc\x4d\x03\xe3" - "\xfe\xd4\x25\xfd\xeb\xbd\x95\x24\x63\x70\x1e\xc0\xf2\x05\x73\x32" - "\xc7\xfd\xd3\xf7\x67\x9e\xea\x80\x9e\xcf\x88\xf0\xdb\xed\x82\x6e" - "\xbf\x8e\xe3\x2f\xb0\xed\xbb\x45\xad\x87\xbf\x85\xf9\x64\x04\xdf" - "\xd7\xe1\xbb\x3b\xb9\xe1\x6c\xd3\x81\x62\x96\xa1\xa7\xed\x46\xdd" - "\xc1\xf6\x81\xb8\x5d\xbd\x4d\xf6\x81\x0d\xa0\xce\x1c\xa3\x0e\xc3" - "\x66\x3f\x4a\xcc\x03\xd7\xc9\x3b\xaf\xa1\x2e\xd6\xbb\xdf\x82\x9d" - "\x3c\x42\xb5\x33\x8f\xf4\x76\x3c\xa8\x33\xe8\x5d\xf5\x4b\xf7\xef" - "\xe9\x96\xcb\xef\x1f\xe9\xfd\xcb\xa5\xaf\xe9\xdf\x25\xda\xcd\x9d" - "\x74\xf9\xed\xa6\x1a\xed\x3a\x2e\x9f\xae\xb9\xbb\xbf\x39\x5d\x33" - "\x74\xba\xe6\xfa\xbe\x86\xae\x71\xda\x99\x97\xf6\xcd\xdb\xb1\xeb" - "\xed\xcc\x9b\x1e\xaf\x1d\x92\xff\x06\xbd\xd7\x65\x31\x62\x60\x72" - "\x3c\x58\x15\xef\x6e\x5e\x79\x64\xac\x5f\x15\x27\x76\x5e\x9d\x11" - "\xeb\x57\x8f\x45\x8b\xb9\x65\xde\xa7\xb9\x35\x6c\x8f\x08\xcd\x47" - "\xf3\x5a\x38\xbe\xea\xd4\x35\xea\xce\xb8\x5e\xa7\xed\x52\x31\x86" - "\x39\xce\x96\x10\x39\x74\xa0\x52\xfa\x03\x60\x1e\x9a\x7f\x15\xdf" - "\x0f\x50\xe7\x99\xf3\x47\x2b\x99\x9c\x3f\x1a\xb0\xf3\x07\x87\xd1" - "\x94\x59\x57\x92\x31\x64\x30\x9f\x7f\xd4\x9f\xeb\xa3\x17\xe6\x70" - "\xfd\x70\xd9\xc7\xd9\xe2\x8c\x4d\x8f\xf3\xf7\xec\xbe\x88\x38\x84" - "\x98\xbb\x9f\xf9\x9b\x7e\x37\x01\x34\x70\x81\x96\xf3\x2b\x0c\x1a" - "\x18\xe9\x48\xab\x37\x68\x00\x7b\x25\xc5\x5b\x13\xe2\xbb\x43\x01" - "\x75\x4f\x7c\xfe\x61\x51\xda\x94\xa1\x60\x3f\xa3\xce\x19\x92\x3f" - "\xce\x0e\xac\xb6\x99\x8c\xfa\x63\xec\xce\x0b\xcc\xc3\xfe\xa4\xa6" - "\x0c\xc0\x0a\x18\xf0\x05\xe3\x25\x06\xca\x55\x4b\xbf\xa4\x67\x30" - "\xfe\xb9\x2a\xbe\x23\xda\x90\xb8\x9b\x28\x51\x03\xfe\xe8\x83\xc9" - "\x5b\x18\x60\x3b\xb5\x2b\x8c\xfe\xb3\xae\xdb\xb3\xd8\x67\xe6\x32" - "\xd2\x76\x38\x93\x6e\x52\x31\x14\x9f\x79\x41\x3b\xc3\x31\x71\x24" - "\x5e\x29\xe8\xf3\x5e\xc6\xc9\x87\x5f\xff\xea\x74\x9a\x7d\x8e\x74" - "\x5a\x3c\xf3\xa8\x86\x74\x6d\xe9\x00\x0e\x3b\xe5\x1d\x8f\x67\x2a" - "\x0d\x1c\x34\x6e\xbf\xc7\x66\x82\x2d\xc6\xed\x76\xca\xbb\x96\x68" - "\x7b\x3c\xc7\xb4\xe3\xd8\x18\x2b\xd2\x89\x71\x40\x9d\x43\x06\xbd" - "\xf5\x3a\x46\x1b\xc5\x9a\x6c\x5b\xd1\x46\xd1\xf9\x00\xec\xc1\x67" - "\x42\x17\xd3\xf9\xd9\xd4\x08\x3a\x27\x32\x5f\xf1\x1e\x0b\xf0\xff" - "\x35\xd3\x9b\xcf\x35\xec\xcb\xd9\xae\x7a\xf6\xbe\x03\x01\xe9\x77" - "\x92\xc2\x70\x35\xd0\x9f\x61\x00\xee\x15\x8a\xc6\xcf\xe6\xf4\xd3" - "\x18\x6d\x0b\x8c\xc5\x3a\x75\x27\x85\x7d\xdf\xa1\x3b\x9e\x75\xf4" - "\xb7\xc3\xb8\x3a\x6d\x26\x4d\xd8\x38\x66\xa6\x9f\x71\x2d\xb2\x8b" - "\x20\xdb\x95\xd2\x8f\x09\x7d\xdd\x53\xd2\x66\x86\x6d\x69\x92\x6d" - "\x75\xa7\xb3\x7d\x6f\x91\xcf\x68\x6b\x10\xfe\x7e\x95\xe3\x52\x1a" - "\xfd\x42\x5f\x2c\xcc\x5b\xc0\x1d\xf6\x5f\xde\x7e\xc9\x2f\xcb\x79" - "\x9c\xf2\x6a\x39\xcd\x28\x87\xf7\x65\x5c\xce\x78\x47\x1e\xf8\x2b" - "\xef\x4e\xf4\x2b\x99\xf1\xf4\x3b\x65\xec\x17\xf4\x39\xaf\x8d\x61" - "\xf4\xb8\xf3\x32\xa3\xfa\xd9\x97\x63\x36\xf8\x8e\xcf\x88\x5a\xec" - "\x41\xa9\x3b\x15\x6d\xf3\x0a\x0c\x99\xe4\xfa\x4a\xc6\xf2\x5c\x91" - "\xbc\x18\x70\x0e\xf0\x41\xd1\xf5\x64\x31\xdb\x39\x96\x66\xde\x3c" - "\x15\x07\x3c\x6f\x77\xec\x78\x71\x1e\xc7\x9d\xd4\x69\xc8\xf2\x94" - "\xda\x4e\x79\x35\xdc\x37\xf0\x5a\xe0\x52\xf3\x25\xc7\x84\xe4\x58" - "\x9e\xaf\x2b\x39\x02\x5d\x16\x7e\xfb\x75\x75\xbf\x27\xa0\xe2\x2b" - "\x2e\xf8\xae\x30\xd5\xca\xf1\x62\xbf\x3c\x19\x47\x43\xde\xfd\x5e" - "\xc0\x3e\x6e\x62\x78\x61\xad\xbc\x67\xa6\xfb\xec\xf9\x5b\x0a\x43" - "\x32\x0e\x9f\xb3\x88\xef\xc2\x86\x78\x4d\x26\x7d\xd2\x0e\x14\x85" - "\xe8\x91\x20\xd3\x76\x41\x01\xdf\x71\x0f\x48\x5a\x2c\x70\x18\xf7" - "\xda\x39\xce\x24\xc7\x29\x1d\x1f\xa2\x44\xb6\x29\xec\x4e\x8e\x49" - "\xb0\x30\x9b\x6d\x12\x45\x53\xf0\xbd\x49\x1c\x51\xbc\xbc\xe0\x53" - "\xbe\xc7\xae\xce\x97\xda\xc1\xdf\x89\x5f\xb6\xd3\x82\xff\x54\xfb" - "\x32\x86\xac\x2d\x7c\x88\xcf\x98\x7c\x3a\x0c\xb4\x85\xf9\x7f\xfe" - "\xd4\x8b\xe5\x62\xc1\xa7\xc6\x1a\x83\xef\xc5\xa9\xf3\xaa\x01\x78" - "\x3e\x5a\x20\xf7\xa5\x07\x74\xd3\xef\x01\x6b\x61\xc6\xc5\x32\xb3" - "\x70\xaa\xc1\xcb\x85\x37\xf0\xdd\xea\x05\x16\x6e\x7f\x30\x9d\x29" - "\x9c\x8f\xf3\x38\x59\x4e\xd8\x29\xf1\xeb\xee\x4b\x0c\x9c\x7f\x2d" - "\xac\x37\xfa\x60\xd0\x44\xf5\xe1\x67\x09\xdd\xc9\x0d\xf5\x03\x7d" - "\xff\x99\xf2\x37\x1b\xc8\xbf\x2b\x82\x36\xfc\x3e\x51\xf1\xdd\x42" - "\xac\x29\x9e\x6d\x51\xbc\xa8\xd2\x44\x72\xd3\x1d\x1c\x03\x56\xe1" - "\xb8\x88\x0c\x7e\xef\x71\xff\x6c\x8c\x8f\xce\x1c\x52\xe7\x50\x3f" - "\x43\xff\x17\xba\x54\xbd\x85\x87\x18\x97\xb8\xfd\x8c\xc6\xb1\x81" - "\xe7\x58\x15\xeb\xe0\x67\x8d\x8c\xaf\xfd\x26\x1e\xe3\x9f\xad\xe1" - "\x76\x65\xdc\x83\xbe\xfc\x21\x81\xbe\x74\xea\xee\xcb\x87\xfc\xa4" - "\x9b\xd0\x0e\xf4\xdf\xe9\x7a\xbd\xcd\x3a\x03\x57\xc6\x0d\xb6\xa2" - "\xa5\x47\x2c\x8a\x4f\x5f\x6e\x57\xc6\x63\xca\x1f\x86\x3f\x0b\xfe" - "\x86\x7e\xd3\xf9\x18\x76\x6d\xa7\xbf\xf4\x23\x9b\xb6\x5c\x1c\xe4" - "\xf8\x5f\x58\x17\x74\x6e\x01\xff\x0e\x5f\xdb\x4c\xc3\x03\x4f\x99" - "\x72\x57\x52\x26\xd6\xb6\x24\xce\x8b\x89\x3b\x35\xfc\x2e\x17\x13" - "\x38\xee\x35\xde\x33\xf4\xf7\xb1\xfc\xde\xbd\x5c\xcc\xed\x71\xe7" - "\xe7\x18\x67\x77\x2a\x66\x4d\x7e\x7e\x7f\x9c\x9f\xc4\x27\xf9\x9e" - "\x0f\xc7\x84\xd2\x44\xe2\xf3\x9d\xdc\x6e\x2e\xcf\x1d\x68\x0f\xe5" - "\x30\xff\xcf\x93\x31\x72\xfc\x89\xb7\x8c\xc0\x5f\xfc\x38\x1b\xa8" - "\xc3\x78\x75\x27\x7d\x64\x33\x70\x1d\x1e\xc8\x34\x7d\x43\xdc\x02" - "\x06\x6e\x48\x3f\xb8\x45\xa5\x87\x38\x46\x21\xfb\x20\xf6\xb8\x17" - "\xa5\x19\xb8\x1a\x38\x70\x7b\x7c\xaf\x52\x24\x37\xec\xe5\x98\x30" - "\xdc\x9e\x7f\x75\x3e\x97\xcd\x34\xf0\xfd\xa6\xbc\x5c\x52\x25\x04" - "\xcf\x2d\x7c\x9e\x64\x1f\x45\xd4\x1a\x60\x9d\xb2\xa8\xe2\x40\x55" - "\x80\xe3\x7f\x7e\x8c\x36\xf6\x75\x8b\x7c\xd2\xfa\xf2\xe3\x8e\x31" - "\xd7\x41\xf9\x23\x52\x3f\x94\x35\xec\xd3\xc4\x74\x8e\x01\xfc\x31" - "\xc7\x5d\x85\xad\x09\xb9\x5d\x14\x6a\x29\xee\xe4\xbb\x90\xd0\x39" - "\x8b\x38\x4e\xe8\x5e\xb6\x35\xb0\x4e\xe1\xf8\x15\x89\xac\x9b\x9a" - "\x97\x4f\x60\x18\x61\xb3\x83\xcc\x2d\x8e\x6f\x16\x4f\xdf\x47\xcf" - "\x4d\x50\xb2\xf3\xdc\x04\x63\x9e\xc5\x73\x66\xf4\xb9\xf4\x73\xe9" - "\xb1\x3a\xf7\x99\x17\x5f\x2c\xca\x5d\xb2\x80\x7f\xd2\x6f\x5c\x76" - "\x73\x72\xe4\xda\x99\xf5\xb0\x8a\x63\xf0\x5c\x0e\xef\x53\xbd\x3e" - "\xc2\x38\x67\x7d\xae\xd2\xd8\x2b\xd3\xfd\xb9\xef\x65\x9b\x9a\x6d" - "\x4f\xe4\xed\xf9\xb4\x98\x45\x87\x12\x8e\x5b\xc8\x14\xdb\xde\xc2" - "\xf9\x45\xf3\x0b\xee\xe6\x13\x95\xe4\x78\xed\x1c\x8c\x6e\xe7\x79" - "\xea\x6f\x47\xe9\xc1\x80\x89\xcb\x95\xf6\x66\x8a\xa4\x76\x9f\xba" - "\x4b\xfb\xfc\x18\x63\x0f\x64\x10\x3f\xb8\x60\xb8\x6c\x7f\x39\x8f" - "\x8b\x73\x0d\x99\x7e\xb3\xaa\xcd\xc4\x36\x4a\x09\x9e\x79\x6d\x28" - "\xed\x22\x3d\x9e\xd0\xef\xce\xb6\x61\x9e\x79\xde\x21\x4a\x1b\xa0" - "\x7f\x9e\x2f\x1c\x6c\x7e\x8a\xf4\x21\x60\x9f\xb3\x0e\x7a\xbe\x7c" - "\xd0\xf3\x7e\xcf\xc7\xf3\x94\x9e\x79\xfe\x8b\x16\x1b\xf1\xb8\xbf" - "\xdc\x4e\xcf\x1f\x37\xdb\x30\x97\x8c\xa2\x5f\xe0\xf9\x0b\xae\xcb" - "\x79\x51\xe3\xfc\xdd\x53\x35\x66\x70\x21\xb8\x31\x41\xa8\x7f\x64" - "\xd6\x1f\x12\xf1\x67\x12\x09\xf2\x34\x2c\x11\x14\x1e\x36\xd4\x4c" - "\xd6\xe1\x29\x96\xeb\xae\x1d\x6d\xbb\xf7\x9e\x49\x13\x9d\x25\xc5" - "\x90\xde\x50\xd0\x2a\x22\xe3\x5f\xb5\x7b\x1e\xbd\xd9\x45\xd2\x1f" - "\xa2\xb4\xdd\x13\x0f\xd7\x4d\x6e\x51\xc8\x77\x8f\xb5\xe4\x0b\x0d" - "\xce\x65\x64\x7a\xaf\xd7\x67\xe2\x18\xec\x6c\x83\x70\x8c\xfe\x76" - "\x2a\x78\xe9\x13\xa4\xa1\xff\x0e\xe1\xb9\xd0\xa0\xce\x3b\x0b\x1a" - "\xb5\xb2\x0b\x0d\x03\xf0\xcd\xc4\xf0\x9d\x6f\x91\xa9\xae\xa4\xd3" - "\xe4\x35\xdf\x43\x5e\x7b\x80\x3e\xc1\x73\x5c\x5a\xa2\x4d\xc1\x71" - "\x5f\x01\xa3\xda\xad\x79\x9c\x17\xc8\xa4\xdf\x1f\x34\x9d\xa6\x82" - "\xbf\x35\x0c\x52\x8f\xef\xeb\x76\x27\x7f\xf8\x5f\x3d\xee\x17\x30" - "\xfe\x99\x75\xfa\x9c\x07\xdd\xfc\x02\xf8\xff\x79\x39\xdf\x21\xff" - "\xf3\x6e\x19\xf3\xf7\x85\xe9\x46\x99\xf8\xf3\x1e\xef\xa9\x8a\x66" - "\x1e\x57\x71\xfe\x6f\x9d\x7c\x37\x61\x10\x3f\x86\x61\x5e\xc7\xed" - "\x7c\x8e\x34\x64\x78\x90\x52\x9c\xe7\x44\x5f\xd8\x4d\x69\x60\x77" - "\x53\x18\x6b\xcb\xd0\x79\x91\x73\xb8\xeb\xac\x8c\x4d\xc9\xfa\xe3" - "\xdd\x85\xbf\x37\x79\x83\x67\x9a\xbd\xeb\x35\x6a\x85\xfd\xe1\xad" - "\x3a\xd3\xac\x62\x58\x86\xe9\x30\xfd\x99\x0e\x3b\xfe\x1f\x97\xdc" - "\x0b\xaa\x12\x2e\xa6\x73\xdf\x79\x31\xc7\x6b\xfe\xbf\x89\xbf\x21" - "\xc2\xba\x10\x74\xb7\x9f\xa6\xc5\x57\xfd\x0e\x70\xde\xfb\x2f\xc0" - "\x92\x31\xaf\x26\xd3\x27\x78\xee\x71\x2f\x1e\x6d\xe8\xc9\xb8\xb1" - "\x42\x12\x9a\x37\x59\x1d\x4f\x99\x34\xe8\x5c\x8e\x4d\x06\x5d\x3b" - "\x81\xfb\x85\xf7\x0c\x7e\xc7\xef\x58\xfe\xb5\xae\x6d\xde\x61\x0d" - "\x3d\xc5\x3a\x38\x87\xf5\x2b\xd2\xe7\x54\x9f\x97\x3a\x39\x5b\x7f" - "\xcf\xd2\xdf\xa7\xeb\xef\x53\xf5\xf7\x4c\xfd\x7d\x12\xbf\x2b\xdd" - "\xbd\xb8\xa1\x7f\x5e\x31\x0d\x3b\x82\xf7\x66\x63\x2c\x80\xcf\x95" - "\x56\xc7\x1a\x39\x07\xe8\x78\x4c\xd0\xf1\xca\xd0\xdf\x0d\x7c\xbe" - "\x6b\x0d\xad\xf9\x1f\xc2\xe7\xc5\xcc\x68\x7c\x5e\xcc\x8e\xc0\x87" - "\xac\x8e\xcc\x6f\x82\x4f\xaa\x95\x63\xdd\xff\x1d\xf8\x30\x2e\x9c" - "\x86\xf6\x8f\xc4\xe0\xe3\x33\xf0\x89\xcb\x6f\xcb\x45\x27\xcf\x7f" - "\x4b\xbf\x2d\x63\xf4\x0e\xe3\xb9\xad\xba\xd7\x88\x33\x57\x38\xfa" - "\x52\x71\xe6\x20\x0b\x36\x94\x41\xff\x5f\xec\xd2\xe7\xf9\x26\x65" - "\x0f\x16\xce\x31\x7c\x7f\xd0\xd7\xfa\x2d\xaa\xaf\xbb\xd7\x73\xac" - "\xb5\x95\xf4\x1d\xa7\x43\x74\x62\x7d\xf3\xd7\x16\xbb\x3f\x4a\x06" - "\x0a\x8a\x96\x2e\x7d\xe1\x6e\x7b\xc1\xfc\xc5\x0b\xec\x37\xe6\xd9" - "\x97\xe6\x2f\x5a\x58\xb4\x20\xfa\x3c\x3c\x55\xff\xee\x88\xf4\xf3" - "\x67\x9b\x9b\x65\x80\xf9\x9f\xf5\xb6\xf2\xcd\x7c\xe9\x1a\xe1\x2e" - "\x74\xb1\xae\xdf\xf9\x1a\x99\xf9\x0c\x06\xf8\x74\x18\x3a\x5e\xc5" - "\xd6\xa7\x04\xd6\xf1\x48\x87\x0d\xf7\x42\x71\x44\x3a\xca\xbe\x94" - "\x6a\xa4\x31\x7c\x5d\x37\x0d\x6b\xa7\xc2\x46\x6e\x33\x2e\x0d\xcf" - "\x8b\x1a\xcc\xaf\x09\x58\x6f\xf1\xda\x57\x70\xdc\x24\xbe\x3f\x87" - "\x7a\x02\xf8\xc8\x33\x45\xfe\xb6\x8d\xb2\xed\x05\xe3\xb8\x0c\x75" - "\xea\x90\x66\xde\x8c\xb2\x58\x2f\x74\x72\x3d\xa4\x6f\xe2\x38\x06" - "\x48\xb7\xe8\xf1\xa0\x38\xad\x96\xe3\x0c\x20\x2d\x35\x22\xed\x03" - "\x8e\x61\x8e\x34\xbb\x0e\xef\x0f\x4c\x67\xbc\x67\xea\x7b\x0a\x5c" - "\xe6\x3f\xf5\x76\xa3\x62\x12\xf0\x47\x28\x6e\xbf\x35\xc3\x3e\xe7" - "\x91\x1f\x4c\xbe\xe7\xd9\x17\x17\x2f\x4c\x26\x49\xf6\x74\x4c\x97" - "\x19\xb7\x3b\x6e\xbe\xdb\x5e\xb8\x60\xc1\x12\xfb\x8a\x05\x8b\x8b" - "\xec\xf3\x57\xcc\x5f\x99\x4c\x0b\x5f\x5c\xf2\x2c\xdf\x92\xe7\x61" - "\x59\x9a\xfb\xec\xc2\x9f\xb1\xd3\x82\x2a\x9d\x1c\x35\x8f\xcf\x61" - "\xdd\xa6\xc7\x95\x38\xb8\x85\x6d\x8d\xa4\xdf\xa6\xe3\x99\xe3\x2d" - "\xd9\xf0\xdb\x82\xbf\x26\xfc\xed\xc5\xdf\x51\xfc\x1d\x39\x49\x2b" - "\xf8\xdb\x01\x7b\x7a\xdc\x4b\xd6\x1b\xf6\xc4\x00\x0f\x2d\xa9\x34" - "\x78\x08\xf3\xff\x1e\x35\xbf\x2d\x39\xd8\x1a\x92\xf2\xd3\xcf\x53" - "\x5b\xce\x0f\xf0\x14\xc7\x8b\x6c\x65\x9f\x9c\xe5\xc8\x07\x0f\xf3" - "\x3a\x1d\x34\x4f\x62\xba\x9d\xa0\x65\xfb\xab\xb7\x8a\x43\x1c\xeb" - "\x04\xbf\x2d\xe0\x97\x43\x2a\xbe\xc8\xd2\xa9\x28\x77\x3d\xda\x68" - "\x52\x6d\xe8\xef\x23\xc5\x41\xde\xc7\x68\xd7\xdf\xd5\x9a\x7f\xd9" - "\xa3\xfc\xcc\xbf\xfa\x59\x98\x95\xfd\x1b\xd5\xda\xd1\xc8\x5b\x7a" - "\x4a\x6f\xa3\x19\xb4\x70\xed\x74\x4b\x9b\x5b\xae\xb1\x78\x0f\xcd" - "\x9a\x70\xaf\x00\x3e\x67\xb4\xc4\x27\x55\xfc\x42\x57\x2f\x74\xc4" - "\x1d\x77\x78\x1d\xb2\x7c\x02\xef\xb1\xcd\x2a\x14\x1a\xc7\x94\xd6" - "\x12\x9f\x6f\xe3\x7a\xc2\xf2\xdb\x74\x6d\xf3\x95\x99\xca\x16\xe0" - "\xb8\x71\x4b\x0f\xea\x30\x83\x4c\xdb\x93\xb4\x64\xa5\x5a\xaf\xad" - "\xd0\xbf\x37\xb0\xf4\xa8\xe1\x2b\x07\x19\x4d\xc7\x7b\x87\xa1\x03" - "\x7c\xb4\xb4\x41\xf7\x6b\x6a\x56\xfd\x2f\x1a\xad\xbf\xef\xd5\x71" - "\x4c\xe0\x58\x16\xc0\xff\x08\x8f\x1d\xd6\xbe\x7b\xf1\x7c\x14\xf4" - "\x39\xa4\xe8\x53\x24\x6d\x40\xd8\x35\x9c\x7f\x94\xbf\xd9\x81\xbc" - "\xa3\x2a\x4e\xc4\xd2\x39\xdc\xe7\x01\xdf\xc7\xaa\x4c\xe0\xfa\x28" - "\x9f\x19\x42\x96\xf6\x7a\xcf\xb3\x7c\x2e\xcd\x06\xbc\x06\x43\xef" - "\xb0\x9e\xc9\x0d\x43\x4e\xa5\xdd\x5d\xb4\xd1\xd0\x37\x03\x7c\x50" - "\x54\x13\x4f\x97\xc4\x1b\x77\x7d\x6c\x92\x84\xfb\xa5\x0e\xe0\xd4" - "\x20\xc7\x80\xe3\x69\x9e\xef\xb7\xef\xfb\x94\x8e\x2c\x0a\xf4\xaf" - "\x45\x74\x3c\x38\x4e\xb7\x8f\x71\xeb\x95\xe7\xb8\xba\xde\x58\x36" - "\xda\xd0\x1b\x06\x1c\x6b\x82\xd0\xac\x0e\xfc\xe7\x69\xac\xe4\x3d" - "\x64\x9e\x2f\xa5\x3d\x02\x38\xc3\xcf\xa9\x3b\x4c\x5a\x69\x23\x78" - "\xb7\xe8\x28\x74\x8c\x59\xda\x9c\xee\x97\x7a\x06\x74\xd1\xb2\xc2" - "\x48\x98\xc2\xd2\x58\xc9\x70\x59\x1f\xb1\x4d\x92\x1b\x36\x73\x1c" - "\x91\x4a\x7d\x7e\x81\x0e\x5e\x56\x63\xe0\x0a\x1a\x1e\x34\xf0\xd5" - "\xbf\x95\x74\xd0\x47\xcb\x80\x7b\x1f\xfb\xf2\xb6\xa8\xf1\x5c\x21" - "\xf5\x0d\xf2\x76\xa3\xee\x31\x1f\xbd\x94\xa1\xcb\xd0\x21\xd4\xdf" - "\x7d\xa0\x64\x2a\xca\x2c\x0b\xea\xfe\xa8\x47\x30\xbe\x47\x07\x78" - "\x7f\xc9\xa9\x88\xfd\x80\xa3\x6a\x0c\xef\x71\xb5\xd3\xf2\x89\x11" - "\xe9\xfa\xd8\x1e\xc8\x46\xfa\x29\xb5\xb6\x6e\xcc\x51\xf5\x97\x2b" - "\xdf\x5d\x1d\x47\xd6\x05\x7c\xdf\x8a\x65\x5c\xd2\x5e\x8e\xf1\xf2" - "\x42\x63\xbe\x00\xac\x3d\x92\xe6\x23\x45\x13\xd3\x49\xc5\x6b\x58" - "\x32\x52\xd1\x69\x79\x65\x14\xed\x79\xde\x44\x3b\x4c\xa7\xe1\x6b" - "\x85\x36\x3c\x90\x20\x72\x57\x9a\x89\xe5\x85\x65\x9c\xcf\x5e\xc0" - "\x1f\xd2\xae\x52\x74\x5b\xde\x66\xd0\xcd\x18\x3b\xa6\x93\x8f\x96" - "\x4f\x67\xda\x46\xf7\x71\xd8\x91\x76\xa3\xef\xa0\x29\xef\x07\xe3" - "\xbd\x4b\x97\x8b\x43\xcd\xa3\xd8\x17\x60\xc9\x57\x07\xcc\x3f\xa0" - "\x03\x8e\x09\xa4\x68\xbb\x62\xa2\x8f\x0a\x2b\x23\xd6\x0d\x07\x99" - "\xbe\x2c\x2b\xc0\xb3\x42\x8f\x9d\x74\x50\xf9\xa3\x2c\xe1\x98\xb4" - "\x15\x52\x96\x97\xcb\x18\x17\x1c\x77\xf5\x08\xd3\x88\xf5\x22\xcb" - "\x12\xcb\x00\xcb\x93\xa2\xd1\x8a\x8a\x08\x1a\xb5\x30\x7d\x74\x3a" - "\xed\x89\xd1\xe5\x0b\xec\x05\x93\x95\x2e\xb6\xa7\xdf\x98\x37\x5e" - "\x06\x2a\xb1\x3f\x30\xe5\x6e\x7b\xf6\xe4\x1b\x1d\xf9\x63\x67\xa9" - "\x9f\x29\xd9\x59\xfc\x9b\x1c\xbd\xee\xb2\xa3\x9d\x50\xf4\xda\x6d" - "\x8d\x47\xe9\x0f\x47\x9a\x2f\x61\xa8\x8c\x1b\xc8\x71\x43\xb7\x2c" - "\x26\x0a\x03\xef\xcd\x27\x31\xa6\x96\xc6\x09\x1c\xa7\x76\x36\xd6" - "\x8c\xb3\xce\x89\x0b\xd5\xc8\xdb\x89\xf4\xe1\x85\x1c\xeb\xfe\x2f" - "\x42\x4b\x6a\x9c\xc0\x6b\x7b\x51\x5a\x1b\xf4\x27\xb5\x7b\xf0\x97" - "\xed\x4f\xfa\xd0\x3f\xed\x66\xa7\x00\xdc\x02\xa3\x5f\xbc\x07\x00" - "\x3a\x4d\x98\xed\x10\x61\xa6\x51\xae\x83\xe3\x49\x03\x76\x22\xef" - "\x01\x38\xd0\xff\x82\x23\x6a\x7d\xe9\x00\xff\x2f\x99\xa0\xeb\xb2" - "\x6c\xbc\x73\xfc\x8b\x6c\x39\xae\x6e\x9b\x8c\x43\xad\xad\xbb\xe5" - "\x61\xac\x07\xb2\x0d\x98\x80\x35\x54\x3f\xc7\x96\xf0\xbe\xa9\x5f" - "\xa4\x56\xf6\xfe\x58\x6b\x82\x8a\xeb\x07\x19\x77\x55\x9b\xb4\x9c" - "\x7e\xbf\x07\xe4\x0d\x5f\x9b\xca\x7e\x11\x39\xe0\x3d\x17\x97\x31" - "\xf2\xb6\xb8\x35\xdf\x16\x93\x16\xc4\x38\xa6\x2a\xfb\xb9\x8b\xf5" - "\x27\xd6\x96\x2b\xfb\xf7\xff\xe5\x7c\x68\x22\x97\x5a\xcf\xac\x94" - "\xfb\x3e\x67\xdd\x66\x82\xce\xee\xba\x21\x4d\xae\x51\x82\x9a\x3b" - "\x81\x94\x2f\xea\xca\x87\x0c\x1d\xcb\xe7\x49\xd6\xb5\xc2\xcf\x7b" - "\x89\xd6\x90\xf0\xcb\x98\xe9\x3c\x77\xd0\x49\xf2\x16\xf7\xb8\x38" - "\x56\xab\xb4\x81\xd0\xae\x9a\x37\xc2\x6a\xde\x40\xfb\xfe\xc4\x5b" - "\xe6\x61\x7e\x48\x38\x49\x2b\xed\x8c\x3f\xd3\x86\xf7\xab\x35\xd0" - "\xca\xcb\xf3\x24\xd3\x27\xf9\x37\xbb\xd9\xa7\x81\xfb\x6a\x0d\xa1" - "\xcf\x91\xfd\x32\x69\xbe\xcd\x6e\xf4\xcb\x84\x7e\x39\x4e\xb1\xcc" - "\x04\xd9\xd7\x04\xf2\x36\x52\xc6\x23\x96\xeb\xe7\x55\x99\x91\x7d" - "\x64\xfd\xaf\xfa\xb0\x6a\x7e\xbc\x3e\x0a\x13\xf7\x91\x69\xb0\xea" - "\x4e\x5d\xde\x24\x9e\xac\x3f\xba\x68\x65\x60\xf8\x5a\xf6\xf1\x68" - "\x9c\x00\xfd\x36\x85\xc7\x10\xf3\x67\x39\xe3\x19\x6f\xbc\x18\x9e" - "\x82\xb5\x1a\x36\xb4\x6b\x1e\x70\x39\x14\x9f\xde\xab\x4e\x5d\x9a" - "\xde\xab\x3e\xe5\xfa\x8c\x07\xfb\xbc\x58\x43\x58\xac\x83\x6f\xb1" - "\x5e\xf3\xc4\x6b\x77\xf8\xda\x1a\xc6\x2b\x6e\x9e\x60\x79\xd1\x75" - "\x10\xf8\x50\x40\x4e\x04\xeb\xa4\x1e\xf7\xea\xfe\xfd\x2f\x6b\x82" - "\x3d\x51\xea\x07\x93\x28\x8f\x07\xc3\xba\xb6\x9c\x7d\x4c\xa6\xa0" - "\xfd\xb8\xf9\x1a\x7f\x87\xc1\xd3\x68\xd7\xd6\xfd\xd3\x0d\xd6\x04" - "\xba\xd7\x9f\xf8\x4f\xc9\x56\x47\x68\x0c\xd3\x10\x30\x1d\x90\xe3" - "\x65\xbc\x4e\x55\x7b\x17\xab\x61\xff\x6f\x94\xeb\x52\x7f\x52\xa3" - "\x5d\xc5\x0a\x5b\x8d\xf9\xef\xf5\xfe\x3d\xdc\x1e\x77\xb1\xd9\x47" - "\x1d\xa3\x95\x5c\x7e\x67\x9b\x28\xfb\xb0\x49\x73\x5b\x85\x7d\x95" - "\x15\x76\x64\xf1\x0e\x4d\x70\x5c\xfe\x0f\x9b\x06\xf8\x44\xf9\xbf" - "\x18\x7c\x82\xfa\x53\xe3\xf3\x40\xf1\x82\x4b\xf3\x40\xb1\xdc\x9b" - "\x65\xba\xab\xb5\x4a\xf1\x46\xc3\x4e\x11\xeb\xbe\xb3\xcd\x5e\x22" - "\xdb\xb7\xab\xb6\x99\x26\x99\x7c\x2e\x91\x05\xba\xb8\x50\x76\xaf" - "\xa1\x07\x98\x5f\xac\x61\xfe\x66\x01\x49\x9e\x46\x1e\xec\x9f\xc2" - "\x74\xb5\x5f\xfa\x91\x43\x7e\x77\xcf\xbd\xa2\xc1\xef\xcc\xdf\xce" - "\xfe\xaa\x81\xa4\xc6\x2a\x94\x09\xfa\xe8\x13\x19\x93\x14\x73\x70" - "\x05\x60\x54\x56\x8c\xc0\x1c\xad\xfc\xb6\x52\x58\xa6\x39\xc6\x0f" - "\xcb\x35\xd2\xd2\x80\x37\xc7\xfb\xc1\x7a\x67\x4d\x46\xff\xbc\xe4" - "\xce\x84\xae\x10\xd2\x4f\x07\xf3\xd2\xe8\x6e\xd0\xee\x0d\x93\x56" - "\x7f\x7e\xbc\x8d\xb8\xcf\xe7\xd7\x8d\xaa\x7f\xf9\x56\x32\xff\xab" - "\xed\x19\x2a\xbc\x9d\xd2\xd6\xfe\xc0\x4c\xff\x7b\x22\x99\x98\x0e" - "\x3e\x5a\x93\xa9\x68\xb7\xc6\x65\x8c\x8f\x8f\x56\xcb\x7d\x51\xde" - "\x6b\x9c\x1d\x12\x17\xd4\x7e\xe8\x1a\xe8\xbf\xe7\x6c\x2a\xdf\x71" - "\xd1\xf9\x3f\xdb\xf3\xf6\x45\x4b\xed\x79\x2f\xae\x58\x7c\xfd\xf5" - "\x51\x6b\x25\xb3\xbc\xc3\xe2\x5e\xb3\x47\xcd\xa7\x6b\x3a\x0d\xbc" - "\xd9\x2e\xc1\x3b\xfa\xbf\xe2\xa2\x7d\xcb\xac\x5c\xdd\x4d\x39\x37" - "\x83\x06\x9e\x6f\xa3\xac\xdb\x22\x5e\xef\xa0\xac\xdb\xef\xc8\x7d" - "\x78\xc1\xfc\xbc\x95\x11\xa9\x77\x46\xee\xeb\x6d\xd9\x86\xb6\x13" - "\x47\xdd\x0f\x5d\x91\x30\x6b\x35\xcf\x2d\x25\x9f\x97\x84\xc4\x97" - "\xd0\xd7\x13\x21\x63\xb9\x87\x8b\x42\x74\x18\xba\x4c\x7c\x87\x75" - "\xf8\x30\x75\x37\x0f\xf6\x14\x78\xcb\x8a\xbe\xfb\x61\xd7\x9d\xe3" - "\xfd\x99\x13\xe4\x4c\x68\xad\xe4\x98\xbc\x1f\x06\x95\x8d\x51\xd2" - "\x84\xf4\xab\xf0\xfb\x05\x7e\x87\xe2\xf7\x6f\xf6\xc5\x58\xf7\xb0" - "\x2f\xf4\x72\xf6\x85\x2e\x91\xbe\x1e\xb7\x06\x5c\x74\xeb\x12\xb6" - "\xd9\x4b\x8a\xd8\x06\xf1\x91\x93\xbf\x8b\x47\x5c\x16\x69\xfb\xed" - "\xcf\x51\x06\xff\x0a\x79\x86\x54\xd2\x24\x4a\x3f\x0c\x8a\xed\x39" - "\xfc\x8d\xab\x31\x68\xf3\xfa\xc4\x84\xe3\x94\x68\x1b\xd6\xd3\xe3" - "\x76\xb2\xff\xd3\x51\xa6\xd3\x60\xdf\xd0\x64\x3a\xc7\xda\x87\x03" - "\xb6\x61\x19\x49\xfb\x56\xb7\xe7\x76\xca\x79\xc1\x59\x14\x61\xd3" - "\xf1\x99\x60\xb2\xb2\x4f\x44\x58\xd9\xa7\xce\x0a\x43\x0e\xf0\x5c" - "\x63\xf0\x69\x54\x7c\xb4\xc5\x45\x0b\x96\x2c\xc8\xb3\xdf\xb8\x34" - "\x99\x22\xa2\xa3\xe5\x2f\x58\x6c\x5f\xb2\xe0\xa5\x65\x0b\x96\xca" - "\xc8\x66\x9c\x1b\x35\xe7\xa7\x89\xe4\x0f\xc6\x1a\xf7\x76\xec\xa3" - "\x98\xbe\xae\x21\x1c\x53\x4b\x94\x7d\xc0\xb6\x4b\x97\x5a\x6f\x5c" - "\x38\x18\xbd\xde\x58\x5b\xa9\xec\xbc\x0f\x3b\xd5\x5a\x67\xed\x38" - "\x7e\x6f\x27\x57\xc3\x40\xfc\x6e\xd7\x7c\xd0\xd2\xa4\xe8\x66\xf1" - "\xf5\xb8\x5d\x39\x06\xdd\x7c\xb4\xd6\xa7\xdb\x52\x5d\x52\x7f\x60" - "\x8e\x85\xfe\x8b\x9a\x5f\xd5\xb7\x33\x5d\xac\x7f\x13\xe5\x7e\x6f" - "\xd2\x87\x1c\x03\xc3\xc4\x30\xd1\x9e\x0f\xe3\xd3\x09\xbd\xc9\xfa" - "\xcd\x63\xc0\x43\x9b\xd3\xb9\x3d\x7d\x1d\xf4\xad\x93\xb4\xd6\x2e" - "\xf5\xa3\xe7\xc3\x2e\xd6\x29\x7c\x76\xaa\x95\x02\x8e\x3c\xcb\x5b" - "\xeb\x63\x1b\x53\xc6\x90\x07\x2c\xde\xa7\x85\x9e\x0b\xf1\x77\x56" - "\x39\x4d\xc5\xf6\x72\xee\xe6\xbd\x61\xb4\xd5\xd1\xe3\x5e\x6b\x1b" - "\xf0\x4d\x5f\xeb\x63\xbb\x93\xe1\xfa\xc8\x75\x8c\xe1\xa9\xd8\x65" - "\x6b\x27\x81\x77\xa6\x0e\xd8\x4f\x6b\x5d\x11\xeb\x32\xc6\x47\xe2" - "\x19\x00\x2e\x32\x4e\xa6\xf2\x1d\x94\xfd\x66\xfd\x59\xa1\xf7\xdd" - "\xe8\x0f\xe0\x41\xff\x39\x33\x8c\xb3\x67\x9f\xde\x6f\xc6\x8f\x71" - "\x8f\xc4\x59\xc7\x77\x2f\xe3\x8b\x7a\x2d\x11\xb2\xcd\xfb\x32\x43" - "\x90\xd6\x36\xe0\x93\xec\xb2\xc7\xea\x8d\x17\x17\xdb\x0b\x16\x2d" - "\x7e\x3e\x77\xc5\xfc\xe7\x17\xe4\x2e\x2b\x1c\x6b\x5f\xb6\xf8\x99" - "\x82\x17\x9f\x7d\x9e\xb9\x66\x69\xd1\xb2\x67\x9f\xb7\xb3\x66\xc9" - "\x9d\x9a\x95\x95\x7b\xff\xa3\x8f\x3c\x9e\x4c\xf7\xcf\x47\x1a\x56" - "\xfe\x59\x19\x63\x55\xd6\xc3\xd3\xa6\x3c\x96\x3b\x65\xf6\xa3\xb3" - "\xe6\xc8\x4b\x0b\xfd\xf9\x53\x17\xc7\x2f\x10\xc5\x87\xa9\xe0\xa5" - "\x0e\x8c\xef\x90\x76\xda\x30\x57\xc5\xbb\x76\x6f\x8c\x8e\x77\xed" - "\xc6\x5a\xd6\xdd\x8c\xbf\x63\x44\xeb\x53\xf1\x87\x75\xea\x86\x6c" - "\xc5\x5f\x49\x33\x7a\xdc\xee\xbd\x03\xfc\xb5\x41\xc6\x54\x62\x5f" - "\x0e\xb5\x3f\xeb\x86\xfe\x77\xb6\x45\xe6\x0d\xac\x27\xdd\xfe\xfe" - "\xf5\x64\xbf\x4e\x59\x37\xda\x58\x5b\x22\xcd\x8f\x75\x65\x12\xaf" - "\x2b\xd5\x7e\xd2\x86\xa7\x24\x4f\x0d\x2a\xdf\x16\x32\xd6\x95\x2c" - "\xdb\x7c\x56\xac\xd6\x1f\xeb\x72\x22\x65\x5c\xc6\x58\xd4\x65\x9c" - "\xeb\xc9\xfd\x3b\xcb\x85\x3d\xbc\xa7\x0d\xfb\xb8\x03\xb6\x02\xe6" - "\xaf\x1e\x21\x92\x2e\xe8\x7b\x1d\xeb\x2a\x79\x8f\x9b\xed\x66\x9d" - "\x9f\x86\x9f\xa4\x75\x9f\x09\xf7\xda\x2e\xb5\xa6\x74\x7f\x97\xf5" - "\xba\x58\x37\xea\xfe\xd9\x61\x19\x8f\x0e\x3a\x7d\xdd\xa1\x01\x9e" - "\xdd\x30\x97\x79\x61\x60\x2d\xbb\x2e\x4a\xff\x77\xcb\x6f\x35\xae" - "\x0b\x19\xf7\xf5\x8b\xae\x27\x93\xf9\xfa\x72\xaa\x30\x09\xcc\x47" - "\xeb\x76\x73\x1b\x4c\x4f\x1f\xb9\x0f\xa2\xac\x79\x80\x7e\xeb\x33" - "\xfa\xe9\xa7\xef\xb3\x18\x7b\x2c\x0a\xef\x0d\x4f\x0d\x46\xab\xf8" - "\x74\x5a\xef\xfa\x5a\x3a\xb9\x69\x08\xcb\xa4\x41\xaf\x8b\x69\xb5" - "\xbe\xe5\x62\x5a\x6d\xb8\x26\x82\x56\x93\x2f\xa6\xd5\xfa\x60\xc4" - "\xb9\x8f\xbe\x8f\xb2\xe1\x29\xa6\x19\xf3\x18\xfa\xbd\x1b\x7c\xb6" - "\x6e\x80\x7e\x1b\xd2\x2f\xa6\xdf\x86\x49\xf1\xe9\xb7\xbe\xed\x86" - "\x68\x38\xa5\xf1\xe6\x8d\xe1\x6b\x4d\xfa\x7d\x9e\x0d\x8d\x2d\xa3" - "\xe5\x9a\x34\xf8\xba\x49\xcb\x7f\xdd\x8d\x3f\xfc\xf2\x3a\x62\xc0" - "\x16\x17\x3a\xaf\x6e\x68\x68\xc1\x9a\x97\xf7\x95\x2e\x31\x17\x1d" - "\x33\xf6\x3c\xf0\xdc\xc6\x6b\xe7\xd9\xe1\x7b\x05\xa7\x33\x3d\xf9" - "\x5b\x51\xe0\xf7\x36\x65\x97\xfe\x33\xf5\xef\xb9\xdc\x34\x83\x12" - "\xd7\x92\xfd\x40\xd5\xed\x9c\x6e\x03\x0f\x49\xdf\x27\xf9\x2d\xd5" - "\x41\x60\xe6\x86\x33\x69\x10\xb8\xfd\xfc\x3f\xd8\x9d\xd6\x18\x7d" - "\x94\x3f\x7f\x71\xde\x8b\x0b\x17\x7e\xbd\x2a\x8a\xf4\x1f\x2b\x77" - "\x6b\xfc\x3d\xa3\xa1\x3d\xeb\x9e\x5b\x85\x36\xd9\xfe\xb7\xa8\x79" - "\xf3\x9f\xa1\xff\x7e\xd6\xa4\x6c\xc9\x27\x3b\xd5\x3d\xde\x97\x27" - "\x44\xe8\x67\xf0\xc8\xcb\x99\xc2\xfd\xcf\xc5\x03\x63\xfc\x72\xca" - "\xc5\x63\xfc\xb2\x3d\xfe\x18\xbf\x3c\x55\x5b\xce\xf7\x2a\x5e\xc6" - "\xfa\x67\xb1\xb4\x35\xf9\x9d\xcf\xcb\xb1\x66\xee\xc4\x7a\xb9\x6b" - "\xf6\xca\xe6\x7b\x73\x57\x26\xb0\x3f\xb8\xfc\x76\x46\xe8\xbc\xe8" - "\xe0\x33\x6b\x3e\x1f\xe3\x6f\x67\xf0\x37\x73\xf8\x1b\xaa\xb2\x0c" - "\x9e\xb7\x9c\x20\xb9\x76\x44\xbe\xbd\xfa\x84\xfc\xc6\x2f\x6c\x85" - "\x97\x6b\x0c\xdb\xda\x8a\xe9\x8d\xef\x17\x6f\x56\xe3\xd1\xc6\x63" - "\xc1\xed\xe5\xae\x6c\x56\x6d\x9c\xe7\xef\x63\x91\x55\xd9\x10\x2f" - "\xb7\x5d\x72\xef\x3e\xa9\xbd\x70\xd0\x98\xf2\x6e\xd7\xb0\xd7\x55" - "\xec\x69\xf6\x69\xf4\x1b\x3e\x75\xec\x5f\xd7\xe3\xf6\x64\xc4\xfa" - "\xe7\x29\x1f\x13\xcf\x74\xc3\xb7\x07\xcf\x73\xfa\xd7\x03\xfc\xbd" - "\x15\xac\xe3\xec\x25\x6b\x87\x9e\x26\xcf\x35\xd5\x83\xec\xa1\x1b" - "\xf7\x89\x75\x1f\xb8\x61\x80\x51\xd9\xef\x17\x84\x77\xd6\x17\x03" - "\xbe\x7d\x9e\x3d\x86\x6f\x98\xf4\x07\xc4\xdc\xcb\xdf\x74\x39\x41" - "\x9e\xcf\xe4\x37\x64\x6e\xe0\xfd\x6f\x4f\xa0\x45\xfa\x25\x7a\x7c" - "\x91\xb8\xe8\x78\xd4\xf2\x1e\x2d\xe7\x47\xe2\xe2\x98\xbf\x6c\xd1" - "\x78\xc7\xc2\x45\xf6\x67\xf3\x17\x15\xe6\x2e\x92\x31\x60\x65\x78" - "\xd9\xa2\x95\x85\x7c\x22\x71\x73\x72\xcc\x1c\xa6\xfb\x10\xf6\xfb" - "\x4a\x49\x3f\xc2\xd2\xc7\x41\x0f\x93\xf2\x23\x2c\xcb\x52\xf3\x7a" - "\x69\xde\xc5\x3e\x33\xa5\xfd\xfe\x5f\xe0\xab\xd4\x0a\x15\x7b\x5e" - "\xf7\xb3\x61\xbe\x2b\xad\x8c\x53\x67\x77\xbf\xcf\x18\xfb\x2e\xf5" - "\xe5\xc8\xfb\x1e\x32\x4e\xf8\x6b\x3c\x6e\xa5\xe4\x75\x4c\xe3\x58" - "\xa7\x3a\x3f\x97\x1e\x33\xf8\xd9\xf0\x37\x64\x58\x7c\xdf\x64\x7c" - "\x30\xd2\xd7\xa8\xec\x3e\xcc\x79\xb6\xfe\x7e\xac\x36\x11\xe3\x1e" - "\x30\x35\x03\x8f\x32\x7b\x2c\x1e\xc0\xef\x7a\xa4\x4f\x1c\xf0\xe5" - "\x32\xfa\x59\x96\x85\xe7\x8b\x6c\xd5\xfb\xa6\x65\xc1\x28\x5d\xba" - "\xa0\x28\x99\xa6\xcc\x2f\x28\x60\xb9\x9e\xbf\xa0\x60\xd9\x92\x17" *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-stable-8@FreeBSD.ORG Mon May 24 12:51:01 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 566BC1065761; Mon, 24 May 2010 12:51:01 +0000 (UTC) (envelope-from gallatin@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 42F598FC23; Mon, 24 May 2010 12:51:01 +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 o4OCp1tb004269; Mon, 24 May 2010 12:51:01 GMT (envelope-from gallatin@svn.freebsd.org) Received: (from gallatin@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OCp1XI004267; Mon, 24 May 2010 12:51:01 GMT (envelope-from gallatin@svn.freebsd.org) Message-Id: <201005241251.o4OCp1XI004267@svn.freebsd.org> From: Andrew Gallatin Date: Mon, 24 May 2010 12:51:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208498 - stable/8/sys/dev/mxge X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 12:51:01 -0000 Author: gallatin Date: Mon May 24 12:51:00 2010 New Revision: 208498 URL: http://svn.freebsd.org/changeset/base/208498 Log: MFC 208312: Correctly identify some twinax cables, which report a media type of 1 Modified: stable/8/sys/dev/mxge/if_mxge.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/dev/mxge/if_mxge.c ============================================================================== --- stable/8/sys/dev/mxge/if_mxge.c Mon May 24 12:50:55 2010 (r208497) +++ stable/8/sys/dev/mxge/if_mxge.c Mon May 24 12:51:00 2010 (r208498) @@ -2781,7 +2781,8 @@ static struct mxge_media_type mxge_sfp_m {0, (1 << 7), "Reserved"}, {IFM_10G_LRM, (1 << 6), "10GBASE-LRM"}, {IFM_10G_LR, (1 << 5), "10GBASE-LR"}, - {IFM_10G_SR, (1 << 4), "10GBASE-SR"} + {IFM_10G_SR, (1 << 4), "10GBASE-SR"}, + {IFM_10G_TWINAX,(1 << 0), "10GBASE-Twinax"} }; static void From owner-svn-src-stable-8@FreeBSD.ORG Mon May 24 13:01:02 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B06A5106567B; Mon, 24 May 2010 13:01:02 +0000 (UTC) (envelope-from gallatin@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9EA0E8FC18; Mon, 24 May 2010 13:01:02 +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 o4OD12sp006547; Mon, 24 May 2010 13:01:02 GMT (envelope-from gallatin@svn.freebsd.org) Received: (from gallatin@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OD12ps006545; Mon, 24 May 2010 13:01:02 GMT (envelope-from gallatin@svn.freebsd.org) Message-Id: <201005241301.o4OD12ps006545@svn.freebsd.org> From: Andrew Gallatin Date: Mon, 24 May 2010 13:01:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208499 - stable/8/sys/dev/mxge X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 13:01:02 -0000 Author: gallatin Date: Mon May 24 13:01:02 2010 New Revision: 208499 URL: http://svn.freebsd.org/changeset/base/208499 Log: MFC 208379: Add interrupt descriptions for mxge's msi-x vectors Modified: stable/8/sys/dev/mxge/if_mxge.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/dev/mxge/if_mxge.c ============================================================================== --- stable/8/sys/dev/mxge/if_mxge.c Mon May 24 12:51:00 2010 (r208498) +++ stable/8/sys/dev/mxge/if_mxge.c Mon May 24 13:01:02 2010 (r208499) @@ -4480,6 +4480,8 @@ mxge_add_msix_irqs(mxge_softc_t *sc) "message %d\n", i); goto abort_with_intr; } + bus_describe_intr(sc->dev, sc->msix_irq_res[i], + sc->msix_ih[i], "s%d", i); } if (mxge_verbose) { From owner-svn-src-stable-8@FreeBSD.ORG Mon May 24 15:26:40 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 90692106566C; Mon, 24 May 2010 15:26:40 +0000 (UTC) (envelope-from kensmith@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7E84D8FC16; Mon, 24 May 2010 15:26:40 +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 o4OFQenh038823; Mon, 24 May 2010 15:26:40 GMT (envelope-from kensmith@svn.freebsd.org) Received: (from kensmith@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OFQePi038821; Mon, 24 May 2010 15:26:40 GMT (envelope-from kensmith@svn.freebsd.org) Message-Id: <201005241526.o4OFQePi038821@svn.freebsd.org> From: Ken Smith Date: Mon, 24 May 2010 15:26:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208506 - stable/8/usr.sbin/fifolog/lib X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 15:26:40 -0000 Author: kensmith Date: Mon May 24 15:26:40 2010 New Revision: 208506 URL: http://svn.freebsd.org/changeset/base/208506 Log: Merge r208110: > Do not attempt to render a logrecord with length byte, until we have > decompressed all the bytes required. Requested by: phk Modified: stable/8/usr.sbin/fifolog/lib/fifolog_reader.c Directory Properties: stable/8/usr.sbin/fifolog/ (props changed) Modified: stable/8/usr.sbin/fifolog/lib/fifolog_reader.c ============================================================================== --- stable/8/usr.sbin/fifolog/lib/fifolog_reader.c Mon May 24 15:12:12 2010 (r208505) +++ stable/8/usr.sbin/fifolog/lib/fifolog_reader.c Mon May 24 15:26:40 2010 (r208506) @@ -225,6 +225,8 @@ fifolog_reader_chop(struct fifolog_reade if (u & FIFOLOG_LENGTH) { v = p[w]; w++; + if (p + w + v >= q) + return (p); } else { for (v = 0; p + v + w < q && p[v + w] != '\0'; v++) continue; From owner-svn-src-stable-8@FreeBSD.ORG Mon May 24 18:00:29 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2C221106564A; Mon, 24 May 2010 18:00:29 +0000 (UTC) (envelope-from jfv@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 196538FC1D; Mon, 24 May 2010 18:00:29 +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 o4OI0Tsf073553; Mon, 24 May 2010 18:00:29 GMT (envelope-from jfv@svn.freebsd.org) Received: (from jfv@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OI0T0E073550; Mon, 24 May 2010 18:00:29 GMT (envelope-from jfv@svn.freebsd.org) Message-Id: <201005241800.o4OI0T0E073550@svn.freebsd.org> From: Jack F Vogel Date: Mon, 24 May 2010 18:00:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208516 - stable/8/sys/dev/ixgbe X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 18:00:29 -0000 Author: jfv Date: Mon May 24 18:00:28 2010 New Revision: 208516 URL: http://svn.freebsd.org/changeset/base/208516 Log: MFC of driver version 2.2.0 for 8.1 Modified: stable/8/sys/dev/ixgbe/ixgbe.c stable/8/sys/dev/ixgbe/ixgbe.h Modified: stable/8/sys/dev/ixgbe/ixgbe.c ============================================================================== --- stable/8/sys/dev/ixgbe/ixgbe.c Mon May 24 17:33:02 2010 (r208515) +++ stable/8/sys/dev/ixgbe/ixgbe.c Mon May 24 18:00:28 2010 (r208516) @@ -46,7 +46,7 @@ int ixgbe_display_debug_stat /********************************************************************* * Driver version *********************************************************************/ -char ixgbe_driver_version[] = "2.1.7"; +char ixgbe_driver_version[] = "2.2.0"; /********************************************************************* * PCI Device ID Table @@ -256,11 +256,11 @@ TUNABLE_INT("hw.ixgbe.enable_msix", &ixg /* * Header split has seemed to be beneficial in - * all circumstances tested, so its on by default + * most circumstances tested, so its on by default * however this variable will allow it to be disabled * for some debug purposes. */ -static bool ixgbe_header_split = TRUE; +static bool ixgbe_header_split = FALSE; TUNABLE_INT("hw.ixgbe.hdr_split", &ixgbe_header_split); /* @@ -406,37 +406,39 @@ ixgbe_attach(device_t dev) /* Keep track of optics */ pci_device_id = pci_get_device(dev); switch (pci_device_id) { - case IXGBE_DEV_ID_82598_CX4_DUAL_PORT : - case IXGBE_DEV_ID_82598EB_CX4 : + case IXGBE_DEV_ID_82598_CX4_DUAL_PORT: + case IXGBE_DEV_ID_82598EB_CX4: adapter->optics = IFM_10G_CX4; break; - case IXGBE_DEV_ID_82598 : - case IXGBE_DEV_ID_82598AF_DUAL_PORT : - case IXGBE_DEV_ID_82598_DA_DUAL_PORT : - case IXGBE_DEV_ID_82598AF_SINGLE_PORT : - case IXGBE_DEV_ID_82598_SR_DUAL_PORT_EM : - case IXGBE_DEV_ID_82598EB_SFP_LOM : - case IXGBE_DEV_ID_82598AT : + case IXGBE_DEV_ID_82598: + case IXGBE_DEV_ID_82598AF_DUAL_PORT: + case IXGBE_DEV_ID_82598AF_SINGLE_PORT: + case IXGBE_DEV_ID_82598_SR_DUAL_PORT_EM: + case IXGBE_DEV_ID_82598EB_SFP_LOM: + case IXGBE_DEV_ID_82598AT: adapter->optics = IFM_10G_SR; break; - case IXGBE_DEV_ID_82598AT2 : + case IXGBE_DEV_ID_82598AT2: adapter->optics = IFM_10G_T; break; - case IXGBE_DEV_ID_82598EB_XF_LR : + case IXGBE_DEV_ID_82598EB_XF_LR: adapter->optics = IFM_10G_LR; break; - case IXGBE_DEV_ID_82599_SFP : + case IXGBE_DEV_ID_82599_SFP: adapter->optics = IFM_10G_SR; ixgbe_num_segs = IXGBE_82599_SCATTER; break; - case IXGBE_DEV_ID_82599_KX4 : + case IXGBE_DEV_ID_82598_DA_DUAL_PORT : + adapter->optics = IFM_10G_TWINAX; + break; + case IXGBE_DEV_ID_82599_KX4: case IXGBE_DEV_ID_82599_KX4_MEZZ: - case IXGBE_DEV_ID_82599_CX4 : + case IXGBE_DEV_ID_82599_CX4: adapter->optics = IFM_10G_CX4; ixgbe_num_segs = IXGBE_82599_SCATTER; break; - case IXGBE_DEV_ID_82599_XAUI_LOM : - case IXGBE_DEV_ID_82599_COMBO_BACKPLANE : + case IXGBE_DEV_ID_82599_XAUI_LOM: + case IXGBE_DEV_ID_82599_COMBO_BACKPLANE: ixgbe_num_segs = IXGBE_82599_SCATTER; break; case IXGBE_DEV_ID_82599_T3_LOM: @@ -759,6 +761,7 @@ ixgbe_start_locked(struct tx_ring *txr, /* Set watchdog on */ txr->watchdog_check = TRUE; + txr->watchdog_time = ticks; } return; @@ -798,8 +801,6 @@ ixgbe_mq_start(struct ifnet *ifp, struct /* Which queue to use */ if ((m->m_flags & M_FLOWID) != 0) i = m->m_pkthdr.flowid % adapter->num_queues; - else /* use the cpu we're on */ - i = curcpu % adapter->num_queues; txr = &adapter->tx_rings[i]; @@ -856,8 +857,11 @@ ixgbe_mq_start_locked(struct ifnet *ifp, next = drbr_dequeue(ifp, txr->br); } - if (enqueued > 0) + if (enqueued > 0) { + /* Set watchdog on */ txr->watchdog_check = TRUE; + txr->watchdog_time = ticks; + } return (err); } @@ -1130,11 +1134,19 @@ ixgbe_init_locked(struct adapter *adapte callout_reset(&adapter->timer, hz, ixgbe_local_timer, adapter); /* Set up MSI/X routing */ - if (ixgbe_enable_msix) + if (ixgbe_enable_msix) { ixgbe_configure_ivars(adapter); - else { /* Simple settings for Legacy/MSI */ + /* Set up auto-mask */ + if (hw->mac.type == ixgbe_mac_82598EB) + IXGBE_WRITE_REG(hw, IXGBE_EIAM, IXGBE_EICS_RTX_QUEUE); + else { + IXGBE_WRITE_REG(hw, IXGBE_EIAM_EX(0), 0xFFFFFFFF); + IXGBE_WRITE_REG(hw, IXGBE_EIAM_EX(1), 0xFFFFFFFF); + } + } else { /* Simple settings for Legacy/MSI */ ixgbe_set_ivar(adapter, 0, 0, 0); ixgbe_set_ivar(adapter, 0, 0, 1); + IXGBE_WRITE_REG(hw, IXGBE_EIAM, IXGBE_EICS_RTX_QUEUE); } #ifdef IXGBE_FDIR @@ -1156,6 +1168,9 @@ ixgbe_init_locked(struct adapter *adapte } } + /* Set moderation on the Link interrupt */ + IXGBE_WRITE_REG(hw, IXGBE_EITR(adapter->linkvec), IXGBE_LINK_ITR); + /* Config/Enable Link */ ixgbe_config_link(adapter); @@ -1251,16 +1266,12 @@ ixgbe_handle_que(void *context, int pend struct adapter *adapter = que->adapter; struct tx_ring *txr = que->txr; struct ifnet *ifp = adapter->ifp; - u32 loop = MAX_LOOP; - bool more_rx, more_tx; - - IXGBE_TX_LOCK(txr); - do { - more_rx = ixgbe_rxeof(que, adapter->rx_process_limit); - more_tx = ixgbe_txeof(txr); - } while (loop-- && (more_rx || more_tx)); + bool more; if (ifp->if_drv_flags & IFF_DRV_RUNNING) { + more = ixgbe_rxeof(que, adapter->rx_process_limit); + IXGBE_TX_LOCK(txr); + ixgbe_txeof(txr); #if __FreeBSD_version >= 800000 if (!drbr_empty(ifp, txr->br)) ixgbe_mq_start_locked(ifp, txr, NULL); @@ -1268,11 +1279,16 @@ ixgbe_handle_que(void *context, int pend if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd)) ixgbe_start_locked(txr, ifp); #endif + IXGBE_TX_UNLOCK(txr); + if (more) { + taskqueue_enqueue(que->tq, &que->que_task); + return; + } } - IXGBE_TX_UNLOCK(txr); /* Reenable this interrupt */ ixgbe_enable_queue(adapter, que->msix); + return; } @@ -1718,7 +1734,6 @@ ixgbe_xmit(struct tx_ring *txr, struct m * hardware that this frame is available to transmit. */ ++txr->total_packets; - txr->watchdog_time = ticks; IXGBE_WRITE_REG(&adapter->hw, IXGBE_TDT(txr->me), i); /* Do a clean if descriptors are low */ @@ -2191,13 +2206,14 @@ ixgbe_setup_msix(struct adapter *adapter /* Figure out a reasonable auto config value */ queues = (mp_ncpus > (msgs-1)) ? (msgs-1) : mp_ncpus; - if (ixgbe_num_queues == 0) - ixgbe_num_queues = queues; + if (ixgbe_num_queues != 0) + queues = ixgbe_num_queues; + /* ** Want one vector (RX/TX pair) per queue ** plus an additional for Link. */ - want = ixgbe_num_queues + 1; + want = queues + 1; if (msgs >= want) msgs = want; else { @@ -2210,7 +2226,7 @@ ixgbe_setup_msix(struct adapter *adapter if ((msgs) && pci_alloc_msix(dev, &msgs) == 0) { device_printf(adapter->dev, "Using MSIX interrupts with %d vectors\n", msgs); - adapter->num_queues = ixgbe_num_queues; + adapter->num_queues = queues; return (msgs); } msi: @@ -3333,72 +3349,62 @@ static void ixgbe_refresh_mbufs(struct rx_ring *rxr, int limit) { struct adapter *adapter = rxr->adapter; - bus_dma_segment_t seg[2]; + bus_dma_segment_t hseg[1]; + bus_dma_segment_t pseg[1]; struct ixgbe_rx_buf *rxbuf; struct mbuf *mh, *mp; - bus_dmamap_t map; int i, nsegs, error, cleaned; i = rxr->next_to_refresh; cleaned = -1; /* Signify no completions */ while (i != limit) { rxbuf = &rxr->rx_buffers[i]; - - if (rxbuf->m_head == NULL) { + if ((rxbuf->m_head == NULL) && (rxr->hdr_split)) { mh = m_gethdr(M_DONTWAIT, MT_DATA); if (mh == NULL) goto update; - } else /* reuse */ - mh = rxbuf->m_head; - - mh->m_len = MHLEN; - mh->m_flags |= M_PKTHDR; + mh->m_pkthdr.len = mh->m_len = MHLEN; + mh->m_len = MHLEN; + mh->m_flags |= M_PKTHDR; + m_adj(mh, ETHER_ALIGN); + /* Get the memory mapping */ + error = bus_dmamap_load_mbuf_sg(rxr->htag, + rxbuf->hmap, mh, hseg, &nsegs, BUS_DMA_NOWAIT); + if (error != 0) { + printf("GET BUF: dmamap load" + " failure - %d\n", error); + m_free(mh); + goto update; + } + rxbuf->m_head = mh; + bus_dmamap_sync(rxr->htag, rxbuf->hmap, + BUS_DMASYNC_PREREAD); + rxr->rx_base[i].read.hdr_addr = + htole64(hseg[0].ds_addr); + } if (rxbuf->m_pack == NULL) { mp = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR, adapter->rx_mbuf_sz); if (mp == NULL) goto update; - mp->m_len = adapter->rx_mbuf_sz; - mp->m_flags &= ~M_PKTHDR; - } else { /* reusing */ - mp = rxbuf->m_pack; - mp->m_len = adapter->rx_mbuf_sz; - mp->m_flags &= ~M_PKTHDR; - mp->m_next = NULL; - } - - /* - ** Need to create a chain for the following - ** dmamap call at this point. - */ - mh->m_next = mp; - mh->m_pkthdr.len = mh->m_len + mp->m_len; - - /* Get the memory mapping */ - error = bus_dmamap_load_mbuf_sg(rxr->rxtag, - rxr->spare_map, mh, seg, &nsegs, BUS_DMA_NOWAIT); - if (error != 0) { - printf("GET BUF: dmamap load failure - %d\n", error); - m_free(mh); - goto update; + mp->m_pkthdr.len = mp->m_len = adapter->rx_mbuf_sz; + /* Get the memory mapping */ + error = bus_dmamap_load_mbuf_sg(rxr->ptag, + rxbuf->pmap, mp, pseg, &nsegs, BUS_DMA_NOWAIT); + if (error != 0) { + printf("GET BUF: dmamap load" + " failure - %d\n", error); + m_free(mp); + goto update; + } + rxbuf->m_pack = mp; + bus_dmamap_sync(rxr->ptag, rxbuf->pmap, + BUS_DMASYNC_PREREAD); + rxr->rx_base[i].read.pkt_addr = + htole64(pseg[0].ds_addr); } - /* Unload old mapping and update buffer struct */ - if (rxbuf->m_head != NULL) - bus_dmamap_unload(rxr->rxtag, rxbuf->map); - map = rxbuf->map; - rxbuf->map = rxr->spare_map; - rxr->spare_map = map; - rxbuf->m_head = mh; - rxbuf->m_pack = mp; - bus_dmamap_sync(rxr->rxtag, - rxbuf->map, BUS_DMASYNC_PREREAD); - - /* Update descriptor */ - rxr->rx_base[i].read.hdr_addr = htole64(seg[0].ds_addr); - rxr->rx_base[i].read.pkt_addr = htole64(seg[1].ds_addr); - cleaned = i; /* Calculate next index */ if (++i == adapter->num_rx_desc) @@ -3408,12 +3414,11 @@ ixgbe_refresh_mbufs(struct rx_ring *rxr, } update: if (cleaned != -1) /* If we refreshed some, bump tail */ - IXGBE_WRITE_REG(&adapter->hw, IXGBE_RDT(rxr->me), cleaned); - + IXGBE_WRITE_REG(&adapter->hw, + IXGBE_RDT(rxr->me), cleaned); return; } - /********************************************************************* * * Allocate memory for rx_buffer structures. Since we use one @@ -3439,42 +3444,50 @@ ixgbe_allocate_receive_buffers(struct rx goto fail; } - /* - ** The tag is made to accomodate the largest buffer size - ** with packet split (hence the two segments, even though - ** it may not always use this. - */ if ((error = bus_dma_tag_create(bus_get_dma_tag(dev), /* parent */ 1, 0, /* alignment, bounds */ BUS_SPACE_MAXADDR, /* lowaddr */ BUS_SPACE_MAXADDR, /* highaddr */ NULL, NULL, /* filter, filterarg */ - MJUM16BYTES, /* maxsize */ - 2, /* nsegments */ - MJUMPAGESIZE, /* maxsegsize */ + MSIZE, /* maxsize */ + 1, /* nsegments */ + MSIZE, /* maxsegsize */ 0, /* flags */ NULL, /* lockfunc */ NULL, /* lockfuncarg */ - &rxr->rxtag))) { + &rxr->htag))) { device_printf(dev, "Unable to create RX DMA tag\n"); goto fail; } - /* Create the spare map (used by getbuf) */ - error = bus_dmamap_create(rxr->rxtag, BUS_DMA_NOWAIT, - &rxr->spare_map); - if (error) { - device_printf(dev, "%s: bus_dmamap_create failed: %d\n", - __func__, error); + if ((error = bus_dma_tag_create(bus_get_dma_tag(dev), /* parent */ + 1, 0, /* alignment, bounds */ + BUS_SPACE_MAXADDR, /* lowaddr */ + BUS_SPACE_MAXADDR, /* highaddr */ + NULL, NULL, /* filter, filterarg */ + MJUMPAGESIZE, /* maxsize */ + 1, /* nsegments */ + MJUMPAGESIZE, /* maxsegsize */ + 0, /* flags */ + NULL, /* lockfunc */ + NULL, /* lockfuncarg */ + &rxr->ptag))) { + device_printf(dev, "Unable to create RX DMA tag\n"); goto fail; } for (i = 0; i < adapter->num_rx_desc; i++, rxbuf++) { rxbuf = &rxr->rx_buffers[i]; - error = bus_dmamap_create(rxr->rxtag, - BUS_DMA_NOWAIT, &rxbuf->map); + error = bus_dmamap_create(rxr->htag, + BUS_DMA_NOWAIT, &rxbuf->hmap); + if (error) { + device_printf(dev, "Unable to create RX head map\n"); + goto fail; + } + error = bus_dmamap_create(rxr->ptag, + BUS_DMA_NOWAIT, &rxbuf->pmap); if (error) { - device_printf(dev, "Unable to create RX DMA map\n"); + device_printf(dev, "Unable to create RX pkt map\n"); goto fail; } } @@ -3543,6 +3556,36 @@ ixgbe_setup_hw_rsc(struct rx_ring *rxr) } +static void +ixgbe_free_receive_ring(struct rx_ring *rxr) +{ + struct adapter *adapter; + struct ixgbe_rx_buf *rxbuf; + int i; + + adapter = rxr->adapter; + for (i = 0; i < adapter->num_rx_desc; i++) { + rxbuf = &rxr->rx_buffers[i]; + if (rxbuf->m_head != NULL) { + bus_dmamap_sync(rxr->htag, rxbuf->hmap, + BUS_DMASYNC_POSTREAD); + bus_dmamap_unload(rxr->htag, rxbuf->hmap); + rxbuf->m_head->m_flags |= M_PKTHDR; + m_freem(rxbuf->m_head); + } + if (rxbuf->m_pack != NULL) { + bus_dmamap_sync(rxr->ptag, rxbuf->pmap, + BUS_DMASYNC_POSTREAD); + bus_dmamap_unload(rxr->ptag, rxbuf->pmap); + rxbuf->m_pack->m_flags |= M_PKTHDR; + m_freem(rxbuf->m_pack); + } + rxbuf->m_head = NULL; + rxbuf->m_pack = NULL; + } +} + + /********************************************************************* * * Initialize a receive ring and its buffers. @@ -3555,9 +3598,9 @@ ixgbe_setup_receive_ring(struct rx_ring struct ifnet *ifp; device_t dev; struct ixgbe_rx_buf *rxbuf; - bus_dma_segment_t seg[2]; + bus_dma_segment_t pseg[1], hseg[1]; struct lro_ctrl *lro = &rxr->lro; - int rsize, nsegs, error; + int rsize, nsegs, error = 0; adapter = rxr->adapter; ifp = adapter->ifp; @@ -3569,55 +3612,62 @@ ixgbe_setup_receive_ring(struct rx_ring sizeof(union ixgbe_adv_rx_desc), DBA_ALIGN); bzero((void *)rxr->rx_base, rsize); - /* - ** Free current RX buffer structs and their mbufs - */ - for (int i = 0; i < adapter->num_rx_desc; i++) { - rxbuf = &rxr->rx_buffers[i]; - if (rxbuf->m_head != NULL) { - bus_dmamap_sync(rxr->rxtag, rxbuf->map, - BUS_DMASYNC_POSTREAD); - bus_dmamap_unload(rxr->rxtag, rxbuf->map); - if (rxbuf->m_head) { - rxbuf->m_head->m_next = rxbuf->m_pack; - m_freem(rxbuf->m_head); - } - rxbuf->m_head = NULL; - rxbuf->m_pack = NULL; - } - } + /* Free current RX buffer structs and their mbufs */ + ixgbe_free_receive_ring(rxr); + + /* Configure header split? */ + if (ixgbe_header_split) + rxr->hdr_split = TRUE; /* Now replenish the mbufs */ for (int j = 0; j != adapter->num_rx_desc; ++j) { + struct mbuf *mh, *mp; rxbuf = &rxr->rx_buffers[j]; + /* + ** Dont allocate mbufs if not + ** doing header split, its wasteful + */ + if (rxr->hdr_split == FALSE) + goto skip_head; + + /* First the header */ rxbuf->m_head = m_gethdr(M_DONTWAIT, MT_DATA); if (rxbuf->m_head == NULL) - panic("RX ring hdr initialization failed!\n"); - rxbuf->m_head->m_len = MHLEN; - rxbuf->m_head->m_flags |= M_PKTHDR; - rxbuf->m_head->m_pkthdr.len = rxbuf->m_head->m_len; + goto fail; + m_adj(rxbuf->m_head, ETHER_ALIGN); + mh = rxbuf->m_head; + mh->m_len = mh->m_pkthdr.len = MHLEN; + mh->m_flags |= M_PKTHDR; + /* Get the memory mapping */ + error = bus_dmamap_load_mbuf_sg(rxr->htag, + rxbuf->hmap, rxbuf->m_head, hseg, + &nsegs, BUS_DMA_NOWAIT); + if (error != 0) /* Nothing elegant to do here */ + goto fail; + bus_dmamap_sync(rxr->htag, + rxbuf->hmap, BUS_DMASYNC_PREREAD); + /* Update descriptor */ + rxr->rx_base[j].read.hdr_addr = htole64(hseg[0].ds_addr); +skip_head: + /* Now the payload cluster */ rxbuf->m_pack = m_getjcl(M_DONTWAIT, MT_DATA, M_PKTHDR, adapter->rx_mbuf_sz); if (rxbuf->m_pack == NULL) - panic("RX ring pkt initialization failed!\n"); - rxbuf->m_pack->m_len = adapter->rx_mbuf_sz; - rxbuf->m_head->m_next = rxbuf->m_pack; - rxbuf->m_head->m_pkthdr.len += rxbuf->m_pack->m_len; - + goto fail; + mp = rxbuf->m_pack; + mp->m_pkthdr.len = mp->m_len = adapter->rx_mbuf_sz; /* Get the memory mapping */ - error = bus_dmamap_load_mbuf_sg(rxr->rxtag, - rxbuf->map, rxbuf->m_head, seg, + error = bus_dmamap_load_mbuf_sg(rxr->ptag, + rxbuf->pmap, mp, pseg, &nsegs, BUS_DMA_NOWAIT); if (error != 0) - panic("RX ring dma initialization failed!\n"); - bus_dmamap_sync(rxr->rxtag, - rxbuf->map, BUS_DMASYNC_PREREAD); - + goto fail; + bus_dmamap_sync(rxr->ptag, + rxbuf->pmap, BUS_DMASYNC_PREREAD); /* Update descriptor */ - rxr->rx_base[j].read.hdr_addr = htole64(seg[0].ds_addr); - rxr->rx_base[j].read.pkt_addr = htole64(seg[1].ds_addr); + rxr->rx_base[j].read.pkt_addr = htole64(pseg[0].ds_addr); } @@ -3625,10 +3675,8 @@ ixgbe_setup_receive_ring(struct rx_ring rxr->next_to_check = 0; rxr->next_to_refresh = 0; rxr->lro_enabled = FALSE; - - /* Use header split if configured */ - if (ixgbe_header_split) - rxr->hdr_split = TRUE; + rxr->rx_split_packets = 0; + rxr->rx_bytes = 0; bus_dmamap_sync(rxr->rxdma.dma_tag, rxr->rxdma.dma_map, BUS_DMASYNC_PREREAD | BUS_DMASYNC_PREWRITE); @@ -3636,18 +3684,18 @@ ixgbe_setup_receive_ring(struct rx_ring /* ** Now set up the LRO interface: ** 82598 uses software LRO, the - ** 82599 additionally uses a - ** hardware assist. - ** - ** Disable RSC when RXCSUM is off + ** 82599 uses a hardware assist. */ if ((adapter->hw.mac.type == ixgbe_mac_82599EB) && - (ifp->if_capenable & IFCAP_RXCSUM)) + (ifp->if_capenable & IFCAP_RXCSUM) && + (ifp->if_capenable & IFCAP_LRO)) ixgbe_setup_hw_rsc(rxr); else if (ifp->if_capenable & IFCAP_LRO) { int err = tcp_lro_init(lro); - if (err) - panic("LRO Initialization failed!\n"); + if (err) { + device_printf(dev, "LRO Initialization failed!\n"); + goto fail; + } INIT_DEBUGOUT("RX Soft LRO Initialized\n"); rxr->lro_enabled = TRUE; lro->ifp = adapter->ifp; @@ -3655,6 +3703,11 @@ ixgbe_setup_receive_ring(struct rx_ring IXGBE_RX_UNLOCK(rxr); return (0); + +fail: + ixgbe_free_receive_ring(rxr); + IXGBE_RX_UNLOCK(rxr); + return (error); } /********************************************************************* @@ -3681,17 +3734,7 @@ fail: */ for (int i = 0; i < j; ++i) { rxr = &adapter->rx_rings[i]; - for (int n = 0; n < adapter->num_rx_desc; n++) { - struct ixgbe_rx_buf *rxbuf; - rxbuf = &rxr->rx_buffers[n]; - if (rxbuf->m_head != NULL) { - bus_dmamap_sync(rxr->rxtag, rxbuf->map, - BUS_DMASYNC_POSTREAD); - bus_dmamap_unload(rxr->rxtag, rxbuf->map); - m_freem(rxbuf->m_head); - rxbuf->m_head = NULL; - } - } + ixgbe_free_receive_ring(rxr); } return (ENOBUFS); @@ -3761,14 +3804,6 @@ ixgbe_initialize_receive_units(struct ad IXGBE_SRRCTL_BSIZEHDRSIZE_SHIFT) & IXGBE_SRRCTL_BSIZEHDR_MASK); srrctl |= IXGBE_SRRCTL_DESCTYPE_HDR_SPLIT_ALWAYS; - if (adapter->hw.mac.type == ixgbe_mac_82599EB) { - /* PSRTYPE must be initialized in 82599 */ - u32 psrtype = IXGBE_PSRTYPE_TCPHDR | - IXGBE_PSRTYPE_UDPHDR | - IXGBE_PSRTYPE_IPV4HDR | - IXGBE_PSRTYPE_IPV6HDR; - IXGBE_WRITE_REG(hw, IXGBE_PSRTYPE(0), psrtype); - } } else srrctl |= IXGBE_SRRCTL_DESCTYPE_ADV_ONEBUF; IXGBE_WRITE_REG(hw, IXGBE_SRRCTL(i), srrctl); @@ -3778,6 +3813,15 @@ ixgbe_initialize_receive_units(struct ad IXGBE_WRITE_REG(hw, IXGBE_RDT(i), 0); } + if (adapter->hw.mac.type == ixgbe_mac_82599EB) { + /* PSRTYPE must be initialized in 82599 */ + u32 psrtype = IXGBE_PSRTYPE_TCPHDR | + IXGBE_PSRTYPE_UDPHDR | + IXGBE_PSRTYPE_IPV4HDR | + IXGBE_PSRTYPE_IPV6HDR; + IXGBE_WRITE_REG(hw, IXGBE_PSRTYPE(0), psrtype); + } + rxcsum = IXGBE_READ_REG(hw, IXGBE_RXCSUM); /* Setup RSS */ @@ -3856,38 +3900,58 @@ ixgbe_free_receive_structures(struct ada * Free receive ring data structures * **********************************************************************/ -void +static void ixgbe_free_receive_buffers(struct rx_ring *rxr) { - struct adapter *adapter = NULL; - struct ixgbe_rx_buf *rxbuf = NULL; + struct adapter *adapter = rxr->adapter; + struct ixgbe_rx_buf *rxbuf; - INIT_DEBUGOUT("free_receive_buffers: begin"); - adapter = rxr->adapter; + INIT_DEBUGOUT("free_receive_structures: begin"); + + /* Cleanup any existing buffers */ if (rxr->rx_buffers != NULL) { - rxbuf = &rxr->rx_buffers[0]; for (int i = 0; i < adapter->num_rx_desc; i++) { - if (rxbuf->map != NULL) { - bus_dmamap_sync(rxr->rxtag, rxbuf->map, - BUS_DMASYNC_POSTREAD); - bus_dmamap_unload(rxr->rxtag, rxbuf->map); - bus_dmamap_destroy(rxr->rxtag, rxbuf->map); - } + rxbuf = &rxr->rx_buffers[i]; if (rxbuf->m_head != NULL) { + bus_dmamap_sync(rxr->htag, rxbuf->hmap, + BUS_DMASYNC_POSTREAD); + bus_dmamap_unload(rxr->htag, rxbuf->hmap); + rxbuf->m_head->m_flags |= M_PKTHDR; m_freem(rxbuf->m_head); } + if (rxbuf->m_pack != NULL) { + bus_dmamap_sync(rxr->ptag, rxbuf->pmap, + BUS_DMASYNC_POSTREAD); + bus_dmamap_unload(rxr->ptag, rxbuf->pmap); + rxbuf->m_pack->m_flags |= M_PKTHDR; + m_freem(rxbuf->m_pack); + } rxbuf->m_head = NULL; - ++rxbuf; + rxbuf->m_pack = NULL; + if (rxbuf->hmap != NULL) { + bus_dmamap_destroy(rxr->htag, rxbuf->hmap); + rxbuf->hmap = NULL; + } + if (rxbuf->pmap != NULL) { + bus_dmamap_destroy(rxr->ptag, rxbuf->pmap); + rxbuf->pmap = NULL; + } + } + if (rxr->rx_buffers != NULL) { + free(rxr->rx_buffers, M_DEVBUF); + rxr->rx_buffers = NULL; } } - if (rxr->rx_buffers != NULL) { - free(rxr->rx_buffers, M_DEVBUF); - rxr->rx_buffers = NULL; + + if (rxr->htag != NULL) { + bus_dma_tag_destroy(rxr->htag); + rxr->htag = NULL; } - if (rxr->rxtag != NULL) { - bus_dma_tag_destroy(rxr->rxtag); - rxr->rxtag = NULL; + if (rxr->ptag != NULL) { + bus_dma_tag_destroy(rxr->ptag); + rxr->ptag = NULL; } + return; } @@ -4659,7 +4723,7 @@ ixgbe_update_stats_counters(struct adapt adapter->stats.lxoffrxc += IXGBE_READ_REG(hw, IXGBE_LXOFFRXC); /* 82598 only has a counter in the high register */ adapter->stats.gorc += IXGBE_READ_REG(hw, IXGBE_GORCH); - adapter->stats.gorc += IXGBE_READ_REG(hw, IXGBE_GOTCH); + adapter->stats.gotc += IXGBE_READ_REG(hw, IXGBE_GOTCH); adapter->stats.tor += IXGBE_READ_REG(hw, IXGBE_TORH); } Modified: stable/8/sys/dev/ixgbe/ixgbe.h ============================================================================== --- stable/8/sys/dev/ixgbe/ixgbe.h Mon May 24 17:33:02 2010 (r208515) +++ stable/8/sys/dev/ixgbe/ixgbe.h Mon May 24 18:00:28 2010 (r208516) @@ -238,7 +238,8 @@ struct ixgbe_rx_buf { struct mbuf *m_head; struct mbuf *m_pack; struct mbuf *fmp; - bus_dmamap_t map; + bus_dmamap_t hmap; + bus_dmamap_t pmap; }; /* @@ -323,8 +324,8 @@ struct rx_ring { u32 next_to_check; char mtx_name[16]; struct ixgbe_rx_buf *rx_buffers; - bus_dma_tag_t rxtag; - bus_dmamap_t spare_map; + bus_dma_tag_t htag; + bus_dma_tag_t ptag; u32 bytes; /* Used for AIM calc */ u32 packets; From owner-svn-src-stable-8@FreeBSD.ORG Mon May 24 18:21:42 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9DB191065670; Mon, 24 May 2010 18:21:42 +0000 (UTC) (envelope-from rstone@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 726D88FC1C; Mon, 24 May 2010 18:21:42 +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 o4OILgcU078318; Mon, 24 May 2010 18:21:42 GMT (envelope-from rstone@svn.freebsd.org) Received: (from rstone@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OILgYp078316; Mon, 24 May 2010 18:21:42 GMT (envelope-from rstone@svn.freebsd.org) Message-Id: <201005241821.o4OILgYp078316@svn.freebsd.org> From: Ryan Stone Date: Mon, 24 May 2010 18:21:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208517 - stable/8/sys/dev/hwpmc X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 18:21:42 -0000 Author: rstone Date: Mon May 24 18:21:42 2010 New Revision: 208517 URL: http://svn.freebsd.org/changeset/base/208517 Log: MFC r207484: When configuring a system-wide couting PMC, hwpmc was incorrectly logging process mappings for that PMC. Nothing ever reads pmc logs out of a counting PMC, so the log buffers were leaked when the PMC was deconfigured. The process mappings are only useful for sampling PMCs anyway, so only log the mappings if the PMC is a sampling PMC. This bug would cause allocating sample-mode PMCs to fail with ENOMEM after allocating several counting-mode PMCs. Approved by: emaste (mentor) Modified: stable/8/sys/dev/hwpmc/hwpmc_mod.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/dev/hwpmc/hwpmc_mod.c ============================================================================== --- stable/8/sys/dev/hwpmc/hwpmc_mod.c Mon May 24 18:00:28 2010 (r208516) +++ stable/8/sys/dev/hwpmc/hwpmc_mod.c Mon May 24 18:21:42 2010 (r208517) @@ -2675,16 +2675,16 @@ pmc_start(struct pmc *pm) PMCDBG(PMC,OPS,1, "po=%p in global list", po); } po->po_sscount++; - } - /* - * Log mapping information for all existing processes in the - * system. Subsequent mappings are logged as they happen; - * see pmc_process_mmap(). - */ - if (po->po_logprocmaps == 0) { - pmc_log_all_process_mappings(po); - po->po_logprocmaps = 1; + /* + * Log mapping information for all existing processes in the + * system. Subsequent mappings are logged as they happen; + * see pmc_process_mmap(). + */ + if (po->po_logprocmaps == 0) { + pmc_log_all_process_mappings(po); + po->po_logprocmaps = 1; + } } /* From owner-svn-src-stable-8@FreeBSD.ORG Mon May 24 19:36:16 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2620E1065676; Mon, 24 May 2010 19:36:16 +0000 (UTC) (envelope-from jhb@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 148E68FC15; Mon, 24 May 2010 19:36:16 +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 o4OJaFsm094712; Mon, 24 May 2010 19:36:15 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OJaFdW094710; Mon, 24 May 2010 19:36:15 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201005241936.o4OJaFdW094710@svn.freebsd.org> From: John Baldwin Date: Mon, 24 May 2010 19:36:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208518 - stable/8/sys/dev/puc X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 19:36:16 -0000 Author: jhb Date: Mon May 24 19:36:15 2010 New Revision: 208518 URL: http://svn.freebsd.org/changeset/base/208518 Log: MFC 208350: Add support for the Perle Speed4 LE. Modified: stable/8/sys/dev/puc/pucdata.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/dev/puc/pucdata.c ============================================================================== --- stable/8/sys/dev/puc/pucdata.c Mon May 24 18:21:42 2010 (r208517) +++ stable/8/sys/dev/puc/pucdata.c Mon May 24 19:36:15 2010 (r208518) @@ -661,6 +661,18 @@ const struct puc_cfg puc_pci_devices[] = PUC_PORT_8S, 0x18, 0, 8, }, + /* + * Perle boards use Oxford Semiconductor chips, but they store the + * Oxford Semiconductor device ID as a subvendor device ID and use + * their own device IDs. + */ + + { 0x155f, 0x0331, 0xffff, 0, + "Perle Speed4 LE", + DEFAULT_RCLK * 8, + PUC_PORT_4S, 0x10, 0, 8, + }, + { 0x14d2, 0x8010, 0xffff, 0, "VScom PCI-100L", DEFAULT_RCLK * 8, From owner-svn-src-stable-8@FreeBSD.ORG Mon May 24 19:42:27 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A0B49106564A; Mon, 24 May 2010 19:42:27 +0000 (UTC) (envelope-from rstone@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8EE908FC19; Mon, 24 May 2010 19:42:27 +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 o4OJgRhS096127; Mon, 24 May 2010 19:42:27 GMT (envelope-from rstone@svn.freebsd.org) Received: (from rstone@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OJgR34096125; Mon, 24 May 2010 19:42:27 GMT (envelope-from rstone@svn.freebsd.org) Message-Id: <201005241942.o4OJgR34096125@svn.freebsd.org> From: Ryan Stone Date: Mon, 24 May 2010 19:42:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208520 - stable/8/lib/libpmc X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 19:42:27 -0000 Author: rstone Date: Mon May 24 19:42:27 2010 New Revision: 208520 URL: http://svn.freebsd.org/changeset/base/208520 Log: MFC r207482 When configuring hwpmc to use the EXT_SNOOP event, only send a default cachestate qualifier on the Atom processor. Other Intel processors do not accept a cachestate qualifier and currently hwpmc will return EINVAL if you try to use the EXT_SNOOP event on those processors Approved by: emaste (mentor) Modified: stable/8/lib/libpmc/libpmc.c Directory Properties: stable/8/lib/libpmc/ (props changed) Modified: stable/8/lib/libpmc/libpmc.c ============================================================================== --- stable/8/lib/libpmc/libpmc.c Mon May 24 19:36:32 2010 (r208519) +++ stable/8/lib/libpmc/libpmc.c Mon May 24 19:42:27 2010 (r208520) @@ -716,9 +716,16 @@ iap_allocate_pmc(enum pmc_event pe, char case PMC_EV_IAP_EVENT_40H: /* Core */ case PMC_EV_IAP_EVENT_41H: /* Core */ case PMC_EV_IAP_EVENT_42H: /* Core, Core2, Atom */ - case PMC_EV_IAP_EVENT_77H: /* Core */ if (cachestate == 0) cachestate = (0xF << 8); + break; + case PMC_EV_IAP_EVENT_77H: /* Atom */ + /* IAP_EVENT_77H only accepts a cachestate qualifier on the + * Atom processor + */ + if(cpu_info.pm_cputype == PMC_CPU_INTEL_ATOM && cachestate == 0) + cachestate = (0xF << 8); + break; default: break; } From owner-svn-src-stable-8@FreeBSD.ORG Mon May 24 19:56:33 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 681B61065673; Mon, 24 May 2010 19:56:33 +0000 (UTC) (envelope-from delphij@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 560188FC13; Mon, 24 May 2010 19:56:33 +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 o4OJuXqf099303; Mon, 24 May 2010 19:56:33 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OJuXR0099302; Mon, 24 May 2010 19:56:33 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201005241956.o4OJuXR0099302@svn.freebsd.org> From: Xin LI Date: Mon, 24 May 2010 19:56:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208521 - in stable/8/cddl/contrib/opensolaris: . cmd/zdb cmd/zfs lib/libzfs X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 19:56:33 -0000 Author: delphij Date: Mon May 24 19:56:33 2010 New Revision: 208521 URL: http://svn.freebsd.org/changeset/base/208521 Log: Correct svn:mergeinfo so that they are at the right places. To quote pjd@: The proper merge points are: cddl/contrib/opensolaris cddl/compat/opensolaris Modified: Directory Properties: stable/8/cddl/contrib/opensolaris/ (props changed) stable/8/cddl/contrib/opensolaris/cmd/zdb/ (props changed) stable/8/cddl/contrib/opensolaris/cmd/zfs/ (props changed) stable/8/cddl/contrib/opensolaris/lib/libzfs/ (props changed) From owner-svn-src-stable-8@FreeBSD.ORG Mon May 24 20:09:40 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 851131065672; Mon, 24 May 2010 20:09:40 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 71FA68FC15; Mon, 24 May 2010 20:09:40 +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 o4OK9e6I002536; Mon, 24 May 2010 20:09:40 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OK9eii002532; Mon, 24 May 2010 20:09:40 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201005242009.o4OK9eii002532@svn.freebsd.org> From: Martin Matuska Date: Mon, 24 May 2010 20:09:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208522 - in stable/8: cddl/contrib/opensolaris/lib/libzfs/common sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 20:09:40 -0000 Author: mm Date: Mon May 24 20:09:40 2010 New Revision: 208522 URL: http://svn.freebsd.org/changeset/base/208522 Log: MFC r208472, r208474: MFC r208472: Fix zfs receive temporarily changing unchanged stream properties. Fix possible panic with zfs_enable_datasets. OpenSolaris onnv revision: 8536:33bd5de3260e [1] MFC r208474: Remove kstat.zfs.arcstats.l2_write_bytes_written The arcstats.l2_write_bytes_written kstat counter introduced in r205231 was duplicite with vendor's arcstats.l2_write_bytes counter imported in r208373 (OpenSolaris revision 8582:df9361868dbe) Approved by: pjd, delphij (mentor) Obtained from: OpenSolaris (Bug ID 6748561, 6757075) [1] Modified: stable/8/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_mount.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Directory Properties: stable/8/cddl/contrib/opensolaris/ (props changed) stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_mount.c ============================================================================== --- stable/8/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_mount.c Mon May 24 19:56:33 2010 (r208521) +++ stable/8/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_mount.c Mon May 24 20:09:40 2010 (r208522) @@ -20,7 +20,7 @@ */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved. + * Copyright 2009 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -1209,10 +1209,12 @@ zpool_enable_datasets(zpool_handle_t *zh /* * And mount all the datasets, keeping track of which ones - * succeeded or failed. By using zfs_alloc(), the good pointer - * will always be non-NULL. + * succeeded or failed. */ - good = zfs_alloc(zhp->zpool_hdl, cb.cb_used * sizeof (int)); + if ((good = zfs_alloc(zhp->zpool_hdl, + cb.cb_used * sizeof (int))) == NULL) + goto out; + ret = 0; for (i = 0; i < cb.cb_used; i++) { if (zfs_mount(cb.cb_datasets[i], mntopts, flags) != 0) Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Mon May 24 19:56:33 2010 (r208521) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Mon May 24 20:09:40 2010 (r208522) @@ -325,7 +325,6 @@ typedef struct arc_stats { kstat_named_t arcstat_l2_write_full; kstat_named_t arcstat_l2_write_buffer_iter; kstat_named_t arcstat_l2_write_pios; - kstat_named_t arcstat_l2_write_bytes_written; kstat_named_t arcstat_l2_write_buffer_bytes_scanned; kstat_named_t arcstat_l2_write_buffer_list_iter; kstat_named_t arcstat_l2_write_buffer_list_null_iter; @@ -396,7 +395,6 @@ static arc_stats_t arc_stats = { { "l2_write_full", KSTAT_DATA_UINT64 }, { "l2_write_buffer_iter", KSTAT_DATA_UINT64 }, { "l2_write_pios", KSTAT_DATA_UINT64 }, - { "l2_write_bytes_written", KSTAT_DATA_UINT64 }, { "l2_write_buffer_bytes_scanned", KSTAT_DATA_UINT64 }, { "l2_write_buffer_list_iter", KSTAT_DATA_UINT64 }, { "l2_write_buffer_list_null_iter", KSTAT_DATA_UINT64 } @@ -4692,7 +4690,6 @@ l2arc_write_buffers(spa_t *spa, l2arc_de ARCSTAT_BUMP(arcstat_l2_write_pios); } - ARCSTAT_INCR(arcstat_l2_write_bytes_written, ab->b_size); /* * Create and add a new L2ARC header. */ Modified: stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c ============================================================================== --- stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Mon May 24 19:56:33 2010 (r208521) +++ stable/8/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Mon May 24 20:09:40 2010 (r208522) @@ -92,7 +92,7 @@ typedef struct zfs_ioc_vec { boolean_t zvec_his_log; } zfs_ioc_vec_t; -static void clear_props(char *dataset, nvlist_t *props); +static void clear_props(char *dataset, nvlist_t *props, nvlist_t *newprops); static int zfs_fill_zplprops_root(uint64_t, nvlist_t *, nvlist_t *, boolean_t *); int zfs_set_prop_nvlist(const char *, nvlist_t *); @@ -1645,7 +1645,7 @@ zfs_ioc_set_prop(zfs_cmd_t *zc) if (dmu_objset_open(zc->zc_name, DMU_OST_ANY, DS_MODE_USER | DS_MODE_READONLY, &os) == 0) { if (dsl_prop_get_all(os, &origprops, TRUE) == 0) { - clear_props(zc->zc_name, origprops); + clear_props(zc->zc_name, origprops, nvl); nvlist_free(origprops); } dmu_objset_close(os); @@ -2425,7 +2425,7 @@ zfs_ioc_rename(zfs_cmd_t *zc) } static void -clear_props(char *dataset, nvlist_t *props) +clear_props(char *dataset, nvlist_t *props, nvlist_t *newprops) { zfs_cmd_t *zc; nvpair_t *prop; @@ -2436,6 +2436,9 @@ clear_props(char *dataset, nvlist_t *pro (void) strcpy(zc->zc_name, dataset); for (prop = nvlist_next_nvpair(props, NULL); prop; prop = nvlist_next_nvpair(props, prop)) { + if (newprops != NULL && + nvlist_exists(newprops, nvpair_name(prop))) + continue; (void) strcpy(zc->zc_value, nvpair_name(prop)); if (zfs_secpolicy_inherit(zc, CRED()) == 0) (void) zfs_ioc_inherit_prop(zc); @@ -2543,7 +2546,7 @@ zfs_ioc_recv(zfs_cmd_t *zc) * so that the properties are applied to the new data. */ if (props) { - clear_props(tofs, origprops); + clear_props(tofs, origprops, props); /* * XXX - Note, this is all-or-nothing; should be best-effort. */ @@ -2582,7 +2585,7 @@ zfs_ioc_recv(zfs_cmd_t *zc) * On error, restore the original props. */ if (error && props) { - clear_props(tofs, props); + clear_props(tofs, props, NULL); (void) zfs_set_prop_nvlist(tofs, origprops); } out: From owner-svn-src-stable-8@FreeBSD.ORG Mon May 24 20:12:32 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 337BE1065675; Mon, 24 May 2010 20:12:32 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from mail.zoral.com.ua (mx0.zoral.com.ua [91.193.166.200]) by mx1.freebsd.org (Postfix) with ESMTP id 9461E8FC12; Mon, 24 May 2010 20:12:31 +0000 (UTC) Received: from deviant.kiev.zoral.com.ua (root@deviant.kiev.zoral.com.ua [10.1.1.148]) by mail.zoral.com.ua (8.14.2/8.14.2) with ESMTP id o4OKCfE6094137 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 24 May 2010 23:12:41 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4) with ESMTP id o4OKCRHR033924; Mon, 24 May 2010 23:12:27 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.4/8.14.4/Submit) id o4OKCRLI033923; Mon, 24 May 2010 23:12:27 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Mon, 24 May 2010 23:12:27 +0300 From: Kostik Belousov To: Martin Matuska Message-ID: <20100524201227.GO83316@deviant.kiev.zoral.com.ua> References: <201005242009.o4OK9eii002532@svn.freebsd.org> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="5NmCl6OEQDB0SMwx" Content-Disposition: inline In-Reply-To: <201005242009.o4OK9eii002532@svn.freebsd.org> User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: clamav-milter 0.95.2 at skuns.kiev.zoral.com.ua X-Virus-Status: Clean X-Spam-Status: No, score=-2.4 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_50, DNS_FROM_OPENWHOIS autolearn=no version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on skuns.kiev.zoral.com.ua Cc: svn-src-stable@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-stable-8@freebsd.org Subject: Re: svn commit: r208522 - in stable/8: cddl/contrib/opensolaris/lib/libzfs/common sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 20:12:32 -0000 --5NmCl6OEQDB0SMwx Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Mon, May 24, 2010 at 08:09:40PM +0000, Martin Matuska wrote: > Author: mm > Date: Mon May 24 20:09:40 2010 > New Revision: 208522 > URL: http://svn.freebsd.org/changeset/base/208522 >=20 > Log: > MFC r208472, r208474: > =20 > MFC r208472: > Fix zfs receive temporarily changing unchanged stream properties. > Fix possible panic with zfs_enable_datasets. > OpenSolaris onnv revision: 8536:33bd5de3260e [1] > =20 > MFC r208474: > Remove kstat.zfs.arcstats.l2_write_bytes_written > The arcstats.l2_write_bytes_written kstat counter introduced > in r205231 was duplicite with vendor's arcstats.l2_write_bytes counter > imported in r208373 (OpenSolaris revision 8582:df9361868dbe) > =20 > Approved by: pjd, delphij (mentor) > Obtained from: OpenSolaris (Bug ID 6748561, 6757075) [1] This looks as another 0-day MFC. Why ? --5NmCl6OEQDB0SMwx Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (FreeBSD) iEYEARECAAYFAkv63asACgkQC3+MBN1Mb4jfUACfbmL5ED+H82PH8DI+oLsxik0O MwoAoMMvJIyEuQ2LMgpjijvoPyGvVQ5A =M/MZ -----END PGP SIGNATURE----- --5NmCl6OEQDB0SMwx-- From owner-svn-src-stable-8@FreeBSD.ORG Mon May 24 21:01:38 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3C0B91065675; Mon, 24 May 2010 21:01:38 +0000 (UTC) (envelope-from weongyo@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 11DFA8FC0C; Mon, 24 May 2010 21:01: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 o4OL1bJx014147; Mon, 24 May 2010 21:01:37 GMT (envelope-from weongyo@svn.freebsd.org) Received: (from weongyo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OL1b6u014145; Mon, 24 May 2010 21:01:37 GMT (envelope-from weongyo@svn.freebsd.org) Message-Id: <201005242101.o4OL1b6u014145@svn.freebsd.org> From: Weongyo Jeong Date: Mon, 24 May 2010 21:01:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208523 - stable/8/sys/dev/bwn X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 21:01:38 -0000 Author: weongyo Date: Mon May 24 21:01:37 2010 New Revision: 208523 URL: http://svn.freebsd.org/changeset/base/208523 Log: MFC r208120: - fixes a bug that it didn't initialize the ratectl after association; so ni_txrate returned 0 which is a invalid result. - The fourth argument of ieee80211_ratectl_tx_complete() could be not NULL. Reported by: Gustau P?rez Tested by: Gustau P?rez , Ian FREISLICH Modified: stable/8/sys/dev/bwn/if_bwn.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/dev/bwn/if_bwn.c ============================================================================== --- stable/8/sys/dev/bwn/if_bwn.c Mon May 24 20:09:40 2010 (r208522) +++ stable/8/sys/dev/bwn/if_bwn.c Mon May 24 21:01:37 2010 (r208523) @@ -8329,6 +8329,7 @@ bwn_phy_reset(struct bwn_mac *mac) static int bwn_newstate(struct ieee80211vap *vap, enum ieee80211_state nstate, int arg) { + const struct ieee80211_txparam *tp; struct bwn_vap *bvp = BWN_VAP(vap); struct ieee80211com *ic= vap->iv_ic; struct ifnet *ifp = ic->ic_ifp; @@ -8377,6 +8378,11 @@ bwn_newstate(struct ieee80211vap *vap, e bwn_set_pretbtt(mac); bwn_spu_setdelay(mac, 0); bwn_set_macaddr(mac); + + /* Initializes ratectl for a node. */ + tp = &vap->iv_txparms[ieee80211_chan2mode(ic->ic_curchan)]; + if (tp->ucastrate == IEEE80211_FIXED_RATE_NONE) + ieee80211_ratectl_node_init(vap->iv_bss); } BWN_UNLOCK(sc); @@ -8994,7 +9000,7 @@ bwn_handle_txeof(struct bwn_mac *mac, co struct bwn_stats *stats = &mac->mac_stats; struct ieee80211_node *ni; struct ieee80211vap *vap; - int slot; + int retrycnt = 0, slot; BWN_ASSERT_LOCKED(mac->mac_sc); @@ -9027,7 +9033,7 @@ bwn_handle_txeof(struct bwn_mac *mac, co status->ack ? IEEE80211_RATECTL_TX_SUCCESS : IEEE80211_RATECTL_TX_FAILURE, - NULL, 0); + &retrycnt, 0); break; } slot = bwn_dma_nextslot(dr, slot); @@ -9048,7 +9054,7 @@ bwn_handle_txeof(struct bwn_mac *mac, co status->ack ? IEEE80211_RATECTL_TX_SUCCESS : IEEE80211_RATECTL_TX_FAILURE, - NULL, 0); + &retrycnt, 0); } bwn_pio_handle_txeof(mac, status); } From owner-svn-src-stable-8@FreeBSD.ORG Tue May 25 02:28:40 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 53D331065670; Tue, 25 May 2010 02:28:40 +0000 (UTC) (envelope-from thompsa@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 421048FC1B; Tue, 25 May 2010 02:28:40 +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 o4P2Se2c085733; Tue, 25 May 2010 02:28:40 GMT (envelope-from thompsa@svn.freebsd.org) Received: (from thompsa@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4P2SeGs085731; Tue, 25 May 2010 02:28:40 GMT (envelope-from thompsa@svn.freebsd.org) Message-Id: <201005250228.o4P2SeGs085731@svn.freebsd.org> From: Andrew Thompson Date: Tue, 25 May 2010 02:28:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208525 - stable/8/sys/arm/conf X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 02:28:40 -0000 Author: thompsa Date: Tue May 25 02:28:39 2010 New Revision: 208525 URL: http://svn.freebsd.org/changeset/base/208525 Log: MFC r200014 Remove unknown ath hal device entries. Modified: stable/8/sys/arm/conf/CAMBRIA Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/arm/conf/CAMBRIA ============================================================================== --- stable/8/sys/arm/conf/CAMBRIA Tue May 25 02:26:25 2010 (r208524) +++ stable/8/sys/arm/conf/CAMBRIA Tue May 25 02:28:39 2010 (r208525) @@ -135,11 +135,8 @@ device ath_rf5413 # #device ath_ar5416 #options AH_SUPPORT_AR5416 # NB: for 11n descriptor format -#device ath_rf2133 #device ath_ar9160 #device ath_ar9280 -#device ath_rf9280 -#device ath_ar9285 # NB: 2 USB 2.0 ports standard device usb From owner-svn-src-stable-8@FreeBSD.ORG Tue May 25 02:36:07 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5DAE51065670; Tue, 25 May 2010 02:36:07 +0000 (UTC) (envelope-from thompsa@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4AC068FC2F; Tue, 25 May 2010 02:36:07 +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 o4P2a7ip087415; Tue, 25 May 2010 02:36:07 GMT (envelope-from thompsa@svn.freebsd.org) Received: (from thompsa@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4P2a7G7087406; Tue, 25 May 2010 02:36:07 GMT (envelope-from thompsa@svn.freebsd.org) Message-Id: <201005250236.o4P2a7G7087406@svn.freebsd.org> From: Andrew Thompson Date: Tue, 25 May 2010 02:36:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208526 - in stable/8/sys: net netgraph X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 02:36:07 -0000 Author: thompsa Date: Tue May 25 02:36:06 2010 New Revision: 208526 URL: http://svn.freebsd.org/changeset/base/208526 Log: MFC r202588 Declare a new EVENTHANDLER called iflladdr_event which signals that the L2 address on an interface has changed. This lets stacked interfaces such as vlan(4) detect that their lower interface has changed and adjust things in order to keep working. Previously this situation broke at least vlan(4) and lagg(4) configurations. The EVENTHANDLER_INVOKE call was not placed within if_setlladdr() due to the risk of a loop. PR: kern/142927 Submitted by: Nikolay Denev MFC r202611 Do not hold the lock over if_setlladdr() as it calls into the interface driver init routine. Modified: stable/8/sys/net/if.c stable/8/sys/net/if_bridge.c stable/8/sys/net/if_lagg.c stable/8/sys/net/if_var.h stable/8/sys/net/if_vlan.c stable/8/sys/netgraph/ng_eiface.c stable/8/sys/netgraph/ng_ether.c stable/8/sys/netgraph/ng_fec.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/net/if.c ============================================================================== --- stable/8/sys/net/if.c Tue May 25 02:28:39 2010 (r208525) +++ stable/8/sys/net/if.c Tue May 25 02:36:06 2010 (r208526) @@ -2416,6 +2416,7 @@ ifhwioctl(u_long cmd, struct ifnet *ifp, return (error); error = if_setlladdr(ifp, ifr->ifr_addr.sa_data, ifr->ifr_addr.sa_len); + EVENTHANDLER_INVOKE(iflladdr_event, ifp); break; case SIOCAIFGROUP: Modified: stable/8/sys/net/if_bridge.c ============================================================================== --- stable/8/sys/net/if_bridge.c Tue May 25 02:28:39 2010 (r208525) +++ stable/8/sys/net/if_bridge.c Tue May 25 02:36:06 2010 (r208526) @@ -937,6 +937,7 @@ bridge_delete_member(struct bridge_softc IF_LLADDR(sc->sc_ifp), ETHER_ADDR_LEN); sc->sc_ifaddr = fif; } + EVENTHANDLER_INVOKE(iflladdr_event, sc->sc_ifp); } bridge_mutecaps(sc); /* recalcuate now this interface is removed */ @@ -1052,6 +1053,7 @@ bridge_ioctl_add(struct bridge_softc *sc !memcmp(IF_LLADDR(sc->sc_ifp), sc->sc_defaddr, ETHER_ADDR_LEN)) { bcopy(IF_LLADDR(ifs), IF_LLADDR(sc->sc_ifp), ETHER_ADDR_LEN); sc->sc_ifaddr = ifs; + EVENTHANDLER_INVOKE(iflladdr_event, sc->sc_ifp); } ifs->if_bridge = sc; Modified: stable/8/sys/net/if_lagg.c ============================================================================== --- stable/8/sys/net/if_lagg.c Tue May 25 02:28:39 2010 (r208525) +++ stable/8/sys/net/if_lagg.c Tue May 25 02:36:06 2010 (r208526) @@ -303,6 +303,7 @@ lagg_lladdr(struct lagg_softc *sc, uint8 /* Let the protocol know the MAC has changed */ if (sc->sc_lladdr != NULL) (*sc->sc_lladdr)(sc); + EVENTHANDLER_INVOKE(iflladdr_event, ifp); } static void Modified: stable/8/sys/net/if_var.h ============================================================================== --- stable/8/sys/net/if_var.h Tue May 25 02:28:39 2010 (r208525) +++ stable/8/sys/net/if_var.h Tue May 25 02:36:06 2010 (r208526) @@ -342,6 +342,9 @@ void if_maddr_runlock(struct ifnet *ifp) } while(0) #ifdef _KERNEL +/* interface link layer address change event */ +typedef void (*iflladdr_event_handler_t)(void *, struct ifnet *); +EVENTHANDLER_DECLARE(iflladdr_event, iflladdr_event_handler_t); /* interface address change event */ typedef void (*ifaddr_event_handler_t)(void *, struct ifnet *); EVENTHANDLER_DECLARE(ifaddr_event, ifaddr_event_handler_t); Modified: stable/8/sys/net/if_vlan.c ============================================================================== --- stable/8/sys/net/if_vlan.c Tue May 25 02:28:39 2010 (r208525) +++ stable/8/sys/net/if_vlan.c Tue May 25 02:36:06 2010 (r208526) @@ -139,6 +139,7 @@ SYSCTL_INT(_net_link_vlan, OID_AUTO, sof static MALLOC_DEFINE(M_VLAN, VLANNAME, "802.1Q Virtual LAN Interface"); static eventhandler_tag ifdetach_tag; +static eventhandler_tag iflladdr_tag; /* * We have a global mutex, that is used to serialize configuration @@ -200,6 +201,7 @@ static int vlan_clone_create(struct if_c static int vlan_clone_destroy(struct if_clone *, struct ifnet *); static void vlan_ifdetach(void *arg, struct ifnet *ifp); +static void vlan_iflladdr(void *arg, struct ifnet *ifp); static struct if_clone vlan_cloner = IFC_CLONE_INITIALIZER(VLANNAME, NULL, IF_MAXUNIT, NULL, vlan_clone_match, vlan_clone_create, vlan_clone_destroy); @@ -464,6 +466,46 @@ vlan_setmulti(struct ifnet *ifp) } /* + * A handler for parent interface link layer address changes. + * If the parent interface link layer address is changed we + * should also change it on all children vlans. + */ +static void +vlan_iflladdr(void *arg __unused, struct ifnet *ifp) +{ + struct ifvlan *ifv; +#ifndef VLAN_ARRAY + struct ifvlan *next; +#endif + int i; + + /* + * Check if it's a trunk interface first of all + * to avoid needless locking. + */ + if (ifp->if_vlantrunk == NULL) + return; + + VLAN_LOCK(); + /* + * OK, it's a trunk. Loop over and change all vlan's lladdrs on it. + */ +#ifdef VLAN_ARRAY + for (i = 0; i < VLAN_ARRAY_SIZE; i++) + if ((ifv = ifp->if_vlantrunk->vlans[i])) { +#else /* VLAN_ARRAY */ + for (i = 0; i < (1 << ifp->if_vlantrunk->hwidth); i++) + LIST_FOREACH_SAFE(ifv, &ifp->if_vlantrunk->hash[i], ifv_list, next) { +#endif /* VLAN_ARRAY */ + VLAN_UNLOCK(); + if_setlladdr(ifv->ifv_ifp, IF_LLADDR(ifp), ETHER_ADDR_LEN); + VLAN_LOCK(); + } + VLAN_UNLOCK(); + +} + +/* * A handler for network interface departure events. * Track departure of trunks here so that we don't access invalid * pointers or whatever if a trunk is ripped from under us, e.g., @@ -538,6 +580,10 @@ vlan_modevent(module_t mod, int type, vo vlan_ifdetach, NULL, EVENTHANDLER_PRI_ANY); if (ifdetach_tag == NULL) return (ENOMEM); + iflladdr_tag = EVENTHANDLER_REGISTER(iflladdr_event, + vlan_iflladdr, NULL, EVENTHANDLER_PRI_ANY); + if (iflladdr_tag == NULL) + return (ENOMEM); VLAN_LOCK_INIT(); vlan_input_p = vlan_input; vlan_link_state_p = vlan_link_state; @@ -556,6 +602,7 @@ vlan_modevent(module_t mod, int type, vo case MOD_UNLOAD: if_clone_detach(&vlan_cloner); EVENTHANDLER_DEREGISTER(ifnet_departure_event, ifdetach_tag); + EVENTHANDLER_DEREGISTER(iflladdr_event, iflladdr_tag); vlan_input_p = NULL; vlan_link_state_p = NULL; vlan_trunk_cap_p = NULL; Modified: stable/8/sys/netgraph/ng_eiface.c ============================================================================== --- stable/8/sys/netgraph/ng_eiface.c Tue May 25 02:28:39 2010 (r208525) +++ stable/8/sys/netgraph/ng_eiface.c Tue May 25 02:36:06 2010 (r208526) @@ -432,6 +432,7 @@ ng_eiface_rcvmsg(node_p node, item_p ite } error = if_setlladdr(priv->ifp, (u_char *)msg->data, ETHER_ADDR_LEN); + EVENTHANDLER_INVOKE(iflladdr_event, priv->ifp); break; } Modified: stable/8/sys/netgraph/ng_ether.c ============================================================================== --- stable/8/sys/netgraph/ng_ether.c Tue May 25 02:28:39 2010 (r208525) +++ stable/8/sys/netgraph/ng_ether.c Tue May 25 02:36:06 2010 (r208526) @@ -481,6 +481,7 @@ ng_ether_rcvmsg(node_p node, item_p item } error = if_setlladdr(priv->ifp, (u_char *)msg->data, ETHER_ADDR_LEN); + EVENTHANDLER_INVOKE(iflladdr_event, priv->ifp); break; } case NGM_ETHER_GET_PROMISC: Modified: stable/8/sys/netgraph/ng_fec.c ============================================================================== --- stable/8/sys/netgraph/ng_fec.c Tue May 25 02:28:39 2010 (r208525) +++ stable/8/sys/netgraph/ng_fec.c Tue May 25 02:36:06 2010 (r208526) @@ -433,6 +433,7 @@ ng_fec_addport(struct ng_fec_private *pr /* Set up phony MAC address. */ if_setlladdr(bifp, IF_LLADDR(ifp), ETHER_ADDR_LEN); + EVENTHANDLER_INVOKE(iflladdr_event, bifp); /* Save original input vector */ new->fec_if_input = bifp->if_input; From owner-svn-src-stable-8@FreeBSD.ORG Tue May 25 02:39:55 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6D88D1065672; Tue, 25 May 2010 02:39:55 +0000 (UTC) (envelope-from thompsa@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5B8468FC0A; Tue, 25 May 2010 02:39:55 +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 o4P2dtDR088300; Tue, 25 May 2010 02:39:55 GMT (envelope-from thompsa@svn.freebsd.org) Received: (from thompsa@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4P2dtJi088296; Tue, 25 May 2010 02:39:55 GMT (envelope-from thompsa@svn.freebsd.org) Message-Id: <201005250239.o4P2dtJi088296@svn.freebsd.org> From: Andrew Thompson Date: Tue, 25 May 2010 02:39:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208527 - stable/8/sys/net80211 X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 02:39:55 -0000 Author: thompsa Date: Tue May 25 02:39:55 2010 New Revision: 208527 URL: http://svn.freebsd.org/changeset/base/208527 Log: MFC r202612 Use the iflladdr_event event to keep the mac address on the vap in sync with the parent wirless interface. If the user passed in a mac address or it was autogenerated then flag this to avoid trashing it on update. This will fix wlan+lagg in a post vap world. Modified: stable/8/sys/net80211/ieee80211.c stable/8/sys/net80211/ieee80211_freebsd.c stable/8/sys/net80211/ieee80211_var.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/net80211/ieee80211.c ============================================================================== --- stable/8/sys/net80211/ieee80211.c Tue May 25 02:36:06 2010 (r208526) +++ stable/8/sys/net80211/ieee80211.c Tue May 25 02:39:55 2010 (r208527) @@ -442,6 +442,9 @@ ieee80211_vap_setup(struct ieee80211com /* auto-enable s/w beacon miss support */ if (flags & IEEE80211_CLONE_NOBEACONS) vap->iv_flags_ext |= IEEE80211_FEXT_SWBMISS; + /* auto-generated or user supplied MAC address */ + if (flags & (IEEE80211_CLONE_BSSID|IEEE80211_CLONE_MACADDR)) + vap->iv_flags_ext |= IEEE80211_FEXT_UNIQMAC; /* * Enable various functionality by default if we're * capable; the driver can override us if it knows better. Modified: stable/8/sys/net80211/ieee80211_freebsd.c ============================================================================== --- stable/8/sys/net80211/ieee80211_freebsd.c Tue May 25 02:36:06 2010 (r208526) +++ stable/8/sys/net80211/ieee80211_freebsd.c Tue May 25 02:39:55 2010 (r208527) @@ -730,6 +730,7 @@ ieee80211_load_module(const char *modnam } static eventhandler_tag wlan_bpfevent; +static eventhandler_tag wlan_ifllevent; static void bpf_track(void *arg, struct ifnet *ifp, int dlt, int attach) @@ -756,6 +757,33 @@ bpf_track(void *arg, struct ifnet *ifp, } } +static void +wlan_iflladdr(void *arg __unused, struct ifnet *ifp) +{ + struct ieee80211com *ic = ifp->if_l2com; + struct ieee80211vap *vap, *next; + + if (ifp->if_type != IFT_IEEE80211 || ic == NULL) + return; + + IEEE80211_LOCK(ic); + TAILQ_FOREACH_SAFE(vap, &ic->ic_vaps, iv_next, next) { + /* + * If the MAC address has changed on the parent and it was + * copied to the vap on creation then re-sync. + */ + if (vap->iv_ic == ic && + (vap->iv_flags_ext & IEEE80211_FEXT_UNIQMAC) == 0) { + IEEE80211_ADDR_COPY(vap->iv_myaddr, IF_LLADDR(ifp)); + IEEE80211_UNLOCK(ic); + if_setlladdr(vap->iv_ifp, IF_LLADDR(ifp), + IEEE80211_ADDR_LEN); + IEEE80211_LOCK(ic); + } + } + IEEE80211_UNLOCK(ic); +} + /* * Module glue. * @@ -772,6 +800,12 @@ wlan_modevent(module_t mod, int type, vo bpf_track, 0, EVENTHANDLER_PRI_ANY); if (wlan_bpfevent == NULL) return ENOMEM; + wlan_ifllevent = EVENTHANDLER_REGISTER(iflladdr_event, + wlan_iflladdr, NULL, EVENTHANDLER_PRI_ANY); + if (wlan_ifllevent == NULL) { + EVENTHANDLER_DEREGISTER(bpf_track, wlan_bpfevent); + return ENOMEM; + } if_clone_attach(&wlan_cloner); if_register_com_alloc(IFT_IEEE80211, wlan_alloc, wlan_free); return 0; @@ -779,6 +813,7 @@ wlan_modevent(module_t mod, int type, vo if_deregister_com_alloc(IFT_IEEE80211); if_clone_detach(&wlan_cloner); EVENTHANDLER_DEREGISTER(bpf_track, wlan_bpfevent); + EVENTHANDLER_DEREGISTER(iflladdr_event, wlan_ifllevent); return 0; } return EINVAL; Modified: stable/8/sys/net80211/ieee80211_var.h ============================================================================== --- stable/8/sys/net80211/ieee80211_var.h Tue May 25 02:36:06 2010 (r208526) +++ stable/8/sys/net80211/ieee80211_var.h Tue May 25 02:39:55 2010 (r208527) @@ -548,11 +548,12 @@ MALLOC_DECLARE(M_80211_VAP); /* NB: immutable: should be set only when creating a vap */ #define IEEE80211_FEXT_WDSLEGACY 0x00010000 /* CONF: legacy WDS operation */ #define IEEE80211_FEXT_PROBECHAN 0x00020000 /* CONF: probe passive channel*/ +#define IEEE80211_FEXT_UNIQMAC 0x00040000 /* CONF: user or computed mac */ #define IEEE80211_FEXT_BITS \ "\20\2INACT\3SCANWAIT\4BGSCAN\5WPS\6TSN\7SCANREQ\10RESUME" \ "\0114ADDR\12NONEPR_PR\13SWBMISS\14DFS\15DOTD\16STATEWAIT\17REINIT" \ - "\20BPF\21WDSLEGACY\22PROBECHAN" + "\20BPF\21WDSLEGACY\22PROBECHAN\23UNIQMAC" /* ic_flags_ht/iv_flags_ht */ #define IEEE80211_FHT_NONHT_PR 0x00000001 /* STATUS: non-HT sta present */ From owner-svn-src-stable-8@FreeBSD.ORG Tue May 25 02:52:10 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C4AFB1065673; Tue, 25 May 2010 02:52:10 +0000 (UTC) (envelope-from thompsa@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B2BA98FC0C; Tue, 25 May 2010 02:52:10 +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 o4P2qAP6090988; Tue, 25 May 2010 02:52:10 GMT (envelope-from thompsa@svn.freebsd.org) Received: (from thompsa@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4P2qAjA090986; Tue, 25 May 2010 02:52:10 GMT (envelope-from thompsa@svn.freebsd.org) Message-Id: <201005250252.o4P2qAjA090986@svn.freebsd.org> From: Andrew Thompson Date: Tue, 25 May 2010 02:52:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208528 - stable/8/sys/dev/if_ndis X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 02:52:10 -0000 Author: thompsa Date: Tue May 25 02:52:10 2010 New Revision: 208528 URL: http://svn.freebsd.org/changeset/base/208528 Log: MFC r200824 Set correct USB device description Submitted by: Paul B Mahol Modified: stable/8/sys/dev/if_ndis/if_ndis_usb.c Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/dev/if_ndis/if_ndis_usb.c ============================================================================== --- stable/8/sys/dev/if_ndis/if_ndis_usb.c Tue May 25 02:39:55 2010 (r208527) +++ stable/8/sys/dev/if_ndis/if_ndis_usb.c Tue May 25 02:52:10 2010 (r208528) @@ -165,6 +165,7 @@ ndisusb_attach(device_t self) driver_object *drv; int devidx = 0; + device_set_usb_desc(self); db = uaa->driver_ivar; sc = (struct ndis_softc *)dummy; sc->ndis_dev = self; From owner-svn-src-stable-8@FreeBSD.ORG Tue May 25 03:08:47 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BE533106564A; Tue, 25 May 2010 03:08:47 +0000 (UTC) (envelope-from randi@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AC4FA8FC0C; Tue, 25 May 2010 03:08:47 +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 o4P38lQL094782; Tue, 25 May 2010 03:08:47 GMT (envelope-from randi@svn.freebsd.org) Received: (from randi@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4P38lml094780; Tue, 25 May 2010 03:08:47 GMT (envelope-from randi@svn.freebsd.org) Message-Id: <201005250308.o4P38lml094780@svn.freebsd.org> From: Randi Harper Date: Tue, 25 May 2010 03:08:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208529 - stable/8/usr.sbin/sysinstall X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 03:08:47 -0000 Author: randi Date: Tue May 25 03:08:47 2010 New Revision: 208529 URL: http://svn.freebsd.org/changeset/base/208529 Log: MFC r208407: Flush all routes before adding the default route in order to allow sysinstall to cleanly re-initialize the network. PR: bin/145553 Submitted by: gcooper Approved by: cperciva (mentor) Modified: stable/8/usr.sbin/sysinstall/network.c Directory Properties: stable/8/usr.sbin/sysinstall/ (props changed) Modified: stable/8/usr.sbin/sysinstall/network.c ============================================================================== --- stable/8/usr.sbin/sysinstall/network.c Tue May 25 02:52:10 2010 (r208528) +++ stable/8/usr.sbin/sysinstall/network.c Tue May 25 03:08:47 2010 (r208529) @@ -141,12 +141,22 @@ mediaInitNetwork(Device *dev) } rp = variable_get(VAR_GATEWAY); if (!rp || *rp == '0') { - msgConfirm("No gateway has been set. You may be unable to access hosts\n" + msgConfirm("No gateway has been set. You will be unable to access hosts\n" "not on your local network"); } else { + /* + * Explicitly flush all routes to get back to a known sane + * state. We don't need to check this exit code because if + * anything fails it will show up in the route add below. + */ + system("route -n flush"); msgDebug("Adding default route to %s.\n", rp); - vsystem("route -n add default %s", rp); + if (vsystem("route -n add default %s", rp) != 0) { + msgConfirm("Failed to add a default route; please check " + "your network configuration"); + return FALSE; + } } } else { msgDebug("A DHCP interface. Should already be up.\n"); From owner-svn-src-stable-8@FreeBSD.ORG Tue May 25 03:15:10 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 24DBE1065673; Tue, 25 May 2010 03:15:10 +0000 (UTC) (envelope-from randi@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 12DFB8FC18; Tue, 25 May 2010 03:15:10 +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 o4P3F9Cg096413; Tue, 25 May 2010 03:15:09 GMT (envelope-from randi@svn.freebsd.org) Received: (from randi@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4P3F9M2096411; Tue, 25 May 2010 03:15:09 GMT (envelope-from randi@svn.freebsd.org) Message-Id: <201005250315.o4P3F9M2096411@svn.freebsd.org> From: Randi Harper Date: Tue, 25 May 2010 03:15:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208530 - stable/8/usr.sbin/sysinstall X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 03:15:10 -0000 Author: randi Date: Tue May 25 03:15:09 2010 New Revision: 208530 URL: http://svn.freebsd.org/changeset/base/208530 Log: MFC r198477,198503: Eject CDROM after installation if used as source media. Approved by: cperciva (mentor) Modified: stable/8/usr.sbin/sysinstall/cdrom.c Directory Properties: stable/8/usr.sbin/sysinstall/ (props changed) Modified: stable/8/usr.sbin/sysinstall/cdrom.c ============================================================================== --- stable/8/usr.sbin/sysinstall/cdrom.c Tue May 25 03:08:47 2010 (r208529) +++ stable/8/usr.sbin/sysinstall/cdrom.c Tue May 25 03:15:09 2010 (r208530) @@ -43,6 +43,7 @@ #include #include #include +#include #include #include #include @@ -58,6 +59,8 @@ static Boolean previouslyMounted; /* Was static char mountpoint[MAXPATHLEN] = "/dist"; int CDROMInitQuiet; +static void mediaEjectCDROM(Device *dev); + static properties read_props(char *name) { @@ -218,4 +221,24 @@ mediaShutdownCDROM(Device *dev) msgConfirm("Could not unmount the CDROM/DVD from %s: %s", mountpoint, strerror(errno)); else cdromMounted = FALSE; + + mediaEjectCDROM(dev); +} + +static void +mediaEjectCDROM(Device *dev) +{ + int fd = -1; + + msgDebug("Ejecting CDROM/DVD at %s", dev->devname); + + fd = open(dev->devname, O_RDONLY); + + if (fd < 0) + msgDebug("Could not eject the CDROM/DVD from %s: %s", dev->devname, strerror(errno)); + else { + ioctl(fd, CDIOCALLOW); + ioctl(fd, CDIOCEJECT); + close(fd); + } } From owner-svn-src-stable-8@FreeBSD.ORG Tue May 25 20:16:37 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 82368106564A; Tue, 25 May 2010 20:16:37 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6D7018FC0C; Tue, 25 May 2010 20:16:37 +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 o4PKGbSg026345; Tue, 25 May 2010 20:16:37 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4PKGbfX026340; Tue, 25 May 2010 20:16:37 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201005252016.o4PKGbfX026340@svn.freebsd.org> From: Jung-uk Kim Date: Tue, 25 May 2010 20:16:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208546 - in stable/8: etc etc/periodic/weekly gnu/usr.bin share/man share/mk usr.bin usr.sbin usr.sbin/dumpcis usr.sbin/makefs usr.sbin/makefs/ffs usr.sbin/mfiutil X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 20:16:37 -0000 Author: jkim Date: Tue May 25 20:16:36 2010 New Revision: 208546 URL: http://svn.freebsd.org/changeset/base/208546 Log: MFC: r208320 Add a new build option, MAN_UTILS. This option lets you control building utilities and related support files for manual pages, which were previously controlled by MAN. For POLA, the default depends on MAN, i.e., WITHOUT_MAN implies WITHOUT_MAN_UTILS and WITH_MAN implies WITH_MAN_UTILS. Note this patch implicitly fixes a documentation bug of src.conf(5), which says WITHOUT_MAN may be used to not build manual pages while it was also disabling some utilities for manual pages. Approved by: re (kib) Modified: stable/8/etc/Makefile stable/8/etc/periodic/weekly/Makefile stable/8/gnu/usr.bin/Makefile (contents, props changed) stable/8/share/man/Makefile stable/8/share/mk/bsd.own.mk stable/8/usr.bin/Makefile stable/8/usr.sbin/Makefile (contents, props changed) Directory Properties: stable/8/etc/ (props changed) stable/8/gnu/usr.bin/ (props changed) stable/8/gnu/usr.bin/gdb/kgdb/ (props changed) stable/8/gnu/usr.bin/groff/ (props changed) stable/8/gnu/usr.bin/patch/ (props changed) stable/8/share/man/ (props changed) stable/8/share/man/man1/ (props changed) stable/8/share/man/man3/ (props changed) stable/8/share/man/man4/ (props changed) stable/8/share/man/man5/ (props changed) stable/8/share/man/man7/ (props changed) stable/8/share/man/man8/ (props changed) stable/8/share/man/man9/ (props changed) stable/8/share/mk/ (props changed) stable/8/usr.bin/ (props changed) stable/8/usr.bin/awk/ (props changed) stable/8/usr.bin/biff/ (props changed) stable/8/usr.bin/calendar/ (props changed) stable/8/usr.bin/catman/ (props changed) stable/8/usr.bin/comm/ (props changed) stable/8/usr.bin/cpio/ (props changed) stable/8/usr.bin/csup/ (props changed) stable/8/usr.bin/fetch/ (props changed) stable/8/usr.bin/find/ (props changed) stable/8/usr.bin/finger/ (props changed) stable/8/usr.bin/fstat/ (props changed) stable/8/usr.bin/gcore/ (props changed) stable/8/usr.bin/gzip/ (props changed) stable/8/usr.bin/hexdump/ (props changed) stable/8/usr.bin/indent/ (props changed) stable/8/usr.bin/kdump/ (props changed) stable/8/usr.bin/locale/ (props changed) stable/8/usr.bin/look/ (props changed) stable/8/usr.bin/makewhatis/ (props changed) stable/8/usr.bin/minigzip/ (props changed) stable/8/usr.bin/netstat/ (props changed) stable/8/usr.bin/pathchk/ (props changed) stable/8/usr.bin/perror/ (props changed) stable/8/usr.bin/procstat/ (props changed) stable/8/usr.bin/rpcgen/ (props changed) stable/8/usr.bin/script/ (props changed) stable/8/usr.bin/sed/ (props changed) stable/8/usr.bin/sockstat/ (props changed) stable/8/usr.bin/stat/ (props changed) stable/8/usr.bin/systat/ (props changed) stable/8/usr.bin/tftp/ (props changed) stable/8/usr.bin/touch/ (props changed) stable/8/usr.bin/truss/ (props changed) stable/8/usr.bin/unifdef/ (props changed) stable/8/usr.bin/uniq/ (props changed) stable/8/usr.bin/unzip/ (props changed) stable/8/usr.bin/vmstat/ (props changed) stable/8/usr.bin/w/ (props changed) stable/8/usr.bin/whois/ (props changed) stable/8/usr.bin/xlint/ (props changed) stable/8/usr.sbin/ (props changed) stable/8/usr.sbin/acpi/ (props changed) stable/8/usr.sbin/arp/ (props changed) stable/8/usr.sbin/bluetooth/ (props changed) stable/8/usr.sbin/bsnmpd/ (props changed) stable/8/usr.sbin/burncd/ (props changed) stable/8/usr.sbin/cdcontrol/ (props changed) stable/8/usr.sbin/chown/ (props changed) stable/8/usr.sbin/config/ (props changed) stable/8/usr.sbin/cpucontrol/ (props changed) stable/8/usr.sbin/crashinfo/ (props changed) stable/8/usr.sbin/cron/ (props changed) stable/8/usr.sbin/crunch/examples/ (props changed) stable/8/usr.sbin/cxgbtool/ (props changed) stable/8/usr.sbin/diskinfo/ (props changed) stable/8/usr.sbin/dumpcis/cardinfo.h (props changed) stable/8/usr.sbin/dumpcis/cis.h (props changed) stable/8/usr.sbin/faithd/ (props changed) stable/8/usr.sbin/fifolog/ (props changed) stable/8/usr.sbin/freebsd-update/ (props changed) stable/8/usr.sbin/inetd/ (props changed) stable/8/usr.sbin/iostat/ (props changed) stable/8/usr.sbin/jail/ (props changed) stable/8/usr.sbin/jls/ (props changed) stable/8/usr.sbin/lpr/ (props changed) stable/8/usr.sbin/mailwrapper/ (props changed) stable/8/usr.sbin/makefs/ffs/ffs_bswap.c (props changed) stable/8/usr.sbin/makefs/ffs/ffs_subr.c (props changed) stable/8/usr.sbin/makefs/ffs/ufs_bswap.h (props changed) stable/8/usr.sbin/makefs/getid.c (props changed) stable/8/usr.sbin/mergemaster/ (props changed) stable/8/usr.sbin/mfiutil/mfiutil.8 (props changed) stable/8/usr.sbin/mountd/ (props changed) stable/8/usr.sbin/mptutil/ (props changed) stable/8/usr.sbin/mtree/ (props changed) stable/8/usr.sbin/ndp/ (props changed) stable/8/usr.sbin/newsyslog/ (props changed) stable/8/usr.sbin/ntp/ (props changed) stable/8/usr.sbin/pmcstat/ (props changed) stable/8/usr.sbin/powerd/ (props changed) stable/8/usr.sbin/ppp/ (props changed) stable/8/usr.sbin/pstat/ (props changed) stable/8/usr.sbin/rpc.umntall/ (props changed) stable/8/usr.sbin/rtsold/ (props changed) stable/8/usr.sbin/sade/ (props changed) stable/8/usr.sbin/service/ (props changed) stable/8/usr.sbin/services_mkdb/ (props changed) stable/8/usr.sbin/sysinstall/ (props changed) stable/8/usr.sbin/syslogd/ (props changed) stable/8/usr.sbin/traceroute/ (props changed) stable/8/usr.sbin/traceroute6/ (props changed) stable/8/usr.sbin/usbconfig/ (props changed) stable/8/usr.sbin/vidcontrol/ (props changed) stable/8/usr.sbin/wpa/ (props changed) stable/8/usr.sbin/ypserv/ (props changed) stable/8/usr.sbin/zic/ (props changed) Modified: stable/8/etc/Makefile ============================================================================== --- stable/8/etc/Makefile Tue May 25 17:48:17 2010 (r208545) +++ stable/8/etc/Makefile Tue May 25 20:16:36 2010 (r208546) @@ -59,7 +59,7 @@ BIN1+= hosts.lpd printcap BIN1+= ${.CURDIR}/../usr.bin/mail/misc/mail.rc .endif -.if ${MK_MAN} != "no" +.if ${MK_MAN_UTILS} != "no" BIN1+= ${.CURDIR}/../gnu/usr.bin/man/manpath/manpath.config .endif Modified: stable/8/etc/periodic/weekly/Makefile ============================================================================== --- stable/8/etc/periodic/weekly/Makefile Tue May 25 17:48:17 2010 (r208545) +++ stable/8/etc/periodic/weekly/Makefile Tue May 25 20:16:36 2010 (r208546) @@ -11,7 +11,7 @@ FILES= 340.noid \ FILES+= 310.locate .endif -.if ${MK_MAN} != "no" +.if ${MK_MAN_UTILS} != "no" FILES+= 320.whatis 330.catman .endif Modified: stable/8/gnu/usr.bin/Makefile ============================================================================== --- stable/8/gnu/usr.bin/Makefile Tue May 25 17:48:17 2010 (r208545) +++ stable/8/gnu/usr.bin/Makefile Tue May 25 20:16:36 2010 (r208546) @@ -45,7 +45,7 @@ _grep= grep _texinfo= texinfo .endif -.if ${MK_MAN} != "no" +.if ${MK_MAN_UTILS} != "no" _man= man .endif Modified: stable/8/share/man/Makefile ============================================================================== --- stable/8/share/man/Makefile Tue May 25 17:48:17 2010 (r208545) +++ stable/8/share/man/Makefile Tue May 25 20:16:36 2010 (r208546) @@ -9,10 +9,12 @@ SUBDIR= man1 man3 man4 man5 man6 man7 ma MAKEWHATIS?= makewhatis makedb: +.if ${MK_MAN_UTILS} != "no" ${MAKEWHATIS} ${DESTDIR}${BINDIR}/man .if ${MK_OPENSSL} != "no" ${MAKEWHATIS} ${DESTDIR}${BINDIR}/openssl/man .endif +.endif .include "${.CURDIR}/../Makefile.inc" .include Modified: stable/8/share/mk/bsd.own.mk ============================================================================== --- stable/8/share/mk/bsd.own.mk Tue May 25 17:48:17 2010 (r208545) +++ stable/8/share/mk/bsd.own.mk Tue May 25 20:16:36 2010 (r208546) @@ -524,7 +524,8 @@ MK_${var}_SUPPORT:= yes # MK_* options whose default value depends on another option. # .for vv in \ - GSSAPI/KERBEROS + GSSAPI/KERBEROS \ + MAN_UTILS/MAN .if defined(WITH_${vv:H}) && defined(WITHOUT_${vv:H}) .error WITH_${vv:H} and WITHOUT_${vv:H} can't both be set. .endif Modified: stable/8/usr.bin/Makefile ============================================================================== --- stable/8/usr.bin/Makefile Tue May 25 17:48:17 2010 (r208545) +++ stable/8/usr.bin/Makefile Tue May 25 20:16:36 2010 (r208546) @@ -118,7 +118,7 @@ SUBDIR= alias \ m4 \ ${_mail} \ ${_make} \ - makewhatis \ + ${_makewhatis} \ mesg \ minigzip \ ministat \ @@ -251,7 +251,7 @@ _at= at _atm= atm .endif -.if ${MK_MAN} != "no" +.if ${MK_MAN_UTILS} != "no" _catman= catman .endif @@ -303,6 +303,10 @@ _msgs= msgs _make= make .endif +.if ${MK_MAN_UTILS} != "no" +_makewhatis= makewhatis +.endif + .if ${MK_NETCAT} != "no" _nc= nc .endif Modified: stable/8/usr.sbin/Makefile ============================================================================== --- stable/8/usr.sbin/Makefile Tue May 25 17:48:17 2010 (r208545) +++ stable/8/usr.sbin/Makefile Tue May 25 20:16:36 2010 (r208546) @@ -91,7 +91,7 @@ SUBDIR= ${_ac} \ mailwrapper \ makefs \ ${_makemap} \ - manctl \ + ${_manctl} \ memcontrol \ mergemaster \ mfiutil \ @@ -324,6 +324,10 @@ _nscd= nscd _lpr= lpr .endif +.if ${MK_MAN_UTILS} != "no" +_manctl= manctl +.endif + .if ${MK_NETGRAPH} != "no" _flowctl= flowctl _lmcconfig= lmcconfig From owner-svn-src-stable-8@FreeBSD.ORG Tue May 25 20:19:31 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 60EFB1065674; Tue, 25 May 2010 20:19:31 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 503C58FC20; Tue, 25 May 2010 20:19:31 +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 o4PKJVgK027039; Tue, 25 May 2010 20:19:31 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4PKJVon027038; Tue, 25 May 2010 20:19:31 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201005252019.o4PKJVon027038@svn.freebsd.org> From: Jung-uk Kim Date: Tue, 25 May 2010 20:19:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208547 - stable/8/tools/build/options X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 20:19:31 -0000 Author: jkim Date: Tue May 25 20:19:31 2010 New Revision: 208547 URL: http://svn.freebsd.org/changeset/base/208547 Log: MFC: r208322 Add an option file for WITHOUT_MAN_UTILS to regenerate src.conf(5). Approved by: re (kib) Added: stable/8/tools/build/options/WITHOUT_MAN_UTILS - copied unchanged from r208322, head/tools/build/options/WITHOUT_MAN_UTILS Modified: Directory Properties: stable/8/tools/build/options/ (props changed) Copied: stable/8/tools/build/options/WITHOUT_MAN_UTILS (from r208322, head/tools/build/options/WITHOUT_MAN_UTILS) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/8/tools/build/options/WITHOUT_MAN_UTILS Tue May 25 20:19:31 2010 (r208547, copy of r208322, head/tools/build/options/WITHOUT_MAN_UTILS) @@ -0,0 +1,9 @@ +.\" $FreeBSD$ +Set to not build utilities for manual pages, +.Xr apropos 1 , +.Xr catman 1 , +.Xr makewhatis 1 , +.Xr man 1 , +.Xr whatis 1 , +.Xr manctl 8 , +and related support files. From owner-svn-src-stable-8@FreeBSD.ORG Tue May 25 20:21:48 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5DD9C106566C; Tue, 25 May 2010 20:21:47 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4C5888FC0A; Tue, 25 May 2010 20:21:47 +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 o4PKLk7F027607; Tue, 25 May 2010 20:21:46 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4PKLkq0027605; Tue, 25 May 2010 20:21:46 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201005252021.o4PKLkq0027605@svn.freebsd.org> From: Jung-uk Kim Date: Tue, 25 May 2010 20:21:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208549 - stable/8/share/man/man5 X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 20:21:48 -0000 Author: jkim Date: Tue May 25 20:21:46 2010 New Revision: 208549 URL: http://svn.freebsd.org/changeset/base/208549 Log: Regen for r208547. Approved by: re (kib) Modified: stable/8/share/man/man5/src.conf.5 Modified: stable/8/share/man/man5/src.conf.5 ============================================================================== --- stable/8/share/man/man5/src.conf.5 Tue May 25 20:19:45 2010 (r208548) +++ stable/8/share/man/man5/src.conf.5 Tue May 25 20:21:46 2010 (r208549) @@ -1,7 +1,7 @@ .\" DO NOT EDIT-- this file is automatically generated. .\" from FreeBSD: stable/8/tools/build/options/makeman 188848 2009-02-20 11:09:55Z mtm .\" $FreeBSD$ -.Dd March 29, 2010 +.Dd May 25, 2010 .Dt SRC.CONF 5 .Os .Sh NAME @@ -556,6 +556,24 @@ and related support files. .It Va WITHOUT_MAN .\" from FreeBSD: stable/8/tools/build/options/WITHOUT_MAN 156932 2006-03-21 07:50:50Z ru Set to not build manual pages. +When set, it also enforces the following options: +.Pp +.Bl -item -compact +.It +.Va WITHOUT_MAN_UTILS +(can be overridden with +.Va WITH_MAN_UTILS ) +.El +.It Va WITHOUT_MAN_UTILS +.\" from FreeBSD: stable/8/tools/build/options/WITHOUT_MAN_UTILS 208547 2010-05-25 20:19:31Z jkim +Set to not build utilities for manual pages, +.Xr apropos 1 , +.Xr catman 1 , +.Xr makewhatis 1 , +.Xr man 1 , +.Xr whatis 1 , +.Xr manctl 8 , +and related support files. .It Va WITHOUT_NCP .\" from FreeBSD: stable/8/tools/build/options/WITHOUT_NCP 156932 2006-03-21 07:50:50Z ru Set to not build programs, libraries, and kernel modules From owner-svn-src-stable-8@FreeBSD.ORG Wed May 26 17:05:54 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8A426106566C; Wed, 26 May 2010 17:05:54 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 775E28FC1C; Wed, 26 May 2010 17:05:54 +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 o4QH5snY005817; Wed, 26 May 2010 17:05:54 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4QH5sP0005815; Wed, 26 May 2010 17:05:54 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201005261705.o4QH5sP0005815@svn.freebsd.org> From: Marius Strobl Date: Wed, 26 May 2010 17:05:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208568 - stable/8/release/doc/en_US.ISO8859-1/hardware X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 17:05:54 -0000 Author: marius Date: Wed May 26 17:05:54 2010 New Revision: 208568 URL: http://svn.freebsd.org/changeset/base/208568 Log: MFC: r208459, r208511 - Update the sparc64 hardware list regarding machines that will be supported beginning with 8.1-RELEASE as well as correct some existing entries and add previously missed ones. [1] - According to simon@ when referring to a company along a product just to identify the company one shouldn't use the company trademark. [2] Approved by: re (kib), blackend [1], simon [2] Modified: stable/8/release/doc/en_US.ISO8859-1/hardware/article.sgml Directory Properties: stable/8/release/doc/en_US.ISO8859-1/hardware/ (props changed) Modified: stable/8/release/doc/en_US.ISO8859-1/hardware/article.sgml ============================================================================== --- stable/8/release/doc/en_US.ISO8859-1/hardware/article.sgml Wed May 26 16:37:54 2010 (r208567) +++ stable/8/release/doc/en_US.ISO8859-1/hardware/article.sgml Wed May 26 17:05:54 2010 (r208568) @@ -36,6 +36,7 @@ &tm-attrib.freebsd; &tm-attrib.amd; + &tm-attrib.fujitsu; &tm-attrib.ibm; &tm-attrib.intel; &tm-attrib.sparc; @@ -324,7 +325,8 @@ sparc64 This section describes the systems currently known to be - supported by &os; on the &ultrasparc; platform. For + supported by &os; on the Fujitsu &sparc64; and Sun &ultrasparc; + platforms. For background information on the various hardware designs see the Sun System Handbook. @@ -334,8 +336,8 @@ When using the GENERIC kernel, &os;/&arch.sparc64; systems not equipped with a framebuffer - supported by the &man.creator.4; (&sun; Creator, &sun; Creator3D - and &sun; Elite3D) or &man.machfb.4; (&sun; PGX and &sun; PGX64 + supported by the &man.creator.4; (Sun Creator, Sun Creator3D + and Sun Elite3D) or &man.machfb.4; (Sun PGX and Sun PGX64 as well as the ATI Mach64 chips found onboard in for example &sun.blade; 100, &sun.blade; 150, &sun.ultra; 5 and &sun.ultra; 10) driver must use the serial console. @@ -349,6 +351,10 @@ + Naturetech GENIALstation 777S + + + &sun.blade; 100 @@ -357,7 +363,7 @@ - &sun.enterprise; 100 + &sun.enterprise; 150 @@ -377,6 +383,11 @@ + &sun.fire; B100s (support for the on-board NICs first + appeared in 8.1-RELEASE) + + + &sun.fire; V100 @@ -385,51 +396,55 @@ - &netra; t1 105 + Sun &netra; t1 100/105 + + + + Sun &netra; T1 AC200/DC200 - &netra; T1 AC200/DC200 + Sun &netra; t 1100 - &netra; t 1100 + Sun &netra; t 1120 - &netra; t 1120 + Sun &netra; t 1125 - &netra; t 1125 + Sun &netra; t 1400/1405 - &netra; t 1400/1405 + Sun &netra; 120 - &netra; 120 + Sun &netra; X1 - &netra; X1 + Sun &sparcengine; Ultra AX1105 - &sparcengine; Ultra AX1105 + Sun &sparcengine; Ultra AXe - &sparcengine; Ultra AXe + Sun &sparcengine; Ultra AXi - &sparcengine; Ultra AXi + Sun &sparcengine; Ultra AXmp - &sparcengine; Ultra AXmp + Sun &sparcengine; CP1500 @@ -472,8 +487,8 @@ The following systems are partially supported by &os;. In particular the fibre channel controllers in SBus-based systems are not supported. However, it is possible to use these with a SCSI controller - supported by the &man.esp.4 driver (&sun; ESP SCSI, &sun; FAS Fast-SCSI - and &sun; FAS366 Fast-Wide SCSI controllers). + supported by the &man.esp.4 driver (Sun ESP SCSI, Sun FAS Fast-SCSI + and Sun FAS366 Fast-Wide SCSI controllers). @@ -485,7 +500,7 @@ - Starting with 7.2-RELEASE, &arch.sparc64; systems based on + Starting with 7.2-RELEASE, &arch.sparc64; systems based on Sun &ultrasparc; III and beyond are also supported by &os;, which includes the following known working systems: @@ -537,11 +552,16 @@ + &sun.fire; V890 (support first appeared in 8.1-RELEASE, + non-mixed &ultrasparc; IV/IV+ CPU-configurations only) + + + &netra; 20/&netra; T4 - The following &ultrasparc; IIIi systems are not tested but + The following Sun &ultrasparc; systems are not tested but believed to be also supported by &os;: @@ -556,7 +576,40 @@ &sun.fire; V245 (support first appeared in 7.3-RELEASE) + + + &sun.fire; V490 (support first appeared in 8.1-RELEASE, + non-mixed &ultrasparc; IV/IV+ CPU-configurations only) + + + Starting with 8.1-RELEASE, &arch.sparc64; systems based on + Fujitsu &sparc64; V are also supported by &os;, which + includes the following known working systems: + + + + Fujitsu &primepower; 250 + + + + The following Fujitsu &primepower; systems are not tested but + believed to be also supported by &os;: + + + + Fujitsu &primepower; 450 + + + + Fujitsu &primepower; 650 + + + + Fujitsu &primepower; 850 + + + From owner-svn-src-stable-8@FreeBSD.ORG Wed May 26 17:07:39 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D761E106564A; Wed, 26 May 2010 17:07:39 +0000 (UTC) (envelope-from kensmith@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C5F7D8FC1F; Wed, 26 May 2010 17:07:39 +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 o4QH7dNf006265; Wed, 26 May 2010 17:07:39 GMT (envelope-from kensmith@svn.freebsd.org) Received: (from kensmith@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4QH7dVW006263; Wed, 26 May 2010 17:07:39 GMT (envelope-from kensmith@svn.freebsd.org) Message-Id: <201005261707.o4QH7dVW006263@svn.freebsd.org> From: Ken Smith Date: Wed, 26 May 2010 17:07:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208569 - stable/8/gnu/usr.bin/groff/tmac X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 17:07:39 -0000 Author: kensmith Date: Wed May 26 17:07:39 2010 New Revision: 208569 URL: http://svn.freebsd.org/changeset/base/208569 Log: Change the FreeBSD version that will be printed for the manual pages. Approved by: re (implicit) Modified: stable/8/gnu/usr.bin/groff/tmac/mdoc.local Modified: stable/8/gnu/usr.bin/groff/tmac/mdoc.local ============================================================================== --- stable/8/gnu/usr.bin/groff/tmac/mdoc.local Wed May 26 17:05:54 2010 (r208568) +++ stable/8/gnu/usr.bin/groff/tmac/mdoc.local Wed May 26 17:07:39 2010 (r208569) @@ -67,7 +67,7 @@ .ds doc-volume-as-arm arm . .\" Default .Os value -.ds doc-default-operating-system FreeBSD\~8.0 +.ds doc-default-operating-system FreeBSD\~8.1 . .\" FreeBSD releases not found in doc-common .ds doc-operating-system-FreeBSD-7.2 7.2 From owner-svn-src-stable-8@FreeBSD.ORG Wed May 26 17:11:01 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7CE901065674; Wed, 26 May 2010 17:11:01 +0000 (UTC) (envelope-from kensmith@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6B5D78FC18; Wed, 26 May 2010 17:11:01 +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 o4QHB1Aj007054; Wed, 26 May 2010 17:11:01 GMT (envelope-from kensmith@svn.freebsd.org) Received: (from kensmith@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4QHB1OS007041; Wed, 26 May 2010 17:11:01 GMT (envelope-from kensmith@svn.freebsd.org) Message-Id: <201005261711.o4QHB1OS007041@svn.freebsd.org> From: Ken Smith Date: Wed, 26 May 2010 17:11:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208570 - stable/8/release X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 17:11:01 -0000 Author: kensmith Date: Wed May 26 17:11:01 2010 New Revision: 208570 URL: http://svn.freebsd.org/changeset/base/208570 Log: Bump version number from 8.0 to 8.1. Belatedly bump stable/7 to stable/8 for SVNBRANCH. Approved by: re (implicit) Modified: stable/8/release/Makefile Modified: stable/8/release/Makefile ============================================================================== --- stable/8/release/Makefile Wed May 26 17:07:39 2010 (r208569) +++ stable/8/release/Makefile Wed May 26 17:11:01 2010 (r208570) @@ -24,11 +24,11 @@ # Set these, release builder! # # Fixed version: -#BUILDNAME=8.0-STABLE +#BUILDNAME=8.1-STABLE # # Automatic SNAP versioning: DATE != date +%Y%m%d -BASE = 8.0 +BASE = 8.1 BUILDNAME?=${BASE}-${DATE}-SNAP # #CHROOTDIR=/junk/release @@ -72,7 +72,7 @@ BUILDNAME?=${BASE}-${DATE}-SNAP # # Subversion branch to build for src. If this is not set then it is # automatically computed from RELEASETAG. -#SVNBRANCH=stable/7 +#SVNBRANCH=stable/8 # # Non-zero if ${RELEASETAG} is in the form "RELENG_ver_RELEASE"; we # are building an official release. Otherwise, we are building for From owner-svn-src-stable-8@FreeBSD.ORG Wed May 26 17:18:34 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7E712106566B; Wed, 26 May 2010 17:18:34 +0000 (UTC) (envelope-from kensmith@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6CA688FC08; Wed, 26 May 2010 17:18:34 +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 o4QHIXNS008710; Wed, 26 May 2010 17:18:33 GMT (envelope-from kensmith@svn.freebsd.org) Received: (from kensmith@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4QHIXGD008708; Wed, 26 May 2010 17:18:33 GMT (envelope-from kensmith@svn.freebsd.org) Message-Id: <201005261718.o4QHIXGD008708@svn.freebsd.org> From: Ken Smith Date: Wed, 26 May 2010 17:18:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208571 - stable/8/usr.sbin/pkg_install/add X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 17:18:34 -0000 Author: kensmith Date: Wed May 26 17:18:32 2010 New Revision: 208571 URL: http://svn.freebsd.org/changeset/base/208571 Log: Add packages-8.1-release directory. While here add packages-7.3-release. Approved by: re (implicit) Modified: stable/8/usr.sbin/pkg_install/add/main.c Modified: stable/8/usr.sbin/pkg_install/add/main.c ============================================================================== --- stable/8/usr.sbin/pkg_install/add/main.c Wed May 26 17:11:01 2010 (r208570) +++ stable/8/usr.sbin/pkg_install/add/main.c Wed May 26 17:18:32 2010 (r208571) @@ -82,7 +82,9 @@ struct { { 700000, 700099, "/packages-7.0-release" }, { 701000, 701099, "/packages-7.1-release" }, { 702000, 702099, "/packages-7.2-release" }, + { 703000, 703099, "/packages-7.3-release" }, { 800000, 800499, "/packages-8.0-release" }, + { 801000, 801499, "/packages-8.1-release" }, { 300000, 399000, "/packages-3-stable" }, { 400000, 499000, "/packages-4-stable" }, { 502100, 502128, "/packages-5-current" }, From owner-svn-src-stable-8@FreeBSD.ORG Wed May 26 17:30:14 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E00981065672; Wed, 26 May 2010 17:30:14 +0000 (UTC) (envelope-from marius@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B4FC68FC19; Wed, 26 May 2010 17:30:14 +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 o4QHUEgJ011300; Wed, 26 May 2010 17:30:14 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4QHUE8A011297; Wed, 26 May 2010 17:30:14 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201005261730.o4QHUE8A011297@svn.freebsd.org> From: Marius Strobl Date: Wed, 26 May 2010 17:30:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208572 - in stable/8/sys/modules: ata/atadisk cam X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 17:30:15 -0000 Author: marius Date: Wed May 26 17:30:14 2010 New Revision: 208572 URL: http://svn.freebsd.org/changeset/base/208572 Log: MFC: r208468 At least on sparc64 these modules require ata_machdep.c. Approved by: re (kib) Modified: stable/8/sys/modules/ata/atadisk/Makefile stable/8/sys/modules/cam/Makefile Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/modules/ata/atadisk/Makefile ============================================================================== --- stable/8/sys/modules/ata/atadisk/Makefile Wed May 26 17:18:32 2010 (r208571) +++ stable/8/sys/modules/ata/atadisk/Makefile Wed May 26 17:30:14 2010 (r208572) @@ -1,9 +1,13 @@ # $FreeBSD$ -.PATH: ${.CURDIR}/../../../dev/ata +.PATH: ${.CURDIR}/../../../dev/ata ${.CURDIR}/../../../${MACHINE}/${MACHINE} KMOD= atadisk -SRCS= ata-disk.c +SRCS= ata-disk.c ${ata_machdep} SRCS+= opt_ata.h ata_if.h device_if.h bus_if.h pci_if.h +.if exists(${.CURDIR}/../../../${MACHINE}/${MACHINE}/ata_machdep.c) +ata_machdep= ata_machdep.c +.endif + .include Modified: stable/8/sys/modules/cam/Makefile ============================================================================== --- stable/8/sys/modules/cam/Makefile Wed May 26 17:18:32 2010 (r208571) +++ stable/8/sys/modules/cam/Makefile Wed May 26 17:30:14 2010 (r208572) @@ -2,7 +2,7 @@ S= ${.CURDIR}/../.. -.PATH: $S/cam $S/cam/scsi $S/cam/ata +.PATH: $S/cam $S/cam/scsi $S/cam/ata $S/${MACHINE}/${MACHINE} KMOD= cam @@ -28,6 +28,9 @@ SRCS+= scsi_xpt.c SRCS+= ata_all.c SRCS+= ata_xpt.c SRCS+= ata_da.c +.if exists($S/${MACHINE}/${MACHINE}/ata_machdep.c) +SRCS+= ata_machdep.c +.endif SRCS+= ata_pmp.c EXPORT_SYMS= YES # XXX evaluate From owner-svn-src-stable-8@FreeBSD.ORG Wed May 26 18:56:06 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id ED9CA1065672; Wed, 26 May 2010 18:56:06 +0000 (UTC) (envelope-from mjacob@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DBA178FC1F; Wed, 26 May 2010 18:56:06 +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 o4QIu6j2030474; Wed, 26 May 2010 18:56:06 GMT (envelope-from mjacob@svn.freebsd.org) Received: (from mjacob@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4QIu6Vg030471; Wed, 26 May 2010 18:56:06 GMT (envelope-from mjacob@svn.freebsd.org) Message-Id: <201005261856.o4QIu6Vg030471@svn.freebsd.org> From: Matt Jacob Date: Wed, 26 May 2010 18:56:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208578 - stable/8/sys/dev/isp X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 18:56:07 -0000 Author: mjacob Date: Wed May 26 18:56:06 2010 New Revision: 208578 URL: http://svn.freebsd.org/changeset/base/208578 Log: This is an MFC of 208119, 208129 Hook up some wires that were forgotten a few months ago and restore the zombie device timeout code and the loop down time code and the fabric hysteresis code. Approved by: re (ken smith) Modified: stable/8/sys/dev/isp/isp_freebsd.c stable/8/sys/dev/isp/ispvar.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/dev/isp/isp_freebsd.c ============================================================================== --- stable/8/sys/dev/isp/isp_freebsd.c Wed May 26 18:55:40 2010 (r208577) +++ stable/8/sys/dev/isp/isp_freebsd.c Wed May 26 18:56:06 2010 (r208578) @@ -49,7 +49,7 @@ __FBSDID("$FreeBSD$"); MODULE_VERSION(isp, 1); MODULE_DEPEND(isp, cam, 1, 1, 1); int isp_announced = 0; -int isp_fabric_hysteresis = 3; +int isp_fabric_hysteresis = 5; int isp_loop_down_limit = 60; /* default loop down limit */ int isp_change_is_bad = 0; /* "changed" devices are bad */ int isp_quickboot_time = 7; /* don't wait more than N secs for loop up */ @@ -141,9 +141,12 @@ isp_attach_chan(ispsoftc_t *isp, struct fc->path = path; fc->isp = isp; fc->ready = 1; - + fc->gone_device_time = isp_gone_device_time; + fc->loop_down_limit = isp_loop_down_limit; + fc->hysteresis = isp_fabric_hysteresis; callout_init_mtx(&fc->ldt, &isp->isp_osinfo.lock, 0); callout_init_mtx(&fc->gdt, &isp->isp_osinfo.lock, 0); + /* * We start by being "loop down" if we have an initiator role */ @@ -3935,7 +3938,7 @@ isp_gdt(void *arg) fcportdb_t *lp; int dbidx, tgt, more_to_do = 0; - isp_prt(isp, ISP_LOGDEBUG0, "Chan %d GDT timer expired", chan); + isp_prt(isp, ISP_LOGSANCFG|ISP_LOGDEBUG0, "Chan %d GDT timer expired @ %lu", chan, (unsigned long) time_uptime); for (dbidx = 0; dbidx < MAX_FC_TARG; dbidx++) { lp = &FCPARAM(isp, chan)->portdb[dbidx]; @@ -3945,15 +3948,8 @@ isp_gdt(void *arg) if (lp->dev_map_idx == 0 || lp->target_mode) { continue; } - /* - * We can use new_portid here because it is untouched - * while the state is ZOMBIE - */ - if (lp->new_portid == 0) { - continue; - } - lp->new_portid -= 1; - if (lp->new_portid != 0) { + if (lp->gone_timer != 0) { + lp->gone_timer -= 1; more_to_do++; continue; } @@ -3968,7 +3964,7 @@ isp_gdt(void *arg) if (more_to_do) { callout_reset(&fc->gdt, hz, isp_gdt, fc); } else { - isp_prt(isp, ISP_LOGSANCFG|ISP_LOGDEBUG0, "Chan %d stopping Gone Device Timer", chan); + isp_prt(isp, ISP_LOGSANCFG|ISP_LOGDEBUG0, "Chan %d Stopping Gone Device Timer", chan); } } } @@ -4937,7 +4933,7 @@ isp_async(ispsoftc_t *isp, ispasync_t cm } if (!callout_active(&fc->ldt)) { callout_reset(&fc->ldt, fc->loop_down_limit * hz, isp_ldt, fc); - isp_prt(isp, ISP_LOGSANCFG|ISP_LOGDEBUG0, "starting Loop Down Timer @ %lu", (unsigned long) time_uptime); + isp_prt(isp, ISP_LOGSANCFG|ISP_LOGDEBUG0, "Starting Loop Down Timer @ %lu", (unsigned long) time_uptime); } } } @@ -4967,6 +4963,7 @@ isp_async(ispsoftc_t *isp, ispasync_t cm va_end(ap); fc = ISP_FC_PC(isp, bus); lp->reserved = 0; + lp->gone_timer = 0; if ((FCPARAM(isp, bus)->role & ISP_ROLE_INITIATOR) && (lp->roles & (SVC3_TGT_ROLE >> SVC3_ROLE_SHIFT))) { int dbidx = lp - FCPARAM(isp, bus)->portdb; int i; @@ -5002,6 +4999,7 @@ isp_async(ispsoftc_t *isp, ispasync_t cm va_end(ap); fc = ISP_FC_PC(isp, bus); lp->reserved = 0; + lp->gone_timer = 0; if (isp_change_is_bad) { lp->state = FC_PORTDB_STATE_NIL; if (lp->dev_map_idx) { @@ -5056,15 +5054,13 @@ isp_async(ispsoftc_t *isp, ispasync_t cm * If it isn't marked that isp_gdt is going to get rid of it, * announce that it's gone. * - * We can use new_portid for the gone timer because it's - * undefined while the state is ZOMBIE. */ if (lp->dev_map_idx && lp->reserved == 0) { lp->reserved = 1; - lp->new_portid = ISP_FC_PC(isp, bus)->gone_device_time; lp->state = FC_PORTDB_STATE_ZOMBIE; + lp->gone_timer = ISP_FC_PC(isp, bus)->gone_device_time; if (fc->ready && !callout_active(&fc->gdt)) { - isp_prt(isp, ISP_LOGSANCFG|ISP_LOGDEBUG0, "Chan %d starting Gone Device Timer", bus); + isp_prt(isp, ISP_LOGSANCFG|ISP_LOGDEBUG0, "Chan %d Starting Gone Device Timer with %u seconds time now %lu", bus, lp->gone_timer, (unsigned long)time_uptime); callout_reset(&fc->gdt, hz, isp_gdt, fc); } tgt = lp->dev_map_idx - 1; Modified: stable/8/sys/dev/isp/ispvar.h ============================================================================== --- stable/8/sys/dev/isp/ispvar.h Wed May 26 18:55:40 2010 (r208577) +++ stable/8/sys/dev/isp/ispvar.h Wed May 26 18:56:06 2010 (r208578) @@ -426,6 +426,7 @@ typedef struct { new_portid : 24; uint64_t node_wwn; uint64_t port_wwn; + uint32_t gone_timer; } fcportdb_t; #define FC_PORTDB_STATE_NIL 0 From owner-svn-src-stable-8@FreeBSD.ORG Wed May 26 19:26:28 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AA98B1065675; Wed, 26 May 2010 19:26:28 +0000 (UTC) (envelope-from kib@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 80CB68FC12; Wed, 26 May 2010 19:26:28 +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 o4QJQSBC037274; Wed, 26 May 2010 19:26:28 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4QJQSoi037270; Wed, 26 May 2010 19:26:28 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201005261926.o4QJQSoi037270@svn.freebsd.org> From: Konstantin Belousov Date: Wed, 26 May 2010 19:26:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208580 - in stable/8/sys: kern sys X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 19:26:28 -0000 Author: kib Date: Wed May 26 19:26:28 2010 New Revision: 208580 URL: http://svn.freebsd.org/changeset/base/208580 Log: MFC r208488: Fix the double counting of the last process thread td_incruntime on exit, that is done once in thread_exit() and the second time in proc_reap(), by clearing td_incruntime. Approved by: re (kensmith) Modified: stable/8/sys/kern/kern_resource.c stable/8/sys/kern/kern_thread.c stable/8/sys/sys/resourcevar.h Directory Properties: stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/dev/xen/xenpci/ (props changed) stable/8/sys/geom/sched/ (props changed) Modified: stable/8/sys/kern/kern_resource.c ============================================================================== --- stable/8/sys/kern/kern_resource.c Wed May 26 19:06:40 2010 (r208579) +++ stable/8/sys/kern/kern_resource.c Wed May 26 19:26:28 2010 (r208580) @@ -76,7 +76,7 @@ static void calcru1(struct proc *p, stru struct timeval *up, struct timeval *sp); static int donice(struct thread *td, struct proc *chgp, int n); static struct uidinfo *uilookup(uid_t uid); -static void ruxagg(struct proc *p, struct thread *td); +static void ruxagg_locked(struct rusage_ext *rux, struct thread *td); /* * Resource controls and accounting. @@ -1010,7 +1010,7 @@ ruadd(struct rusage *ru, struct rusage_e /* * Aggregate tick counts into the proc's rusage_ext. */ -void +static void ruxagg_locked(struct rusage_ext *rux, struct thread *td) { @@ -1022,7 +1022,7 @@ ruxagg_locked(struct rusage_ext *rux, st rux->rux_iticks += td->td_iticks; } -static void +void ruxagg(struct proc *p, struct thread *td) { Modified: stable/8/sys/kern/kern_thread.c ============================================================================== --- stable/8/sys/kern/kern_thread.c Wed May 26 19:06:40 2010 (r208579) +++ stable/8/sys/kern/kern_thread.c Wed May 26 19:26:28 2010 (r208580) @@ -430,8 +430,8 @@ thread_exit(void) PMC_SWITCH_CONTEXT(td, PMC_FN_CSW_OUT); #endif PROC_UNLOCK(p); + ruxagg(p, td); thread_lock(td); - ruxagg_locked(&p->p_rux, td); PROC_SUNLOCK(p); td->td_state = TDS_INACTIVE; #ifdef WITNESS Modified: stable/8/sys/sys/resourcevar.h ============================================================================== --- stable/8/sys/sys/resourcevar.h Wed May 26 19:06:40 2010 (r208579) +++ stable/8/sys/sys/resourcevar.h Wed May 26 19:26:28 2010 (r208580) @@ -131,7 +131,7 @@ void rucollect(struct rusage *ru, struc void rufetch(struct proc *p, struct rusage *ru); void rufetchcalc(struct proc *p, struct rusage *ru, struct timeval *up, struct timeval *sp); -void ruxagg_locked(struct rusage_ext *rux, struct thread *td); +void ruxagg(struct proc *p, struct thread *td); int suswintr(void *base, int word); struct uidinfo *uifind(uid_t uid); From owner-svn-src-stable-8@FreeBSD.ORG Thu May 27 03:15:06 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 273AB106566C; Thu, 27 May 2010 03:15:06 +0000 (UTC) (envelope-from cperciva@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0B6008FC2A; Thu, 27 May 2010 03:15:06 +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 o4R3F5rK041626; Thu, 27 May 2010 03:15:05 GMT (envelope-from cperciva@svn.freebsd.org) Received: (from cperciva@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4R3F5HX041621; Thu, 27 May 2010 03:15:05 GMT (envelope-from cperciva@svn.freebsd.org) Message-Id: <201005270315.o4R3F5HX041621@svn.freebsd.org> From: Colin Percival Date: Thu, 27 May 2010 03:15:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208586 - head/contrib/opie/libopie head/lib/libc/sys head/sys/nfsclient head/usr.sbin/jail releng/6.4 releng/6.4/contrib/opie/libopie releng/6.4/sys/conf releng/7.1 releng/7.1/contrib/... X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 03:15:06 -0000 Author: cperciva Date: Thu May 27 03:15:04 2010 New Revision: 208586 URL: http://svn.freebsd.org/changeset/base/208586 Log: Change the current working directory to be inside the jail created by the jail(8) command. [10:04] Fix a one-NUL-byte buffer overflow in libopie. [10:05] Correctly sanity-check a buffer length in nfs mount. [10:06] Approved by: so (cperciva) Approved by: re (kensmith) Security: FreeBSD-SA-10:04.jail Security: FreeBSD-SA-10:05.opie Security: FreeBSD-SA-10:06.nfsclient Modified: stable/8/contrib/opie/libopie/readrec.c stable/8/lib/libc/sys/mount.2 stable/8/sys/nfsclient/nfs_vfsops.c stable/8/usr.sbin/jail/jail.c Changes in other areas also in this revision: Modified: head/contrib/opie/libopie/readrec.c head/lib/libc/sys/mount.2 head/sys/nfsclient/nfs_vfsops.c head/usr.sbin/jail/jail.c releng/6.4/UPDATING releng/6.4/contrib/opie/libopie/readrec.c releng/6.4/sys/conf/newvers.sh releng/7.1/UPDATING releng/7.1/contrib/opie/libopie/readrec.c releng/7.1/sys/conf/newvers.sh releng/7.2/UPDATING releng/7.2/contrib/opie/libopie/readrec.c releng/7.2/lib/libc/sys/mount.2 releng/7.2/sys/conf/newvers.sh releng/7.2/sys/nfsclient/nfs_vfsops.c releng/7.3/UPDATING releng/7.3/contrib/opie/libopie/readrec.c releng/7.3/lib/libc/sys/mount.2 releng/7.3/sys/conf/newvers.sh releng/7.3/sys/nfsclient/nfs_vfsops.c releng/8.0/UPDATING releng/8.0/contrib/opie/libopie/readrec.c releng/8.0/lib/libc/sys/mount.2 releng/8.0/sys/conf/newvers.sh releng/8.0/sys/nfsclient/nfs_vfsops.c releng/8.0/usr.sbin/jail/jail.c stable/6/contrib/opie/libopie/readrec.c stable/7/contrib/opie/libopie/readrec.c stable/7/lib/libc/sys/mount.2 stable/7/sys/nfsclient/nfs_vfsops.c Modified: stable/8/contrib/opie/libopie/readrec.c ============================================================================== --- stable/8/contrib/opie/libopie/readrec.c Thu May 27 01:27:25 2010 (r208585) +++ stable/8/contrib/opie/libopie/readrec.c Thu May 27 03:15:04 2010 (r208586) @@ -141,10 +141,8 @@ int __opiereadrec FUNCTION((opie), struc if (c = strchr(opie->opie_principal, ':')) *c = 0; - if (strlen(opie->opie_principal) > OPIE_PRINCIPAL_MAX) - (opie->opie_principal)[OPIE_PRINCIPAL_MAX] = 0; - strcpy(principal, opie->opie_principal); + strlcpy(principal, opie->opie_principal, sizeof(principal)); do { if ((opie->opie_recstart = ftell(f)) < 0) Modified: stable/8/lib/libc/sys/mount.2 ============================================================================== --- stable/8/lib/libc/sys/mount.2 Thu May 27 01:27:25 2010 (r208585) +++ stable/8/lib/libc/sys/mount.2 Thu May 27 03:15:04 2010 (r208586) @@ -107,7 +107,7 @@ This restriction can be removed by setti .Va vfs.usermount .Xr sysctl 8 variable -to a non-zero value. +to a non-zero value; see the BUGS section for more information. .Pp The following .Fa flags @@ -370,3 +370,10 @@ functions appeared in .At v6 . .Sh BUGS Some of the error codes need translation to more obvious messages. +.Pp +Allowing untrusted users to mount arbitrary media, e.g. by enabling +.Va vfs.usermount , +should not be considered safe. +Most file systems in +.Fx +were not built to safeguard against malicious devices. Modified: stable/8/sys/nfsclient/nfs_vfsops.c ============================================================================== --- stable/8/sys/nfsclient/nfs_vfsops.c Thu May 27 01:27:25 2010 (r208585) +++ stable/8/sys/nfsclient/nfs_vfsops.c Thu May 27 03:15:04 2010 (r208586) @@ -1074,6 +1074,11 @@ nfs_mount(struct mount *mp) error = EINVAL; goto out; } + if (args.fhsize < 0 || args.fhsize > NFSX_V3FHMAX) { + vfs_mount_error(mp, "Bad file handle"); + error = EINVAL; + goto out; + } if (mp->mnt_flag & MNT_UPDATE) { struct nfsmount *nmp = VFSTONFS(mp); Modified: stable/8/usr.sbin/jail/jail.c ============================================================================== --- stable/8/usr.sbin/jail/jail.c Thu May 27 01:27:25 2010 (r208585) +++ stable/8/usr.sbin/jail/jail.c Thu May 27 03:15:04 2010 (r208586) @@ -511,6 +511,10 @@ set_param(const char *name, char *value) *value++ = '\0'; } + /* jail_set won't chdir along with its chroot, so do it here. */ + if (!strcmp(name, "path") && chdir(value) < 0) + err(1, "chdir: %s", value); + /* Check for repeat parameters */ for (i = 0; i < nparams; i++) if (!strcmp(name, params[i].jp_name)) {