From owner-svn-src-all@FreeBSD.ORG Sun May 23 02:12:44 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Sun May 23 02:15:33 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Sun May 23 02:16:30 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Sun May 23 02:18:40 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Sun May 23 02:20:26 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Sun May 23 02:31:37 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Sun May 23 02:32:53 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Sun May 23 02:40:04 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Sun May 23 02:55:59 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Sun May 23 05:18:57 2010 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9CA9F1065672; Sun, 23 May 2010 05:18:57 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail01.syd.optusnet.com.au (mail01.syd.optusnet.com.au [211.29.132.182]) by mx1.freebsd.org (Postfix) with ESMTP id 2EB1A8FC16; Sun, 23 May 2010 05:18:56 +0000 (UTC) Received: from c122-107-114-249.carlnfd1.nsw.optusnet.com.au (c122-107-114-249.carlnfd1.nsw.optusnet.com.au [122.107.114.249]) by mail01.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id o4N5Iqf9031410 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 23 May 2010 15:18:53 +1000 Date: Sun, 23 May 2010 15:18:52 +1000 (EST) From: Bruce Evans X-X-Sender: bde@delplex.bde.org To: Konstantin Belousov In-Reply-To: <201005211036.o4LAaUXV090349@svn.freebsd.org> Message-ID: <20100523145531.M13483@delplex.bde.org> References: <201005211036.o4LAaUXV090349@svn.freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r208374 - head/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 05:18:57 -0000 On Fri, 21 May 2010, Konstantin Belousov wrote: > Log: > Remove PIOLLHUP from the flags used to test for to set exceptfsd > fd_set bits in select(2). It seems that historical behaviour is to not > reporting exception on EOF, and several applications are broken. > > Reported by: Yoshihiko Sarumaru > Discussed with: bde Er, the discussion pointed out that this change has no effect (except possibly for bugs). > Modified: head/sys/kern/sys_generic.c > ============================================================================== > --- head/sys/kern/sys_generic.c Fri May 21 09:52:49 2010 (r208373) > +++ head/sys/kern/sys_generic.c Fri May 21 10:36:29 2010 (r208374) > @@ -996,7 +996,7 @@ done: > static int select_flags[3] = { > POLLRDNORM | POLLHUP | POLLERR, > POLLWRNORM | POLLHUP | POLLERR, > - POLLRDBAND | POLLHUP | POLLERR > + POLLRDBAND | POLLERR > }; > > /* > POLLHUP and POLLHUP are output-only, so their use as input flags here is nonsense on all 3 lines. This nonsense has no effect as far as I can see, since nonsensical input flags are ignored. POLLHUP is still set unconditionally (if hangup actually occurs) for all 3 channels, and this conflicts with the historical misbehaviour for the exceptfds channel. POLLHUP can be suppressed by POLLINIGNEOF. Using POLLINIGNEOF on the 3rd channel onnel seems to work right here, although POLLINIGNEOF's name indicates that it should not -- as its name suggests, POLLINIGNEOF was intended to only cause EOF to be ignored for the input channel, and it may have actually done that, but it now applies to all channels. This doesn't matter for select() since there is a separate poll at the lowest level each channel, but for poll() there is normally only 1 poll at the lowest level, and in any case userland cannot influence the misapplication of POLLINIGNEOF to a non-input event, and anyway^2 poll()'s semantics require it to set POLLHUP even if there the input mask of events is empty, so poll()'s channels are inseparable for POLLHUP. The style bugs (4-char primary indentation) remain. Bruce From owner-svn-src-all@FreeBSD.ORG Sun May 23 06:39:03 2010 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id ABC441065670; Sun, 23 May 2010 06:39:03 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from harmony.bsdimp.com (bsdimp.com [199.45.160.85]) by mx1.freebsd.org (Postfix) with ESMTP id 6AD468FC13; Sun, 23 May 2010 06:39:03 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by harmony.bsdimp.com (8.14.3/8.14.1) with ESMTP id o4N6ZQh7089588; Sun, 23 May 2010 00:35:26 -0600 (MDT) (envelope-from imp@bsdimp.com) Date: Sun, 23 May 2010 00:35:26 -0600 (MDT) Message-Id: <20100523.003526.1142818667088610804.imp@bsdimp.com> To: mav@FreeBSD.org From: "M. Warner Losh" In-Reply-To: <201005170351.o4H3pvuG006399@svn.freebsd.org> References: <201005170351.o4H3pvuG006399@svn.freebsd.org> X-Mailer: Mew version 6.3 on Emacs 22.3 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r208183 - in head/sys: conf modules/mvs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 06:39:03 -0000 In message: <201005170351.o4H3pvuG006399@svn.freebsd.org> Alexander Motin writes: : Author: mav : Date: Mon May 17 03:51:57 2010 : New Revision: 208183 : URL: http://svn.freebsd.org/changeset/base/208183 : : Log: : Make mvs_if.c to not be always linked statically into the kernel. : Link it same way as mvs.c. A consequence of this will be that if you kldload modules that use the mvs_if.m services, but don't have the mvs.ko module, then you'll have problems. I ran into this with pccard/pcic/pccbb/cardbus/*pccard.c drivers so I compiled pccard_if.m into the kernel statically. I don't know if that's a big deal for you, but it is why things like this are usually linked in statically. Warner : Modified: : head/sys/conf/files : head/sys/modules/mvs/Makefile : : Modified: head/sys/conf/files : ============================================================================== : --- head/sys/conf/files Mon May 17 02:44:51 2010 (r208182) : +++ head/sys/conf/files Mon May 17 03:51:57 2010 (r208183) : @@ -1294,7 +1294,7 @@ dev/mpt/mpt_raid.c optional mpt : dev/mpt/mpt_user.c optional mpt : dev/msk/if_msk.c optional msk inet : dev/mvs/mvs.c optional mvs : -dev/mvs/mvs_if.m standard : +dev/mvs/mvs_if.m optional mvs : dev/mvs/mvs_pci.c optional mvs pci : dev/mwl/if_mwl.c optional mwl : dev/mwl/if_mwl_pci.c optional mwl pci : : Modified: head/sys/modules/mvs/Makefile : ============================================================================== : --- head/sys/modules/mvs/Makefile Mon May 17 02:44:51 2010 (r208182) : +++ head/sys/modules/mvs/Makefile Mon May 17 03:51:57 2010 (r208183) : @@ -3,7 +3,7 @@ : .PATH: ${.CURDIR}/../../dev/mvs : : KMOD= mvs : -SRCS= mvs.c mvs_pci.c mvs.h mvs_if.h device_if.h bus_if.h pci_if.h opt_cam.h : +SRCS= mvs.c mvs_pci.c mvs.h mvs_if.c mvs_if.h device_if.h bus_if.h pci_if.h opt_cam.h : : MFILES= kern/bus_if.m kern/device_if.m dev/pci/pci_if.m dev/mvs/mvs_if.m : : From owner-svn-src-all@FreeBSD.ORG Sun May 23 06:54:13 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CC2761065679; Sun, 23 May 2010 06:54:13 +0000 (UTC) (envelope-from mavbsd@gmail.com) Received: from mail-fx0-f54.google.com (mail-fx0-f54.google.com [209.85.161.54]) by mx1.freebsd.org (Postfix) with ESMTP id F05138FC19; Sun, 23 May 2010 06:54:12 +0000 (UTC) Received: by fxm4 with SMTP id 4so2403212fxm.13 for ; Sat, 22 May 2010 23:54:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:sender:message-id:date:from :user-agent:mime-version:to:cc:subject:references:in-reply-to :x-enigmail-version:content-type:content-transfer-encoding; bh=/SENTo6uLFc0eCLRfbhvv79gVD0h95tp4DJaeSPVaIA=; b=mROl9r2j9r2wsHxYooMkHqtOGe4fGlABgAurKWLbcqll0TYDU6FyjCysebmX7nTlQH XLhU5PHeAe4OYaaK3NTWJxgRL77kURZEgwC9fM2ZPe1hpFai8/5Ncvcxole5w0TBfhgq DopmB07IC4IbqLjrxrmlgSt9D0qzGoKPbjkbQ= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:x-enigmail-version:content-type :content-transfer-encoding; b=hAQ82bOYDgflNGOyKAzhC9x1U0uj9T57Hs2CmeZEi1EnefeNKvKsbqWsEUFhzdN6My Nw0tOZlBG38ra5mlHCKUfyLk5e5pDU5nbFIpMKRKaTaYB4lEXi6d61OIdlrDJFL9OgnA eihxYSUK5eMlwhxNK/Xzfix+/3Amy4iVCYeP8= Received: by 10.223.56.206 with SMTP id z14mr3265329fag.97.1274597651593; Sat, 22 May 2010 23:54:11 -0700 (PDT) Received: from mavbook.mavhome.dp.ua (pc.mavhome.dp.ua [212.86.226.226]) by mx.google.com with ESMTPS id r25sm13169546fai.23.2010.05.22.23.54.10 (version=SSLv3 cipher=RC4-MD5); Sat, 22 May 2010 23:54:10 -0700 (PDT) Sender: Alexander Motin Message-ID: <4BF8D0FE.4060700@FreeBSD.org> Date: Sun, 23 May 2010 09:53:50 +0300 From: Alexander Motin User-Agent: Thunderbird 2.0.0.23 (X11/20091212) MIME-Version: 1.0 To: "M. Warner Losh" References: <201005170351.o4H3pvuG006399@svn.freebsd.org> <20100523.003526.1142818667088610804.imp@bsdimp.com> In-Reply-To: <20100523.003526.1142818667088610804.imp@bsdimp.com> X-Enigmail-Version: 0.96.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r208183 - in head/sys: conf modules/mvs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 06:54:13 -0000 M. Warner Losh wrote: > In message: <201005170351.o4H3pvuG006399@svn.freebsd.org> > Alexander Motin writes: > : Author: mav > : Date: Mon May 17 03:51:57 2010 > : New Revision: 208183 > : URL: http://svn.freebsd.org/changeset/base/208183 > : > : Log: > : Make mvs_if.c to not be always linked statically into the kernel. > : Link it same way as mvs.c. > > A consequence of this will be that if you kldload modules that use the > mvs_if.m services, but don't have the mvs.ko module, then you'll have > problems. I ran into this with pccard/pcic/pccbb/cardbus/*pccard.c > drivers so I compiled pccard_if.m into the kernel statically. > > I don't know if that's a big deal for you, but it is why things like > this are usually linked in statically. Not a big deal for now, until mvs_if.m used only inside mvs.ko itself for PCI devices or statically linked kernel for PCI/SoC. Controller driver is useless without channel driver, so probably it could be declared as dependency, if sometimes needed. I just thought it is a bit dirty to have it in a kernel when all code loaded as module. -- Alexander Motin From owner-svn-src-all@FreeBSD.ORG Sun May 23 07:04:21 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Sun May 23 07:21:50 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Sun May 23 07:23:26 2010 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 108A1106566B; Sun, 23 May 2010 07:23:26 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from harmony.bsdimp.com (bsdimp.com [199.45.160.85]) by mx1.freebsd.org (Postfix) with ESMTP id C41998FC0A; Sun, 23 May 2010 07:23:25 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by harmony.bsdimp.com (8.14.3/8.14.1) with ESMTP id o4N7I4fP089837; Sun, 23 May 2010 01:18:04 -0600 (MDT) (envelope-from imp@bsdimp.com) Date: Sun, 23 May 2010 01:18:04 -0600 (MDT) Message-Id: <20100523.011804.94843338771569716.imp@bsdimp.com> To: mav@FreeBSD.org From: "M. Warner Losh" In-Reply-To: <4BF8D0FE.4060700@FreeBSD.org> References: <201005170351.o4H3pvuG006399@svn.freebsd.org> <20100523.003526.1142818667088610804.imp@bsdimp.com> <4BF8D0FE.4060700@FreeBSD.org> X-Mailer: Mew version 6.3 on Emacs 22.3 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r208183 - in head/sys: conf modules/mvs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 07:23:26 -0000 In message: <4BF8D0FE.4060700@FreeBSD.org> Alexander Motin writes: : M. Warner Losh wrote: : > In message: <201005170351.o4H3pvuG006399@svn.freebsd.org> : > Alexander Motin writes: : > : Author: mav : > : Date: Mon May 17 03:51:57 2010 : > : New Revision: 208183 : > : URL: http://svn.freebsd.org/changeset/base/208183 : > : : > : Log: : > : Make mvs_if.c to not be always linked statically into the kernel. : > : Link it same way as mvs.c. : > : > A consequence of this will be that if you kldload modules that use the : > mvs_if.m services, but don't have the mvs.ko module, then you'll have : > problems. I ran into this with pccard/pcic/pccbb/cardbus/*pccard.c : > drivers so I compiled pccard_if.m into the kernel statically. : > : > I don't know if that's a big deal for you, but it is why things like : > this are usually linked in statically. : : Not a big deal for now, until mvs_if.m used only inside mvs.ko itself : for PCI devices or statically linked kernel for PCI/SoC. Controller : driver is useless without channel driver, so probably it could be : declared as dependency, if sometimes needed. : : I just thought it is a bit dirty to have it in a kernel when all code : loaded as module. In that case, that should be fine. Just wanted to warn about the potential problem... Warner From owner-svn-src-all@FreeBSD.ORG Sun May 23 07:53:22 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CF5C3106566C; Sun, 23 May 2010 07:53:22 +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 BDDF98FC0A; Sun, 23 May 2010 07:53:22 +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 o4N7rMEG012116; Sun, 23 May 2010 07:53:22 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4N7rMrL012112; Sun, 23 May 2010 07:53:22 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201005230753.o4N7rMrL012112@svn.freebsd.org> From: Alexander Motin Date: Sun, 23 May 2010 07:53:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208436 - head/sys/dev/acpica X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 07:53:23 -0000 Author: mav Date: Sun May 23 07:53:22 2010 New Revision: 208436 URL: http://svn.freebsd.org/changeset/base/208436 Log: Make table-based HPET identification more clever. Before creating fake device, make sure we have no real HPET device entry with same ID. As side effect, it potentially allows several HPETs to be attached. Use first of them for timecounting, rest (if ever present) could later be used as event sources. Modified: head/sys/dev/acpica/acpi.c head/sys/dev/acpica/acpi_hpet.c head/sys/dev/acpica/acpivar.h Modified: head/sys/dev/acpica/acpi.c ============================================================================== --- head/sys/dev/acpica/acpi.c Sun May 23 07:21:50 2010 (r208435) +++ head/sys/dev/acpica/acpi.c Sun May 23 07:53:22 2010 (r208436) @@ -145,7 +145,6 @@ static void acpi_probe_children(device_t static void acpi_probe_order(ACPI_HANDLE handle, int *order); static ACPI_STATUS acpi_probe_child(ACPI_HANDLE handle, UINT32 level, void *context, void **status); -static BOOLEAN acpi_MatchHid(ACPI_HANDLE h, const char *hid); static void acpi_sleep_enable(void *arg); static ACPI_STATUS acpi_sleep_disable(struct acpi_softc *sc); static ACPI_STATUS acpi_EnterSleepState(struct acpi_softc *sc, int state); @@ -1944,7 +1943,7 @@ acpi_BatteryIsPresent(device_t dev) /* * Match a HID string against a handle */ -static BOOLEAN +BOOLEAN acpi_MatchHid(ACPI_HANDLE h, const char *hid) { ACPI_DEVICE_INFO *devinfo; Modified: head/sys/dev/acpica/acpi_hpet.c ============================================================================== --- head/sys/dev/acpica/acpi_hpet.c Sun May 23 07:21:50 2010 (r208435) +++ head/sys/dev/acpica/acpi_hpet.c Sun May 23 07:53:22 2010 (r208436) @@ -101,41 +101,60 @@ hpet_disable(struct acpi_hpet_softc *sc) bus_write_4(sc->mem_res, HPET_CONFIG, val); } +static ACPI_STATUS +acpi_hpet_find(ACPI_HANDLE handle, UINT32 level, void *context, + void **status) +{ + char **ids; + uint32_t id = (uint32_t)(uintptr_t)context; + uint32_t adr = 0; + + for (ids = hpet_ids; *ids != NULL; ids++) { + if (acpi_MatchHid(handle, *ids)) + break; + } + if (*ids == NULL) + return (AE_OK); + if (ACPI_FAILURE(acpi_GetInteger(handle, "_ADR", &adr))) + adr = 0; + if (id == adr) + *((int *)status) = 1; + return (AE_OK); +} + /* Discover the HPET via the ACPI table of the same name. */ static void acpi_hpet_identify(driver_t *driver, device_t parent) { ACPI_TABLE_HPET *hpet; - ACPI_TABLE_HEADER *hdr; ACPI_STATUS status; device_t child; + int i, found; /* Only one HPET device can be added. */ if (devclass_get_device(acpi_hpet_devclass, 0)) return; - - /* Currently, ID and minimum clock tick info is unused. */ - - status = AcpiGetTable(ACPI_SIG_HPET, 1, (ACPI_TABLE_HEADER **)&hdr); - if (ACPI_FAILURE(status)) - return; - - /* - * The unit number could be derived from hdr->Sequence but we only - * support one HPET device. - */ - hpet = (ACPI_TABLE_HPET *)hdr; - if (hpet->Sequence != 0) - printf("ACPI HPET table warning: Sequence is non-zero (%d)\n", - hpet->Sequence); - child = BUS_ADD_CHILD(parent, ACPI_DEV_BASE_ORDER, "acpi_hpet", 0); - if (child == NULL) { - printf("%s: can't add child\n", __func__); - return; + for (i = 1; ; i++) { + /* Search for HPET table. */ + status = AcpiGetTable(ACPI_SIG_HPET, i, (ACPI_TABLE_HEADER **)&hpet); + if (ACPI_FAILURE(status)) + return; + /* Search for HPET device with same ID. */ + found = 0; + AcpiWalkNamespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, + 100, acpi_hpet_find, NULL, (void *)(uintptr_t)hpet->Sequence, (void *)&found); + /* If found - let it be probed in normal way. */ + if (found) + continue; + /* If not - create it from table info. */ + child = BUS_ADD_CHILD(parent, ACPI_DEV_BASE_ORDER, "acpi_hpet", 0); + if (child == NULL) { + printf("%s: can't add child\n", __func__); + continue; + } + bus_set_resource(child, SYS_RES_MEMORY, 0, hpet->Address.Address, + HPET_MEM_WIDTH); } - - bus_set_resource(child, SYS_RES_MEMORY, 0, hpet->Address.Address, - HPET_MEM_WIDTH); } static int @@ -146,8 +165,7 @@ acpi_hpet_probe(device_t dev) if (acpi_disabled("hpet")) return (ENXIO); if (acpi_get_handle(dev) != NULL && - (ACPI_ID_PROBE(device_get_parent(dev), dev, hpet_ids) == NULL || - device_get_unit(dev) != 0)) + ACPI_ID_PROBE(device_get_parent(dev), dev, hpet_ids) == NULL) return (ENXIO); device_set_desc(dev, "High Precision Event Timer"); @@ -233,11 +251,12 @@ acpi_hpet_attach(device_t dev) bus_free_resource(dev, SYS_RES_MEMORY, sc->mem_res); return (ENXIO); } - - hpet_timecounter.tc_frequency = freq; - hpet_timecounter.tc_priv = sc; - tc_init(&hpet_timecounter); - + /* Announce first HPET as timecounter. */ + if (device_get_unit(dev) == 0) { + hpet_timecounter.tc_frequency = freq; + hpet_timecounter.tc_priv = sc; + tc_init(&hpet_timecounter); + } return (0); } Modified: head/sys/dev/acpica/acpivar.h ============================================================================== --- head/sys/dev/acpica/acpivar.h Sun May 23 07:21:50 2010 (r208435) +++ head/sys/dev/acpica/acpivar.h Sun May 23 07:53:22 2010 (r208436) @@ -342,6 +342,7 @@ int acpi_bus_alloc_gas(device_t dev, in u_int flags); void acpi_walk_subtables(void *first, void *end, acpi_subtable_handler *handler, void *arg); +BOOLEAN acpi_MatchHid(ACPI_HANDLE h, const char *hid); struct acpi_parse_resource_set { void (*set_init)(device_t dev, void *arg, void **context); From owner-svn-src-all@FreeBSD.ORG Sun May 23 08:12:36 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B0C51106564A; Sun, 23 May 2010 08:12:36 +0000 (UTC) (envelope-from trasz@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9FAC98FC1E; Sun, 23 May 2010 08:12: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 o4N8CaUu016422; Sun, 23 May 2010 08:12:36 GMT (envelope-from trasz@svn.freebsd.org) Received: (from trasz@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4N8CaR3016419; Sun, 23 May 2010 08:12:36 GMT (envelope-from trasz@svn.freebsd.org) Message-Id: <201005230812.o4N8CaR3016419@svn.freebsd.org> From: Edward Tomasz Napierala Date: Sun, 23 May 2010 08:12:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208437 - head/lib/libc/posix1e X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 08:12:36 -0000 Author: trasz Date: Sun May 23 08:12:36 2010 New Revision: 208437 URL: http://svn.freebsd.org/changeset/base/208437 Log: Make acl_get_perm_np(3) work with NFSv4 ACLs. Reviewed by: kientzle@ MFC after: 1 week Modified: head/lib/libc/posix1e/acl_get.c head/lib/libc/posix1e/acl_perm.c Modified: head/lib/libc/posix1e/acl_get.c ============================================================================== --- head/lib/libc/posix1e/acl_get.c Sun May 23 07:53:22 2010 (r208436) +++ head/lib/libc/posix1e/acl_get.c Sun May 23 08:12:36 2010 (r208437) @@ -132,30 +132,6 @@ acl_get_fd_np(int fd, acl_type_t type) return (aclp); } -int -acl_get_perm_np(acl_permset_t permset_d, acl_perm_t perm) -{ - - if (permset_d == NULL) { - errno = EINVAL; - return (-1); - } - - switch(perm) { - case ACL_READ: - case ACL_WRITE: - case ACL_EXECUTE: - if (*permset_d & perm) - return (1); - break; - default: - errno = EINVAL; - return (-1); - } - - return (0); -} - /* * acl_get_permset() (23.4.17): return via permset_p a descriptor to * the permission set in the ACL entry entry_d. Modified: head/lib/libc/posix1e/acl_perm.c ============================================================================== --- head/lib/libc/posix1e/acl_perm.c Sun May 23 07:53:22 2010 (r208436) +++ head/lib/libc/posix1e/acl_perm.c Sun May 23 08:12:36 2010 (r208437) @@ -108,3 +108,21 @@ acl_delete_perm(acl_permset_t permset_d, return (0); } + +int +acl_get_perm_np(acl_permset_t permset_d, acl_perm_t perm) +{ + + if (permset_d == NULL) { + errno = EINVAL; + return (-1); + } + + if (_perm_is_invalid(perm)) + return (-1); + + if (*permset_d & perm) + return (1); + + return (0); +} From owner-svn-src-all@FreeBSD.ORG Sun May 23 08:31:15 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5A81A1065673; Sun, 23 May 2010 08:31:15 +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 49C6D8FC16; Sun, 23 May 2010 08:31:15 +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 o4N8VFo7020572; Sun, 23 May 2010 08:31:15 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4N8VFoJ020570; Sun, 23 May 2010 08:31:15 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201005230831.o4N8VFoJ020570@svn.freebsd.org> From: Alexander Motin Date: Sun, 23 May 2010 08:31:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208438 - head/sys/dev/acpica X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 08:31:15 -0000 Author: mav Date: Sun May 23 08:31:15 2010 New Revision: 208438 URL: http://svn.freebsd.org/changeset/base/208438 Log: Oops, HPET ID optionally stored in _UID, not in _ADR. Modified: head/sys/dev/acpica/acpi_hpet.c Modified: head/sys/dev/acpica/acpi_hpet.c ============================================================================== --- head/sys/dev/acpica/acpi_hpet.c Sun May 23 08:12:36 2010 (r208437) +++ head/sys/dev/acpica/acpi_hpet.c Sun May 23 08:31:15 2010 (r208438) @@ -107,7 +107,7 @@ acpi_hpet_find(ACPI_HANDLE handle, UINT3 { char **ids; uint32_t id = (uint32_t)(uintptr_t)context; - uint32_t adr = 0; + uint32_t uid = 0; for (ids = hpet_ids; *ids != NULL; ids++) { if (acpi_MatchHid(handle, *ids)) @@ -115,9 +115,9 @@ acpi_hpet_find(ACPI_HANDLE handle, UINT3 } if (*ids == NULL) return (AE_OK); - if (ACPI_FAILURE(acpi_GetInteger(handle, "_ADR", &adr))) - adr = 0; - if (id == adr) + if (ACPI_FAILURE(acpi_GetInteger(handle, "_UID", &uid))) + uid = 0; + if (id == uid) *((int *)status) = 1; return (AE_OK); } From owner-svn-src-all@FreeBSD.ORG Sun May 23 08:34:19 2010 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8A2E41065672; Sun, 23 May 2010 08:34:19 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail08.syd.optusnet.com.au (mail08.syd.optusnet.com.au [211.29.132.189]) by mx1.freebsd.org (Postfix) with ESMTP id 2278F8FC1A; Sun, 23 May 2010 08:34:18 +0000 (UTC) Received: from c122-107-114-249.carlnfd1.nsw.optusnet.com.au (c122-107-114-249.carlnfd1.nsw.optusnet.com.au [122.107.114.249]) by mail08.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id o4N8XjKY026196 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 23 May 2010 18:34:16 +1000 Date: Sun, 23 May 2010 18:33:45 +1000 (EST) From: Bruce Evans X-X-Sender: bde@delplex.bde.org To: Poul-Henning Kamp In-Reply-To: <201005200616.o4K6GDN8010282@svn.freebsd.org> Message-ID: <20100523174020.X13588@delplex.bde.org> References: <201005200616.o4K6GDN8010282@svn.freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r208331 - head/sys/sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 08:34:19 -0000 On Thu, 20 May 2010, Poul-Henning Kamp wrote: > Log: > Fix some way-past-brucification complaints from FlexeLint. Its complaint switch needs work ;-). > Modified: head/sys/sys/endian.h > ============================================================================== > --- head/sys/sys/endian.h Thu May 20 06:05:40 2010 (r208330) > +++ head/sys/sys/endian.h Thu May 20 06:16:13 2010 (r208331) > ... > static __inline uint16_t > be16dec(const void *pp) > { > - unsigned char const *p = (unsigned char const *)pp; > + uint8_t const *p = (uint8_t const *)pp; All functions in this file still fail header engineering 101. The valid application code #define p you lose #include fails messily. At least the i386 in at least old versions is careful about this, and is not included by any other header, so the problem is smaller than it would be for . > ... > @@ -102,15 +107,15 @@ be16dec(const void *pp) > static __inline uint32_t > be32dec(const void *pp) > { > - unsigned char const *p = (unsigned char const *)pp; > + uint8_t const *p = (uint8_t const *)pp; > > - return ((p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3]); > + return (((unsigned)p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3]); > } This cast is ugly but is not ugly enough to be sufficient. It assumes >= 32-bit unsigneds. Due to the STDC "value-preserving" extension botch, there are the following problems: - p[3] extends to a signed int. No problem since uint8_t is guaranteed to fit in a signed int. - p[2] extends to a signed int. Then p[2] << 8 overflows if ints are 16 bits and the top bit of p[2] is set. The above works if ints have > 16 bits. - similarly, p[1] << 16 can overflow in more cases than p[2] << 16, but the above works if ints have > 24 bits. - similarly, p[0] << 24 can overflow if ints have <= 32 bits, which is the case on all supported machines, but the above fixes this if unsigned's have >= 32 bits, which is the case on all supported machines. The behaviour on overflow is explicitly undefined in C99. In C90, the specification is too fuzzy to say what happens on overflow, and may even be too fuzzy to specify what happens on non-overflow of a shift of a signed type even for left shifting. So careful code would cast everything to a sufficiently wide _unsigned_ type before shifting. E.g., return (((uint32_t)p[0] << 24) | ((uint24_t)/* sic */p[1] << 16) | ((uint16_t)p[2] << 8) | p[3]); However, this is ugly, and since the undefined behaviour is benign on all supported machines, we may as well depend on it and omit all the casts instead of depending on int being >= 24 bits and unsigned being >= 32 bits on all supported machines. FlexeLint complaining about the implementation depending on impleentation details is a bug. > static __inline uint64_t > le64dec(const void *pp) > { > - unsigned char const *p = (unsigned char const *)pp; > + uint8_t const *p = (uint8_t const *)pp; > > return (((uint64_t)le32dec(p + 4) << 32) | le32dec(p)); > } Similarly in all the `dec' functions, except casts to uint64_t like the above are necessary on all supported machines, so they were already done. > @@ -162,16 +167,16 @@ be32enc(void *pp, uint32_t u) > static __inline void > be64enc(void *pp, uint64_t u) > { > - unsigned char *p = (unsigned char *)pp; > + uint8_t *p = (uint8_t *)pp; > > - be32enc(p, u >> 32); > - be32enc(p + 4, u & 0xffffffff); > + be32enc(p, (uint32_t)(u >> 32)); This cast has no effect, since the prototype already does it. If you want to need such casts, use a K&R compiler. > + be32enc(p + 4, (uint32_t)(u & 0xffffffffU)); This cast has no effect, as above. Casting u would make more sense (it would manually optimize for compilers that don't reduce to a 32-bit and operation automatically). The explicit unsigned constant is another type of (bogus) cast. It has no effect, except on machines with < 32-bit unsigned it should cause a warning that the constant is too larged for its type. > } > > static __inline void > le16enc(void *pp, uint16_t u) > { > - unsigned char *p = (unsigned char *)pp; > + uint8_t *p = (uint8_t *)pp; > > p[0] = u & 0xff; > p[1] = (u >> 8) & 0xff; To be bogon for bogon compatible with the above, this should cast down u and spell 0xff as 0xffU or (uint8_t)u. These cast are equally (not) needed. > ... > #endif /* _SYS_ENDIAN_H_ */ > Style bugs: (1) tab instead of space between #endif and comment (2) backwards comment on #endif. Bruce From owner-svn-src-all@FreeBSD.ORG Sun May 23 09:01:44 2010 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CA3C1106567F; Sun, 23 May 2010 09:01:44 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail05.syd.optusnet.com.au (mail05.syd.optusnet.com.au [211.29.132.186]) by mx1.freebsd.org (Postfix) with ESMTP id 6149A8FC19; Sun, 23 May 2010 09:01:43 +0000 (UTC) Received: from c122-107-114-249.carlnfd1.nsw.optusnet.com.au (c122-107-114-249.carlnfd1.nsw.optusnet.com.au [122.107.114.249]) by mail05.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id o4N91f7A010101 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 23 May 2010 19:01:42 +1000 Date: Sun, 23 May 2010 19:01:41 +1000 (EST) From: Bruce Evans X-X-Sender: bde@delplex.bde.org To: Poul-Henning Kamp In-Reply-To: <201005200618.o4K6I3G3010713@svn.freebsd.org> Message-ID: <20100523183502.C13588@delplex.bde.org> References: <201005200618.o4K6I3G3010713@svn.freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r208332 - in head/sys: amd64/include i386/include X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 09:01:45 -0000 On Thu, 20 May 2010, Poul-Henning Kamp wrote: > Log: > Rename an argument from "exp" to "expect" since the former makes FlexeLint > uneasy, in case anybody think it might be exp(3) in libm. Bug in FlexeLint. exp(3) is supposed to be in libc, so conflicts with it are more possible than with a function in a pure independent library, but even then exp is only reserved at certain scopes that don't apply here, and this reservation actually reduces the problem (since exp is reserved as a macro iff is included, applications cannot #define it then and shouldn't #define it otherwise). should be kernel-only. > This also makes it consistent with other archs. Bug in the other arches. > Modified: head/sys/amd64/include/atomic.h > ============================================================================== > --- head/sys/amd64/include/atomic.h Thu May 20 06:16:13 2010 (r208331) > +++ head/sys/amd64/include/atomic.h Thu May 20 06:18:03 2010 (r208332) > @@ -76,8 +76,8 @@ > void atomic_##NAME##_##TYPE(volatile u_##TYPE *p, u_##TYPE v); \ > void atomic_##NAME##_barr_##TYPE(volatile u_##TYPE *p, u_##TYPE v) > > -int atomic_cmpset_int(volatile u_int *dst, u_int exp, u_int src); > -int atomic_cmpset_long(volatile u_long *dst, u_long exp, u_long src); > +int atomic_cmpset_int(volatile u_int *dst, u_int expect, u_int src); > +int atomic_cmpset_long(volatile u_long *dst, u_long expect, u_long src); > u_int atomic_fetchadd_int(volatile u_int *p, u_int v); > u_long atomic_fetchadd_long(volatile u_long *p, u_long v); > Function parameters are in thir own namespace, so they cannot conflict with the extern function `exp', and one named `exp' is less likely to conflict with anything than one name `p' for example. > @@ -124,13 +124,13 @@ struct __hack > /* > * Atomic compare and set, used by the mutex functions > * > - * if (*dst == exp) *dst = src (all 32 bit words) > + * if (*dst == expect) *dst = src (all 32 bit words) > * > * Returns 0 on failure, non-zero on success > */ > > static __inline int > -atomic_cmpset_int(volatile u_int *dst, u_int exp, u_int src) > +atomic_cmpset_int(volatile u_int *dst, u_int expect, u_int src) This API not only should be kernel-only; it obviously is kernel-only (despite abuses in libc and hopefully nowhere else), since like most kernel-only headers it takes no care with namespaces -- here it uses the popular identifiers dst and src. Style bug: all the parameters had short names of the same length. Now `expect' is odd. The atomic API is also kernel-only in its man page, and its man page uses quite different parameter names to the above, so no change to the man page is needed to be compatible with this commit, but either the code or the man page should be changed to be compatible with each other. In the man page, the parameter names for the above function are (dst, old, new); the man page has no reference to either `exp' or `expect'. Both sets are especially incompletely descriptive for the old/expect parameter because the semantics of this parameter are especially complicated so they cannot be described in 1 word. Bruce From owner-svn-src-all@FreeBSD.ORG Sun May 23 09:27:15 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Sun May 23 09:28:55 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 80F741065673; Sun, 23 May 2010 09:28:55 +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 7064D8FC20; Sun, 23 May 2010 09:28: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 o4N9StgO033359; Sun, 23 May 2010 09:28:55 GMT (envelope-from np@svn.freebsd.org) Received: (from np@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4N9StGY033357; Sun, 23 May 2010 09:28:55 GMT (envelope-from np@svn.freebsd.org) Message-Id: <201005230928.o4N9StGY033357@svn.freebsd.org> From: Navdeep Parhar Date: Sun, 23 May 2010 09:28:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208440 - stable/7/sys/dev/cxgb X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 09:28:55 -0000 Author: np Date: Sun May 23 09:28:55 2010 New Revision: 208440 URL: http://svn.freebsd.org/changeset/base/208440 Log: MFC r208356. Remove bad assertion. Modified: stable/7/sys/dev/cxgb/cxgb_main.c Directory Properties: stable/7/sys/ (props changed) stable/7/sys/cddl/contrib/opensolaris/ (props changed) stable/7/sys/contrib/dev/acpica/ (props changed) stable/7/sys/contrib/pf/ (props changed) Modified: stable/7/sys/dev/cxgb/cxgb_main.c ============================================================================== --- stable/7/sys/dev/cxgb/cxgb_main.c Sun May 23 09:27:14 2010 (r208439) +++ stable/7/sys/dev/cxgb/cxgb_main.c Sun May 23 09:28:55 2010 (r208440) @@ -2007,7 +2007,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-all@FreeBSD.ORG Sun May 23 09:44:48 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AB0BD106566B; Sun, 23 May 2010 09:44:48 +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 9B0AA8FC1C; Sun, 23 May 2010 09:44:48 +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 o4N9imfp036857; Sun, 23 May 2010 09:44:48 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4N9imO9036855; Sun, 23 May 2010 09:44:48 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201005230944.o4N9imO9036855@svn.freebsd.org> From: Alexander Motin Date: Sun, 23 May 2010 09:44:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208441 - head/sys/dev/mmc X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 09:44:48 -0000 Author: mav Date: Sun May 23 09:44:48 2010 New Revision: 208441 URL: http://svn.freebsd.org/changeset/base/208441 Log: Report relative card address to NewBus as location string. Modified: head/sys/dev/mmc/mmc.c Modified: head/sys/dev/mmc/mmc.c ============================================================================== --- head/sys/dev/mmc/mmc.c Sun May 23 09:28:55 2010 (r208440) +++ head/sys/dev/mmc/mmc.c Sun May 23 09:44:48 2010 (r208441) @@ -1500,6 +1500,15 @@ mmc_delayed_attach(void *xsc) config_intrhook_disestablish(&sc->config_intrhook); } +static int +mmc_child_location_str(device_t dev, device_t child, char *buf, + size_t buflen) +{ + + snprintf(buf, buflen, "rca=0x%04x", mmc_get_rca(child)); + return (0); +} + static device_method_t mmc_methods[] = { /* device_if */ DEVMETHOD(device_probe, mmc_probe), @@ -1511,6 +1520,7 @@ static device_method_t mmc_methods[] = { /* Bus interface */ DEVMETHOD(bus_read_ivar, mmc_read_ivar), DEVMETHOD(bus_write_ivar, mmc_write_ivar), + DEVMETHOD(bus_child_location_str, mmc_child_location_str), /* MMC Bus interface */ DEVMETHOD(mmcbus_wait_for_request, mmc_wait_for_request), From owner-svn-src-all@FreeBSD.ORG Sun May 23 10:08:05 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 725C21065674; Sun, 23 May 2010 10:08:05 +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 61EF68FC0C; Sun, 23 May 2010 10:08: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 o4NA85r8042161; Sun, 23 May 2010 10:08:05 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NA85Eu042159; Sun, 23 May 2010 10:08:05 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201005231008.o4NA85Eu042159@svn.freebsd.org> From: Martin Matuska Date: Sun, 23 May 2010 10:08:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208442 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 10:08:05 -0000 Author: mm Date: Sun May 23 10:08:05 2010 New Revision: 208442 URL: http://svn.freebsd.org/changeset/base/208442 Log: Fix mutex_exit misorder that can cause a kernel panic. OpenSolaris onnv revision: 8667:5c308a17eb7c Approved by: delphij (mentor) Obtained from: OpenSolaris (Bug ID 6795440) MFC after: 1 day Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Sun May 23 09:44:48 2010 (r208441) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Sun May 23 10:08:05 2010 (r208442) @@ -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); } From owner-svn-src-all@FreeBSD.ORG Sun May 23 10:13:11 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E6508106566B; Sun, 23 May 2010 10:13:11 +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 D5DB58FC16; Sun, 23 May 2010 10:13: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 o4NADBY6044653; Sun, 23 May 2010 10:13:11 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NADBVE044632; Sun, 23 May 2010 10:13:11 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201005231013.o4NADBVE044632@svn.freebsd.org> From: Martin Matuska Date: Sun, 23 May 2010 10:13:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208443 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 10:13:12 -0000 Author: mm Date: Sun May 23 10:13:11 2010 New Revision: 208443 URL: http://svn.freebsd.org/changeset/base/208443 Log: Fix kernel panic when calling spa_tryimport() on a corrupted pool. OpenSolaris onnv revision: 8680:005fe27123ba Approved by: delphij (mentor) Obtained from: OpenSolaris (Bug ID 6786321) MFC after: 1 day Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Sun May 23 10:08:05 2010 (r208442) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c Sun May 23 10:13:11 2010 (r208443) @@ -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); /* From owner-svn-src-all@FreeBSD.ORG Sun May 23 11:18:05 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Sun May 23 11:20:27 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Sun May 23 11:26:43 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Sun May 23 11:28:05 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3BFD21065670; Sun, 23 May 2010 11:28:05 +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 2AEAB8FC15; Sun, 23 May 2010 11:28: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 o4NBS5h2062458; Sun, 23 May 2010 11:28:05 GMT (envelope-from bcr@svn.freebsd.org) Received: (from bcr@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NBS59k062456; Sun, 23 May 2010 11:28:05 GMT (envelope-from bcr@svn.freebsd.org) Message-Id: <201005231128.o4NBS59k062456@svn.freebsd.org> From: Benedict Reuschling Date: Sun, 23 May 2010 11:28:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208447 - stable/7/usr.sbin/ntp/doc X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 11:28:05 -0000 Author: bcr (doc committer) Date: Sun May 23 11:28:04 2010 New Revision: 208447 URL: http://svn.freebsd.org/changeset/base/208447 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/7/usr.sbin/ntp/doc/ntpd.8 Modified: stable/7/usr.sbin/ntp/doc/ntpd.8 ============================================================================== --- stable/7/usr.sbin/ntp/doc/ntpd.8 Sun May 23 11:26:43 2010 (r208446) +++ stable/7/usr.sbin/ntp/doc/ntpd.8 Sun May 23 11:28:04 2010 (r208447) @@ -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-all@FreeBSD.ORG Sun May 23 11:29:35 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Sun May 23 12:36:19 2010 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 220631065674; Sun, 23 May 2010 12:36:19 +0000 (UTC) (envelope-from phk@critter.freebsd.dk) Received: from phk.freebsd.dk (phk.freebsd.dk [130.225.244.222]) by mx1.freebsd.org (Postfix) with ESMTP id D31F18FC08; Sun, 23 May 2010 12:36:18 +0000 (UTC) Received: from critter.freebsd.dk (critter-phk.freebsd.dk [192.168.48.2]) by phk.freebsd.dk (Postfix) with ESMTP id 72543900AD; Sun, 23 May 2010 12:36:16 +0000 (UTC) Received: from critter.freebsd.dk (localhost [127.0.0.1]) by critter.freebsd.dk (8.14.4/8.14.4) with ESMTP id o4NCaFIa011070; Sun, 23 May 2010 12:36:16 GMT (envelope-from phk@critter.freebsd.dk) To: Bruce Evans From: "Poul-Henning Kamp" In-Reply-To: Your message of "Sun, 23 May 2010 19:01:41 +1000." <20100523183502.C13588@delplex.bde.org> Date: Sun, 23 May 2010 12:36:15 +0000 Message-ID: <11069.1274618175@critter.freebsd.dk> Sender: phk@critter.freebsd.dk Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r208332 - in head/sys: amd64/include i386/include X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 12:36:19 -0000 In message <20100523183502.C13588@delplex.bde.org>, Bruce Evans writes: >On Thu, 20 May 2010, Poul-Henning Kamp wrote: > should be kernel-only. No, it absolutely should not, if anything, it should be pushed as international standards (with , and ). Atomic operations and write barriers are necessary when multiple threads or processes cooperate using shared memory. and if anything the bug is that POSIX has not updated pthreads to have these and other necessary primitives. (pthread_mutex_assert_held() for instance). I agree that FlexeLint is a bit hysterical at times, but when the issue can be avioded at a "cost" of increased clarity of intention, I don't see any reason to not do so. -- Poul-Henning Kamp | UNIX since Zilog Zeus 3.20 phk@FreeBSD.ORG | TCP/IP since RFC 956 FreeBSD committer | BSD since 4.3-tahoe Never attribute to malice what can adequately be explained by incompetence. From owner-svn-src-all@FreeBSD.ORG Sun May 23 12:42:15 2010 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 68E8E106566C; Sun, 23 May 2010 12:42:15 +0000 (UTC) (envelope-from phk@critter.freebsd.dk) Received: from phk.freebsd.dk (phk.freebsd.dk [130.225.244.222]) by mx1.freebsd.org (Postfix) with ESMTP id 2AFD78FC15; Sun, 23 May 2010 12:42:14 +0000 (UTC) Received: from critter.freebsd.dk (critter-phk.freebsd.dk [192.168.48.2]) by phk.freebsd.dk (Postfix) with ESMTP id F0C89900AD; Sun, 23 May 2010 12:42:13 +0000 (UTC) Received: from critter.freebsd.dk (localhost [127.0.0.1]) by critter.freebsd.dk (8.14.4/8.14.4) with ESMTP id o4NCgDgj011086; Sun, 23 May 2010 12:42:13 GMT (envelope-from phk@critter.freebsd.dk) To: Bruce Evans From: "Poul-Henning Kamp" In-Reply-To: Your message of "Sun, 23 May 2010 18:33:45 +1000." <20100523174020.X13588@delplex.bde.org> Date: Sun, 23 May 2010 12:42:13 +0000 Message-ID: <11085.1274618533@critter.freebsd.dk> Sender: phk@critter.freebsd.dk Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r208331 - head/sys/sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 12:42:15 -0000 In message <20100523174020.X13588@delplex.bde.org>, Bruce Evans writes: >On Thu, 20 May 2010, Poul-Henning Kamp wrote: >> Log: >> Fix some way-past-brucification complaints from FlexeLint. > >Its complaint switch needs work ;-). Gimpel Software has been pretty receptive to my input, but I have not, and will not, suggest the -bde option to them. :-) > It assumes >>= 32-bit unsigneds. I think we all do these days :-) >FlexeLint complaining about the implementation depending on impleentation >details is a bug. No, that is configurable. -- Poul-Henning Kamp | UNIX since Zilog Zeus 3.20 phk@FreeBSD.ORG | TCP/IP since RFC 956 FreeBSD committer | BSD since 4.3-tahoe Never attribute to malice what can adequately be explained by incompetence. From owner-svn-src-all@FreeBSD.ORG Sun May 23 13:15:16 2010 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4D744106566C; Sun, 23 May 2010 13:15:16 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail08.syd.optusnet.com.au (mail08.syd.optusnet.com.au [211.29.132.189]) by mx1.freebsd.org (Postfix) with ESMTP id BD8B98FC12; Sun, 23 May 2010 13:15:15 +0000 (UTC) Received: from c122-107-114-249.carlnfd1.nsw.optusnet.com.au (c122-107-114-249.carlnfd1.nsw.optusnet.com.au [122.107.114.249]) by mail08.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id o4NDF9Mh024179 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 23 May 2010 23:15:13 +1000 Date: Sun, 23 May 2010 23:15:09 +1000 (EST) From: Bruce Evans X-X-Sender: bde@delplex.bde.org To: Poul-Henning Kamp In-Reply-To: <11069.1274618175@critter.freebsd.dk> Message-ID: <20100523230410.K17698@delplex.bde.org> References: <11069.1274618175@critter.freebsd.dk> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, Bruce Evans Subject: Re: svn commit: r208332 - in head/sys: amd64/include i386/include X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 13:15:16 -0000 On Sun, 23 May 2010, Poul-Henning Kamp wrote: > In message <20100523183502.C13588@delplex.bde.org>, Bruce Evans writes: >> On Thu, 20 May 2010, Poul-Henning Kamp wrote: > >> should be kernel-only. > > No, it absolutely should not, if anything, it should be pushed as > international standards (with , and ). > > Atomic operations and write barriers are necessary when multiple > threads or processes cooperate using shared memory. and if anything > the bug is that POSIX has not updated pthreads to have these and > other necessary primitives. (pthread_mutex_assert_held() for instance). Pehraps, but was only designed, implemented and documented for use in the kernel. And of course any standardized version won't look like the FreeBSD kernel one. The kernel one is too bloated for me, but a general-purpose one should be even more bloated so as to support all types and more than atomic ops. Bruce From owner-svn-src-all@FreeBSD.ORG Sun May 23 13:25:48 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Sun May 23 13:46:09 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Sun May 23 14:11:28 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BF64A106564A; Sun, 23 May 2010 14:11:28 +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 951D38FC15; Sun, 23 May 2010 14:11: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 o4NEBSak098376; Sun, 23 May 2010 14:11:28 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NEBS4b098375; Sun, 23 May 2010 14:11:28 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201005231411.o4NEBS4b098375@svn.freebsd.org> From: Alexander Motin Date: Sun, 23 May 2010 14:11:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208449 - head/share/man/man4 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 14:11:28 -0000 Author: mav Date: Sun May 23 14:11:27 2010 New Revision: 208449 URL: http://svn.freebsd.org/changeset/base/208449 Log: mvs(4) will first appear in FreeBSD 8.1. Modified: head/share/man/man4/mvs.4 Modified: head/share/man/man4/mvs.4 ============================================================================== --- head/share/man/man4/mvs.4 Sun May 23 11:29:34 2010 (r208448) +++ head/share/man/man4/mvs.4 Sun May 23 14:11:27 2010 (r208449) @@ -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-all@FreeBSD.ORG Sun May 23 15:30:32 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Sun May 23 16:16:33 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Sun May 23 17:45:02 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 46651106566C; Sun, 23 May 2010 17:45:02 +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 340668FC14; Sun, 23 May 2010 17:45: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 o4NHj25d045491; Sun, 23 May 2010 17:45:02 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NHj2wF045486; Sun, 23 May 2010 17:45:02 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201005231745.o4NHj2wF045486@svn.freebsd.org> From: Alexander Motin Date: Sun, 23 May 2010 17:45:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208452 - in head/sys: amd64/amd64 conf i386/i386 x86/x86 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 17:45:02 -0000 Author: mav Date: Sun May 23 17:45:01 2010 New Revision: 208452 URL: http://svn.freebsd.org/changeset/base/208452 Log: Unify local_apic.c for x86 archs, Added: head/sys/x86/x86/ head/sys/x86/x86/local_apic.c - copied, changed from r208451, head/sys/i386/i386/local_apic.c Deleted: head/sys/amd64/amd64/local_apic.c head/sys/i386/i386/local_apic.c Modified: head/sys/conf/files.amd64 head/sys/conf/files.i386 head/sys/conf/files.pc98 Modified: head/sys/conf/files.amd64 ============================================================================== --- head/sys/conf/files.amd64 Sun May 23 16:16:33 2010 (r208451) +++ head/sys/conf/files.amd64 Sun May 23 17:45:01 2010 (r208452) @@ -107,7 +107,7 @@ amd64/amd64/intr_machdep.c standard amd64/amd64/io.c optional io amd64/amd64/io_apic.c standard amd64/amd64/legacy.c standard -amd64/amd64/local_apic.c standard +x86/x86/local_apic.c standard amd64/amd64/locore.S standard no-obj amd64/amd64/machdep.c standard amd64/amd64/mca.c standard Modified: head/sys/conf/files.i386 ============================================================================== --- head/sys/conf/files.i386 Sun May 23 16:16:33 2010 (r208451) +++ head/sys/conf/files.i386 Sun May 23 17:45:01 2010 (r208452) @@ -272,7 +272,7 @@ i386/i386/io.c optional io i386/i386/io_apic.c optional apic i386/i386/k6_mem.c optional mem i386/i386/legacy.c optional native -i386/i386/local_apic.c optional apic +x86/x86/local_apic.c optional apic i386/i386/locore.s optional native no-obj i386/xen/locore.s optional xen no-obj i386/i386/longrun.c optional cpu_enable_longrun Modified: head/sys/conf/files.pc98 ============================================================================== --- head/sys/conf/files.pc98 Sun May 23 16:16:33 2010 (r208451) +++ head/sys/conf/files.pc98 Sun May 23 17:45:01 2010 (r208452) @@ -151,7 +151,7 @@ i386/i386/io.c optional io i386/i386/io_apic.c optional apic i386/i386/k6_mem.c optional mem i386/i386/legacy.c standard -i386/i386/local_apic.c optional apic +x86/x86/local_apic.c optional apic i386/i386/locore.s standard no-obj i386/i386/mca.c standard i386/i386/mem.c optional mem Copied and modified: head/sys/x86/x86/local_apic.c (from r208451, head/sys/i386/i386/local_apic.c) ============================================================================== --- head/sys/i386/i386/local_apic.c Sun May 23 16:16:33 2010 (r208451, copy source) +++ head/sys/x86/x86/local_apic.c Sun May 23 17:45:01 2010 (r208452) @@ -34,7 +34,6 @@ #include __FBSDID("$FreeBSD$"); -#include "opt_atpic.h" #include "opt_hwpmc_hooks.h" #include "opt_kdtrace.h" @@ -69,6 +68,16 @@ __FBSDID("$FreeBSD$"); #include #endif +#ifdef __amd64__ +#define SDT_APIC SDT_SYSIGT +#define SDT_APICT SDT_SYSIGT +#define GSEL_APIC 0 +#else +#define SDT_APIC SDT_SYS386IGT +#define SDT_APICT SDT_SYS386TGT +#define GSEL_APIC GSEL(GCODE_SEL, SEL_KPL) +#endif + #ifdef KDTRACE_HOOKS #include cyclic_clock_func_t cyclic_clock_func[MAXCPU]; @@ -213,8 +222,8 @@ lapic_init(vm_paddr_t addr) ("local APIC not aligned on a page boundary")); lapic = pmap_mapdev(addr, sizeof(lapic_t)); lapic_paddr = addr; - setidt(APIC_SPURIOUS_INT, IDTVEC(spuriousint), SDT_SYS386IGT, SEL_KPL, - GSEL(GCODE_SEL, SEL_KPL)); + setidt(APIC_SPURIOUS_INT, IDTVEC(spuriousint), SDT_APIC, SEL_KPL, + GSEL_APIC); /* Perform basic initialization of the BSP's local APIC. */ lapic_enable(); @@ -223,12 +232,10 @@ lapic_init(vm_paddr_t addr) PCPU_SET(apic_id, lapic_id()); /* Local APIC timer interrupt. */ - setidt(APIC_TIMER_INT, IDTVEC(timerint), SDT_SYS386IGT, SEL_KPL, - GSEL(GCODE_SEL, SEL_KPL)); + setidt(APIC_TIMER_INT, IDTVEC(timerint), SDT_APIC, SEL_KPL, GSEL_APIC); /* Local APIC error interrupt. */ - setidt(APIC_ERROR_INT, IDTVEC(errorint), SDT_SYS386IGT, SEL_KPL, - GSEL(GCODE_SEL, SEL_KPL)); + setidt(APIC_ERROR_INT, IDTVEC(errorint), SDT_APIC, SEL_KPL, GSEL_APIC); /* XXX: Thermal interrupt */ } @@ -982,8 +989,8 @@ apic_enable_vector(u_int apic_id, u_int KASSERT(vector != IDT_SYSCALL, ("Attempt to overwrite syscall entry")); KASSERT(ioint_handlers[vector / 32] != NULL, ("No ISR handler for vector %u", vector)); - setidt(vector, ioint_handlers[vector / 32], SDT_SYS386IGT, SEL_KPL, - GSEL(GCODE_SEL, SEL_KPL)); + setidt(vector, ioint_handlers[vector / 32], SDT_APIC, SEL_KPL, + GSEL_APIC); } void @@ -998,8 +1005,7 @@ apic_disable_vector(u_int apic_id, u_int * We can not currently clear the idt entry because other cpus * may have a valid vector at this offset. */ - setidt(vector, &IDTVEC(rsvd), SDT_SYS386TGT, SEL_KPL, - GSEL(GCODE_SEL, SEL_KPL)); + setidt(vector, &IDTVEC(rsvd), SDT_APICT, SEL_KPL, GSEL_APIC); #endif } @@ -1196,7 +1202,9 @@ static void apic_init(void *dummy __unused) { struct apic_enumerator *enumerator; +#ifndef __amd64__ uint64_t apic_base; +#endif int retval, best; /* We only support built in local APICs. */ @@ -1229,6 +1237,7 @@ apic_init(void *dummy __unused) printf("APIC: Using the %s enumerator.\n", best_enum->apic_name); +#ifndef __amd64__ /* * To work around an errata, we disable the local APIC on some * CPUs during early startup. We need to turn the local APIC back @@ -1240,6 +1249,7 @@ apic_init(void *dummy __unused) apic_base |= APICBASE_ENABLED; wrmsr(MSR_APICBASE, apic_base); } +#endif /* Second, probe the CPU's in the system. */ retval = best_enum->apic_probe_cpus(); @@ -1290,7 +1300,7 @@ SYSINIT(apic_setup_io, SI_SUB_INTR, SI_O #ifdef SMP /* * Inter Processor Interrupt functions. The lapic_ipi_*() functions are - * private to the sys/i386 code. The public interface for the rest of the + * private to the MD code. The public interface for the rest of the * kernel is defined in mp_machdep.c. */ int From owner-svn-src-all@FreeBSD.ORG Sun May 23 18:32:02 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B28FF1065673; Sun, 23 May 2010 18:32:02 +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 9D6A08FC13; Sun, 23 May 2010 18:32: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 o4NIW2d5055872; Sun, 23 May 2010 18:32:02 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NIW2jw055853; Sun, 23 May 2010 18:32:02 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201005231832.o4NIW2jw055853@svn.freebsd.org> From: Konstantin Belousov Date: Sun, 23 May 2010 18:32:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208453 - in head/sys: amd64/amd64 amd64/ia32 amd64/include amd64/linux32 arm/arm cddl/dev/systrace compat/ia32 compat/svr4 conf i386/i386 i386/ibcs2 i386/include i386/linux ia64/ia32 i... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 18:32:02 -0000 Author: kib Date: Sun May 23 18:32:02 2010 New Revision: 208453 URL: http://svn.freebsd.org/changeset/base/208453 Log: Reorganize syscall entry and leave handling. Extend struct sysvec with three new elements: sv_fetch_syscall_args - the method to fetch syscall arguments from usermode into struct syscall_args. The structure is machine-depended (this might be reconsidered after all architectures are converted). sv_set_syscall_retval - the method to set a return value for usermode from the syscall. It is a generalization of cpu_set_syscall_retval(9) to allow ABIs to override the way to set a return value. sv_syscallnames - the table of syscall names. Use sv_set_syscall_retval in kern_sigsuspend() instead of hardcoding the call to cpu_set_syscall_retval(). The new functions syscallenter(9) and syscallret(9) are provided that use sv_*syscall* pointers and contain the common repeated code from the syscall() implementations for the architecture-specific syscall trap handlers. Syscallenter() fetches arguments, calls syscall implementation from ABI sysent table, and set up return frame. The end of syscall bookkeeping is done by syscallret(). Take advantage of single place for MI syscall handling code and implement ptrace_lwpinfo pl_flags PL_FLAG_SCE, PL_FLAG_SCX and PL_FLAG_EXEC. The SCE and SCX flags notify the debugger that the thread is stopped at syscall entry or return point respectively. The EXEC flag augments SCX and notifies debugger that the process address space was changed by one of exec(2)-family syscalls. The i386, amd64, sparc64, sun4v, powerpc and ia64 syscall()s are changed to use syscallenter()/syscallret(). MIPS and arm are not converted and use the mostly unchanged syscall() implementation. Reviewed by: jhb, marcel, marius, nwhitehorn, stas Tested by: marcel (ia64), marius (sparc64), nwhitehorn (powerpc), stas (mips) MFC after: 1 month Modified: head/sys/amd64/amd64/elf_machdep.c head/sys/amd64/amd64/trap.c head/sys/amd64/ia32/ia32_syscall.c head/sys/amd64/include/proc.h head/sys/amd64/linux32/linux32_sysvec.c head/sys/arm/arm/elf_machdep.c head/sys/arm/arm/trap.c head/sys/cddl/dev/systrace/systrace.c head/sys/compat/ia32/ia32_sysvec.c head/sys/compat/ia32/ia32_util.h head/sys/compat/svr4/svr4_sysvec.c head/sys/conf/files head/sys/i386/i386/elf_machdep.c head/sys/i386/i386/trap.c head/sys/i386/ibcs2/ibcs2_sysvec.c head/sys/i386/include/proc.h head/sys/i386/linux/linux_sysvec.c head/sys/ia64/ia32/ia32_trap.c head/sys/ia64/ia64/elf_machdep.c head/sys/ia64/ia64/trap.c head/sys/ia64/include/proc.h head/sys/kern/imgact_aout.c head/sys/kern/init_main.c head/sys/kern/kern_exec.c head/sys/kern/kern_sig.c head/sys/kern/subr_trap.c head/sys/kern/sys_process.c head/sys/mips/mips/elf64_machdep.c head/sys/mips/mips/elf_machdep.c head/sys/mips/mips/trap.c head/sys/powerpc/aim/trap.c head/sys/powerpc/booke/trap.c head/sys/powerpc/include/proc.h head/sys/powerpc/powerpc/elf_machdep.c head/sys/sparc64/include/proc.h head/sys/sparc64/sparc64/elf_machdep.c head/sys/sparc64/sparc64/trap.c head/sys/sun4v/include/proc.h head/sys/sun4v/sun4v/trap.c head/sys/sys/proc.h head/sys/sys/ptrace.h head/sys/sys/sysent.h Modified: head/sys/amd64/amd64/elf_machdep.c ============================================================================== --- head/sys/amd64/amd64/elf_machdep.c Sun May 23 17:45:01 2010 (r208452) +++ head/sys/amd64/amd64/elf_machdep.c Sun May 23 18:32:02 2010 (r208453) @@ -32,6 +32,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -74,7 +75,10 @@ struct sysentvec elf64_freebsd_sysvec = .sv_setregs = exec_setregs, .sv_fixlimit = NULL, .sv_maxssiz = NULL, - .sv_flags = SV_ABI_FREEBSD | SV_LP64 + .sv_flags = SV_ABI_FREEBSD | SV_LP64, + .sv_set_syscall_retval = cpu_set_syscall_retval, + .sv_fetch_syscall_args = cpu_fetch_syscall_args, + .sv_syscallnames = syscallnames, }; static Elf64_Brandinfo freebsd_brand_info = { Modified: head/sys/amd64/amd64/trap.c ============================================================================== --- head/sys/amd64/amd64/trap.c Sun May 23 17:45:01 2010 (r208452) +++ head/sys/amd64/amd64/trap.c Sun May 23 18:32:02 2010 (r208453) @@ -76,7 +76,6 @@ __FBSDID("$FreeBSD$"); #ifdef HWPMC_HOOKS #include #endif -#include #include #include @@ -170,8 +169,6 @@ static int prot_fault_translation = 0; SYSCTL_INT(_machdep, OID_AUTO, prot_fault_translation, CTLFLAG_RW, &prot_fault_translation, 0, "Select signal to deliver on protection fault"); -extern char *syscallnames[]; - /* * Exception, fault, and trap interface to the FreeBSD kernel. * This common code is called from assembly language IDT gate entry @@ -805,19 +802,12 @@ dblfault_handler(struct trapframe *frame panic("double fault"); } -struct syscall_args { - u_int code; - struct sysent *callp; - register_t args[8]; - register_t *argp; - int narg; -}; - -static int -fetch_syscall_args(struct thread *td, struct syscall_args *sa) +int +cpu_fetch_syscall_args(struct thread *td, struct syscall_args *sa) { struct proc *p; struct trapframe *frame; + register_t *argp; caddr_t params; int reg, regcnt, error; @@ -829,15 +819,10 @@ fetch_syscall_args(struct thread *td, st params = (caddr_t)frame->tf_rsp + sizeof(register_t); sa->code = frame->tf_rax; - if (p->p_sysent->sv_prepsyscall) { - (*p->p_sysent->sv_prepsyscall)(frame, (int *)sa->args, - &sa->code, ¶ms); - } else { - if (sa->code == SYS_syscall || sa->code == SYS___syscall) { - sa->code = frame->tf_rdi; - reg++; - regcnt--; - } + if (sa->code == SYS_syscall || sa->code == SYS___syscall) { + sa->code = frame->tf_rdi; + reg++; + regcnt--; } if (p->p_sysent->sv_mask) sa->code &= p->p_sysent->sv_mask; @@ -851,24 +836,20 @@ fetch_syscall_args(struct thread *td, st KASSERT(sa->narg <= sizeof(sa->args) / sizeof(sa->args[0]), ("Too many syscall arguments!")); error = 0; - sa->argp = &frame->tf_rdi; - sa->argp += reg; - bcopy(sa->argp, sa->args, sizeof(sa->args[0]) * regcnt); + argp = &frame->tf_rdi; + argp += reg; + bcopy(argp, sa->args, sizeof(sa->args[0]) * regcnt); if (sa->narg > regcnt) { KASSERT(params != NULL, ("copyin args with no params!")); error = copyin(params, &sa->args[regcnt], (sa->narg - regcnt) * sizeof(sa->args[0])); } - sa->argp = &sa->args[0]; - /* - * This may result in two records if debugger modified - * registers or memory during sleep at stop/ptrace point. - */ -#ifdef KTRACE - if (KTRPOINT(td, KTR_SYSCALL)) - ktrsyscall(sa->code, sa->narg, sa->argp); -#endif + if (error == 0) { + td->td_retval[0] = 0; + td->td_retval[1] = frame->tf_rdx; + } + return (error); } @@ -881,87 +862,22 @@ void syscall(struct trapframe *frame) { struct thread *td; - struct proc *p; struct syscall_args sa; register_t orig_tf_rflags; int error; ksiginfo_t ksi; - PCPU_INC(cnt.v_syscall); - td = curthread; - p = td->td_proc; - td->td_syscalls++; - #ifdef DIAGNOSTIC if (ISPL(frame->tf_cs) != SEL_UPL) { panic("syscall"); /* NOT REACHED */ } #endif - - td->td_pticks = 0; - td->td_frame = frame; - if (td->td_ucred != p->p_ucred) - cred_update_thread(td); orig_tf_rflags = frame->tf_rflags; - if (p->p_flag & P_TRACED) { - PROC_LOCK(p); - td->td_dbgflags &= ~TDB_USERWR; - PROC_UNLOCK(p); - } - error = fetch_syscall_args(td, &sa); - - CTR4(KTR_SYSC, "syscall enter thread %p pid %d proc %s code %d", td, - td->td_proc->p_pid, td->td_name, sa.code); - - if (error == 0) { - td->td_retval[0] = 0; - td->td_retval[1] = frame->tf_rdx; - - STOPEVENT(p, S_SCE, sa.narg); - PTRACESTOP_SC(p, td, S_PT_SCE); - if (td->td_dbgflags & TDB_USERWR) { - /* - * Reread syscall number and arguments if - * debugger modified registers or memory. - */ - error = fetch_syscall_args(td, &sa); - if (error != 0) - goto retval; - td->td_retval[1] = frame->tf_rdx; - } - -#ifdef KDTRACE_HOOKS - /* - * If the systrace module has registered it's probe - * callback and if there is a probe active for the - * syscall 'entry', process the probe. - */ - if (systrace_probe_func != NULL && sa.callp->sy_entry != 0) - (*systrace_probe_func)(sa.callp->sy_entry, sa.code, - sa.callp, sa.args); -#endif - - AUDIT_SYSCALL_ENTER(sa.code, td); - error = (*sa.callp->sy_call)(td, sa.argp); - AUDIT_SYSCALL_EXIT(error, td); - - /* Save the latest error return value. */ - td->td_errno = error; + td = curthread; + td->td_frame = frame; -#ifdef KDTRACE_HOOKS - /* - * If the systrace module has registered it's probe - * callback and if there is a probe active for the - * syscall 'return', process the probe. - */ - if (systrace_probe_func != NULL && sa.callp->sy_return != 0) - (*systrace_probe_func)(sa.callp->sy_return, sa.code, - sa.callp, sa.args); -#endif - } - retval: - cpu_set_syscall_retval(td, error); + error = syscallenter(td, &sa); /* * Traced syscall. @@ -975,40 +891,5 @@ syscall(struct trapframe *frame) trapsignal(td, &ksi); } - /* - * Check for misbehavior. - */ - WITNESS_WARN(WARN_PANIC, NULL, "System call %s returning", - (sa.code >= 0 && sa.code < SYS_MAXSYSCALL) ? - syscallnames[sa.code] : "???"); - KASSERT(td->td_critnest == 0, - ("System call %s returning in a critical section", - (sa.code >= 0 && sa.code < SYS_MAXSYSCALL) ? - syscallnames[sa.code] : "???")); - KASSERT(td->td_locks == 0, - ("System call %s returning with %d locks held", - (sa.code >= 0 && sa.code < SYS_MAXSYSCALL) ? - syscallnames[sa.code] : "???", td->td_locks)); - - /* - * Handle reschedule and other end-of-syscall issues - */ - userret(td, frame); - - CTR4(KTR_SYSC, "syscall exit thread %p pid %d proc %s code %d", td, - td->td_proc->p_pid, td->td_name, sa.code); - -#ifdef KTRACE - if (KTRPOINT(td, KTR_SYSRET)) - ktrsysret(sa.code, error, td->td_retval[0]); -#endif - - /* - * This works because errno is findable through the - * register set. If we ever support an emulation where this - * is not the case, this code will need to be revisited. - */ - STOPEVENT(p, S_SCX, sa.code); - - PTRACESTOP_SC(p, td, S_PT_SCX); + syscallret(td, error, &sa); } Modified: head/sys/amd64/ia32/ia32_syscall.c ============================================================================== --- head/sys/amd64/ia32/ia32_syscall.c Sun May 23 17:45:01 2010 (r208452) +++ head/sys/amd64/ia32/ia32_syscall.c Sun May 23 18:32:02 2010 (r208453) @@ -56,6 +56,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -81,62 +82,54 @@ __FBSDID("$FreeBSD$"); #include #include +#include + #define IDTVEC(name) __CONCAT(X,name) extern inthand_t IDTVEC(int0x80_syscall), IDTVEC(rsvd); -extern const char *freebsd32_syscallnames[]; void ia32_syscall(struct trapframe *frame); /* Called from asm code */ -struct ia32_syscall_args { - u_int code; - caddr_t params; - struct sysent *callp; - u_int64_t args64[8]; - int narg; -}; +void +ia32_set_syscall_retval(struct thread *td, int error) +{ -static int -fetch_ia32_syscall_args(struct thread *td, struct ia32_syscall_args *sa) + cpu_set_syscall_retval(td, error); +} + +int +ia32_fetch_syscall_args(struct thread *td, struct syscall_args *sa) { struct proc *p; struct trapframe *frame; + caddr_t params; u_int32_t args[8]; int error, i; p = td->td_proc; frame = td->td_frame; - sa->params = (caddr_t)frame->tf_rsp + sizeof(u_int32_t); + params = (caddr_t)frame->tf_rsp + sizeof(u_int32_t); sa->code = frame->tf_rax; - if (p->p_sysent->sv_prepsyscall) { + /* + * Need to check if this is a 32 bit or 64 bit syscall. + */ + if (sa->code == SYS_syscall) { /* - * The prep code is MP aware. + * Code is first argument, followed by actual args. */ - (*p->p_sysent->sv_prepsyscall)(frame, args, &sa->code, - &sa->params); - } else { + sa->code = fuword32(params); + params += sizeof(int); + } else if (sa->code == SYS___syscall) { /* - * Need to check if this is a 32 bit or 64 bit syscall. - * fuword is MP aware. + * Like syscall, but code is a quad, so as to maintain + * quad alignment for the rest of the arguments. + * We use a 32-bit fetch in case params is not + * aligned. */ - if (sa->code == SYS_syscall) { - /* - * Code is first argument, followed by actual args. - */ - sa->code = fuword32(sa->params); - sa->params += sizeof(int); - } else if (sa->code == SYS___syscall) { - /* - * Like syscall, but code is a quad, so as to maintain - * quad alignment for the rest of the arguments. - * We use a 32-bit fetch in case params is not - * aligned. - */ - sa->code = fuword32(sa->params); - sa->params += sizeof(quad_t); - } + sa->code = fuword32(params); + params += sizeof(quad_t); } if (p->p_sysent->sv_mask) sa->code &= p->p_sysent->sv_mask; @@ -146,19 +139,19 @@ fetch_ia32_syscall_args(struct thread *t sa->callp = &p->p_sysent->sv_table[sa->code]; sa->narg = sa->callp->sy_narg; - if (sa->params != NULL && sa->narg != 0) - error = copyin(sa->params, (caddr_t)args, + if (params != NULL && sa->narg != 0) + error = copyin(params, (caddr_t)args, (u_int)(sa->narg * sizeof(int))); else error = 0; for (i = 0; i < sa->narg; i++) - sa->args64[i] = args[i]; + sa->args[i] = args[i]; -#ifdef KTRACE - if (KTRPOINT(td, KTR_SYSCALL)) - ktrsyscall(sa->code, sa->narg, sa->args64); -#endif + if (error == 0) { + td->td_retval[0] = 0; + td->td_retval[1] = frame->tf_rdx; + } return (error); } @@ -167,58 +160,16 @@ void ia32_syscall(struct trapframe *frame) { struct thread *td; - struct proc *p; - struct ia32_syscall_args sa; + struct syscall_args sa; register_t orig_tf_rflags; int error; ksiginfo_t ksi; - PCPU_INC(cnt.v_syscall); + orig_tf_rflags = frame->tf_rflags; td = curthread; - p = td->td_proc; - td->td_syscalls++; - - td->td_pticks = 0; td->td_frame = frame; - if (td->td_ucred != p->p_ucred) - cred_update_thread(td); - orig_tf_rflags = frame->tf_rflags; - if (p->p_flag & P_TRACED) { - PROC_LOCK(p); - td->td_dbgflags &= ~TDB_USERWR; - PROC_UNLOCK(p); - } - error = fetch_ia32_syscall_args(td, &sa); - - CTR4(KTR_SYSC, "syscall enter thread %p pid %d proc %s code %d", td, - td->td_proc->p_pid, td->td_name, sa.code); - - if (error == 0) { - td->td_retval[0] = 0; - td->td_retval[1] = frame->tf_rdx; - STOPEVENT(p, S_SCE, sa.narg); - PTRACESTOP_SC(p, td, S_PT_SCE); - if (td->td_dbgflags & TDB_USERWR) { - /* - * Reread syscall number and arguments if - * debugger modified registers or memory. - */ - error = fetch_ia32_syscall_args(td, &sa); - if (error != 0) - goto retval; - td->td_retval[1] = frame->tf_rdx; - } - - AUDIT_SYSCALL_ENTER(sa.code, td); - error = (*sa.callp->sy_call)(td, sa.args64); - AUDIT_SYSCALL_EXIT(error, td); - - /* Save the latest error return value. */ - td->td_errno = error; - } - retval: - cpu_set_syscall_retval(td, error); + error = syscallenter(td, &sa); /* * Traced syscall. @@ -232,44 +183,9 @@ ia32_syscall(struct trapframe *frame) trapsignal(td, &ksi); } - /* - * Check for misbehavior. - */ - WITNESS_WARN(WARN_PANIC, NULL, "System call %s returning", - (sa.code >= 0 && sa.code < SYS_MAXSYSCALL) ? - freebsd32_syscallnames[sa.code] : "???"); - KASSERT(td->td_critnest == 0, - ("System call %s returning in a critical section", - (sa.code >= 0 && sa.code < SYS_MAXSYSCALL) ? - freebsd32_syscallnames[sa.code] : "???")); - KASSERT(td->td_locks == 0, - ("System call %s returning with %d locks held", - (sa.code >= 0 && sa.code < SYS_MAXSYSCALL) ? - freebsd32_syscallnames[sa.code] : "???", td->td_locks)); - - /* - * Handle reschedule and other end-of-syscall issues - */ - userret(td, frame); - - CTR4(KTR_SYSC, "syscall exit thread %p pid %d proc %s code %d", td, - td->td_proc->p_pid, td->td_proc->p_comm, sa.code); -#ifdef KTRACE - if (KTRPOINT(td, KTR_SYSRET)) - ktrsysret(sa.code, error, td->td_retval[0]); -#endif - - /* - * This works because errno is findable through the - * register set. If we ever support an emulation where this - * is not the case, this code will need to be revisited. - */ - STOPEVENT(p, S_SCX, sa.code); - - PTRACESTOP_SC(p, td, S_PT_SCX); + syscallret(td, error, &sa); } - static void ia32_syscall_enable(void *dummy) { Modified: head/sys/amd64/include/proc.h ============================================================================== --- head/sys/amd64/include/proc.h Sun May 23 17:45:01 2010 (r208452) +++ head/sys/amd64/include/proc.h Sun May 23 18:32:02 2010 (r208453) @@ -79,6 +79,14 @@ int amd64_set_ldt_data(struct thread *td extern struct mtx dt_lock; extern int max_ldt_segment; +struct syscall_args { + u_int code; + struct sysent *callp; + register_t args[8]; + int narg; +}; +#define HAVE_SYSCALL_ARGS_DEF 1 + #endif /* _KERNEL */ #endif /* !_MACHINE_PROC_H_ */ Modified: head/sys/amd64/linux32/linux32_sysvec.c ============================================================================== --- head/sys/amd64/linux32/linux32_sysvec.c Sun May 23 17:45:01 2010 (r208452) +++ head/sys/amd64/linux32/linux32_sysvec.c Sun May 23 18:32:02 2010 (r208453) @@ -121,8 +121,6 @@ SET_DECLARE(linux_device_handler_set, st static int elf_linux_fixup(register_t **stack_base, struct image_params *iparams); static register_t *linux_copyout_strings(struct image_params *imgp); -static void linux_prepsyscall(struct trapframe *tf, int *args, u_int *code, - caddr_t *params); static void linux_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask); static void exec_linux_setregs(struct thread *td, struct image_params *imgp, u_long stack); @@ -764,19 +762,33 @@ linux_rt_sigreturn(struct thread *td, st return (EJUSTRETURN); } -/* - * MPSAFE - */ -static void -linux_prepsyscall(struct trapframe *tf, int *args, u_int *code, caddr_t *params) +static int +linux32_fetch_syscall_args(struct thread *td, struct syscall_args *sa) { - args[0] = tf->tf_rbx; - args[1] = tf->tf_rcx; - args[2] = tf->tf_rdx; - args[3] = tf->tf_rsi; - args[4] = tf->tf_rdi; - args[5] = tf->tf_rbp; /* Unconfirmed */ - *params = NULL; /* no copyin */ + struct proc *p; + struct trapframe *frame; + + p = td->td_proc; + frame = td->td_frame; + + sa->args[0] = frame->tf_rbx; + sa->args[1] = frame->tf_rcx; + sa->args[2] = frame->tf_rdx; + sa->args[3] = frame->tf_rsi; + sa->args[4] = frame->tf_rdi; + sa->args[5] = frame->tf_rbp; /* Unconfirmed */ + sa->code = frame->tf_rax; + + if (sa->code >= p->p_sysent->sv_size) + sa->callp = &p->p_sysent->sv_table[0]; + else + sa->callp = &p->p_sysent->sv_table[sa->code]; + sa->narg = sa->callp->sy_narg; + + td->td_retval[0] = 0; + td->td_retval[1] = frame->tf_rdx; + + return (0); } /* @@ -1039,7 +1051,7 @@ struct sysentvec elf_linux_sysvec = { .sv_sendsig = linux_sendsig, .sv_sigcode = linux_sigcode, .sv_szsigcode = &linux_szsigcode, - .sv_prepsyscall = linux_prepsyscall, + .sv_prepsyscall = NULL, .sv_name = "Linux ELF32", .sv_coredump = elf32_coredump, .sv_imgact_try = exec_linux_imgact_try, @@ -1054,7 +1066,10 @@ struct sysentvec elf_linux_sysvec = { .sv_setregs = exec_linux_setregs, .sv_fixlimit = linux32_fixlimit, .sv_maxssiz = &linux32_maxssiz, - .sv_flags = SV_ABI_LINUX | SV_ILP32 | SV_IA32 + .sv_flags = SV_ABI_LINUX | SV_ILP32 | SV_IA32, + .sv_set_syscall_retval = cpu_set_syscall_retval, + .sv_fetch_syscall_args = linux32_fetch_syscall_args, + .sv_syscallnames = NULL, }; static char GNU_ABI_VENDOR[] = "GNU"; Modified: head/sys/arm/arm/elf_machdep.c ============================================================================== --- head/sys/arm/arm/elf_machdep.c Sun May 23 17:45:01 2010 (r208452) +++ head/sys/arm/arm/elf_machdep.c Sun May 23 18:32:02 2010 (r208453) @@ -34,6 +34,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -73,7 +74,10 @@ struct sysentvec elf32_freebsd_sysvec = .sv_setregs = exec_setregs, .sv_fixlimit = NULL, .sv_maxssiz = NULL, - .sv_flags = SV_ABI_FREEBSD | SV_ILP32 + .sv_flags = SV_ABI_FREEBSD | SV_ILP32, + .sv_set_syscall_retval = cpu_set_syscall_retval, + .sv_fetch_syscall_args = NULL, /* XXXKIB */ + .sv_syscallnames = syscallnames, }; static Elf32_Brandinfo freebsd_brand_info = { Modified: head/sys/arm/arm/trap.c ============================================================================== --- head/sys/arm/arm/trap.c Sun May 23 17:45:01 2010 (r208452) +++ head/sys/arm/arm/trap.c Sun May 23 18:32:02 2010 (r208453) @@ -130,7 +130,6 @@ void undefinedinstruction(trapframe_t *) #include extern char fusubailout[]; -extern char *syscallnames[]; #ifdef DEBUG int last_fault_code; /* For the benefit of pmap_fault_fixup() */ Modified: head/sys/cddl/dev/systrace/systrace.c ============================================================================== --- head/sys/cddl/dev/systrace/systrace.c Sun May 23 17:45:01 2010 (r208452) +++ head/sys/cddl/dev/systrace/systrace.c Sun May 23 18:32:02 2010 (r208453) @@ -77,7 +77,6 @@ extern struct sysent linux_sysent[]; */ #include #include -extern const char *syscallnames[]; #define DEVNAME "dtrace/systrace" #define PROVNAME "syscall" #define MAXSYSCALL SYS_MAXSYSCALL Modified: head/sys/compat/ia32/ia32_sysvec.c ============================================================================== --- head/sys/compat/ia32/ia32_sysvec.c Sun May 23 17:45:01 2010 (r208452) +++ head/sys/compat/ia32/ia32_sysvec.c Sun May 23 18:32:02 2010 (r208453) @@ -93,6 +93,8 @@ CTASSERT(sizeof(struct ia32_ucontext4) = CTASSERT(sizeof(struct ia32_sigframe4) == 408); #endif +extern const char *freebsd32_syscallnames[]; + static void ia32_fixlimit(struct rlimit *rl, int which); SYSCTL_NODE(_compat, OID_AUTO, ia32, CTLFLAG_RW, 0, "ia32 mode"); @@ -135,7 +137,10 @@ struct sysentvec ia32_freebsd_sysvec = { .sv_setregs = ia32_setregs, .sv_fixlimit = ia32_fixlimit, .sv_maxssiz = &ia32_maxssiz, - .sv_flags = SV_ABI_FREEBSD | SV_IA32 | SV_ILP32 + .sv_flags = SV_ABI_FREEBSD | SV_IA32 | SV_ILP32, + .sv_set_syscall_retval = ia32_set_syscall_retval, + .sv_fetch_syscall_args = ia32_fetch_syscall_args, + .sv_syscallnames = freebsd32_syscallnames, }; Modified: head/sys/compat/ia32/ia32_util.h ============================================================================== --- head/sys/compat/ia32/ia32_util.h Sun May 23 17:45:01 2010 (r208452) +++ head/sys/compat/ia32/ia32_util.h Sun May 23 18:32:02 2010 (r208453) @@ -47,3 +47,7 @@ #define IA32_MAXDSIZ (512*1024*1024) /* 512MB */ #define IA32_MAXSSIZ (64*1024*1024) /* 64MB */ #define IA32_MAXVMEM 0 /* Unlimited */ + +struct syscall_args; +int ia32_fetch_syscall_args(struct thread *td, struct syscall_args *sa); +void ia32_set_syscall_retval(struct thread *, int); Modified: head/sys/compat/svr4/svr4_sysvec.c ============================================================================== --- head/sys/compat/svr4/svr4_sysvec.c Sun May 23 17:45:01 2010 (r208452) +++ head/sys/compat/svr4/svr4_sysvec.c Sun May 23 18:32:02 2010 (r208453) @@ -191,7 +191,10 @@ struct sysentvec svr4_sysvec = { .sv_setregs = exec_setregs, .sv_fixlimit = NULL, .sv_maxssiz = NULL, - .sv_flags = SV_ABI_UNDEF | SV_IA32 | SV_ILP32 + .sv_flags = SV_ABI_UNDEF | SV_IA32 | SV_ILP32, + .sv_set_syscall_retval = cpu_set_syscall_retval, + .sv_fetch_syscall_args = cpu_fetch_syscall_args, + .sv_syscallnames = NULL, }; const char svr4_emul_path[] = "/compat/svr4"; Modified: head/sys/conf/files ============================================================================== --- head/sys/conf/files Sun May 23 17:45:01 2010 (r208452) +++ head/sys/conf/files Sun May 23 18:32:02 2010 (r208453) @@ -2166,7 +2166,7 @@ kern/sys_generic.c standard kern/sys_pipe.c standard kern/sys_process.c standard kern/sys_socket.c standard -kern/syscalls.c optional witness | invariants | kdtrace_hooks +kern/syscalls.c standard kern/sysv_ipc.c standard kern/sysv_msg.c optional sysvmsg kern/sysv_sem.c optional sysvsem Modified: head/sys/i386/i386/elf_machdep.c ============================================================================== --- head/sys/i386/i386/elf_machdep.c Sun May 23 17:45:01 2010 (r208452) +++ head/sys/i386/i386/elf_machdep.c Sun May 23 18:32:02 2010 (r208453) @@ -32,6 +32,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -73,7 +74,10 @@ struct sysentvec elf32_freebsd_sysvec = .sv_setregs = exec_setregs, .sv_fixlimit = NULL, .sv_maxssiz = NULL, - .sv_flags = SV_ABI_FREEBSD | SV_IA32 | SV_ILP32 + .sv_flags = SV_ABI_FREEBSD | SV_IA32 | SV_ILP32, + .sv_set_syscall_retval = cpu_set_syscall_retval, + .sv_fetch_syscall_args = cpu_fetch_syscall_args, + .sv_syscallnames = syscallnames, }; static Elf32_Brandinfo freebsd_brand_info = { Modified: head/sys/i386/i386/trap.c ============================================================================== --- head/sys/i386/i386/trap.c Sun May 23 17:45:01 2010 (r208452) +++ head/sys/i386/i386/trap.c Sun May 23 18:32:02 2010 (r208453) @@ -184,8 +184,6 @@ static int prot_fault_translation = 0; SYSCTL_INT(_machdep, OID_AUTO, prot_fault_translation, CTLFLAG_RW, &prot_fault_translation, 0, "Select signal to deliver on protection fault"); -extern char *syscallnames[]; - /* * Exception, fault, and trap interface to the FreeBSD kernel. * This common code is called from assembly language IDT gate entry @@ -973,16 +971,8 @@ dblfault_handler() panic("double fault"); } -struct syscall_args { - u_int code; - struct sysent *callp; - int args[8]; - register_t *argp; - int narg; -}; - -static int -fetch_syscall_args(struct thread *td, struct syscall_args *sa) +int +cpu_fetch_syscall_args(struct thread *td, struct syscall_args *sa) { struct proc *p; struct trapframe *frame; @@ -995,27 +985,22 @@ fetch_syscall_args(struct thread *td, st params = (caddr_t)frame->tf_esp + sizeof(int); sa->code = frame->tf_eax; - if (p->p_sysent->sv_prepsyscall) { - (*p->p_sysent->sv_prepsyscall)(frame, sa->args, &sa->code, - ¶ms); - } else { + /* + * Need to check if this is a 32 bit or 64 bit syscall. + */ + if (sa->code == SYS_syscall) { /* - * Need to check if this is a 32 bit or 64 bit syscall. + * Code is first argument, followed by actual args. */ - if (sa->code == SYS_syscall) { - /* - * Code is first argument, followed by actual args. - */ - sa->code = fuword(params); - params += sizeof(int); - } else if (sa->code == SYS___syscall) { - /* - * Like syscall, but code is a quad, so as to maintain - * quad alignment for the rest of the arguments. - */ - sa->code = fuword(params); - params += sizeof(quad_t); - } + sa->code = fuword(params); + params += sizeof(int); + } else if (sa->code == SYS___syscall) { + /* + * Like syscall, but code is a quad, so as to maintain + * quad alignment for the rest of the arguments. + */ + sa->code = fuword(params); + params += sizeof(quad_t); } if (p->p_sysent->sv_mask) @@ -1031,11 +1016,12 @@ fetch_syscall_args(struct thread *td, st (u_int)(sa->narg * sizeof(int))); else error = 0; + + if (error == 0) { + td->td_retval[0] = 0; + td->td_retval[1] = frame->tf_edx; + } -#ifdef KTRACE - if (KTRPOINT(td, KTR_SYSCALL)) - ktrsyscall(sa->code, sa->narg, sa->args); -#endif return (error); } @@ -1048,87 +1034,23 @@ void syscall(struct trapframe *frame) { struct thread *td; - struct proc *p; struct syscall_args sa; register_t orig_tf_eflags; int error; ksiginfo_t ksi; - PCPU_INC(cnt.v_syscall); - td = curthread; - p = td->td_proc; - td->td_syscalls++; - #ifdef DIAGNOSTIC if (ISPL(frame->tf_cs) != SEL_UPL) { panic("syscall"); /* NOT REACHED */ } #endif - - td->td_pticks = 0; - td->td_frame = frame; - if (td->td_ucred != p->p_ucred) - cred_update_thread(td); orig_tf_eflags = frame->tf_eflags; - if (p->p_flag & P_TRACED) { - PROC_LOCK(p); - td->td_dbgflags &= ~TDB_USERWR; - PROC_UNLOCK(p); - } - error = fetch_syscall_args(td, &sa); - - CTR4(KTR_SYSC, "syscall enter thread %p pid %d proc %s code %d", td, - td->td_proc->p_pid, td->td_name, sa.code); - - if (error == 0) { - td->td_retval[0] = 0; - td->td_retval[1] = frame->tf_edx; - - STOPEVENT(p, S_SCE, sa.narg); - PTRACESTOP_SC(p, td, S_PT_SCE); - if (td->td_dbgflags & TDB_USERWR) { - /* - * Reread syscall number and arguments if - * debugger modified registers or memory. - */ - error = fetch_syscall_args(td, &sa); - if (error != 0) - goto retval; - td->td_retval[1] = frame->tf_edx; - } - -#ifdef KDTRACE_HOOKS - /* - * If the systrace module has registered it's probe - * callback and if there is a probe active for the - * syscall 'entry', process the probe. - */ - if (systrace_probe_func != NULL && sa.callp->sy_entry != 0) - (*systrace_probe_func)(sa.callp->sy_entry, sa.code, - sa.callp, sa.args); -#endif - AUDIT_SYSCALL_ENTER(sa.code, td); - error = (*sa.callp->sy_call)(td, sa.args); - AUDIT_SYSCALL_EXIT(error, td); + td = curthread; + td->td_frame = frame; - /* Save the latest error return value. */ - td->td_errno = error; - -#ifdef KDTRACE_HOOKS - /* - * If the systrace module has registered it's probe - * callback and if there is a probe active for the - * syscall 'return', process the probe. - */ - if (systrace_probe_func != NULL && sa.callp->sy_return != 0) - (*systrace_probe_func)(sa.callp->sy_return, sa.code, - sa.callp, sa.args); -#endif - } - retval: - cpu_set_syscall_retval(td, error); + error = syscallenter(td, &sa); /* * Traced syscall. @@ -1142,41 +1064,5 @@ syscall(struct trapframe *frame) trapsignal(td, &ksi); } - /* - * Check for misbehavior. - */ - WITNESS_WARN(WARN_PANIC, NULL, "System call %s returning", - (sa.code >= 0 && sa.code < SYS_MAXSYSCALL) ? - syscallnames[sa.code] : "???"); - KASSERT(td->td_critnest == 0, - ("System call %s returning in a critical section", - (sa.code >= 0 && sa.code < SYS_MAXSYSCALL) ? - syscallnames[sa.code] : "???")); - KASSERT(td->td_locks == 0, - ("System call %s returning with %d locks held", - (sa.code >= 0 && sa.code < SYS_MAXSYSCALL) ? - syscallnames[sa.code] : "???", td->td_locks)); - - /* - * Handle reschedule and other end-of-syscall issues - */ - userret(td, frame); - - CTR4(KTR_SYSC, "syscall exit thread %p pid %d proc %s code %d", td, - td->td_proc->p_pid, td->td_name, sa.code); - -#ifdef KTRACE - if (KTRPOINT(td, KTR_SYSRET)) - ktrsysret(sa.code, error, td->td_retval[0]); -#endif - - /* - * This works because errno is findable through the - * register set. If we ever support an emulation where this - * is not the case, this code will need to be revisited. - */ - STOPEVENT(p, S_SCX, sa.code); - - PTRACESTOP_SC(p, td, S_PT_SCX); + syscallret(td, error, &sa); } - Modified: head/sys/i386/ibcs2/ibcs2_sysvec.c ============================================================================== --- head/sys/i386/ibcs2/ibcs2_sysvec.c Sun May 23 17:45:01 2010 (r208452) +++ head/sys/i386/ibcs2/ibcs2_sysvec.c Sun May 23 18:32:02 2010 (r208453) @@ -86,7 +86,10 @@ struct sysentvec ibcs2_svr3_sysvec = { .sv_setregs = exec_setregs, .sv_fixlimit = NULL, .sv_maxssiz = NULL, - .sv_flags = SV_ABI_UNDEF | SV_IA32 | SV_ILP32 + .sv_flags = SV_ABI_UNDEF | SV_IA32 | SV_ILP32, + .sv_set_syscall_retval = cpu_set_syscall_retval, + .sv_fetch_syscall_args = cpu_fetch_syscall_args, + .sv_syscallnames = NULL, }; static int Modified: head/sys/i386/include/proc.h ============================================================================== --- head/sys/i386/include/proc.h Sun May 23 17:45:01 2010 (r208452) +++ head/sys/i386/include/proc.h Sun May 23 18:32:02 2010 (r208453) @@ -77,6 +77,14 @@ void user_ldt_deref(struct proc_ldt *pld extern struct mtx dt_lock; +struct syscall_args { + u_int code; + struct sysent *callp; + register_t args[8]; + int narg; +}; +#define HAVE_SYSCALL_ARGS_DEF 1 + #endif /* _KERNEL */ #endif /* !_MACHINE_PROC_H_ */ Modified: head/sys/i386/linux/linux_sysvec.c ============================================================================== --- head/sys/i386/linux/linux_sysvec.c Sun May 23 17:45:01 2010 (r208452) +++ head/sys/i386/linux/linux_sysvec.c Sun May 23 18:32:02 2010 (r208453) @@ -102,8 +102,6 @@ static int linux_fixup(register_t **stac struct image_params *iparams); static int elf_linux_fixup(register_t **stack_base, struct image_params *iparams); -static void linux_prepsyscall(struct trapframe *tf, int *args, u_int *code, - caddr_t *params); static void linux_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask); static void exec_linux_setregs(struct thread *td, struct image_params *imgp, u_long stack); @@ -864,19 +862,33 @@ linux_rt_sigreturn(struct thread *td, st return (EJUSTRETURN); } -/* - * MPSAFE - */ -static void -linux_prepsyscall(struct trapframe *tf, int *args, u_int *code, caddr_t *params) +static int +linux_fetch_syscall_args(struct thread *td, struct syscall_args *sa) { - args[0] = tf->tf_ebx; - args[1] = tf->tf_ecx; - args[2] = tf->tf_edx; - args[3] = tf->tf_esi; - args[4] = tf->tf_edi; - args[5] = tf->tf_ebp; /* Unconfirmed */ - *params = NULL; /* no copyin */ + struct proc *p; + struct trapframe *frame; + + p = td->td_proc; + frame = td->td_frame; + + sa->code = frame->tf_eax; + sa->args[0] = frame->tf_ebx; + sa->args[1] = frame->tf_ecx; + sa->args[2] = frame->tf_edx; + sa->args[3] = frame->tf_esi; + sa->args[4] = frame->tf_edi; + sa->args[5] = frame->tf_ebp; /* Unconfirmed */ + + if (sa->code >= p->p_sysent->sv_size) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sun May 23 18:42:33 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EC1CB1065677; Sun, 23 May 2010 18:42:33 +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 DB1998FC12; Sun, 23 May 2010 18:42: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 o4NIgXr6058188; Sun, 23 May 2010 18:42:33 GMT (envelope-from pjd@svn.freebsd.org) Received: (from pjd@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NIgXYq058186; Sun, 23 May 2010 18:42:33 GMT (envelope-from pjd@svn.freebsd.org) Message-Id: <201005231842.o4NIgXYq058186@svn.freebsd.org> From: Pawel Jakub Dawidek Date: Sun, 23 May 2010 18:42:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208454 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 18:42:34 -0000 Author: pjd Date: Sun May 23 18:42:33 2010 New Revision: 208454 URL: http://svn.freebsd.org/changeset/base/208454 Log: Remove ZIO_USE_UMA from arc.c as well. MFC after: 3 days Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Sun May 23 18:32:02 2010 (r208453) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Sun May 23 18:42:33 2010 (r208454) @@ -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); } From owner-svn-src-all@FreeBSD.ORG Sun May 23 18:43:07 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 06FCF106566C; Sun, 23 May 2010 18:43:07 +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 EAB968FC17; Sun, 23 May 2010 18:43: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 o4NIh6GS058355; Sun, 23 May 2010 18:43:06 GMT (envelope-from pjd@svn.freebsd.org) Received: (from pjd@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NIh6aP058353; Sun, 23 May 2010 18:43:06 GMT (envelope-from pjd@svn.freebsd.org) Message-Id: <201005231843.o4NIh6aP058353@svn.freebsd.org> From: Pawel Jakub Dawidek Date: Sun, 23 May 2010 18:43:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208455 - head/sys/modules/zfs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 18:43:07 -0000 Author: pjd Date: Sun May 23 18:43:06 2010 New Revision: 208455 URL: http://svn.freebsd.org/changeset/base/208455 Log: ZIO_USE_UMA is no longer used. MFC after: 3 days Modified: head/sys/modules/zfs/Makefile Modified: head/sys/modules/zfs/Makefile ============================================================================== --- head/sys/modules/zfs/Makefile Sun May 23 18:42:33 2010 (r208454) +++ head/sys/modules/zfs/Makefile Sun May 23 18:43:06 2010 (r208455) @@ -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 From owner-svn-src-all@FreeBSD.ORG Sun May 23 18:48:41 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CA04A1065674; Sun, 23 May 2010 18:48:41 +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 B691C8FC19; Sun, 23 May 2010 18:48:41 +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 o4NIme3u059616; Sun, 23 May 2010 18:48:40 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NIme3G059613; Sun, 23 May 2010 18:48:40 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201005231848.o4NIme3G059613@svn.freebsd.org> From: Doug Barton Date: Sun, 23 May 2010 18:48:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208456 - in vendor/bind9/dist-9.4: . doc/draft lib/dns X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 18:48:41 -0000 Author: dougb Date: Sun May 23 18:48:40 2010 New Revision: 208456 URL: http://svn.freebsd.org/changeset/base/208456 Log: Vendor import of BIND 9.4-ESV-R2 Added: vendor/bind9/dist-9.4/doc/draft/draft-ietf-behave-address-format-07.txt (contents, props changed) vendor/bind9/dist-9.4/doc/draft/draft-ietf-behave-dns64-09.txt (contents, props changed) vendor/bind9/dist-9.4/doc/draft/draft-ietf-dnsext-axfr-clarify-14.txt (contents, props changed) vendor/bind9/dist-9.4/doc/draft/draft-ietf-dnsext-dns-tcp-requirements-03.txt (contents, props changed) vendor/bind9/dist-9.4/doc/draft/draft-ietf-dnsext-dnssec-bis-updates-10.txt (contents, props changed) vendor/bind9/dist-9.4/doc/draft/draft-ietf-dnsext-dnssec-gost-07.txt (contents, props changed) vendor/bind9/dist-9.4/doc/draft/draft-ietf-dnsext-rfc2672bis-dname-19.txt (contents, props changed) vendor/bind9/dist-9.4/doc/draft/draft-ietf-dnsop-default-local-zones-10.txt (contents, props changed) Deleted: vendor/bind9/dist-9.4/doc/draft/draft-ietf-behave-dns64-06.txt vendor/bind9/dist-9.4/doc/draft/draft-ietf-dnsext-axfr-clarify-13.txt vendor/bind9/dist-9.4/doc/draft/draft-ietf-dnsext-dns-tcp-requirements-02.txt vendor/bind9/dist-9.4/doc/draft/draft-ietf-dnsext-dnssec-bis-updates-09.txt vendor/bind9/dist-9.4/doc/draft/draft-ietf-dnsext-dnssec-gost-06.txt vendor/bind9/dist-9.4/doc/draft/draft-ietf-dnsext-rfc2672bis-dname-18.txt vendor/bind9/dist-9.4/doc/draft/draft-ietf-dnsop-default-local-zones-09.txt Modified: vendor/bind9/dist-9.4/CHANGES vendor/bind9/dist-9.4/lib/dns/api vendor/bind9/dist-9.4/lib/dns/validator.c vendor/bind9/dist-9.4/version Modified: vendor/bind9/dist-9.4/CHANGES ============================================================================== --- vendor/bind9/dist-9.4/CHANGES Sun May 23 18:43:06 2010 (r208455) +++ vendor/bind9/dist-9.4/CHANGES Sun May 23 18:48:40 2010 (r208456) @@ -1,3 +1,8 @@ + --- 9.4-ESV-R2 released --- + +2876. [bug] Named could return SERVFAIL for negative responses + from unsigned zones. [RT #21131] + --- 9.4-ESV-R1 released --- 2852. [bug] Handle broken DNSSEC trust chains better. [RT #15619] Added: vendor/bind9/dist-9.4/doc/draft/draft-ietf-behave-address-format-07.txt ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/bind9/dist-9.4/doc/draft/draft-ietf-behave-address-format-07.txt Sun May 23 18:48:40 2010 (r208456) @@ -0,0 +1,1009 @@ + + + +Network Working Group C. Bao +Internet-Draft CERNET Center/Tsinghua University +Obsoletes: 2765 (if approved) C. Huitema +Updates: 4291 (if approved) Microsoft Corporation +Intended status: Standards Track M. Bagnulo +Expires: October 11, 2010 UC3M + M. Boucadair + France Telecom + X. Li + CERNET Center/Tsinghua University + April 9, 2010 + + + IPv6 Addressing of IPv4/IPv6 Translators + draft-ietf-behave-address-format-07.txt + +Abstract + + This document discusses the algorithmic translation of an IPv6 + address to a corresponding IPv4 address, and vice versa, using only + statically configured information. It defines a well-known prefix + for use in algorithmic translations, while allowing organizations to + also use network-specific prefixes when appropriate. Algorithmic + translation is used in IPv4/IPv6 translators, as well as other types + of proxies and gateways (e.g., for DNS) used in IPv4/IPv6 scenarios. + +Status of this Memo + + This Internet-Draft is submitted in full conformance with the + provisions of BCP 78 and BCP 79. + + Internet-Drafts are working documents of the Internet Engineering + Task Force (IETF). Note that other groups may also distribute + working documents as Internet-Drafts. The list of current Internet- + Drafts is at http://datatracker.ietf.org/drafts/current/. + + Internet-Drafts are draft documents valid for a maximum of six months + and may be updated, replaced, or obsoleted by other documents at any + time. It is inappropriate to use Internet-Drafts as reference + material or to cite them other than as "work in progress." + + This Internet-Draft will expire on October 11, 2010. + +Copyright Notice + + Copyright (c) 2010 IETF Trust and the persons identified as the + document authors. All rights reserved. + + + + +Bao, et al. Expires October 11, 2010 [Page 1] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + This document is subject to BCP 78 and the IETF Trust's Legal + Provisions Relating to IETF Documents + (http://trustee.ietf.org/license-info) in effect on the date of + publication of this document. Please review these documents + carefully, as they describe your rights and restrictions with respect + to this document. Code Components extracted from this document must + include Simplified BSD License text as described in Section 4.e of + the Trust Legal Provisions and are provided without warranty as + described in the Simplified BSD License. + + +Table of Contents + + 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 + 1.1. Applicability Scope . . . . . . . . . . . . . . . . . . . 3 + 1.2. Conventions . . . . . . . . . . . . . . . . . . . . . . . 3 + 1.3. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 + 2. IPv4-Embedded IPv6 Address Prefix and Format . . . . . . . . . 4 + 2.1. Well Known Prefix . . . . . . . . . . . . . . . . . . . . 4 + 2.2. IPv4-Embedded IPv6 Address Format . . . . . . . . . . . . 4 + 2.3. Address Translation Algorithms . . . . . . . . . . . . . . 6 + 2.4. Text Representation . . . . . . . . . . . . . . . . . . . 6 + 3. Deployment Guidelines and Choices . . . . . . . . . . . . . . 7 + 3.1. Restrictions on the use of the Well-Known Prefix . . . . . 7 + 3.2. Impact on Inter-Domain Routing . . . . . . . . . . . . . . 8 + 3.3. Choice of Prefix for Stateless Translation Deployments . . 8 + 3.4. Choice of Prefix for Stateful Translation Deployments . . 11 + 3.5. Choice of Suffix . . . . . . . . . . . . . . . . . . . . . 11 + 3.6. Choice of the Well-Known Prefix . . . . . . . . . . . . . 12 + 4. Security Considerations . . . . . . . . . . . . . . . . . . . 13 + 4.1. Protection Against Spoofing . . . . . . . . . . . . . . . 13 + 4.2. Secure Configuration . . . . . . . . . . . . . . . . . . . 14 + 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 + 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 14 + 7. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 14 + 8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 16 + 8.1. Normative References . . . . . . . . . . . . . . . . . . . 16 + 8.2. Informative References . . . . . . . . . . . . . . . . . . 16 + Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 16 + + + + + + + + + + + + +Bao, et al. Expires October 11, 2010 [Page 2] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + +1. Introduction + + This document is part of a series of IPv4/IPv6 translation documents. + A framework for IPv4/IPv6 translation is discussed in + [I-D.ietf-behave-v6v4-framework], including a taxonomy of scenarios + that will be used in this document. Other documents specify the + behavior of various types of translators and gateways, including + mechanisms for translating between IP headers and other types of + messages that include IP addresses. This document specifies how an + individual IPv6 address is translated to a corresponding IPv4 + address, and vice versa, in cases where an algorithmic mapping is + used. While specific types of devices are used herein as examples, + it is the responsibility of the specification of such devices to + reference this document for algorithmic mapping of the addresses + themselves. + + Section 2 describes the prefixes and the format of "IPv4-Embedded + IPv6 addresses", i.e., IPv6 addresses in which 32 bits contain an + IPv4 address. This format is common to both "IPv4-Converted" and + "IPv4-Translatable" IPv6 addresses. This section also defines the + algorithms for translating addresses, and the text representation of + IPv4-Embedded IPv6 addresses. + + Section 3 discusses the choice of prefixes, the conditions in which + they can be used, and the use of IPv4-Embedded IPv6 addresses with + stateless and stateful translation. + + Section 4 discusses security concerns. + + In some scenarios, a dual-stack host will unnecessarily send its + traffic through an IPv6/IPv4 translator. This can be caused by + host's default address selection algorithm [RFC3484], referrals, or + other reasons. Optimizing these scenarios for dual-stack hosts is + for future study. + +1.1. Applicability Scope + + This document is part of a series defining address translation + services. We understand that the address format could also be used + by other interconnection methods between IPv6 and IPv4, e.g., methods + based on encapsulation. If encapsulation methods are developed by + the IETF, we expect that their descriptions will document their + specific use of IPv4-Embedded IPv6 addresses. + +1.2. Conventions + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + + + +Bao, et al. Expires October 11, 2010 [Page 3] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + document are to be interpreted as described in RFC 2119 [RFC2119]. + +1.3. Terminology + + This document makes use of the following terms: + + IPv4/IPv6 translator: an entity that translates IPv4 packets to IPv6 + packets, and vice versa. It may do "stateless" translation, + meaning that there is no per-flow state required, or "stateful" + translation where per-flow state is created when the first packet + in a flow is received. + Address translator: any entity that has to derive an IPv4 address + from an IPv6 address or vice versa. This applies not only to + devices that do IPv4/IPv6 packet translation, but also to other + entities that manipulate addresses, such as name resolution + proxies (e.g. DNS64 [I-D.ietf-behave-dns64]) and possibly other + types of Application Layer Gateways (ALGs). + Well-Known Prefix: the IPv6 prefix defined in this document for use + in an algorithmic mapping. + Network-Specific Prefix: an IPv6 prefix assigned by an organization + for use in algorithmic mapping. Options for the Network Specific + Prefix are discussed in Section 3.3 and Section 3.4. + IPv4-Embedded IPv6 addresses: IPv6 addresses in which 32 bits + contain an IPv4 address. Their format is described in + Section 2.2. + IPv4-Converted IPv6 addresses: IPv6 addresses used to represent IPv4 + nodes in an IPv6 network. They are a variant of IPv4-Embedded + IPv6 addresses, and follow the format described in Section 2.2. + IPv4-Translatable IPv6 addresses: IPv6 addresses assigned to IPv6 + nodes for use with stateless translation. They are a variant of + IPv4-Embedded IPv6 addresses, and follow the format described in + Section 2.2. + + +2. IPv4-Embedded IPv6 Address Prefix and Format + +2.1. Well Known Prefix + + This document reserves a "Well-Known Prefix" for use in an + algorithmic mapping. The value of this IPv6 prefix is: + + 64:FF9B::/96 + +2.2. IPv4-Embedded IPv6 Address Format + + IPv4-Converted IPv6 addresses and IPv4-Translatable IPv6 addresses + follow the same format, described here as the IPv4-Embedded IPv6 + address Format. IPv4-Embedded IPv6 addresses are composed of a + + + +Bao, et al. Expires October 11, 2010 [Page 4] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + variable length prefix, the embedded IPv4 address, and a variable + length suffix, as presented in the following diagram, in which PL + designates the prefix length: + + + +--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + |PL| 0-------------32--40--48--56--64--72--80--88--96--104-112-120-| + +--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + |32| prefix |v4(32) | u | suffix | + +--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + |40| prefix |v4(24) | u |(8)| suffix | + +--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + |48| prefix |v4(16) | u | (16) | suffix | + +--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + |56| prefix |(8)| u | v4(24) | suffix | + +--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + |64| prefix | u | v4(32) | suffix | + +--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + |96| prefix | v4(32) | + +--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + + + Figure 1 + + In these addresses, the prefix shall be either the "Well-Known + Prefix", or a "Network-Specific Prefix" unique to the organization + deploying the address translators. The prefixes can only have one of + the following lengths: 32, 40, 48, 56, 64 or 96. (The Well-Known + prefic is 96 bits long, and can only be used in the last form of the + table.) + + Various deployments justify different prefix lengths with Network- + Specific prefixes. The tradeoff between different prefix lengths are + discussed in Section 3.3 and Section 3.4. + + Bits 64 to 71 of the address are reserved for compatibility with the + host identifier format defined in the IPv6 addressing architecture + [RFC4291]. These bits MUST be set to zero. When using a /96 + Network-Specific Prefix, the administrators MUST ensure that the bits + 64 to 71 are set to zero. A simple way to achieve that is to + construct the /96 Network-Specific Prefix by picking a /64 prefix, + and then adding four octets set to zero. + + The IPv4 address is encoded following the prefix, most significant + bits first. Depending of the prefix length, the 4 octets of the + address may be separated by the reserved octet "u", whose 8 bits MUST + be set to zero. In particular: + + + + +Bao, et al. Expires October 11, 2010 [Page 5] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + o When the prefix is 32 bits long, the IPv4 address is encoded in + positions 32 to 63. + o When the prefix is 40 bits long, 24 bits of the IPv4 address are + encoded in positions 40 to 63, with the remaining 8 bits in + position 72 to 79. + o When the prefix is 48 bits long, 16 bits of the IPv4 address are + encoded in positions 48 to 63, with the remaining 16 bits in + position 72 to 87. + o When the prefix is 56 bits long, 8 bits of the IPv4 address are + encoded in positions 56 to 63, with the remaining 24 bits in + position 72 to 95. + o When the prefix is 64 bits long, the IPv4 address is encoded in + positions 72 to 103. + o When the prefix is 96 bits long, the IPv4 address is encoded in + positions 96 to 127. + + There are no remaining bits, and thus no suffix, if the prefix is 96 + bits long. In the other cases, the remaining bits of the address + constitute the suffix. These bits are reserved for future + extensions, and SHOULD be set to zero. + +2.3. Address Translation Algorithms + + IPv4-Embedded IPv6 addresses are composed according to the following + algorithm: + o Concatenate the prefix, the 32 bits of the IPv4 address and the + null suffix if needed to obtain a 128 bit address. + o If the prefix length is less than 96 bits, insert the null octet + "u" at the appropriate position, thus causing the least + significant octet to be excluded, as documented in Figure 1. + + The IPv4 addresses are extracted from the IPv4-Embedded IPv6 + addresses according to the following algorithm: + o If the prefix is 96 bit long, extract the last 32 bits of the IPv6 + address; + o for the other prefix lengths, extract the "u" octet to obtain a + 120 bit sequence, then extract the 32 bits following the prefix. + +2.4. Text Representation + + IPv4-Embedded IPv6 addresses will be represented in text in + conformity with section 2.2 of [RFC4291]. IPv4-Embedded IPv6 + addresses constructed using the Well-Known Prefix or a /96 Network- + Specific Prefix may be represented using the alternative form + presented in section 2.2 of [RFC4291], with the embedded IPv4 address + represented in dotted decimal notation. Examples of such + representations are presented in Table 1 and Table 2. + + + + +Bao, et al. Expires October 11, 2010 [Page 6] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + +-----------------------+------------+------------------------------+ + | Network-Specific | IPv4 | IPv4-Embedded IPv6 address | + | Prefix | address | | + +-----------------------+------------+------------------------------+ + | 2001:DB8::/32 | 192.0.2.33 | 2001:DB8:C000:221:: | + | 2001:DB8:100::/40 | 192.0.2.33 | 2001:DB8:1C0:2:21:: | + | 2001:DB8:122::/48 | 192.0.2.33 | 2001:DB8:122:C000:2:2100:: | + | 2001:DB8:122:300::/56 | 192.0.2.33 | 2001:DB8:122:3C0:0:221:: | + | 2001:DB8:122:344::/64 | 192.0.2.33 | 2001:DB8:122:344:C0:2:2100:: | + | 2001:DB8:122:344::/96 | 192.0.2.33 | 2001:DB8:122:344::192.0.2.33 | + +-----------------------+------------+------------------------------+ + + Table 1: Text representation of IPv4-Embedded IPv6 addresses using + Network-Specific Prefixes + + +-------------------+--------------+----------------------------+ + | Well Known Prefix | IPv4 address | IPv4-Embedded IPv6 address | + +-------------------+--------------+----------------------------+ + | 64:FF9B::/96 | 192.0.2.33 | 64:FF9B::192.0.2.33 | + +-------------------+--------------+----------------------------+ + + Table 2: Text representation of IPv4-Embedded IPv6 addresses using + the Well-Known Prefix + + The Network-Specific Prefix examples in Table 1 are derived from the + IPv6 prefix reserved for documentation in [RFC3849]. The IPv4 + address 192.0.2.33 is part of the subnet 192.0.2.0/24 reserved for + documentation in [RFC5735]. + + +3. Deployment Guidelines and Choices + +3.1. Restrictions on the use of the Well-Known Prefix + + The Well-Known Prefix MAY be used by organizations deploying + translation services, as explained in Section 3.4. + + The Well-Known Prefix SHOULD NOT be used to construct IPv4- + Translatable addresses. The nodes served by IPv4-Translatable IPv6 + addresses should be able to receive global IPv6 traffic bound to + their IPv4-Translatable IPv6 address without incurring intermediate + protocol translation. This is only possible if the specific prefix + used to build the IPv4-Translatable IPv6 addresses is advertized in + inter-domain routing, but the advertisement of more specific prefixes + derived from the Well-Known Prefix is not supported, as explained in + Section 3.2. Network-Specific Prefixes SHOULD be used in these + scenarios, as explained in Section 3.3. + + + + +Bao, et al. Expires October 11, 2010 [Page 7] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + The Well-Known Prefix MUST NOT be used to represent non global IPv4 + addresses, such as those defined in [RFC1918]. + +3.2. Impact on Inter-Domain Routing + + The Well-Known Prefix MAY appear in inter-domain routing tables, if + service providers decide to provide IPv6-IPv4 interconnection + services to peers. Advertisement of the Well-Known Prefix SHOULD be + controlled either by upstream and/or downstream service providers + owing to inter-domain routing policies, e.g., through configuration + of BGP [RFC4271]. Organizations that advertize the Well-Known Prefix + in inter-domain routing MUST be able to provide IPv4/IPv6 translation + service. + + When the IPv4/IPv6 translation relies on the Well-Known Prefix, + embedded IPv6 prefixes longer than the Well-Known Prefix MUST NOT be + advertised in BGP (especially e-BGP) [RFC4271] because this leads to + importing the IPv4 routing table into the IPv6 one and therefore + induces scalability issues to the global IPv6 routing table. + Administrators of BGP nodes SHOULD configure filters that discard + advertisements of embedded IPv6 prefixes longer than the Well-Known + Prefix. + + When the IPv4/IPv6 translation service relies on Network-Specific + Prefixes, the IPv4-Translatable IPv6 prefixes used in stateless + translation MUST be advertised with proper aggregation to the IPv6 + Internet. Similarly, if translators are configured with multiple + Network-Specific Prefixes,these prefixes MUST be advertised to the + IPv6 Internet with proper aggregation. + +3.3. Choice of Prefix for Stateless Translation Deployments + + Organizations may deploy translation services using stateless + translation. In these deployments, internal IPv6 nodes are addressed + using IPv4-Translatable IPv6 addresses, which enable them to be + accessed by IPv4 nodes. The addresses of these external IPv4 nodes + are then represented in IPv4-Converted IPv6 addresses. + + Organizations deploying stateless IPv4/IPv6 translation SHOULD assign + a Network-Specific Prefix to their IPv4/IPv6 translation service. + IPv4-Translatable and IPv4-Converted IPv6 addresses MUST be + constructed as specified in Section 2.2. IPv4-Translatable IPv6 + addresses MUST use the selected Network-Specific Prefix. Both IPv4- + Translatable IPv6 addresses and IPv4-Converted IPv6 addresses SHOULD + use the same prefix. + + Using the same prefix ensures that IPv6 nodes internal to the + organization will use the most efficient paths to reach the nodes + + + +Bao, et al. Expires October 11, 2010 [Page 8] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + served by IPv4-Translatable IPv6 addresses. Specifically, if a node + learns the IPv4 address of a target internal node without knowing + that this target is in fact located behind the same translator that + the node also uses, translation rules will ensure that the IPv6 + address constructed with the Network-Specific prefix is the same as + the IPv4-Translatable IPv6 address assigned to the target. Standard + routing preference (more specific wins) will then ensure that the + IPv6 packets are delivered directly, without requiring "hair-pinning" + at the translator. + + The intra-domain routing protocol must be able to deliver packets to + the nodes served by IPv4-Translatable IPv6 addresses. This may + require routing on some or all of the embedded IPv4 address bits. + Security considerations detailed in Section 4 require that routers + check the validity of the IPv4-Translatable IPv6 source addresses, + using some form of reverse path check. + + The management of stateless address translation can be illustrated + with a small example. We will consider an IPv6 network with the + prefix 2001:DB8:122::/48. The network administrator has selected the + Network-Specific prefix 2001:DB8:122:344::/64 for managing stateless + IPv4/IPv6 translation. The IPv4-Translatable address block is 2001: + DB8:122:344:C0:2::/96 and this block is visible in IPv4 as the subnet + 192.0.2.0/24. In this network, the host A is assigned the IPv4- + Translatable IPv6 address 2001:DB8:122:344:C0:2:2100::, which + corresponds to the IPv4 address 192.0.2.33. Host A's address is + configured either manually or through DHCPv6. + + In this example, host A is not directly connected to the translator, + but instead to a link managed by a router R. The router R is + configured to forward to A the packets bound to 2001:DB8:122:344:C0: + 2:2100::. To receive these packets, R will advertise reachability of + the prefix 2001:DB8:122:344:C0:2:2100::/104 in the intra-domain + routing protocol -- or perhaps a shorter prefix if many hosts on link + have IPv4-Translatable IPv6 addresses derived from the same IPv4 + subnet. If a packet bound to 192.0.2.33 reaches the translator, the + destination address will be translated to 2001:DB8:122:344:C0:2: + 2100::, and the packet will be routed towards R and then to A. + + Let's suppose now that a host B of the same domain learns the IPv4 + address of A, maybe through an application-specific referral. If B + has translation-aware software, B can compose a destination address + by combining the Network-Specific Prefix 2001:DB8:122:344::/64 and + the IPv4 address 192.0.2.33, resulting in the address 2001:DB8:122: + 344:C0:2:2100::. The packet sent by B will be forwarded towards R, + and then to A, avoiding protocol translation. + + Forwarding, and reverse path checks, should be performed on the + + + +Bao, et al. Expires October 11, 2010 [Page 9] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + combination of the prefix and the IPv4 address. In theory, routers + should be able to route on prefixes of any length. However, routing + on prefixes larger than 64 bits may be slower on some routers. But + routing efficiency is not the only consideration in the choice of a + prefix length. Organizations also need to consider the availability + of prefixes, and the potential impact of all-zeroes identifiers. + + If a /32 prefix is used, all the routing bits are contained in the + top 64 bits of the IPv6 address, leading to excellent routing + properties. These prefixes may however be hard to obtain, and + allocation of a /32 to a small set of IPv4-Translatable IPv6 + addresses may be seen as wasteful. In addition, the /32 prefix and a + zero suffix leads to an all-zeroes interface identifier, an issue + that we discuss in Section 3.5. + + Intermediate prefix lengths such as /40, /48 or /56 appear as + compromises. Only some of the IPv4 bits are part of the /64 + prefixes. Reverse path checks, in particular, may have a limited + efficiency. Reverse path checks limited to the most significant bits + of the IPv4 address will reduce the possibility of spoofing external + IPv4 addresses, but would allow IPv6 nodes to spoof internal IPv4- + Translatable IPv6 addresses. + + We propose here a compromise, based on using no more than 1/256th of + an organization's allocation of IPv6 addresses for the IPv4/IPv6 + translation service. For example, if the organization is an Internet + Service Provider with an allocated IPv6 prefix /32 or shorter, the + ISP could dedicate a /40 prefix to the translation service. An end + site with a /48 allocation could dedicate a /56 prefix to the + translation service, or possibly a /96 prefix if all IPv4- + Translatable IPv6 addresses are located on the same link. + + The recommended prefix length is also a function of the deployment + scenario. The stateless translation can be used for Scenario 1, + Scenario 2, Scenario 5, and Scenario 6 defined in + [I-D.ietf-behave-v6v4-framework]. For different scenarios, the + prefix length recommendations are: + o For scenario 1 (an IPv6 network to the IPv4 Internet) and scenario + 2 (the IPv4 Internet to an IPv6 network), we recommend using a /40 + prefix for an ISP holding a /32 allocation, and a /56 prefix for a + site holding a /48 allocation. + o For scenario 5 (an IPv6 network to an IPv4 network) and scenario 6 + (an IPv4 network to an IPv6 network), we recommend using a /64 or + a /96 prefix. + + IPv4-Translatable IPv6 addresses SHOULD follow the IPv6 address + architecture and SHOULD be compatible with the IPv4 address + architecture. The first IPv4-translatable address is the subnet- + + + +Bao, et al. Expires October 11, 2010 [Page 10] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + router anycast address in IPv6 and network identifier in IPv4, the + last IPv4-translatable address is the subnet broadcast addresses in + IPv4. Both of them SHOULD NOT be used for IPv6 nodes. In addition, + the minimum IPv4 subnet can be used for hosts is /30 (the router + interface needs a valid address for the same subnet) and this rule + SHOULD also be applied to the corresponding subnet of the IPv4- + translatable addresses. + +3.4. Choice of Prefix for Stateful Translation Deployments + + Organizations may deploy translation services based on stateful + translation technology. An organization may decide to use either a + Network-Specific Prefix or the Well-Known Prefix for its stateful + IPv4/IPv6 translation service. + + When these services are used, IPv6 nodes are addressed through + standard IPv6 addresses, while IPv4 nodes are represented by IPv4- + Converted IPv6 addresses, as specified in Section 2.2. + + The stateful nature of the translation creates a potential stability + issue when the organization deploys multiple translators. If several + translators use the same prefix, there is a risk that packets + belonging to the same connection may be routed to different + translators as the internal routing state changes. This issue can be + avoided either by assigning different prefixes to different + translators, or by ensuring that all translators using same prefix + coordinate their state. + + Stateful translation can be used in scenarios defined in + [I-D.ietf-behave-v6v4-framework]. The Well Known Prefix SHOULD be + used in these scenarios, with two exceptions: + o In all scenarios, the translation MAY use a Network-Specific + Prefix, if deemed appropriate for management reasons. + o The Well-Known Prefix MUST NOT be used for scenario 3 (the IPv6 + Internet to an IPv4 network), as this would lead to using the + Well-Known Prefix with non-global IPv4 addresses. That means a + Network-Specific Prefix MUST be used in that scenario, for example + a /96 prefix compatible with the Well-Known prefix format. + +3.5. Choice of Suffix + + The address format described in Section 2.2 recommends a zero suffix. + Before making this recommendation, we considered different options: + checksum neutrality; the encoding of a port range; and a value + different than 0. + + In the case of stateless translation, there would be no need for the + translator to recompute a one's complement checksum if both the IPv4- + + + +Bao, et al. Expires October 11, 2010 [Page 11] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + Translatable and the IPv4-Converted IPv6 addresses were constructed + in a "checksum-neutral" manner, that is if the IPv6 addresses would + have the same one's complement checksum as the embedded IPv4 address. + In the case of stateful translation, checksum neutrality does not + eliminate checksum computation during translation, as only one of the + two addresses would be checksum neutral. We considered reserving 16 + bits in the suffix to guarantee checksum neutrality, but declined + because it would not help with stateful translation, and because + checksum neutrality can also be achieved by an appropriate choice of + the Network-Specific Prefix, as was done for example with the Well- + Known Prefix. + + There have been proposals to complement stateless translation with a + port-range feature. Instead of mapping an IPv4 address to exactly + one IPv6 prefix, the options would allow several IPv6 nodes to share + an IPv4 address, with each node managing a different range of ports. + If a port range extension is needed, it could be defined later, using + bits currently reserved as null in the suffix. + + When a /32 prefix is used, an all-zero suffix results in an all-zero + interface identifier. We understand the conflict with Section 2.6.1 + of RFC4291, which specifies that all zeroes are used for the subnet- + router anycast address. However, in our specification, there would + be only one node with an IPv4-Translatable IPv6 address in the /64 + subnet, and the anycast semantic would not create confusion. We thus + decided to keep the null suffix for now. This issue does not exist + for prefixes larger than 32 bits, such as the /40, /56, /64 and /96 + prefixes that we recommend in Section 3.3. + +3.6. Choice of the Well-Known Prefix + + Before making our recommendation of the Well-Known Prefix, we were + faced with three choices: + o reuse the IPv4-mapped prefix, ::FFFF:0:0/96, as specified in RFC + 2765 Section 2.1; + o request IANA to allocate a /32 prefix, + o or request allocation of a new /96 prefix. + + We weighted the pros and cons of these choices before settling on the + recommended /96 Well-Known Prefix. + + The main advantage of the existing IPv4-mapped prefix is that it is + already defined. Reusing that prefix would require minimal + standardization efforts. However, being already defined is not just + an advantage, as there may be side effects of current + implementations. When presented with the IPv4-mapped prefix, current + versions of Windows and MacOS generate IPv4 packets, but will not + send IPv6 packets. If we used the IPv4-mapped prefix, these nodes + + + +Bao, et al. Expires October 11, 2010 [Page 12] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + would not be able to support translation without modification. This + will defeat the main purpose of the translation techniques. We thus + eliminated the first choice, and decided to not reuse the IPv4-mapped + prefix, ::FFFF:0:0/96. + + A /32 prefix would have allowed the embedded IPv4 address to fit + within the top 64 bits of the IPv6 address. This would have + facilitated routing and load balancing when an organization deploys + several translators. However, such destination-address based load + balancing may not be desirable. It is not compatible with STUN in + the deployments involving multiple stateful translators, each one + having a different pool of IPv4 addresses. STUN compatibility would + only be achieved if the translators managed the same pool of IPv4 + addresses and were able to coordinate their translation state, in + which case there is no big advantage to using a /32 prefix rather + than a /96 prefix. + + According to Section 2.2 of [RFC4291], in the legal textual + representations of IPv6 addresses, dotted decimal can only appear at + the end. The /96 prefix is compatible with that requirement. It + enables the dotted decimal notation without requiring an update to + [RFC4291]. This representation makes the address format easier to + use, and log files easier to read. + + The prefix that we recommend has the particularity of being "checksum + neutral". The sum of the hexadecimal numbers "0064" and "FF9B" is + "FFFF", i.e. a value equal to zero in one's complement arithmetic. + An IPv4-Embedded IPv6 address constructed with this prefix will have + the same one's complement checksum as the embedded IPv4 address. + + +4. Security Considerations + +4.1. Protection Against Spoofing + + By and large, IPv4/IPv6 translators can be modeled as special + routers, are subject to the same risks, and can implement the same + mitigations. There is however a particular risk that directly + derives from the practice of embedding IPv4 addresses in IPv6: + address spoofing. + + An attacker could use an IPv4-Embedded IPv6 address as the source + address of malicious packets. After translation, the packets will + appear as IPv4 packets from the specified source, and the attacker + may be hard to track. If left without mitigation, the attack would + allow malicious IPv6 nodes to spoof arbitrary IPv4 addresses. + + The mitigation is to implement reverse path checks, and to verify + + + +Bao, et al. Expires October 11, 2010 [Page 13] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + throughout the network that packets are coming from an authorized + location. + +4.2. Secure Configuration + + The prefixes used for address translation are used by IPv6 nodes to + send packets to IPv6/IPv4 translators. Attackers could attempt to + fool nodes, DNS gateways, and IPv4/IPv6 translators into using wrong + values for these parameters, resulting in network disruption, denial + of service, and possible information disclosure. To mitigate such + attacks, network administrators need to ensure that prefixes are + configured in a secure way. + + The mechanisms for achieving secure configuration of prefixes are + beyond the scope of this document. + + +5. IANA Considerations + + The IANA is requested to add a note to the documentation of the + 0000::/8 address block in + http://www.iana.org/assignments/ipv6-address-space to document the + assignment by the IETF of the Well Known Prefix. For example: + + The "Well Known Prefix" 64:FF9B::/96 used in an algorithmic + mapping between IPv4 to IPv6 addresses is defined out of the + 0000::/8 address block, per (this document). + + +6. Acknowledgements + + Many people in the Behave WG have contributed to the discussion that + led to this document, including Andrew Sullivan, Andrew Yourtchenko, + Brian Carpenter, Dan Wing, Ed Jankiewicz, Fred Baker, Hiroshi Miyata, + Iljitsch van Beijnum, John Schnizlein, Keith Moore, Kevin Yin, Magnus + Westerlund, Margaret Wasserman, Masahito Endo, Phil Roberts, Philip + Matthews, Remi Denis-Courmont, Remi Despres and William Waites. + + Marcelo Bagnulo is partly funded by Trilogy, a research project + supported by the European Commission under its Seventh Framework + Program. + + +7. Contributors + + The following individuals co-authored drafts from which text has been + incorporated, and are listed in alphabetical order. + + + + +Bao, et al. Expires October 11, 2010 [Page 14] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + Congxiao Bao + CERNET Center/Tsinghua University + Room 225, Main Building, Tsinghua University + Beijing, 100084 + China + Phone: +86 62785983 + Email: congxiao@cernet.edu.cn + + Dave Thaler + Microsoft Corporation + One Microsoft Way + Redmond, WA 98052 + USA + Phone: +1 425 703 8835 + Email: dthaler@microsoft.com + + Fred Baker + Cisco Systems + Santa Barbara, California 93117 + USA + Phone: +1-408-526-4257 + Fax: +1-413-473-2403 + Email: fred@cisco.com + + Hiroshi Miyata + Yokogawa Electric Corporation + 2-9-32 Nakacho + Musashino-shi, Tokyo 180-8750 + JAPAN + Email: h.miyata@jp.yokogawa.com + + Marcelo Bagnulo + Universidad Carlos III de Madrid + Av. Universidad 30 + Leganes, Madrid 28911 + ESPANA + Email: marcelo@it.uc3m.es + + Xing Li + CERNET Center/Tsinghua University + Room 225, Main Building, Tsinghua University + Beijing, 100084 + China + Phone: +86 62785983 + Email: xing@cernet.edu.cn + + + + + + +Bao, et al. Expires October 11, 2010 [Page 15] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + +8. References + +8.1. Normative References + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, March 1997. + + [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing + Architecture", RFC 4291, February 2006. + +8.2. Informative References + + [I-D.ietf-behave-dns64] + Bagnulo, M., Sullivan, A., Matthews, P., and I. Beijnum, + "DNS64: DNS extensions for Network Address Translation + from IPv6 Clients to IPv4 Servers", + draft-ietf-behave-dns64-04 (work in progress), + December 2009. + + [I-D.ietf-behave-v6v4-framework] + Baker, F., Li, X., Bao, C., and K. Yin, "Framework for + IPv4/IPv6 Translation", + draft-ietf-behave-v6v4-framework-03 (work in progress), + October 2009. + + [RFC1918] Rekhter, Y., Moskowitz, R., Karrenberg, D., Groot, G., and + E. Lear, "Address Allocation for Private Internets", + BCP 5, RFC 1918, February 1996. + + [RFC3484] Draves, R., "Default Address Selection for Internet + Protocol version 6 (IPv6)", RFC 3484, February 2003. + + [RFC3849] Huston, G., Lord, A., and P. Smith, "IPv6 Address Prefix + Reserved for Documentation", RFC 3849, July 2004. + + [RFC4271] Rekhter, Y., Li, T., and S. Hares, "A Border Gateway + Protocol 4 (BGP-4)", RFC 4271, January 2006. + + [RFC5735] Cotton, M. and L. Vegoda, "Special Use IPv4 Addresses", + BCP 153, RFC 5735, January 2010. + + + + + + + + + + + +Bao, et al. Expires October 11, 2010 [Page 16] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + +Authors' Addresses + + Congxiao Bao + CERNET Center/Tsinghua University + Room 225, Main Building, Tsinghua University + Beijing, 100084 + China + + Phone: +86 10-62785983 + Email: congxiao@cernet.edu.cn + + + Christian Huitema + Microsoft Corporation + One Microsoft Way + Redmond, WA 98052-6399 + U.S.A. + + Email: huitema@microsoft.com + + + Marcelo Bagnulo + UC3M + Av. Universidad 30 + Leganes, Madrid 28911 + Spain + + Phone: +34-91-6249500 + Fax: + Email: marcelo@it.uc3m.es + URI: http://www.it.uc3m.es/marcelo + + + Mohamed Boucadair + France Telecom + 3, Av Francois Chateaux + Rennes 350000 + France + + Email: mohamed.boucadair@orange-ftgroup.com + + + + + + + + + + + +Bao, et al. Expires October 11, 2010 [Page 17] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + Xing Li + CERNET Center/Tsinghua University + Room 225, Main Building, Tsinghua University + Beijing, 100084 + China + + Phone: +86 10-62785983 + Email: xing@cernet.edu.cn + + + + + + + + + + + + + + + + + + + + + + + *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Sun May 23 18:49:15 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CA6FA106566B; Sun, 23 May 2010 18:49:15 +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 A19868FC15; Sun, 23 May 2010 18:49:15 +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 o4NInFpC059794; Sun, 23 May 2010 18:49:15 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NInFDT059793; Sun, 23 May 2010 18:49:15 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201005231849.o4NInFDT059793@svn.freebsd.org> From: Doug Barton Date: Sun, 23 May 2010 18:49:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208457 - vendor/bind9/9.4-ESV-R2 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 18:49:15 -0000 Author: dougb Date: Sun May 23 18:49:15 2010 New Revision: 208457 URL: http://svn.freebsd.org/changeset/base/208457 Log: Tag the 9.4-ESV-R2 release Added: vendor/bind9/9.4-ESV-R2/ - copied from r208456, vendor/bind9/dist-9.4/ From owner-svn-src-all@FreeBSD.ORG Sun May 23 19:10:06 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5DED8106566B; Sun, 23 May 2010 19:10:06 +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 4CF978FC08; Sun, 23 May 2010 19:10: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 o4NJA6WQ064379; Sun, 23 May 2010 19:10:06 GMT (envelope-from pjd@svn.freebsd.org) Received: (from pjd@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NJA6KX064377; Sun, 23 May 2010 19:10:06 GMT (envelope-from pjd@svn.freebsd.org) Message-Id: <201005231910.o4NJA6KX064377@svn.freebsd.org> From: Pawel Jakub Dawidek Date: Sun, 23 May 2010 19:10:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208458 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 19:10:06 -0000 Author: pjd Date: Sun May 23 19:10:06 2010 New Revision: 208458 URL: http://svn.freebsd.org/changeset/base/208458 Log: Create UMA zones unconditionally. MFC after: 3 days Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Sun May 23 18:49:15 2010 (r208457) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c Sun May 23 19:10:06 2010 (r208458) @@ -101,9 +101,6 @@ zio_init(void) zio_cache = kmem_cache_create("zio_cache", sizeof (zio_t), 0, NULL, NULL, NULL, NULL, NULL, 0); - if (!zio_use_uma) - goto end; - /* * For small buffers, we want a cache for each multiple of * SPA_MINBLOCKSIZE. For medium-size buffers, we want a cache @@ -147,7 +144,7 @@ zio_init(void) if (zio_data_buf_cache[c - 1] == NULL) zio_data_buf_cache[c - 1] = zio_data_buf_cache[c]; } -end: + zio_inject_init(); } From owner-svn-src-all@FreeBSD.ORG Sun May 23 19:46:20 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 57D4D1065670; Sun, 23 May 2010 19:46:20 +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 46B1C8FC17; Sun, 23 May 2010 19:46:20 +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 o4NJkJLx072304; Sun, 23 May 2010 19:46:19 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NJkJLL072302; Sun, 23 May 2010 19:46:19 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201005231946.o4NJkJLL072302@svn.freebsd.org> From: Marius Strobl Date: Sun, 23 May 2010 19:46:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208459 - head/release/doc/en_US.ISO8859-1/hardware X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 19:46:20 -0000 Author: marius Date: Sun May 23 19:46:19 2010 New Revision: 208459 URL: http://svn.freebsd.org/changeset/base/208459 Log: 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. Approved by: blackend MFC after: 3 days Modified: head/release/doc/en_US.ISO8859-1/hardware/article.sgml Modified: head/release/doc/en_US.ISO8859-1/hardware/article.sgml ============================================================================== --- head/release/doc/en_US.ISO8859-1/hardware/article.sgml Sun May 23 19:10:06 2010 (r208458) +++ head/release/doc/en_US.ISO8859-1/hardware/article.sgml Sun May 23 19:46:19 2010 (r208459) @@ -36,6 +36,7 @@ &tm-attrib.freebsd; &tm-attrib.amd; + &tm-attrib.fujitsu; &tm-attrib.ibm; &tm-attrib.intel; &tm-attrib.sparc; @@ -367,7 +368,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. @@ -392,6 +394,10 @@ + Naturetech GENIALstation 777S + + + &sun.blade; 100 @@ -400,7 +406,7 @@ - &sun.enterprise; 100 + &sun.enterprise; 150 @@ -420,6 +426,11 @@ + &sun.fire; B100s (support for the on-board NICs first + appeared in 8.1-RELEASE) + + + &sun.fire; V100 @@ -428,51 +439,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 @@ -528,7 +543,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: @@ -580,11 +595,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;: @@ -599,7 +619,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-all@FreeBSD.ORG Sun May 23 19:48:54 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 85B19106566C; Sun, 23 May 2010 19:48:54 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 75A388FC08; Sun, 23 May 2010 19:48: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 o4NJmsMF072899; Sun, 23 May 2010 19:48:54 GMT (envelope-from sbruno@svn.freebsd.org) Received: (from sbruno@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NJmsEV072897; Sun, 23 May 2010 19:48:54 GMT (envelope-from sbruno@svn.freebsd.org) Message-Id: <201005231948.o4NJmsEV072897@svn.freebsd.org> From: Sean Bruno Date: Sun, 23 May 2010 19:48:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208460 - head/usr.sbin/iostat X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 19:48:54 -0000 Author: sbruno Date: Sun May 23 19:48:54 2010 New Revision: 208460 URL: http://svn.freebsd.org/changeset/base/208460 Log: Explain how the new sub-second interval from changeset:208389 works. Approved by: scottl(mentor) Obtained from: Yahoo Inc. MFC after: 2 weeks Modified: head/usr.sbin/iostat/iostat.8 Modified: head/usr.sbin/iostat/iostat.8 ============================================================================== --- head/usr.sbin/iostat/iostat.8 Sun May 23 19:46:19 2010 (r208459) +++ head/usr.sbin/iostat/iostat.8 Sun May 23 19:48:54 2010 (r208460) @@ -241,7 +241,14 @@ If no repeat is specified, the default is infinity. The .Nm -command will accept and honor a non-integer number of seconds. +command will accept and honor a non-integer number of seconds. Note that +the interval only has millisecond granularity. Smaller values will be +truncated. +.Pp +e.g. -w1.0001 becomes -w1.000 +.Pp +The interval will also suffer from modifications to hz so your mileage +may vary. .It Fl x Show extended disk statistics. Each disk is displayed on a line of its own with all available statistics. From owner-svn-src-all@FreeBSD.ORG Sun May 23 20:00:12 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BE135106566B; Sun, 23 May 2010 20:00:12 +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 AD48E8FC1C; Sun, 23 May 2010 20:00:12 +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 o4NK0CCE075454; Sun, 23 May 2010 20:00:12 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NK0CAv075452; Sun, 23 May 2010 20:00:12 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201005232000.o4NK0CAv075452@svn.freebsd.org> From: Nathan Whitehorn Date: Sun, 23 May 2010 20:00:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208461 - head/release/doc/en_US.ISO8859-1/hardware X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 20:00:12 -0000 Author: nwhitehorn Date: Sun May 23 20:00:12 2010 New Revision: 208461 URL: http://svn.freebsd.org/changeset/base/208461 Log: Revise PowerPC hardware notes to reflect status for 8.1. Modified: head/release/doc/en_US.ISO8859-1/hardware/article.sgml Modified: head/release/doc/en_US.ISO8859-1/hardware/article.sgml ============================================================================== --- head/release/doc/en_US.ISO8859-1/hardware/article.sgml Sun May 23 19:48:54 2010 (r208460) +++ head/release/doc/en_US.ISO8859-1/hardware/article.sgml Sun May 23 20:00:12 2010 (r208461) @@ -327,12 +327,18 @@ All systems listed below are fully supported, with the exception that software fan control is currently missing on - the Power Macintosh G5. SMP is supported on all systems with - more than 1 processor. + some Power Macintosh G5 models. SMP is supported on all systems + with more than 1 processor. - Apple iMac + Apple iMac G3 + + + Apple iMac G4 + + + Apple iMac G5 Apple Power Macintosh G3 (Blue & White) @@ -341,10 +347,16 @@ Apple Power Macintosh G4 - Apple Power Macintosh G5 (non-970MP models) + Apple Power Macintosh G5 + + + Apple iBook G3 + + + Apple iBook G4 - Apple iBook + Apple PowerBook G3 (Lombard and Pismo) Apple PowerBook G4 From owner-svn-src-all@FreeBSD.ORG Sun May 23 20:08:41 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A433A1065757; Sun, 23 May 2010 20:08:41 +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 93F888FC1E; Sun, 23 May 2010 20:08:41 +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 o4NK8fZR077342; Sun, 23 May 2010 20:08:41 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NK8fFD077340; Sun, 23 May 2010 20:08:41 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201005232008.o4NK8fFD077340@svn.freebsd.org> From: Marius Strobl Date: Sun, 23 May 2010 20:08:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208462 - head/sys/modules/uart X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 20:08:41 -0000 Author: marius Date: Sun May 23 20:08:41 2010 New Revision: 208462 URL: http://svn.freebsd.org/changeset/base/208462 Log: Correct the path to the MD source so r206569 actually works as intended. Modified: head/sys/modules/uart/Makefile Modified: head/sys/modules/uart/Makefile ============================================================================== --- head/sys/modules/uart/Makefile Sun May 23 20:00:12 2010 (r208461) +++ head/sys/modules/uart/Makefile Sun May 23 20:08:41 2010 (r208462) @@ -16,7 +16,7 @@ SRCS= uart_bus_acpi.c ${uart_bus_ebus} u uart_if.c uart_if.h uart_subr.c uart_tty.c .if ${MACHINE} == "sun4v" SRCS+= uart_cpu_sparc64.c -.elif exists(${CURDIR}/uart_cpu_${MACHINE}.c) +.elif exists(${.CURDIR}/../../dev/uart/uart_cpu_${MACHINE}.c) SRCS+= uart_cpu_${MACHINE}.c .endif SRCS+= bus_if.h card_if.h device_if.h isa_if.h ${ofw_bus_if} pci_if.h \ From owner-svn-src-all@FreeBSD.ORG Sun May 23 20:10:11 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Sun May 23 20:16:18 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C3AA31065676; Sun, 23 May 2010 20:16:18 +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 B286E8FC0C; Sun, 23 May 2010 20:16:18 +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 o4NKGIVW079166; Sun, 23 May 2010 20:16:18 GMT (envelope-from brueffer@svn.freebsd.org) Received: (from brueffer@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NKGInF079164; Sun, 23 May 2010 20:16:18 GMT (envelope-from brueffer@svn.freebsd.org) Message-Id: <201005232016.o4NKGInF079164@svn.freebsd.org> From: Christian Brueffer Date: Sun, 23 May 2010 20:16:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208464 - stable/7/share/man/man4 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 20:16:18 -0000 Author: brueffer Date: Sun May 23 20:16:18 2010 New Revision: 208464 URL: http://svn.freebsd.org/changeset/base/208464 Log: MFC: r208053 Mention LSI Logic FC949E. Modified: stable/7/share/man/man4/mpt.4 Directory Properties: stable/7/share/man/man4/ (props changed) Modified: stable/7/share/man/man4/mpt.4 ============================================================================== --- stable/7/share/man/man4/mpt.4 Sun May 23 20:10:11 2010 (r208463) +++ stable/7/share/man/man4/mpt.4 Sun May 23 20:16:18 2010 (r208464) @@ -35,7 +35,7 @@ .\" .\" $FreeBSD$ .\" -.Dd April 6, 2007 +.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-all@FreeBSD.ORG Sun May 23 20:18:51 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Sun May 23 20:20:04 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DA77A1065675; Sun, 23 May 2010 20:20:04 +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 C99348FC12; Sun, 23 May 2010 20:20: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 o4NKK4Rp080079; Sun, 23 May 2010 20:20:04 GMT (envelope-from brueffer@svn.freebsd.org) Received: (from brueffer@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NKK4O0080077; Sun, 23 May 2010 20:20:04 GMT (envelope-from brueffer@svn.freebsd.org) Message-Id: <201005232020.o4NKK4O0080077@svn.freebsd.org> From: Christian Brueffer Date: Sun, 23 May 2010 20:20:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208466 - stable/7/usr.sbin/mtree X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 20:20:05 -0000 Author: brueffer Date: Sun May 23 20:20:04 2010 New Revision: 208466 URL: http://svn.freebsd.org/changeset/base/208466 Log: MFC: r208056 Wording fixes. Modified: stable/7/usr.sbin/mtree/mtree.8 Directory Properties: stable/7/usr.sbin/mtree/ (props changed) Modified: stable/7/usr.sbin/mtree/mtree.8 ============================================================================== --- stable/7/usr.sbin/mtree/mtree.8 Sun May 23 20:18:51 2010 (r208465) +++ stable/7/usr.sbin/mtree/mtree.8 Sun May 23 20:20:04 2010 (r208466) @@ -91,7 +91,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 @@ -129,7 +129,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-all@FreeBSD.ORG Sun May 23 20:23:34 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Sun May 23 20:24:03 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 90F651065673; Sun, 23 May 2010 20:24:03 +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 807738FC25; Sun, 23 May 2010 20:24:03 +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 o4NKO3kR081062; Sun, 23 May 2010 20:24:03 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NKO3Wd081059; Sun, 23 May 2010 20:24:03 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201005232024.o4NKO3Wd081059@svn.freebsd.org> From: Marius Strobl Date: Sun, 23 May 2010 20:24:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208468 - in head/sys/modules: ata/atadisk cam X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 20:24:03 -0000 Author: marius Date: Sun May 23 20:24:03 2010 New Revision: 208468 URL: http://svn.freebsd.org/changeset/base/208468 Log: At least on sparc64 these modules require ata_machdep.c. MFC after: 3 days Modified: head/sys/modules/ata/atadisk/Makefile head/sys/modules/cam/Makefile Modified: head/sys/modules/ata/atadisk/Makefile ============================================================================== --- head/sys/modules/ata/atadisk/Makefile Sun May 23 20:23:34 2010 (r208467) +++ head/sys/modules/ata/atadisk/Makefile Sun May 23 20:24:03 2010 (r208468) @@ -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: head/sys/modules/cam/Makefile ============================================================================== --- head/sys/modules/cam/Makefile Sun May 23 20:23:34 2010 (r208467) +++ head/sys/modules/cam/Makefile Sun May 23 20:24:03 2010 (r208468) @@ -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-all@FreeBSD.ORG Sun May 23 20:24:36 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0B0D91065677; Sun, 23 May 2010 20:24:36 +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 EE0F38FC15; Sun, 23 May 2010 20:24:35 +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 o4NKOZQ7081201; Sun, 23 May 2010 20:24:35 GMT (envelope-from brueffer@svn.freebsd.org) Received: (from brueffer@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NKOZmT081199; Sun, 23 May 2010 20:24:35 GMT (envelope-from brueffer@svn.freebsd.org) Message-Id: <201005232024.o4NKOZmT081199@svn.freebsd.org> From: Christian Brueffer Date: Sun, 23 May 2010 20:24:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208469 - stable/7/usr.sbin/cron/crontab X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 20:24:36 -0000 Author: brueffer Date: Sun May 23 20:24:35 2010 New Revision: 208469 URL: http://svn.freebsd.org/changeset/base/208469 Log: MFC: r208054 List /var/cron/tabs in FILES and add descriptions for the other entries. Modified: stable/7/usr.sbin/cron/crontab/crontab.1 Directory Properties: stable/7/usr.sbin/cron/ (props changed) stable/7/usr.sbin/cron/cron/ (props changed) Modified: stable/7/usr.sbin/cron/crontab/crontab.1 ============================================================================== --- stable/7/usr.sbin/cron/crontab/crontab.1 Sun May 23 20:24:03 2010 (r208468) +++ stable/7/usr.sbin/cron/crontab/crontab.1 Sun May 23 20:24:35 2010 (r208469) @@ -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-all@FreeBSD.ORG Sun May 23 20:27:13 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Sun May 23 20:28:06 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D9F1A1065670; Sun, 23 May 2010 20:28:06 +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 C94E78FC20; Sun, 23 May 2010 20:28: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 o4NKS6SI082082; Sun, 23 May 2010 20:28:06 GMT (envelope-from brueffer@svn.freebsd.org) Received: (from brueffer@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NKS6Ir082080; Sun, 23 May 2010 20:28:06 GMT (envelope-from brueffer@svn.freebsd.org) Message-Id: <201005232028.o4NKS6Ir082080@svn.freebsd.org> From: Christian Brueffer Date: Sun, 23 May 2010 20:28:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208471 - stable/7/sbin/restore X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 20:28:07 -0000 Author: brueffer Date: Sun May 23 20:28:06 2010 New Revision: 208471 URL: http://svn.freebsd.org/changeset/base/208471 Log: MFC: r207998 Fix grammar in a line of output. Modified: stable/7/sbin/restore/symtab.c Directory Properties: stable/7/sbin/restore/ (props changed) Modified: stable/7/sbin/restore/symtab.c ============================================================================== --- stable/7/sbin/restore/symtab.c Sun May 23 20:27:13 2010 (r208470) +++ stable/7/sbin/restore/symtab.c Sun May 23 20:28:06 2010 (r208471) @@ -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-all@FreeBSD.ORG Sun May 23 21:02:44 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3D6621065672; Sun, 23 May 2010 21:02:44 +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 2BB568FC18; Sun, 23 May 2010 21:02: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 o4NL2i57089773; Sun, 23 May 2010 21:02:44 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NL2iVl089770; Sun, 23 May 2010 21:02:44 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201005232102.o4NL2iVl089770@svn.freebsd.org> From: Martin Matuska Date: Sun, 23 May 2010 21:02:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208472 - in head: cddl/contrib/opensolaris/lib/libzfs/common sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 21:02:44 -0000 Author: mm Date: Sun May 23 21:02:43 2010 New Revision: 208472 URL: http://svn.freebsd.org/changeset/base/208472 Log: Fix zfs receive temporarily changing unchanged stream properties. Fix possible panic with zfs_enable_datasets. OpenSolaris onnv revision: 8536:33bd5de3260e Approved by: pjd, delphij (mentor) Obtained from: OpenSolaris (Bug ID 6748561, 6757075) MFC after: 3 days Modified: head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_mount.c head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Modified: head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_mount.c ============================================================================== --- head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_mount.c Sun May 23 20:28:06 2010 (r208471) +++ head/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_mount.c Sun May 23 21:02:43 2010 (r208472) @@ -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: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Sun May 23 20:28:06 2010 (r208471) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c Sun May 23 21:02:43 2010 (r208472) @@ -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-all@FreeBSD.ORG Sun May 23 21:15:37 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Sun May 23 21:16:34 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F230D1065672; Sun, 23 May 2010 21:16: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 E1F418FC17; Sun, 23 May 2010 21:16: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 o4NLGYSE092840; Sun, 23 May 2010 21:16:34 GMT (envelope-from mm@svn.freebsd.org) Received: (from mm@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NLGYAE092838; Sun, 23 May 2010 21:16:34 GMT (envelope-from mm@svn.freebsd.org) Message-Id: <201005232116.o4NLGYAE092838@svn.freebsd.org> From: Martin Matuska Date: Sun, 23 May 2010 21:16:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208474 - head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 21:16:35 -0000 Author: mm Date: Sun May 23 21:16:34 2010 New Revision: 208474 URL: http://svn.freebsd.org/changeset/base/208474 Log: 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) MFC after: 3 days Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Modified: head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c ============================================================================== --- head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Sun May 23 21:15:36 2010 (r208473) +++ head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c Sun May 23 21:16:34 2010 (r208474) @@ -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. */ From owner-svn-src-all@FreeBSD.ORG Sun May 23 21:57:45 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Sun May 23 22:10:20 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 64EB3106564A; Sun, 23 May 2010 22:10:20 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 546ED8FC08; Sun, 23 May 2010 22:10:20 +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 o4NMAKXa004719; Sun, 23 May 2010 22:10:20 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4NMAK1v004716; Sun, 23 May 2010 22:10:20 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201005232210.o4NMAK1v004716@svn.freebsd.org> From: Jilles Tjoelker Date: Sun, 23 May 2010 22:10:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208476 - head/tools/regression/bin/sh/builtins X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 23 May 2010 22:10:20 -0000 Author: jilles Date: Sun May 23 22:10:20 2010 New Revision: 208476 URL: http://svn.freebsd.org/changeset/base/208476 Log: sh: Add some simplistic tests for the wait builtin. Added: head/tools/regression/bin/sh/builtins/wait1.0 (contents, props changed) head/tools/regression/bin/sh/builtins/wait2.0 (contents, props changed) Added: head/tools/regression/bin/sh/builtins/wait1.0 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/regression/bin/sh/builtins/wait1.0 Sun May 23 22:10:20 2010 (r208476) @@ -0,0 +1,23 @@ +# $FreeBSD$ + +failures= +failure() { + echo "Error at line $1" >&2 + failures=x$failures +} + +exit 4 & p4=$! +exit 8 & p8=$! +wait $p4 +[ $? = 4 ] || failure $LINENO +wait $p8 +[ $? = 8 ] || failure $LINENO + +exit 3 & p3=$! +exit 7 & p7=$! +wait $p7 +[ $? = 7 ] || failure $LINENO +wait $p3 +[ $? = 3 ] || failure $LINENO + +test -z "$failures" Added: head/tools/regression/bin/sh/builtins/wait2.0 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/regression/bin/sh/builtins/wait2.0 Sun May 23 22:10:20 2010 (r208476) @@ -0,0 +1,15 @@ +# $FreeBSD$ + +failures= +failure() { + echo "Error at line $1" >&2 + failures=x$failures +} + +for i in 1 2 3 4 5 6 7 8 9 10; do + exit $i & +done +wait || failure $LINENO +wait || failure $LINENO + +test -z "$failures" From owner-svn-src-all@FreeBSD.ORG Mon May 24 01:44:30 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Mon May 24 01:46:06 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Mon May 24 01:49:00 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D1BC4106566B; Mon, 24 May 2010 01:49:00 +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 C0B498FC14; Mon, 24 May 2010 01:49:00 +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 o4O1n0Zn052521; Mon, 24 May 2010 01:49:00 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4O1n094052519; Mon, 24 May 2010 01:49:00 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201005240149.o4O1n094052519@svn.freebsd.org> From: Alexander Motin Date: Mon, 24 May 2010 01:49:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208479 - head/sys/x86/x86 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 01:49:00 -0000 Author: mav Date: Mon May 24 01:49:00 2010 New Revision: 208479 URL: http://svn.freebsd.org/changeset/base/208479 Log: Restore different APIC init orders for i386 and amd64 unified in r208452. Seems noone of them contents both arch for different reasons. Submitted by: kib@ Modified: head/sys/x86/x86/local_apic.c Modified: head/sys/x86/x86/local_apic.c ============================================================================== --- head/sys/x86/x86/local_apic.c Mon May 24 01:46:06 2010 (r208478) +++ head/sys/x86/x86/local_apic.c Mon May 24 01:49:00 2010 (r208479) @@ -1195,8 +1195,9 @@ apic_register_enumerator(struct apic_enu } /* - * Probe the APIC enumerators, enumerate CPUs, and initialize the - * local APIC. + * We have to look for CPU's very, very early because certain subsystems + * want to know how many CPU's we have extremely early on in the boot + * process. */ static void apic_init(void *dummy __unused) @@ -1257,13 +1258,34 @@ apic_init(void *dummy __unused) printf("%s: Failed to probe CPUs: returned %d\n", best_enum->apic_name, retval); +#ifdef __amd64__ +} +SYSINIT(apic_init, SI_SUB_TUNABLES - 1, SI_ORDER_SECOND, apic_init, NULL); + +/* + * Setup the local APIC. We have to do this prior to starting up the APs + * in the SMP case. + */ +static void +apic_setup_local(void *dummy __unused) +{ + int retval; + + if (best_enum == NULL) + return; +#endif /* Third, initialize the local APIC. */ retval = best_enum->apic_setup_local(); if (retval != 0) printf("%s: Failed to setup the local APIC: returned %d\n", best_enum->apic_name, retval); } +#ifdef __amd64__ +SYSINIT(apic_setup_local, SI_SUB_CPU, SI_ORDER_SECOND, apic_setup_local, + NULL); +#else SYSINIT(apic_init, SI_SUB_CPU, SI_ORDER_SECOND, apic_init, NULL); +#endif /* * Setup the I/O APICs. From owner-svn-src-all@FreeBSD.ORG Mon May 24 06:01:37 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A6E09106566B; Mon, 24 May 2010 06:01:37 +0000 (UTC) (envelope-from jchandra@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9500B8FC12; Mon, 24 May 2010 06:01: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 o4O61baZ008201; Mon, 24 May 2010 06:01:37 GMT (envelope-from jchandra@svn.freebsd.org) Received: (from jchandra@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4O61bm9008200; Mon, 24 May 2010 06:01:37 GMT (envelope-from jchandra@svn.freebsd.org) Message-Id: <201005240601.o4O61bm9008200@svn.freebsd.org> From: "Jayachandran C." Date: Mon, 24 May 2010 06:01:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208480 - head/sys/mips/rmi X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 06:01:37 -0000 Author: jchandra Date: Mon May 24 06:01:37 2010 New Revision: 208480 URL: http://svn.freebsd.org/changeset/base/208480 Log: Remove unused code in sys/mips/rmi : - ehcireg.h,ehcivar.h : USB related files from old merge - pcibus.c : was merged into xlr_pci.c earlier - xlr_boot1_console.c : obsolete console code using bootloader hooks - sys/mips/rmi/perfmon* : obsolete custom performance monitoring code Approved by: rrs (mentor) Deleted: head/sys/mips/rmi/ehcireg.h head/sys/mips/rmi/ehcivar.h head/sys/mips/rmi/pcibus.c head/sys/mips/rmi/perfmon.h head/sys/mips/rmi/perfmon_kern.c head/sys/mips/rmi/perfmon_percpu.c head/sys/mips/rmi/perfmon_utils.h head/sys/mips/rmi/perfmon_xlrconfig.h head/sys/mips/rmi/xlr_boot1_console.c From owner-svn-src-all@FreeBSD.ORG Mon May 24 06:07:56 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Mon May 24 06:11:34 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Mon May 24 06:26:39 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1C1C7106566B; Mon, 24 May 2010 06:26:39 +0000 (UTC) (envelope-from uqs@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 074568FC0A; Mon, 24 May 2010 06:26: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 o4O6QdTf013795; Mon, 24 May 2010 06:26:39 GMT (envelope-from uqs@svn.freebsd.org) Received: (from uqs@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4O6QcCH013777; Mon, 24 May 2010 06:26:38 GMT (envelope-from uqs@svn.freebsd.org) Message-Id: <201005240626.o4O6QcCH013777@svn.freebsd.org> From: Ulrich Spoerlein Date: Mon, 24 May 2010 06:26:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208483 - in head/contrib: bsnmp/gensnmpdef bsnmp/gensnmptree bsnmp/lib bsnmp/snmp_mibII bsnmp/snmpd ngatm/man ngatm/snmp_atm ngatm/sscop X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 06:26:39 -0000 Author: uqs Date: Mon May 24 06:26:38 2010 New Revision: 208483 URL: http://svn.freebsd.org/changeset/base/208483 Log: mdoc: consistently spell our email addresses Reviewed by: ru Approved by: harti Modified: head/contrib/bsnmp/gensnmpdef/gensnmpdef.1 head/contrib/bsnmp/gensnmptree/gensnmptree.1 head/contrib/bsnmp/lib/asn1.3 head/contrib/bsnmp/lib/bsnmpagent.3 head/contrib/bsnmp/lib/bsnmpclient.3 head/contrib/bsnmp/lib/bsnmplib.3 head/contrib/bsnmp/snmp_mibII/snmp_mibII.3 head/contrib/bsnmp/snmpd/bsnmpd.1 head/contrib/bsnmp/snmpd/snmpmod.3 head/contrib/ngatm/man/libngatm.3 head/contrib/ngatm/man/uniaddr.3 head/contrib/ngatm/man/unifunc.3 head/contrib/ngatm/man/unimsg.3 head/contrib/ngatm/man/unisap.3 head/contrib/ngatm/man/unistruct.3 head/contrib/ngatm/snmp_atm/snmp_atm.3 head/contrib/ngatm/sscop/sscop.1 Modified: head/contrib/bsnmp/gensnmpdef/gensnmpdef.1 ============================================================================== --- head/contrib/bsnmp/gensnmpdef/gensnmpdef.1 Mon May 24 06:11:33 2010 (r208482) +++ head/contrib/bsnmp/gensnmpdef/gensnmpdef.1 Mon May 24 06:26:38 2010 (r208483) @@ -3,7 +3,7 @@ .\" Hartmut Brandt. .\" All rights reserved. .\" -.\" Author: Harti Brandt +.\" Author: Harti Brandt .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions @@ -78,7 +78,7 @@ file by hand. .Sh SEE ALSO .Xr snmpd 1 .Sh AUTHORS -.An Hartmut Brandt Aq harti@freebsd.org +.An Hartmut Brandt Aq harti@FreeBSD.org .Sh BUGS The utility is by no means bullet-proof and may fail for complex or non-standard MIBs. Modified: head/contrib/bsnmp/gensnmptree/gensnmptree.1 ============================================================================== --- head/contrib/bsnmp/gensnmptree/gensnmptree.1 Mon May 24 06:11:33 2010 (r208482) +++ head/contrib/bsnmp/gensnmptree/gensnmptree.1 Mon May 24 06:26:38 2010 (r208483) @@ -6,7 +6,7 @@ .\" Hartmut Brandt .\" All rights reserved. .\" -.\" Author: Harti Brandt +.\" Author: Harti Brandt .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions @@ -243,4 +243,4 @@ typedef AdminStatus ENUM ( .Sh SEE ALSO .Xr bsnmpd 1 .Sh AUTHORS -.An Hartmut Brandt Aq harti@freebsd.org +.An Hartmut Brandt Aq harti@FreeBSD.org Modified: head/contrib/bsnmp/lib/asn1.3 ============================================================================== --- head/contrib/bsnmp/lib/asn1.3 Mon May 24 06:11:33 2010 (r208482) +++ head/contrib/bsnmp/lib/asn1.3 Mon May 24 06:26:38 2010 (r208483) @@ -6,7 +6,7 @@ .\" Fraunhofer Institute for Open Communication Systems (FhG Fokus). .\" All rights reserved. .\" -.\" Author: Harti Brandt +.\" Author: Harti Brandt .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions @@ -489,4 +489,4 @@ followed by the error message and an opt This implementation conforms to the applicable IETF RFCs and ITU-T recommendations. .Sh AUTHORS -.An Hartmut Brandt Aq harti@freebsd.org +.An Hartmut Brandt Aq harti@FreeBSD.org Modified: head/contrib/bsnmp/lib/bsnmpagent.3 ============================================================================== --- head/contrib/bsnmp/lib/bsnmpagent.3 Mon May 24 06:11:33 2010 (r208482) +++ head/contrib/bsnmp/lib/bsnmpagent.3 Mon May 24 06:26:38 2010 (r208483) @@ -6,7 +6,7 @@ .\" Fraunhofer Institute for Open Communication Systems (FhG Fokus). .\" All rights reserved. .\" -.\" Author: Harti Brandt +.\" Author: Harti Brandt .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions @@ -441,4 +441,4 @@ Additionally the functions may call snmp This implementation conforms to the applicable IETF RFCs and ITU-T recommendations. .Sh AUTHORS -.An Hartmut Brandt Aq harti@freebsd.org +.An Hartmut Brandt Aq harti@FreeBSD.org Modified: head/contrib/bsnmp/lib/bsnmpclient.3 ============================================================================== --- head/contrib/bsnmp/lib/bsnmpclient.3 Mon May 24 06:11:33 2010 (r208482) +++ head/contrib/bsnmp/lib/bsnmpclient.3 Mon May 24 06:26:38 2010 (r208483) @@ -6,7 +6,7 @@ .\" Fraunhofer Institute for Open Communication Systems (FhG Fokus). .\" All rights reserved. .\" -.\" Author: Harti Brandt +.\" Author: Harti Brandt .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions @@ -654,5 +654,5 @@ filed of This implementation conforms to the applicable IETF RFCs and ITU-T recommendations. .Sh AUTHORS -.An Hartmut Brandt Aq harti@freebsd.org +.An Hartmut Brandt Aq harti@FreeBSD.org .An Kendy Kutzner Aq kutzner@fokus.gmd.de Modified: head/contrib/bsnmp/lib/bsnmplib.3 ============================================================================== --- head/contrib/bsnmp/lib/bsnmplib.3 Mon May 24 06:11:33 2010 (r208482) +++ head/contrib/bsnmp/lib/bsnmplib.3 Mon May 24 06:26:38 2010 (r208483) @@ -6,7 +6,7 @@ .\" Fraunhofer Institute for Open Communication Systems (FhG Fokus). .\" All rights reserved. .\" -.\" Author: Harti Brandt +.\" Author: Harti Brandt .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions @@ -302,4 +302,4 @@ Encoding failed. This implementation conforms to the applicable IETF RFCs and ITU-T recommendations. .Sh AUTHORS -.An Hartmut Brandt Aq harti@freebsd.org +.An Hartmut Brandt Aq harti@FreeBSD.org Modified: head/contrib/bsnmp/snmp_mibII/snmp_mibII.3 ============================================================================== --- head/contrib/bsnmp/snmp_mibII/snmp_mibII.3 Mon May 24 06:11:33 2010 (r208482) +++ head/contrib/bsnmp/snmp_mibII/snmp_mibII.3 Mon May 24 06:26:38 2010 (r208483) @@ -6,7 +6,7 @@ .\" Fraunhofer Institute for Open Communication Systems (FhG Fokus). .\" All rights reserved. .\" -.\" Author: Harti Brandt +.\" Author: Harti Brandt .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions @@ -363,4 +363,4 @@ The various internet MIBs. .Sh STANDARDS This implementation conforms to the applicable IETF RFCs. .Sh AUTHORS -.An Hartmut Brandt Aq harti@freebsd.org +.An Hartmut Brandt Aq harti@FreeBSD.org Modified: head/contrib/bsnmp/snmpd/bsnmpd.1 ============================================================================== --- head/contrib/bsnmp/snmpd/bsnmpd.1 Mon May 24 06:11:33 2010 (r208482) +++ head/contrib/bsnmp/snmpd/bsnmpd.1 Mon May 24 06:26:38 2010 (r208483) @@ -6,7 +6,7 @@ .\" Fraunhofer Institute for Open Communication Systems (FhG Fokus). .\" All rights reserved. .\" -.\" Author: Harti Brandt +.\" Author: Harti Brandt .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions @@ -271,6 +271,6 @@ The .Nm conforms to the applicable IETF RFCs. .Sh AUTHORS -.An Hartmut Brandt Aq harti@freebsd.org +.An Hartmut Brandt Aq harti@FreeBSD.org .Sh BUGS Sure. Modified: head/contrib/bsnmp/snmpd/snmpmod.3 ============================================================================== --- head/contrib/bsnmp/snmpd/snmpmod.3 Mon May 24 06:11:33 2010 (r208482) +++ head/contrib/bsnmp/snmpd/snmpmod.3 Mon May 24 06:26:38 2010 (r208483) @@ -6,7 +6,7 @@ .\" Fraunhofer Institute for Open Communication Systems (FhG Fokus). .\" All rights reserved. .\" -.\" Author: Harti Brandt +.\" Author: Harti Brandt .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions @@ -926,4 +926,4 @@ beginning at position This implementation conforms to the applicable IETF RFCs and ITU-T recommendations. .Sh AUTHORS -.An Hartmut Brandt Aq harti@freebsd.org +.An Hartmut Brandt Aq harti@FreeBSD.org Modified: head/contrib/ngatm/man/libngatm.3 ============================================================================== --- head/contrib/ngatm/man/libngatm.3 Mon May 24 06:11:33 2010 (r208482) +++ head/contrib/ngatm/man/libngatm.3 Mon May 24 06:26:38 2010 (r208483) @@ -6,7 +6,7 @@ .\" Fraunhofer Institute for Open Communication Systems (FhG Fokus). .\" All rights reserved. .\" -.\" Author: Hartmut Brandt +.\" Author: Hartmut Brandt .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions @@ -72,4 +72,4 @@ describes address structures and handlin This implementation conforms to the applicable ITU-T recommendations and ATM Forum standards. .Sh AUTHORS -.An Hartmut Brandt Aq harti@freebsd.org +.An Hartmut Brandt Aq harti@FreeBSD.org Modified: head/contrib/ngatm/man/uniaddr.3 ============================================================================== --- head/contrib/ngatm/man/uniaddr.3 Mon May 24 06:11:33 2010 (r208482) +++ head/contrib/ngatm/man/uniaddr.3 Mon May 24 06:26:38 2010 (r208483) @@ -6,7 +6,7 @@ .\" Fraunhofer Institute for Open Communication Systems (FhG Fokus). .\" All rights reserved. .\" -.\" Author: Hartmut Brandt +.\" Author: Hartmut Brandt .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions @@ -126,4 +126,4 @@ embedded E.164 NSAP or one of the additi .Sh SEE ALSO .Xr libngatm 3 .Sh AUTHORS -.An Hartmut Brandt Aq harti@freebsd.org +.An Hartmut Brandt Aq harti@FreeBSD.org Modified: head/contrib/ngatm/man/unifunc.3 ============================================================================== --- head/contrib/ngatm/man/unifunc.3 Mon May 24 06:11:33 2010 (r208482) +++ head/contrib/ngatm/man/unifunc.3 Mon May 24 06:26:38 2010 (r208483) @@ -6,7 +6,7 @@ .\" Fraunhofer Institute for Open Communication Systems (FhG Fokus). .\" All rights reserved. .\" -.\" Author: Hartmut Brandt +.\" Author: Hartmut Brandt .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions @@ -252,4 +252,4 @@ This implementation conforms to the appl recommendations and ATM Forum standards with the exception of some limitations (see the Configuration section). .Sh AUTHORS -.An Hartmut Brandt Aq harti@freebsd.org +.An Hartmut Brandt Aq harti@FreeBSD.org Modified: head/contrib/ngatm/man/unimsg.3 ============================================================================== --- head/contrib/ngatm/man/unimsg.3 Mon May 24 06:11:33 2010 (r208482) +++ head/contrib/ngatm/man/unimsg.3 Mon May 24 06:26:38 2010 (r208483) @@ -27,7 +27,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" Author: Hartmut Brandt +.\" Author: Hartmut Brandt .\" .\" $Begemot: libunimsg/man/unimsg.3,v 1.4 2005/06/15 11:37:10 brandt_h Exp $ .\" @@ -246,4 +246,4 @@ All three functions do not check that th .Xr libunimsg 3 , .Xr mbuf 9 .Sh AUTHORS -.An Hartmut Brandt Aq harti@freebsd.org +.An Hartmut Brandt Aq harti@FreeBSD.org Modified: head/contrib/ngatm/man/unisap.3 ============================================================================== --- head/contrib/ngatm/man/unisap.3 Mon May 24 06:11:33 2010 (r208482) +++ head/contrib/ngatm/man/unisap.3 Mon May 24 06:26:38 2010 (r208483) @@ -27,7 +27,7 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" Author: Hartmut Brandt +.\" Author: Hartmut Brandt .\" .\" $Begemot: libunimsg/man/unisap.3,v 1.5 2005/06/15 11:37:11 brandt_h Exp $ .\" @@ -262,4 +262,4 @@ It returns 1 if they match and 0 otherwi .Sh SEE ALSO .Xr libunimsg 3 .Sh AUTHORS -.An Hartmut Brandt Aq harti@freebsd.org +.An Hartmut Brandt Aq harti@FreeBSD.org Modified: head/contrib/ngatm/man/unistruct.3 ============================================================================== --- head/contrib/ngatm/man/unistruct.3 Mon May 24 06:11:33 2010 (r208482) +++ head/contrib/ngatm/man/unistruct.3 Mon May 24 06:26:38 2010 (r208483) @@ -6,7 +6,7 @@ .\" Fraunhofer Institute for Open Communication Systems (FhG Fokus). .\" All rights reserved. .\" -.\" Author: Hartmut Brandt +.\" Author: Hartmut Brandt .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions @@ -320,4 +320,4 @@ This implementation conforms to the appl recommendations and ATM Forum standards with the exception of some limitations (see the Configuration section). .Sh AUTHORS -.An Hartmut Brandt Aq harti@freebsd.org +.An Hartmut Brandt Aq harti@FreeBSD.org Modified: head/contrib/ngatm/snmp_atm/snmp_atm.3 ============================================================================== --- head/contrib/ngatm/snmp_atm/snmp_atm.3 Mon May 24 06:11:33 2010 (r208482) +++ head/contrib/ngatm/snmp_atm/snmp_atm.3 Mon May 24 06:26:38 2010 (r208483) @@ -6,7 +6,7 @@ .\" Hartmut Brandt. .\" All rights reserved. .\" -.\" Author: Hartmut Brandt +.\" Author: Hartmut Brandt .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions @@ -215,4 +215,4 @@ This is the MIB that is implemented by t .Xr snmpmod 3 , .Xr snmp_netgraph 3 .Sh AUTHORS -.An Hartmut Brandt Aq harti@freebsd.org +.An Hartmut Brandt Aq harti@FreeBSD.org Modified: head/contrib/ngatm/sscop/sscop.1 ============================================================================== --- head/contrib/ngatm/sscop/sscop.1 Mon May 24 06:11:33 2010 (r208482) +++ head/contrib/ngatm/sscop/sscop.1 Mon May 24 06:26:38 2010 (r208483) @@ -3,7 +3,7 @@ .\" Fraunhofer Institute for Open Communication Systems (FhG Fokus). .\" All rights reserved. .\" -.\" Author: Harti Brandt +.\" Author: Harti Brandt .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions @@ -166,4 +166,4 @@ cat Makefile | sscop -reF | sscop -weF .Sh STANDARDS The implemented protocol conforms to ITU-T recommendation Q.2110. .Sh AUTHORS -.An Hartmut Brandt Aq harti@freebsd.org +.An Hartmut Brandt Aq harti@FreeBSD.org From owner-svn-src-all@FreeBSD.ORG Mon May 24 06:33:15 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7656F106566C; Mon, 24 May 2010 06:33:15 +0000 (UTC) (envelope-from uqs@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 64E3E8FC08; Mon, 24 May 2010 06:33:15 +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 o4O6XFmY015260; Mon, 24 May 2010 06:33:15 GMT (envelope-from uqs@svn.freebsd.org) Received: (from uqs@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4O6XFjV015258; Mon, 24 May 2010 06:33:15 GMT (envelope-from uqs@svn.freebsd.org) Message-Id: <201005240633.o4O6XFjV015258@svn.freebsd.org> From: Ulrich Spoerlein Date: Mon, 24 May 2010 06:33:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208484 - head/bin/pax X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 06:33:15 -0000 Author: uqs Date: Mon May 24 06:33:14 2010 New Revision: 208484 URL: http://svn.freebsd.org/changeset/base/208484 Log: Fix back references in substitute command for pax(1) pax(1) was trying to copy the back-referenced data from the match pattern, not the matched data. PR: bin/118132 Obtained from: Debian bug #451361 Reviewed by: jilles MFC after: 3 weeks Modified: head/bin/pax/pat_rep.c Modified: head/bin/pax/pat_rep.c ============================================================================== --- head/bin/pax/pat_rep.c Mon May 24 06:26:38 2010 (r208483) +++ head/bin/pax/pat_rep.c Mon May 24 06:33:14 2010 (r208484) @@ -76,7 +76,7 @@ static char * range_match(char *, int); #ifdef NET2_REGEX static int resub(regexp *, char *, char *, char *); #else -static int resub(regex_t *, regmatch_t *, char *, char *, char *); +static int resub(regex_t *, regmatch_t *, char *, char *, char *, char *); #endif /* @@ -929,7 +929,7 @@ rep_name(char *name, int *nlen, int prnt # ifdef NET2_REGEX if ((res = resub(pt->rcmp,pt->nstr,outpt,endpt)) < 0) { # else - if ((res = resub(&(pt->rcmp),pm,pt->nstr,outpt,endpt)) + if ((res = resub(&(pt->rcmp),pm,inpt,pt->nstr,outpt,endpt)) < 0) { # endif if (prnt) @@ -1071,7 +1071,7 @@ resub(regexp *prog, char *src, char *des */ static int -resub(regex_t *rp, regmatch_t *pm, char *src, char *dest, +resub(regex_t *rp, regmatch_t *pm, char *orig, char *src, char *dest, char *destend) { char *spt; @@ -1121,7 +1121,7 @@ resub(regex_t *rp, regmatch_t *pm, char */ if (len > (destend - dpt)) len = destend - dpt; - if (l_strncpy(dpt, src + pmpt->rm_so, len) != len) + if (l_strncpy(dpt, orig + pmpt->rm_so, len) != len) return(-1); dpt += len; } From owner-svn-src-all@FreeBSD.ORG Mon May 24 06:41:57 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8ACD01065674; Mon, 24 May 2010 06:41:57 +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 762808FC12; Mon, 24 May 2010 06:41: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 o4O6fvEZ017178; Mon, 24 May 2010 06:41:57 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4O6fvqJ017175; Mon, 24 May 2010 06:41:57 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201005240641.o4O6fvqJ017175@svn.freebsd.org> From: Doug Barton Date: Mon, 24 May 2010 06:41:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208485 - in stable/7/contrib/bind9: . doc/draft lib/dns X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 06:41:57 -0000 Author: dougb Date: Mon May 24 06:41:57 2010 New Revision: 208485 URL: http://svn.freebsd.org/changeset/base/208485 Log: Upgrade to 9.4-ESV-R2, which addresses the following: Named could return SERVFAIL for negative responses from unsigned zones. Added: stable/7/contrib/bind9/doc/draft/draft-ietf-behave-address-format-07.txt - copied unchanged from r208479, vendor/bind9/dist-9.4/doc/draft/draft-ietf-behave-address-format-07.txt stable/7/contrib/bind9/doc/draft/draft-ietf-behave-dns64-09.txt - copied unchanged from r208479, vendor/bind9/dist-9.4/doc/draft/draft-ietf-behave-dns64-09.txt stable/7/contrib/bind9/doc/draft/draft-ietf-dnsext-axfr-clarify-14.txt - copied unchanged from r208479, vendor/bind9/dist-9.4/doc/draft/draft-ietf-dnsext-axfr-clarify-14.txt stable/7/contrib/bind9/doc/draft/draft-ietf-dnsext-dns-tcp-requirements-03.txt - copied unchanged from r208479, vendor/bind9/dist-9.4/doc/draft/draft-ietf-dnsext-dns-tcp-requirements-03.txt stable/7/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-bis-updates-10.txt - copied unchanged from r208479, vendor/bind9/dist-9.4/doc/draft/draft-ietf-dnsext-dnssec-bis-updates-10.txt stable/7/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-gost-07.txt - copied unchanged from r208479, vendor/bind9/dist-9.4/doc/draft/draft-ietf-dnsext-dnssec-gost-07.txt stable/7/contrib/bind9/doc/draft/draft-ietf-dnsext-rfc2672bis-dname-19.txt - copied unchanged from r208479, vendor/bind9/dist-9.4/doc/draft/draft-ietf-dnsext-rfc2672bis-dname-19.txt stable/7/contrib/bind9/doc/draft/draft-ietf-dnsop-default-local-zones-10.txt - copied unchanged from r208479, vendor/bind9/dist-9.4/doc/draft/draft-ietf-dnsop-default-local-zones-10.txt Deleted: stable/7/contrib/bind9/doc/draft/draft-ietf-behave-dns64-06.txt stable/7/contrib/bind9/doc/draft/draft-ietf-dnsext-axfr-clarify-13.txt stable/7/contrib/bind9/doc/draft/draft-ietf-dnsext-dns-tcp-requirements-02.txt stable/7/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-bis-updates-09.txt stable/7/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-gost-06.txt stable/7/contrib/bind9/doc/draft/draft-ietf-dnsext-rfc2672bis-dname-18.txt stable/7/contrib/bind9/doc/draft/draft-ietf-dnsop-default-local-zones-09.txt Modified: stable/7/contrib/bind9/CHANGES stable/7/contrib/bind9/lib/dns/api stable/7/contrib/bind9/lib/dns/validator.c stable/7/contrib/bind9/version Directory Properties: stable/7/contrib/bind9/ (props changed) Modified: stable/7/contrib/bind9/CHANGES ============================================================================== --- stable/7/contrib/bind9/CHANGES Mon May 24 06:33:14 2010 (r208484) +++ stable/7/contrib/bind9/CHANGES Mon May 24 06:41:57 2010 (r208485) @@ -1,3 +1,8 @@ + --- 9.4-ESV-R2 released --- + +2876. [bug] Named could return SERVFAIL for negative responses + from unsigned zones. [RT #21131] + --- 9.4-ESV-R1 released --- 2852. [bug] Handle broken DNSSEC trust chains better. [RT #15619] Copied: stable/7/contrib/bind9/doc/draft/draft-ietf-behave-address-format-07.txt (from r208479, vendor/bind9/dist-9.4/doc/draft/draft-ietf-behave-address-format-07.txt) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/7/contrib/bind9/doc/draft/draft-ietf-behave-address-format-07.txt Mon May 24 06:41:57 2010 (r208485, copy of r208479, vendor/bind9/dist-9.4/doc/draft/draft-ietf-behave-address-format-07.txt) @@ -0,0 +1,1009 @@ + + + +Network Working Group C. Bao +Internet-Draft CERNET Center/Tsinghua University +Obsoletes: 2765 (if approved) C. Huitema +Updates: 4291 (if approved) Microsoft Corporation +Intended status: Standards Track M. Bagnulo +Expires: October 11, 2010 UC3M + M. Boucadair + France Telecom + X. Li + CERNET Center/Tsinghua University + April 9, 2010 + + + IPv6 Addressing of IPv4/IPv6 Translators + draft-ietf-behave-address-format-07.txt + +Abstract + + This document discusses the algorithmic translation of an IPv6 + address to a corresponding IPv4 address, and vice versa, using only + statically configured information. It defines a well-known prefix + for use in algorithmic translations, while allowing organizations to + also use network-specific prefixes when appropriate. Algorithmic + translation is used in IPv4/IPv6 translators, as well as other types + of proxies and gateways (e.g., for DNS) used in IPv4/IPv6 scenarios. + +Status of this Memo + + This Internet-Draft is submitted in full conformance with the + provisions of BCP 78 and BCP 79. + + Internet-Drafts are working documents of the Internet Engineering + Task Force (IETF). Note that other groups may also distribute + working documents as Internet-Drafts. The list of current Internet- + Drafts is at http://datatracker.ietf.org/drafts/current/. + + Internet-Drafts are draft documents valid for a maximum of six months + and may be updated, replaced, or obsoleted by other documents at any + time. It is inappropriate to use Internet-Drafts as reference + material or to cite them other than as "work in progress." + + This Internet-Draft will expire on October 11, 2010. + +Copyright Notice + + Copyright (c) 2010 IETF Trust and the persons identified as the + document authors. All rights reserved. + + + + +Bao, et al. Expires October 11, 2010 [Page 1] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + This document is subject to BCP 78 and the IETF Trust's Legal + Provisions Relating to IETF Documents + (http://trustee.ietf.org/license-info) in effect on the date of + publication of this document. Please review these documents + carefully, as they describe your rights and restrictions with respect + to this document. Code Components extracted from this document must + include Simplified BSD License text as described in Section 4.e of + the Trust Legal Provisions and are provided without warranty as + described in the Simplified BSD License. + + +Table of Contents + + 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 + 1.1. Applicability Scope . . . . . . . . . . . . . . . . . . . 3 + 1.2. Conventions . . . . . . . . . . . . . . . . . . . . . . . 3 + 1.3. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4 + 2. IPv4-Embedded IPv6 Address Prefix and Format . . . . . . . . . 4 + 2.1. Well Known Prefix . . . . . . . . . . . . . . . . . . . . 4 + 2.2. IPv4-Embedded IPv6 Address Format . . . . . . . . . . . . 4 + 2.3. Address Translation Algorithms . . . . . . . . . . . . . . 6 + 2.4. Text Representation . . . . . . . . . . . . . . . . . . . 6 + 3. Deployment Guidelines and Choices . . . . . . . . . . . . . . 7 + 3.1. Restrictions on the use of the Well-Known Prefix . . . . . 7 + 3.2. Impact on Inter-Domain Routing . . . . . . . . . . . . . . 8 + 3.3. Choice of Prefix for Stateless Translation Deployments . . 8 + 3.4. Choice of Prefix for Stateful Translation Deployments . . 11 + 3.5. Choice of Suffix . . . . . . . . . . . . . . . . . . . . . 11 + 3.6. Choice of the Well-Known Prefix . . . . . . . . . . . . . 12 + 4. Security Considerations . . . . . . . . . . . . . . . . . . . 13 + 4.1. Protection Against Spoofing . . . . . . . . . . . . . . . 13 + 4.2. Secure Configuration . . . . . . . . . . . . . . . . . . . 14 + 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 14 + 6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 14 + 7. Contributors . . . . . . . . . . . . . . . . . . . . . . . . . 14 + 8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 16 + 8.1. Normative References . . . . . . . . . . . . . . . . . . . 16 + 8.2. Informative References . . . . . . . . . . . . . . . . . . 16 + Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 16 + + + + + + + + + + + + +Bao, et al. Expires October 11, 2010 [Page 2] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + +1. Introduction + + This document is part of a series of IPv4/IPv6 translation documents. + A framework for IPv4/IPv6 translation is discussed in + [I-D.ietf-behave-v6v4-framework], including a taxonomy of scenarios + that will be used in this document. Other documents specify the + behavior of various types of translators and gateways, including + mechanisms for translating between IP headers and other types of + messages that include IP addresses. This document specifies how an + individual IPv6 address is translated to a corresponding IPv4 + address, and vice versa, in cases where an algorithmic mapping is + used. While specific types of devices are used herein as examples, + it is the responsibility of the specification of such devices to + reference this document for algorithmic mapping of the addresses + themselves. + + Section 2 describes the prefixes and the format of "IPv4-Embedded + IPv6 addresses", i.e., IPv6 addresses in which 32 bits contain an + IPv4 address. This format is common to both "IPv4-Converted" and + "IPv4-Translatable" IPv6 addresses. This section also defines the + algorithms for translating addresses, and the text representation of + IPv4-Embedded IPv6 addresses. + + Section 3 discusses the choice of prefixes, the conditions in which + they can be used, and the use of IPv4-Embedded IPv6 addresses with + stateless and stateful translation. + + Section 4 discusses security concerns. + + In some scenarios, a dual-stack host will unnecessarily send its + traffic through an IPv6/IPv4 translator. This can be caused by + host's default address selection algorithm [RFC3484], referrals, or + other reasons. Optimizing these scenarios for dual-stack hosts is + for future study. + +1.1. Applicability Scope + + This document is part of a series defining address translation + services. We understand that the address format could also be used + by other interconnection methods between IPv6 and IPv4, e.g., methods + based on encapsulation. If encapsulation methods are developed by + the IETF, we expect that their descriptions will document their + specific use of IPv4-Embedded IPv6 addresses. + +1.2. Conventions + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + + + +Bao, et al. Expires October 11, 2010 [Page 3] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + document are to be interpreted as described in RFC 2119 [RFC2119]. + +1.3. Terminology + + This document makes use of the following terms: + + IPv4/IPv6 translator: an entity that translates IPv4 packets to IPv6 + packets, and vice versa. It may do "stateless" translation, + meaning that there is no per-flow state required, or "stateful" + translation where per-flow state is created when the first packet + in a flow is received. + Address translator: any entity that has to derive an IPv4 address + from an IPv6 address or vice versa. This applies not only to + devices that do IPv4/IPv6 packet translation, but also to other + entities that manipulate addresses, such as name resolution + proxies (e.g. DNS64 [I-D.ietf-behave-dns64]) and possibly other + types of Application Layer Gateways (ALGs). + Well-Known Prefix: the IPv6 prefix defined in this document for use + in an algorithmic mapping. + Network-Specific Prefix: an IPv6 prefix assigned by an organization + for use in algorithmic mapping. Options for the Network Specific + Prefix are discussed in Section 3.3 and Section 3.4. + IPv4-Embedded IPv6 addresses: IPv6 addresses in which 32 bits + contain an IPv4 address. Their format is described in + Section 2.2. + IPv4-Converted IPv6 addresses: IPv6 addresses used to represent IPv4 + nodes in an IPv6 network. They are a variant of IPv4-Embedded + IPv6 addresses, and follow the format described in Section 2.2. + IPv4-Translatable IPv6 addresses: IPv6 addresses assigned to IPv6 + nodes for use with stateless translation. They are a variant of + IPv4-Embedded IPv6 addresses, and follow the format described in + Section 2.2. + + +2. IPv4-Embedded IPv6 Address Prefix and Format + +2.1. Well Known Prefix + + This document reserves a "Well-Known Prefix" for use in an + algorithmic mapping. The value of this IPv6 prefix is: + + 64:FF9B::/96 + +2.2. IPv4-Embedded IPv6 Address Format + + IPv4-Converted IPv6 addresses and IPv4-Translatable IPv6 addresses + follow the same format, described here as the IPv4-Embedded IPv6 + address Format. IPv4-Embedded IPv6 addresses are composed of a + + + +Bao, et al. Expires October 11, 2010 [Page 4] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + variable length prefix, the embedded IPv4 address, and a variable + length suffix, as presented in the following diagram, in which PL + designates the prefix length: + + + +--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + |PL| 0-------------32--40--48--56--64--72--80--88--96--104-112-120-| + +--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + |32| prefix |v4(32) | u | suffix | + +--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + |40| prefix |v4(24) | u |(8)| suffix | + +--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + |48| prefix |v4(16) | u | (16) | suffix | + +--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + |56| prefix |(8)| u | v4(24) | suffix | + +--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + |64| prefix | u | v4(32) | suffix | + +--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + |96| prefix | v4(32) | + +--+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ + + + Figure 1 + + In these addresses, the prefix shall be either the "Well-Known + Prefix", or a "Network-Specific Prefix" unique to the organization + deploying the address translators. The prefixes can only have one of + the following lengths: 32, 40, 48, 56, 64 or 96. (The Well-Known + prefic is 96 bits long, and can only be used in the last form of the + table.) + + Various deployments justify different prefix lengths with Network- + Specific prefixes. The tradeoff between different prefix lengths are + discussed in Section 3.3 and Section 3.4. + + Bits 64 to 71 of the address are reserved for compatibility with the + host identifier format defined in the IPv6 addressing architecture + [RFC4291]. These bits MUST be set to zero. When using a /96 + Network-Specific Prefix, the administrators MUST ensure that the bits + 64 to 71 are set to zero. A simple way to achieve that is to + construct the /96 Network-Specific Prefix by picking a /64 prefix, + and then adding four octets set to zero. + + The IPv4 address is encoded following the prefix, most significant + bits first. Depending of the prefix length, the 4 octets of the + address may be separated by the reserved octet "u", whose 8 bits MUST + be set to zero. In particular: + + + + +Bao, et al. Expires October 11, 2010 [Page 5] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + o When the prefix is 32 bits long, the IPv4 address is encoded in + positions 32 to 63. + o When the prefix is 40 bits long, 24 bits of the IPv4 address are + encoded in positions 40 to 63, with the remaining 8 bits in + position 72 to 79. + o When the prefix is 48 bits long, 16 bits of the IPv4 address are + encoded in positions 48 to 63, with the remaining 16 bits in + position 72 to 87. + o When the prefix is 56 bits long, 8 bits of the IPv4 address are + encoded in positions 56 to 63, with the remaining 24 bits in + position 72 to 95. + o When the prefix is 64 bits long, the IPv4 address is encoded in + positions 72 to 103. + o When the prefix is 96 bits long, the IPv4 address is encoded in + positions 96 to 127. + + There are no remaining bits, and thus no suffix, if the prefix is 96 + bits long. In the other cases, the remaining bits of the address + constitute the suffix. These bits are reserved for future + extensions, and SHOULD be set to zero. + +2.3. Address Translation Algorithms + + IPv4-Embedded IPv6 addresses are composed according to the following + algorithm: + o Concatenate the prefix, the 32 bits of the IPv4 address and the + null suffix if needed to obtain a 128 bit address. + o If the prefix length is less than 96 bits, insert the null octet + "u" at the appropriate position, thus causing the least + significant octet to be excluded, as documented in Figure 1. + + The IPv4 addresses are extracted from the IPv4-Embedded IPv6 + addresses according to the following algorithm: + o If the prefix is 96 bit long, extract the last 32 bits of the IPv6 + address; + o for the other prefix lengths, extract the "u" octet to obtain a + 120 bit sequence, then extract the 32 bits following the prefix. + +2.4. Text Representation + + IPv4-Embedded IPv6 addresses will be represented in text in + conformity with section 2.2 of [RFC4291]. IPv4-Embedded IPv6 + addresses constructed using the Well-Known Prefix or a /96 Network- + Specific Prefix may be represented using the alternative form + presented in section 2.2 of [RFC4291], with the embedded IPv4 address + represented in dotted decimal notation. Examples of such + representations are presented in Table 1 and Table 2. + + + + +Bao, et al. Expires October 11, 2010 [Page 6] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + +-----------------------+------------+------------------------------+ + | Network-Specific | IPv4 | IPv4-Embedded IPv6 address | + | Prefix | address | | + +-----------------------+------------+------------------------------+ + | 2001:DB8::/32 | 192.0.2.33 | 2001:DB8:C000:221:: | + | 2001:DB8:100::/40 | 192.0.2.33 | 2001:DB8:1C0:2:21:: | + | 2001:DB8:122::/48 | 192.0.2.33 | 2001:DB8:122:C000:2:2100:: | + | 2001:DB8:122:300::/56 | 192.0.2.33 | 2001:DB8:122:3C0:0:221:: | + | 2001:DB8:122:344::/64 | 192.0.2.33 | 2001:DB8:122:344:C0:2:2100:: | + | 2001:DB8:122:344::/96 | 192.0.2.33 | 2001:DB8:122:344::192.0.2.33 | + +-----------------------+------------+------------------------------+ + + Table 1: Text representation of IPv4-Embedded IPv6 addresses using + Network-Specific Prefixes + + +-------------------+--------------+----------------------------+ + | Well Known Prefix | IPv4 address | IPv4-Embedded IPv6 address | + +-------------------+--------------+----------------------------+ + | 64:FF9B::/96 | 192.0.2.33 | 64:FF9B::192.0.2.33 | + +-------------------+--------------+----------------------------+ + + Table 2: Text representation of IPv4-Embedded IPv6 addresses using + the Well-Known Prefix + + The Network-Specific Prefix examples in Table 1 are derived from the + IPv6 prefix reserved for documentation in [RFC3849]. The IPv4 + address 192.0.2.33 is part of the subnet 192.0.2.0/24 reserved for + documentation in [RFC5735]. + + +3. Deployment Guidelines and Choices + +3.1. Restrictions on the use of the Well-Known Prefix + + The Well-Known Prefix MAY be used by organizations deploying + translation services, as explained in Section 3.4. + + The Well-Known Prefix SHOULD NOT be used to construct IPv4- + Translatable addresses. The nodes served by IPv4-Translatable IPv6 + addresses should be able to receive global IPv6 traffic bound to + their IPv4-Translatable IPv6 address without incurring intermediate + protocol translation. This is only possible if the specific prefix + used to build the IPv4-Translatable IPv6 addresses is advertized in + inter-domain routing, but the advertisement of more specific prefixes + derived from the Well-Known Prefix is not supported, as explained in + Section 3.2. Network-Specific Prefixes SHOULD be used in these + scenarios, as explained in Section 3.3. + + + + +Bao, et al. Expires October 11, 2010 [Page 7] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + The Well-Known Prefix MUST NOT be used to represent non global IPv4 + addresses, such as those defined in [RFC1918]. + +3.2. Impact on Inter-Domain Routing + + The Well-Known Prefix MAY appear in inter-domain routing tables, if + service providers decide to provide IPv6-IPv4 interconnection + services to peers. Advertisement of the Well-Known Prefix SHOULD be + controlled either by upstream and/or downstream service providers + owing to inter-domain routing policies, e.g., through configuration + of BGP [RFC4271]. Organizations that advertize the Well-Known Prefix + in inter-domain routing MUST be able to provide IPv4/IPv6 translation + service. + + When the IPv4/IPv6 translation relies on the Well-Known Prefix, + embedded IPv6 prefixes longer than the Well-Known Prefix MUST NOT be + advertised in BGP (especially e-BGP) [RFC4271] because this leads to + importing the IPv4 routing table into the IPv6 one and therefore + induces scalability issues to the global IPv6 routing table. + Administrators of BGP nodes SHOULD configure filters that discard + advertisements of embedded IPv6 prefixes longer than the Well-Known + Prefix. + + When the IPv4/IPv6 translation service relies on Network-Specific + Prefixes, the IPv4-Translatable IPv6 prefixes used in stateless + translation MUST be advertised with proper aggregation to the IPv6 + Internet. Similarly, if translators are configured with multiple + Network-Specific Prefixes,these prefixes MUST be advertised to the + IPv6 Internet with proper aggregation. + +3.3. Choice of Prefix for Stateless Translation Deployments + + Organizations may deploy translation services using stateless + translation. In these deployments, internal IPv6 nodes are addressed + using IPv4-Translatable IPv6 addresses, which enable them to be + accessed by IPv4 nodes. The addresses of these external IPv4 nodes + are then represented in IPv4-Converted IPv6 addresses. + + Organizations deploying stateless IPv4/IPv6 translation SHOULD assign + a Network-Specific Prefix to their IPv4/IPv6 translation service. + IPv4-Translatable and IPv4-Converted IPv6 addresses MUST be + constructed as specified in Section 2.2. IPv4-Translatable IPv6 + addresses MUST use the selected Network-Specific Prefix. Both IPv4- + Translatable IPv6 addresses and IPv4-Converted IPv6 addresses SHOULD + use the same prefix. + + Using the same prefix ensures that IPv6 nodes internal to the + organization will use the most efficient paths to reach the nodes + + + +Bao, et al. Expires October 11, 2010 [Page 8] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + served by IPv4-Translatable IPv6 addresses. Specifically, if a node + learns the IPv4 address of a target internal node without knowing + that this target is in fact located behind the same translator that + the node also uses, translation rules will ensure that the IPv6 + address constructed with the Network-Specific prefix is the same as + the IPv4-Translatable IPv6 address assigned to the target. Standard + routing preference (more specific wins) will then ensure that the + IPv6 packets are delivered directly, without requiring "hair-pinning" + at the translator. + + The intra-domain routing protocol must be able to deliver packets to + the nodes served by IPv4-Translatable IPv6 addresses. This may + require routing on some or all of the embedded IPv4 address bits. + Security considerations detailed in Section 4 require that routers + check the validity of the IPv4-Translatable IPv6 source addresses, + using some form of reverse path check. + + The management of stateless address translation can be illustrated + with a small example. We will consider an IPv6 network with the + prefix 2001:DB8:122::/48. The network administrator has selected the + Network-Specific prefix 2001:DB8:122:344::/64 for managing stateless + IPv4/IPv6 translation. The IPv4-Translatable address block is 2001: + DB8:122:344:C0:2::/96 and this block is visible in IPv4 as the subnet + 192.0.2.0/24. In this network, the host A is assigned the IPv4- + Translatable IPv6 address 2001:DB8:122:344:C0:2:2100::, which + corresponds to the IPv4 address 192.0.2.33. Host A's address is + configured either manually or through DHCPv6. + + In this example, host A is not directly connected to the translator, + but instead to a link managed by a router R. The router R is + configured to forward to A the packets bound to 2001:DB8:122:344:C0: + 2:2100::. To receive these packets, R will advertise reachability of + the prefix 2001:DB8:122:344:C0:2:2100::/104 in the intra-domain + routing protocol -- or perhaps a shorter prefix if many hosts on link + have IPv4-Translatable IPv6 addresses derived from the same IPv4 + subnet. If a packet bound to 192.0.2.33 reaches the translator, the + destination address will be translated to 2001:DB8:122:344:C0:2: + 2100::, and the packet will be routed towards R and then to A. + + Let's suppose now that a host B of the same domain learns the IPv4 + address of A, maybe through an application-specific referral. If B + has translation-aware software, B can compose a destination address + by combining the Network-Specific Prefix 2001:DB8:122:344::/64 and + the IPv4 address 192.0.2.33, resulting in the address 2001:DB8:122: + 344:C0:2:2100::. The packet sent by B will be forwarded towards R, + and then to A, avoiding protocol translation. + + Forwarding, and reverse path checks, should be performed on the + + + +Bao, et al. Expires October 11, 2010 [Page 9] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + combination of the prefix and the IPv4 address. In theory, routers + should be able to route on prefixes of any length. However, routing + on prefixes larger than 64 bits may be slower on some routers. But + routing efficiency is not the only consideration in the choice of a + prefix length. Organizations also need to consider the availability + of prefixes, and the potential impact of all-zeroes identifiers. + + If a /32 prefix is used, all the routing bits are contained in the + top 64 bits of the IPv6 address, leading to excellent routing + properties. These prefixes may however be hard to obtain, and + allocation of a /32 to a small set of IPv4-Translatable IPv6 + addresses may be seen as wasteful. In addition, the /32 prefix and a + zero suffix leads to an all-zeroes interface identifier, an issue + that we discuss in Section 3.5. + + Intermediate prefix lengths such as /40, /48 or /56 appear as + compromises. Only some of the IPv4 bits are part of the /64 + prefixes. Reverse path checks, in particular, may have a limited + efficiency. Reverse path checks limited to the most significant bits + of the IPv4 address will reduce the possibility of spoofing external + IPv4 addresses, but would allow IPv6 nodes to spoof internal IPv4- + Translatable IPv6 addresses. + + We propose here a compromise, based on using no more than 1/256th of + an organization's allocation of IPv6 addresses for the IPv4/IPv6 + translation service. For example, if the organization is an Internet + Service Provider with an allocated IPv6 prefix /32 or shorter, the + ISP could dedicate a /40 prefix to the translation service. An end + site with a /48 allocation could dedicate a /56 prefix to the + translation service, or possibly a /96 prefix if all IPv4- + Translatable IPv6 addresses are located on the same link. + + The recommended prefix length is also a function of the deployment + scenario. The stateless translation can be used for Scenario 1, + Scenario 2, Scenario 5, and Scenario 6 defined in + [I-D.ietf-behave-v6v4-framework]. For different scenarios, the + prefix length recommendations are: + o For scenario 1 (an IPv6 network to the IPv4 Internet) and scenario + 2 (the IPv4 Internet to an IPv6 network), we recommend using a /40 + prefix for an ISP holding a /32 allocation, and a /56 prefix for a + site holding a /48 allocation. + o For scenario 5 (an IPv6 network to an IPv4 network) and scenario 6 + (an IPv4 network to an IPv6 network), we recommend using a /64 or + a /96 prefix. + + IPv4-Translatable IPv6 addresses SHOULD follow the IPv6 address + architecture and SHOULD be compatible with the IPv4 address + architecture. The first IPv4-translatable address is the subnet- + + + +Bao, et al. Expires October 11, 2010 [Page 10] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + router anycast address in IPv6 and network identifier in IPv4, the + last IPv4-translatable address is the subnet broadcast addresses in + IPv4. Both of them SHOULD NOT be used for IPv6 nodes. In addition, + the minimum IPv4 subnet can be used for hosts is /30 (the router + interface needs a valid address for the same subnet) and this rule + SHOULD also be applied to the corresponding subnet of the IPv4- + translatable addresses. + +3.4. Choice of Prefix for Stateful Translation Deployments + + Organizations may deploy translation services based on stateful + translation technology. An organization may decide to use either a + Network-Specific Prefix or the Well-Known Prefix for its stateful + IPv4/IPv6 translation service. + + When these services are used, IPv6 nodes are addressed through + standard IPv6 addresses, while IPv4 nodes are represented by IPv4- + Converted IPv6 addresses, as specified in Section 2.2. + + The stateful nature of the translation creates a potential stability + issue when the organization deploys multiple translators. If several + translators use the same prefix, there is a risk that packets + belonging to the same connection may be routed to different + translators as the internal routing state changes. This issue can be + avoided either by assigning different prefixes to different + translators, or by ensuring that all translators using same prefix + coordinate their state. + + Stateful translation can be used in scenarios defined in + [I-D.ietf-behave-v6v4-framework]. The Well Known Prefix SHOULD be + used in these scenarios, with two exceptions: + o In all scenarios, the translation MAY use a Network-Specific + Prefix, if deemed appropriate for management reasons. + o The Well-Known Prefix MUST NOT be used for scenario 3 (the IPv6 + Internet to an IPv4 network), as this would lead to using the + Well-Known Prefix with non-global IPv4 addresses. That means a + Network-Specific Prefix MUST be used in that scenario, for example + a /96 prefix compatible with the Well-Known prefix format. + +3.5. Choice of Suffix + + The address format described in Section 2.2 recommends a zero suffix. + Before making this recommendation, we considered different options: + checksum neutrality; the encoding of a port range; and a value + different than 0. + + In the case of stateless translation, there would be no need for the + translator to recompute a one's complement checksum if both the IPv4- + + + +Bao, et al. Expires October 11, 2010 [Page 11] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + Translatable and the IPv4-Converted IPv6 addresses were constructed + in a "checksum-neutral" manner, that is if the IPv6 addresses would + have the same one's complement checksum as the embedded IPv4 address. + In the case of stateful translation, checksum neutrality does not + eliminate checksum computation during translation, as only one of the + two addresses would be checksum neutral. We considered reserving 16 + bits in the suffix to guarantee checksum neutrality, but declined + because it would not help with stateful translation, and because + checksum neutrality can also be achieved by an appropriate choice of + the Network-Specific Prefix, as was done for example with the Well- + Known Prefix. + + There have been proposals to complement stateless translation with a + port-range feature. Instead of mapping an IPv4 address to exactly + one IPv6 prefix, the options would allow several IPv6 nodes to share + an IPv4 address, with each node managing a different range of ports. + If a port range extension is needed, it could be defined later, using + bits currently reserved as null in the suffix. + + When a /32 prefix is used, an all-zero suffix results in an all-zero + interface identifier. We understand the conflict with Section 2.6.1 + of RFC4291, which specifies that all zeroes are used for the subnet- + router anycast address. However, in our specification, there would + be only one node with an IPv4-Translatable IPv6 address in the /64 + subnet, and the anycast semantic would not create confusion. We thus + decided to keep the null suffix for now. This issue does not exist + for prefixes larger than 32 bits, such as the /40, /56, /64 and /96 + prefixes that we recommend in Section 3.3. + +3.6. Choice of the Well-Known Prefix + + Before making our recommendation of the Well-Known Prefix, we were + faced with three choices: + o reuse the IPv4-mapped prefix, ::FFFF:0:0/96, as specified in RFC + 2765 Section 2.1; + o request IANA to allocate a /32 prefix, + o or request allocation of a new /96 prefix. + + We weighted the pros and cons of these choices before settling on the + recommended /96 Well-Known Prefix. + + The main advantage of the existing IPv4-mapped prefix is that it is + already defined. Reusing that prefix would require minimal + standardization efforts. However, being already defined is not just + an advantage, as there may be side effects of current + implementations. When presented with the IPv4-mapped prefix, current + versions of Windows and MacOS generate IPv4 packets, but will not + send IPv6 packets. If we used the IPv4-mapped prefix, these nodes + + + +Bao, et al. Expires October 11, 2010 [Page 12] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + would not be able to support translation without modification. This + will defeat the main purpose of the translation techniques. We thus + eliminated the first choice, and decided to not reuse the IPv4-mapped + prefix, ::FFFF:0:0/96. + + A /32 prefix would have allowed the embedded IPv4 address to fit + within the top 64 bits of the IPv6 address. This would have + facilitated routing and load balancing when an organization deploys + several translators. However, such destination-address based load + balancing may not be desirable. It is not compatible with STUN in + the deployments involving multiple stateful translators, each one + having a different pool of IPv4 addresses. STUN compatibility would + only be achieved if the translators managed the same pool of IPv4 + addresses and were able to coordinate their translation state, in + which case there is no big advantage to using a /32 prefix rather + than a /96 prefix. + + According to Section 2.2 of [RFC4291], in the legal textual + representations of IPv6 addresses, dotted decimal can only appear at + the end. The /96 prefix is compatible with that requirement. It + enables the dotted decimal notation without requiring an update to + [RFC4291]. This representation makes the address format easier to + use, and log files easier to read. + + The prefix that we recommend has the particularity of being "checksum + neutral". The sum of the hexadecimal numbers "0064" and "FF9B" is + "FFFF", i.e. a value equal to zero in one's complement arithmetic. + An IPv4-Embedded IPv6 address constructed with this prefix will have + the same one's complement checksum as the embedded IPv4 address. + + +4. Security Considerations + +4.1. Protection Against Spoofing + + By and large, IPv4/IPv6 translators can be modeled as special + routers, are subject to the same risks, and can implement the same + mitigations. There is however a particular risk that directly + derives from the practice of embedding IPv4 addresses in IPv6: + address spoofing. + + An attacker could use an IPv4-Embedded IPv6 address as the source + address of malicious packets. After translation, the packets will + appear as IPv4 packets from the specified source, and the attacker + may be hard to track. If left without mitigation, the attack would + allow malicious IPv6 nodes to spoof arbitrary IPv4 addresses. + + The mitigation is to implement reverse path checks, and to verify + + + +Bao, et al. Expires October 11, 2010 [Page 13] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + throughout the network that packets are coming from an authorized + location. + +4.2. Secure Configuration + + The prefixes used for address translation are used by IPv6 nodes to + send packets to IPv6/IPv4 translators. Attackers could attempt to + fool nodes, DNS gateways, and IPv4/IPv6 translators into using wrong + values for these parameters, resulting in network disruption, denial + of service, and possible information disclosure. To mitigate such + attacks, network administrators need to ensure that prefixes are + configured in a secure way. + + The mechanisms for achieving secure configuration of prefixes are + beyond the scope of this document. + + +5. IANA Considerations + + The IANA is requested to add a note to the documentation of the + 0000::/8 address block in + http://www.iana.org/assignments/ipv6-address-space to document the + assignment by the IETF of the Well Known Prefix. For example: + + The "Well Known Prefix" 64:FF9B::/96 used in an algorithmic + mapping between IPv4 to IPv6 addresses is defined out of the + 0000::/8 address block, per (this document). + + +6. Acknowledgements + + Many people in the Behave WG have contributed to the discussion that + led to this document, including Andrew Sullivan, Andrew Yourtchenko, + Brian Carpenter, Dan Wing, Ed Jankiewicz, Fred Baker, Hiroshi Miyata, + Iljitsch van Beijnum, John Schnizlein, Keith Moore, Kevin Yin, Magnus + Westerlund, Margaret Wasserman, Masahito Endo, Phil Roberts, Philip + Matthews, Remi Denis-Courmont, Remi Despres and William Waites. + + Marcelo Bagnulo is partly funded by Trilogy, a research project + supported by the European Commission under its Seventh Framework + Program. + + +7. Contributors + + The following individuals co-authored drafts from which text has been + incorporated, and are listed in alphabetical order. + + + + +Bao, et al. Expires October 11, 2010 [Page 14] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + Congxiao Bao + CERNET Center/Tsinghua University + Room 225, Main Building, Tsinghua University + Beijing, 100084 + China + Phone: +86 62785983 + Email: congxiao@cernet.edu.cn + + Dave Thaler + Microsoft Corporation + One Microsoft Way + Redmond, WA 98052 + USA + Phone: +1 425 703 8835 + Email: dthaler@microsoft.com + + Fred Baker + Cisco Systems + Santa Barbara, California 93117 + USA + Phone: +1-408-526-4257 + Fax: +1-413-473-2403 + Email: fred@cisco.com + + Hiroshi Miyata + Yokogawa Electric Corporation + 2-9-32 Nakacho + Musashino-shi, Tokyo 180-8750 + JAPAN + Email: h.miyata@jp.yokogawa.com + + Marcelo Bagnulo + Universidad Carlos III de Madrid + Av. Universidad 30 + Leganes, Madrid 28911 + ESPANA + Email: marcelo@it.uc3m.es + + Xing Li + CERNET Center/Tsinghua University + Room 225, Main Building, Tsinghua University + Beijing, 100084 + China + Phone: +86 62785983 + Email: xing@cernet.edu.cn + + + + + + +Bao, et al. Expires October 11, 2010 [Page 15] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + +8. References + +8.1. Normative References + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, March 1997. + + [RFC4291] Hinden, R. and S. Deering, "IP Version 6 Addressing + Architecture", RFC 4291, February 2006. + +8.2. Informative References + + [I-D.ietf-behave-dns64] + Bagnulo, M., Sullivan, A., Matthews, P., and I. Beijnum, + "DNS64: DNS extensions for Network Address Translation + from IPv6 Clients to IPv4 Servers", + draft-ietf-behave-dns64-04 (work in progress), + December 2009. + + [I-D.ietf-behave-v6v4-framework] + Baker, F., Li, X., Bao, C., and K. Yin, "Framework for + IPv4/IPv6 Translation", + draft-ietf-behave-v6v4-framework-03 (work in progress), + October 2009. + + [RFC1918] Rekhter, Y., Moskowitz, R., Karrenberg, D., Groot, G., and + E. Lear, "Address Allocation for Private Internets", + BCP 5, RFC 1918, February 1996. + + [RFC3484] Draves, R., "Default Address Selection for Internet + Protocol version 6 (IPv6)", RFC 3484, February 2003. + + [RFC3849] Huston, G., Lord, A., and P. Smith, "IPv6 Address Prefix + Reserved for Documentation", RFC 3849, July 2004. + + [RFC4271] Rekhter, Y., Li, T., and S. Hares, "A Border Gateway + Protocol 4 (BGP-4)", RFC 4271, January 2006. + + [RFC5735] Cotton, M. and L. Vegoda, "Special Use IPv4 Addresses", + BCP 153, RFC 5735, January 2010. + + + + + + + + + + + +Bao, et al. Expires October 11, 2010 [Page 16] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + +Authors' Addresses + + Congxiao Bao + CERNET Center/Tsinghua University + Room 225, Main Building, Tsinghua University + Beijing, 100084 + China + + Phone: +86 10-62785983 + Email: congxiao@cernet.edu.cn + + + Christian Huitema + Microsoft Corporation + One Microsoft Way + Redmond, WA 98052-6399 + U.S.A. + + Email: huitema@microsoft.com + + + Marcelo Bagnulo + UC3M + Av. Universidad 30 + Leganes, Madrid 28911 + Spain + + Phone: +34-91-6249500 + Fax: + Email: marcelo@it.uc3m.es + URI: http://www.it.uc3m.es/marcelo + + + Mohamed Boucadair + France Telecom + 3, Av Francois Chateaux + Rennes 350000 + France + + Email: mohamed.boucadair@orange-ftgroup.com + + + + + + + + + + + +Bao, et al. Expires October 11, 2010 [Page 17] + +Internet-Draft IPv6 Addressing of IPv4/IPv6 Translators April 2010 + + + Xing Li + CERNET Center/Tsinghua University + Room 225, Main Building, Tsinghua University + Beijing, 100084 + China + + Phone: +86 10-62785983 + Email: xing@cernet.edu.cn + + + + + + + + + + + + + + + + + + + + + + + *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Mon May 24 07:04:01 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0F5121065676; Mon, 24 May 2010 07:04:01 +0000 (UTC) (envelope-from wkoszek@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E734D8FC12; Mon, 24 May 2010 07:04:00 +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 o4O740Kr022067; Mon, 24 May 2010 07:04:00 GMT (envelope-from wkoszek@svn.freebsd.org) Received: (from wkoszek@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4O740t4022062; Mon, 24 May 2010 07:04:00 GMT (envelope-from wkoszek@svn.freebsd.org) Message-Id: <201005240704.o4O740t4022062@svn.freebsd.org> From: "Wojciech A. Koszek" Date: Mon, 24 May 2010 07:04:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208486 - in head/sys: compat/linux modules/linux sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 07:04:01 -0000 Author: wkoszek Date: Mon May 24 07:04:00 2010 New Revision: 208486 URL: http://svn.freebsd.org/changeset/base/208486 Log: Bring USB fixes for linux(4). Intention of this commit is to let us take a full advantage of libusb(8) ported to Linux. This decreases a possibility of getting any collisions within ioctl() "command" space, especially with relation to LINUX_SNDCTL_SEQ... stuff. Basically, we provide commands, that will be mapped in the kernel to correct ones and forward those to the USB layer. Port enabling functionality brought with this patch is here: http://www.freebsd.org/cgi/query-pr.cgi?pr=146895 Bump __FreeBSD_version to catch, since which version installing a port makes sense. This patch should bring no regressions. So far, only i386 is tested. Tested by: thompsa@ Reviewed by: thompsa@ OKed by: netchild@ Modified: head/sys/compat/linux/linux_ioctl.c head/sys/compat/linux/linux_ioctl.h head/sys/modules/linux/Makefile head/sys/sys/param.h Modified: head/sys/compat/linux/linux_ioctl.c ============================================================================== --- head/sys/compat/linux/linux_ioctl.c Mon May 24 06:41:57 2010 (r208485) +++ head/sys/compat/linux/linux_ioctl.c Mon May 24 07:04:00 2010 (r208486) @@ -65,6 +65,8 @@ __FBSDID("$FreeBSD$"); #include #include +#include + #ifdef COMPAT_LINUX32 #include #include @@ -123,7 +125,7 @@ static struct linux_ioctl_handler sg_han static struct linux_ioctl_handler video_handler = { linux_ioctl_v4l, LINUX_IOCTL_VIDEO_MIN, LINUX_IOCTL_VIDEO_MAX }; static struct linux_ioctl_handler fbsd_usb = -{ linux_ioctl_fbsd_usb, LINUX_FBSD_USB_MIN, LINUX_FBSD_USB_MAX }; +{ linux_ioctl_fbsd_usb, FBSD_LUSB_MIN, FBSD_LUSB_MAX }; DATA_SET(linux_ioctl_handler_set, cdrom_handler); DATA_SET(linux_ioctl_handler_set, vfat_handler); @@ -2983,21 +2985,119 @@ linux_ioctl_special(struct thread *td, s } /* - * Support for mounting our devfs under /compat/linux/dev and using - * our libusb(3) compiled on Linux to access it from within Linuxolator - * environment. + * Support for emulators/linux-libusb. This port uses FBSD_LUSB* macros + * instead of USB* ones. This lets us to provide correct values for cmd. + * 0xffffffe0 -- 0xffffffff range seemed to be the least collision-prone. */ static int linux_ioctl_fbsd_usb(struct thread *td, struct linux_ioctl_args *args) { + int error; - /* - * Because on GNU/Linux we build our libusb(3) with our header - * files and ioccom.h macros, ioctl() will contain our native - * command value. This means that we can basically redirect this - * call further. - */ - return (ioctl(td, (struct ioctl_args *)args)); + error = 0; + switch (args->cmd) { + case FBSD_LUSB_DEVICEENUMERATE: + args->cmd = USB_DEVICEENUMERATE; + break; + case FBSD_LUSB_DEV_QUIRK_ADD: + args->cmd = USB_DEV_QUIRK_ADD; + break; + case FBSD_LUSB_DEV_QUIRK_GET: + args->cmd = USB_DEV_QUIRK_GET; + break; + case FBSD_LUSB_DEV_QUIRK_REMOVE: + args->cmd = USB_DEV_QUIRK_REMOVE; + break; + case FBSD_LUSB_DO_REQUEST: + args->cmd = USB_DO_REQUEST; + break; + case FBSD_LUSB_FS_CLEAR_STALL_SYNC: + args->cmd = USB_FS_CLEAR_STALL_SYNC; + break; + case FBSD_LUSB_FS_CLOSE: + args->cmd = USB_FS_CLOSE; + break; + case FBSD_LUSB_FS_COMPLETE: + args->cmd = USB_FS_COMPLETE; + break; + case FBSD_LUSB_FS_INIT: + args->cmd = USB_FS_INIT; + break; + case FBSD_LUSB_FS_OPEN: + args->cmd = USB_FS_OPEN; + break; + case FBSD_LUSB_FS_START: + args->cmd = USB_FS_START; + break; + case FBSD_LUSB_FS_STOP: + args->cmd = USB_FS_STOP; + break; + case FBSD_LUSB_FS_UNINIT: + args->cmd = USB_FS_UNINIT; + break; + case FBSD_LUSB_GET_CONFIG: + args->cmd = USB_GET_CONFIG; + break; + case FBSD_LUSB_GET_DEVICEINFO: + args->cmd = USB_GET_DEVICEINFO; + break; + case FBSD_LUSB_GET_DEVICE_DESC: + args->cmd = USB_GET_DEVICE_DESC; + break; + case FBSD_LUSB_GET_FULL_DESC: + args->cmd = USB_GET_FULL_DESC; + break; + case FBSD_LUSB_GET_IFACE_DRIVER: + args->cmd = USB_GET_IFACE_DRIVER; + break; + case FBSD_LUSB_GET_PLUGTIME: + args->cmd = USB_GET_PLUGTIME; + break; + case FBSD_LUSB_GET_POWER_MODE: + args->cmd = USB_GET_POWER_MODE; + break; + case FBSD_LUSB_GET_REPORT_DESC: + args->cmd = USB_GET_REPORT_DESC; + break; + case FBSD_LUSB_GET_REPORT_ID: + args->cmd = USB_GET_REPORT_ID; + break; + case FBSD_LUSB_GET_TEMPLATE: + args->cmd = USB_GET_TEMPLATE; + break; + case FBSD_LUSB_IFACE_DRIVER_ACTIVE: + args->cmd = USB_IFACE_DRIVER_ACTIVE; + break; + case FBSD_LUSB_IFACE_DRIVER_DETACH: + args->cmd = USB_IFACE_DRIVER_DETACH; + break; + case FBSD_LUSB_QUIRK_NAME_GET: + args->cmd = USB_QUIRK_NAME_GET; + break; + case FBSD_LUSB_READ_DIR: + args->cmd = USB_READ_DIR; + break; + case FBSD_LUSB_SET_ALTINTERFACE: + args->cmd = USB_SET_ALTINTERFACE; + break; + case FBSD_LUSB_SET_CONFIG: + args->cmd = USB_SET_CONFIG; + break; + case FBSD_LUSB_SET_IMMED: + args->cmd = USB_SET_IMMED; + break; + case FBSD_LUSB_SET_POWER_MODE: + args->cmd = USB_SET_POWER_MODE; + break; + case FBSD_LUSB_SET_TEMPLATE: + args->cmd = USB_SET_TEMPLATE; + break; + default: + error = ENOIOCTL; + } + if (error != ENOIOCTL) + error = ioctl(td, (struct ioctl_args *)args); + return (error); } /* Modified: head/sys/compat/linux/linux_ioctl.h ============================================================================== --- head/sys/compat/linux/linux_ioctl.h Mon May 24 06:41:57 2010 (r208485) +++ head/sys/compat/linux/linux_ioctl.h Mon May 24 07:04:00 2010 (r208486) @@ -612,9 +612,42 @@ int linux_ifname(struct ifnet *, char #define LINUX_IOCTL_VIDEO_MAX LINUX_VIDIOCSVBIFMT /* - * Keep in sync with our include/dev/usb/usb_ioctl.h. + * Our libusb(8) calls emulated within linux(4). */ -#define LINUX_FBSD_USB_MIN 0x5100 -#define LINUX_FBSD_USB_MAX 0x55c7 +#define FBSD_LUSB_DEVICEENUMERATE 0xffff +#define FBSD_LUSB_DEV_QUIRK_ADD 0xfffe +#define FBSD_LUSB_DEV_QUIRK_GET 0xfffd +#define FBSD_LUSB_DEV_QUIRK_REMOVE 0xfffc +#define FBSD_LUSB_DO_REQUEST 0xfffb +#define FBSD_LUSB_FS_CLEAR_STALL_SYNC 0xfffa +#define FBSD_LUSB_FS_CLOSE 0xfff9 +#define FBSD_LUSB_FS_COMPLETE 0xfff8 +#define FBSD_LUSB_FS_INIT 0xfff7 +#define FBSD_LUSB_FS_OPEN 0xfff6 +#define FBSD_LUSB_FS_START 0xfff5 +#define FBSD_LUSB_FS_STOP 0xfff4 +#define FBSD_LUSB_FS_UNINIT 0xfff3 +#define FBSD_LUSB_GET_CONFIG 0xfff2 +#define FBSD_LUSB_GET_DEVICEINFO 0xfff1 +#define FBSD_LUSB_GET_DEVICE_DESC 0xfff0 +#define FBSD_LUSB_GET_FULL_DESC 0xffef +#define FBSD_LUSB_GET_IFACE_DRIVER 0xffee +#define FBSD_LUSB_GET_PLUGTIME 0xffed +#define FBSD_LUSB_GET_POWER_MODE 0xffec +#define FBSD_LUSB_GET_REPORT_DESC 0xffeb +#define FBSD_LUSB_GET_REPORT_ID 0xffea +#define FBSD_LUSB_GET_TEMPLATE 0xffe9 +#define FBSD_LUSB_IFACE_DRIVER_ACTIVE 0xffe8 +#define FBSD_LUSB_IFACE_DRIVER_DETACH 0xffe7 +#define FBSD_LUSB_QUIRK_NAME_GET 0xffe6 +#define FBSD_LUSB_READ_DIR 0xffe5 +#define FBSD_LUSB_SET_ALTINTERFACE 0xffe4 +#define FBSD_LUSB_SET_CONFIG 0xffe3 +#define FBSD_LUSB_SET_IMMED 0xffe2 +#define FBSD_LUSB_SET_POWER_MODE 0xffe1 +#define FBSD_LUSB_SET_TEMPLATE 0xffe0 + +#define FBSD_LUSB_MAX 0xffff +#define FBSD_LUSB_MIN 0xffe0 #endif /* !_LINUX_IOCTL_H_ */ Modified: head/sys/modules/linux/Makefile ============================================================================== --- head/sys/modules/linux/Makefile Mon May 24 06:41:57 2010 (r208485) +++ head/sys/modules/linux/Makefile Mon May 24 07:04:00 2010 (r208486) @@ -13,7 +13,7 @@ SRCS= linux${SFX}_dummy.c linux_emul.c l linux${SFX}_machdep.c linux_mib.c linux_misc.c linux_signal.c \ linux_socket.c linux_stats.c linux_sysctl.c linux${SFX}_sysent.c \ linux${SFX}_sysvec.c linux_uid16.c linux_util.c linux_time.c \ - opt_inet6.h opt_compat.h opt_posix.h vnode_if.h \ + opt_inet6.h opt_compat.h opt_posix.h opt_usb.h vnode_if.h \ device_if.h bus_if.h assym.s # XXX: for assym.s Modified: head/sys/sys/param.h ============================================================================== --- head/sys/sys/param.h Mon May 24 06:41:57 2010 (r208485) +++ head/sys/sys/param.h Mon May 24 07:04:00 2010 (r208486) @@ -58,7 +58,7 @@ * in the range 5 to 9. */ #undef __FreeBSD_version -#define __FreeBSD_version 900012 /* Master, propagated to newvers */ +#define __FreeBSD_version 900013 /* Master, propagated to newvers */ #ifndef LOCORE #include From owner-svn-src-all@FreeBSD.ORG Mon May 24 10:09:36 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Mon May 24 10:23:50 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4D695106566C; Mon, 24 May 2010 10:23:50 +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 254628FC1A; Mon, 24 May 2010 10:23: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 o4OANoT1071294; Mon, 24 May 2010 10:23:50 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OANnF8071290; Mon, 24 May 2010 10:23:49 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201005241023.o4OANnF8071290@svn.freebsd.org> From: Konstantin Belousov Date: Mon, 24 May 2010 10:23:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208488 - in head/sys: kern sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 10:23:50 -0000 Author: kib Date: Mon May 24 10:23:49 2010 New Revision: 208488 URL: http://svn.freebsd.org/changeset/base/208488 Log: 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. Use the opportunity to revert to the pre-RUSAGE_THREAD exporting of ruxagg() instead of ruxagg_locked() and use it from thread_exit(). Diagnosed and tested by: neel MFC after: 3 days Modified: head/sys/kern/kern_resource.c head/sys/kern/kern_thread.c head/sys/sys/resourcevar.h Modified: head/sys/kern/kern_resource.c ============================================================================== --- head/sys/kern/kern_resource.c Mon May 24 10:09:36 2010 (r208487) +++ head/sys/kern/kern_resource.c Mon May 24 10:23:49 2010 (r208488) @@ -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: head/sys/kern/kern_thread.c ============================================================================== --- head/sys/kern/kern_thread.c Mon May 24 10:09:36 2010 (r208487) +++ head/sys/kern/kern_thread.c Mon May 24 10:23:49 2010 (r208488) @@ -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: head/sys/sys/resourcevar.h ============================================================================== --- head/sys/sys/resourcevar.h Mon May 24 10:09:36 2010 (r208487) +++ head/sys/sys/resourcevar.h Mon May 24 10:23:49 2010 (r208488) @@ -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-all@FreeBSD.ORG Mon May 24 10:35:58 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 210D11065676; Mon, 24 May 2010 10:35:58 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1292A8FC1D; Mon, 24 May 2010 10:35:58 +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 o4OAZvJ6074063; Mon, 24 May 2010 10:35:57 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OAZvfF074061; Mon, 24 May 2010 10:35:57 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201005241035.o4OAZvfF074061@svn.freebsd.org> From: Jilles Tjoelker Date: Mon, 24 May 2010 10:35:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208489 - head/bin/sh X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 10:35:58 -0000 Author: jilles Date: Mon May 24 10:35:57 2010 New Revision: 208489 URL: http://svn.freebsd.org/changeset/base/208489 Log: sh: Reap any zombies before forking for a background command. This prevents accumulating huge amounts of zombies if a script executes many background commands but no external commands or subshells. Note that zombies will not be reaped during long calculations (within the shell process) or read builtins, but those actions do not create more zombies. The terminated background commands will also still be remembered by the shell. PR: bin/55346 Modified: head/bin/sh/jobs.c Modified: head/bin/sh/jobs.c ============================================================================== --- head/bin/sh/jobs.c Mon May 24 10:23:49 2010 (r208488) +++ head/bin/sh/jobs.c Mon May 24 10:35:57 2010 (r208489) @@ -91,6 +91,7 @@ STATIC void freejob(struct job *); STATIC struct job *getjob(char *); STATIC pid_t dowait(int, struct job *); STATIC pid_t waitproc(int, int *); +STATIC void checkzombies(void); STATIC void cmdtxt(union node *); STATIC void cmdputs(const char *); #if JOBS @@ -400,7 +401,7 @@ showjobs(int change, int mode) struct job *jp; TRACE(("showjobs(%d) called\n", change)); - while (dowait(0, (struct job *)NULL) > 0); + checkzombies(); for (jobno = 1, jp = jobtab ; jobno <= njobs ; jobno++, jp++) { if (! jp->used) continue; @@ -742,6 +743,8 @@ forkshell(struct job *jp, union node *n, TRACE(("forkshell(%%%d, %p, %d) called\n", jp - jobtab, (void *)n, mode)); INTOFF; + if (mode == FORK_BG) + checkzombies(); flushall(); pid = fork(); if (pid == -1) { @@ -1056,6 +1059,15 @@ stoppedjobs(void) return (0); } + +STATIC void +checkzombies(void) +{ + while (njobs > 0 && dowait(0, NULL) > 0) + ; +} + + /* * Return a string identifying a command (to be printed by the * jobs command. From owner-svn-src-all@FreeBSD.ORG Mon May 24 10:45:51 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Mon May 24 10:54:50 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Mon May 24 11:01:57 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Mon May 24 11:14:40 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B04E1106566C; Mon, 24 May 2010 11:14:40 +0000 (UTC) (envelope-from uqs@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A122D8FC21; Mon, 24 May 2010 11:14: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 o4OBEesD082730; Mon, 24 May 2010 11:14:40 GMT (envelope-from uqs@svn.freebsd.org) Received: (from uqs@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OBEe7w082726; Mon, 24 May 2010 11:14:40 GMT (envelope-from uqs@svn.freebsd.org) Message-Id: <201005241114.o4OBEe7w082726@svn.freebsd.org> From: Ulrich Spoerlein Date: Mon, 24 May 2010 11:14:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208493 - in head: lib/libc/compat-43 share/man/man4 share/man/man9 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 11:14:40 -0000 Author: uqs Date: Mon May 24 11:14:40 2010 New Revision: 208493 URL: http://svn.freebsd.org/changeset/base/208493 Log: These features will first appear in 8.1, soon to be released MFC after: 3 days Modified: head/lib/libc/compat-43/sigpause.2 head/share/man/man4/lindev.4 head/share/man/man9/BUS_DESCRIBE_INTR.9 Modified: head/lib/libc/compat-43/sigpause.2 ============================================================================== --- head/lib/libc/compat-43/sigpause.2 Mon May 24 11:01:56 2010 (r208492) +++ head/lib/libc/compat-43/sigpause.2 Mon May 24 11:14:40 2010 (r208493) @@ -238,5 +238,5 @@ function appeared in .Bx 4.2 and has been deprecated. All other functions appeared in -.Fx 9.0 +.Fx 8.1 and were deprecated before being implemented. Modified: head/share/man/man4/lindev.4 ============================================================================== --- head/share/man/man4/lindev.4 Mon May 24 11:01:56 2010 (r208492) +++ head/share/man/man4/lindev.4 Mon May 24 11:14:40 2010 (r208493) @@ -70,4 +70,4 @@ For reads it emulates The .Nm module first appeared in -.Fx 9.0 . +.Fx 8.1 . Modified: head/share/man/man9/BUS_DESCRIBE_INTR.9 ============================================================================== --- head/share/man/man9/BUS_DESCRIBE_INTR.9 Mon May 24 11:01:56 2010 (r208492) +++ head/share/man/man9/BUS_DESCRIBE_INTR.9 Mon May 24 11:14:40 2010 (r208493) @@ -98,7 +98,7 @@ The method and .Fn bus_describe_intr functions first appeared in -.Fx 9.0 . +.Fx 8.1 . .Sh BUGS It is not currently possible to remove a description from an active interrupt handler. From owner-svn-src-all@FreeBSD.ORG Mon May 24 11:39:43 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 69F06106566B; Mon, 24 May 2010 11:39:43 +0000 (UTC) (envelope-from simon@nitro.dk) Received: from mx.nitro.dk (unknown [77.75.165.90]) by mx1.freebsd.org (Postfix) with ESMTP id 2B2198FC15; Mon, 24 May 2010 11:39:43 +0000 (UTC) Received: from arthur.nitro.dk (arthur.bofh [192.168.2.3]) by mx.nitro.dk (Postfix) with ESMTP id 6B28A2D4D7F; Mon, 24 May 2010 11:39:42 +0000 (UTC) Received: by arthur.nitro.dk (Postfix, from userid 1000) id 509D35C19; Mon, 24 May 2010 13:39:42 +0200 (CEST) Date: Mon, 24 May 2010 13:39:42 +0200 From: "Simon L. Nielsen" To: Marius Strobl Message-ID: <20100524113941.GA1396@arthur.nitro.dk> References: <201005231946.o4NJkJLL072302@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201005231946.o4NJkJLL072302@svn.freebsd.org> User-Agent: Mutt/1.5.20 (2009-06-14) Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r208459 - head/release/doc/en_US.ISO8859-1/hardware X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 11:39:43 -0000 On 2010.05.23 19:46:19 +0000, Marius Strobl wrote: > New Revision: 208459 > > Log: > 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. > > - &netra; t1 105 > + &sun; &netra; t1 100/105 If the product is called Netra and you just added the Sun part to identify the company it should just be Sun, and not &sun; as you are refering to Sun the company and not as part of a trademark. (It's a bit since I looked at it, but I'm rather sure above ist still the case.) > + 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: Same here, if you are refering to Fujitsu the company it should not include a trademark symbol. And yes, it's not entirely simple... -- Simon L. Nielsen From owner-svn-src-all@FreeBSD.ORG Mon May 24 11:40:50 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 68672106566C; Mon, 24 May 2010 11:40: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 575F48FC13; Mon, 24 May 2010 11:40: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 o4OBeoAS088519; Mon, 24 May 2010 11:40:50 GMT (envelope-from mav@svn.freebsd.org) Received: (from mav@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OBeova088506; Mon, 24 May 2010 11:40:50 GMT (envelope-from mav@svn.freebsd.org) Message-Id: <201005241140.o4OBeova088506@svn.freebsd.org> From: Alexander Motin Date: Mon, 24 May 2010 11:40:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208494 - in head/sys: amd64/amd64 amd64/include i386/i386 i386/include kern pc98/cbus sys x86/isa x86/x86 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 11:40:50 -0000 Author: mav Date: Mon May 24 11:40:49 2010 New Revision: 208494 URL: http://svn.freebsd.org/changeset/base/208494 Log: - Implement MI helper functions, dividing one or two timer interrupts with arbitrary frequencies into hardclock(), statclock() and profclock() calls. Same code with minor variations duplicated several times over the tree for different timer drivers and architectures. - Switch all x86 archs to new functions, simplifying the code and removing extra logic from timer drivers. Other archs are also welcome. Modified: head/sys/amd64/amd64/mp_machdep.c head/sys/amd64/include/apicvar.h head/sys/amd64/include/clock.h head/sys/i386/i386/mp_machdep.c head/sys/i386/include/apicvar.h head/sys/i386/include/clock.h head/sys/kern/kern_clock.c head/sys/pc98/cbus/clock.c head/sys/sys/kernel.h head/sys/sys/systm.h head/sys/x86/isa/clock.c head/sys/x86/x86/local_apic.c Modified: head/sys/amd64/amd64/mp_machdep.c ============================================================================== --- head/sys/amd64/amd64/mp_machdep.c Mon May 24 11:14:40 2010 (r208493) +++ head/sys/amd64/amd64/mp_machdep.c Mon May 24 11:40:49 2010 (r208494) @@ -1112,9 +1112,6 @@ ipi_bitmap_handler(struct trapframe fram if (ipi_bitmap & (1 << IPI_STATCLOCK)) statclockintr(&frame); - - if (ipi_bitmap & (1 << IPI_PROFCLOCK)) - profclockintr(&frame); } /* Modified: head/sys/amd64/include/apicvar.h ============================================================================== --- head/sys/amd64/include/apicvar.h Mon May 24 11:14:40 2010 (r208493) +++ head/sys/amd64/include/apicvar.h Mon May 24 11:40:49 2010 (r208494) @@ -123,8 +123,7 @@ #define IPI_PREEMPT 1 #define IPI_HARDCLOCK 2 #define IPI_STATCLOCK 3 -#define IPI_PROFCLOCK 4 -#define IPI_BITMAP_LAST IPI_PROFCLOCK +#define IPI_BITMAP_LAST IPI_STATCLOCK #define IPI_IS_BITMAPED(x) ((x) <= IPI_BITMAP_LAST) #define IPI_STOP (APIC_IPI_INTS + 7) /* Stop CPU until restarted. */ Modified: head/sys/amd64/include/clock.h ============================================================================== --- head/sys/amd64/include/clock.h Mon May 24 11:14:40 2010 (r208493) +++ head/sys/amd64/include/clock.h Mon May 24 11:40:49 2010 (r208494) @@ -27,7 +27,6 @@ struct trapframe; int hardclockintr(struct trapframe *frame); int statclockintr(struct trapframe *frame); -int profclockintr(struct trapframe *frame); /* * Driver to clock driver interface. Modified: head/sys/i386/i386/mp_machdep.c ============================================================================== --- head/sys/i386/i386/mp_machdep.c Mon May 24 11:14:40 2010 (r208493) +++ head/sys/i386/i386/mp_machdep.c Mon May 24 11:40:49 2010 (r208494) @@ -1279,9 +1279,6 @@ ipi_bitmap_handler(struct trapframe fram if (ipi_bitmap & (1 << IPI_STATCLOCK)) statclockintr(&frame); - - if (ipi_bitmap & (1 << IPI_PROFCLOCK)) - profclockintr(&frame); } /* Modified: head/sys/i386/include/apicvar.h ============================================================================== --- head/sys/i386/include/apicvar.h Mon May 24 11:14:40 2010 (r208493) +++ head/sys/i386/include/apicvar.h Mon May 24 11:40:49 2010 (r208494) @@ -124,8 +124,7 @@ #define IPI_PREEMPT 1 #define IPI_HARDCLOCK 2 #define IPI_STATCLOCK 3 -#define IPI_PROFCLOCK 4 -#define IPI_BITMAP_LAST IPI_PROFCLOCK +#define IPI_BITMAP_LAST IPI_STATCLOCK #define IPI_IS_BITMAPED(x) ((x) <= IPI_BITMAP_LAST) #define IPI_STOP (APIC_IPI_INTS + 7) /* Stop CPU until restarted. */ @@ -152,8 +151,7 @@ #define IPI_PREEMPT 1 #define IPI_HARDCLOCK 2 #define IPI_STATCLOCK 3 -#define IPI_PROFCLOCK 4 -#define IPI_BITMAP_LAST IPI_PROFCLOCK +#define IPI_BITMAP_LAST IPI_STATCLOCK #define IPI_IS_BITMAPED(x) ((x) <= IPI_BITMAP_LAST) #define IPI_STOP (APIC_IPI_INTS + 7) /* Stop CPU until restarted. */ Modified: head/sys/i386/include/clock.h ============================================================================== --- head/sys/i386/include/clock.h Mon May 24 11:14:40 2010 (r208493) +++ head/sys/i386/include/clock.h Mon May 24 11:40:49 2010 (r208494) @@ -27,7 +27,6 @@ struct trapframe; int hardclockintr(struct trapframe *frame); int statclockintr(struct trapframe *frame); -int profclockintr(struct trapframe *frame); /* * Driver to clock driver interface. Modified: head/sys/kern/kern_clock.c ============================================================================== --- head/sys/kern/kern_clock.c Mon May 24 11:14:40 2010 (r208493) +++ head/sys/kern/kern_clock.c Mon May 24 11:40:49 2010 (r208494) @@ -374,6 +374,12 @@ int profprocs; int ticks; int psratio; +int timer1hz; +int timer2hz; +static DPCPU_DEFINE(u_int, hard_cnt); +static DPCPU_DEFINE(u_int, stat_cnt); +static DPCPU_DEFINE(u_int, prof_cnt); + /* * Initialize clock frequencies and start both clocks running. */ @@ -403,6 +409,52 @@ initclocks(dummy) #endif } +void +timer1clock(int usermode, uintfptr_t pc) +{ + u_int *cnt; + + cnt = DPCPU_PTR(hard_cnt); + *cnt += hz; + if (*cnt >= timer1hz) { + *cnt -= timer1hz; + if (*cnt >= timer1hz) + *cnt = 0; + if (PCPU_GET(cpuid) == 0) + hardclock(usermode, pc); + else + hardclock_cpu(usermode); + } + if (timer2hz == 0) + timer2clock(usermode, pc); +} + +void +timer2clock(int usermode, uintfptr_t pc) +{ + u_int *cnt; + int t2hz = timer2hz ? timer2hz : timer1hz; + + cnt = DPCPU_PTR(stat_cnt); + *cnt += stathz; + if (*cnt >= t2hz) { + *cnt -= t2hz; + if (*cnt >= t2hz) + *cnt = 0; + statclock(usermode); + } + if (profprocs == 0) + return; + cnt = DPCPU_PTR(prof_cnt); + *cnt += profhz; + if (*cnt >= t2hz) { + *cnt -= t2hz; + if (*cnt >= t2hz) + *cnt = 0; + profclock(usermode, pc); + } +} + /* * Each time the real-time timer fires, this function is called on all CPUs. * Note that hardclock() calls hardclock_cpu() for the boot CPU, so only Modified: head/sys/pc98/cbus/clock.c ============================================================================== --- head/sys/pc98/cbus/clock.c Mon May 24 11:14:40 2010 (r208493) +++ head/sys/pc98/cbus/clock.c Mon May 24 11:40:49 2010 (r208494) @@ -129,10 +129,7 @@ int hardclockintr(struct trapframe *frame) { - if (PCPU_GET(cpuid) == 0) - hardclock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); - else - hardclock_cpu(TRAPF_USERMODE(frame)); + timer1clock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); return (FILTER_HANDLED); } @@ -143,13 +140,6 @@ statclockintr(struct trapframe *frame) return (FILTER_HANDLED); } -int -profclockintr(struct trapframe *frame) -{ - - return (FILTER_HANDLED); -} - static int clkintr(struct trapframe *frame) { @@ -448,6 +438,7 @@ cpu_initclocks() * timecounter to user a simpler algorithm. */ if (using_lapic_timer == LAPIC_CLOCK_NONE) { + timer1hz = hz; intr_add_handler("clk", 0, (driver_filter_t *)clkintr, NULL, NULL, INTR_TYPE_CLK, NULL); i8254_intsrc = intr_lookup_source(0); @@ -460,6 +451,14 @@ cpu_initclocks() i8254_timecounter.tc_counter_mask = 0xffff; set_i8254_freq(i8254_freq, hz); } + if (using_lapic_timer != LAPIC_CLOCK_ALL) { + profhz = hz; + if (hz < 128) + stathz = hz; + else + stathz = hz / (hz / 128); + } + timer2hz = 0; init_TSC_tc(); } Modified: head/sys/sys/kernel.h ============================================================================== --- head/sys/sys/kernel.h Mon May 24 11:14:40 2010 (r208493) +++ head/sys/sys/kernel.h Mon May 24 11:40:49 2010 (r208494) @@ -64,6 +64,8 @@ extern int stathz; /* statistics clock extern int profhz; /* profiling clock's frequency */ extern int profprocs; /* number of process's profiling */ extern int ticks; +extern int timer1hz; /* timer 1 frequency */ +extern int timer2hz; /* timer 2 frequency */ #endif /* _KERNEL */ Modified: head/sys/sys/systm.h ============================================================================== --- head/sys/sys/systm.h Mon May 24 11:14:40 2010 (r208493) +++ head/sys/sys/systm.h Mon May 24 11:40:49 2010 (r208494) @@ -240,6 +240,8 @@ void hardclock_cpu(int usermode); void softclock(void *); void statclock(int usermode); void profclock(int usermode, uintfptr_t pc); +void timer1clock(int usermode, uintfptr_t pc); +void timer2clock(int usermode, uintfptr_t pc); void startprofclock(struct proc *); void stopprofclock(struct proc *); Modified: head/sys/x86/isa/clock.c ============================================================================== --- head/sys/x86/isa/clock.c Mon May 24 11:14:40 2010 (r208493) +++ head/sys/x86/isa/clock.c Mon May 24 11:40:49 2010 (r208494) @@ -87,8 +87,6 @@ __FBSDID("$FreeBSD$"); #define TIMER_DIV(x) ((i8254_freq + (x) / 2) / (x)) int clkintr_pending; -static int pscnt = 1; -static int psdiv = 1; #ifndef TIMER_FREQ #define TIMER_FREQ 1193182 #endif @@ -134,10 +132,7 @@ int hardclockintr(struct trapframe *frame) { - if (PCPU_GET(cpuid) == 0) - hardclock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); - else - hardclock_cpu(TRAPF_USERMODE(frame)); + timer1clock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); return (FILTER_HANDLED); } @@ -145,19 +140,7 @@ int statclockintr(struct trapframe *frame) { - profclockintr(frame); - statclock(TRAPF_USERMODE(frame)); - return (FILTER_HANDLED); -} - -int -profclockintr(struct trapframe *frame) -{ - - if (!using_atrtc_timer) - hardclockintr(frame); - if (profprocs != 0) - profclock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); + timer2clock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); return (FILTER_HANDLED); } @@ -190,28 +173,11 @@ clkintr(struct trapframe *frame) (*cyclic_clock_func[cpu])(frame); #endif - if (using_atrtc_timer) { -#ifdef SMP - if (smp_started) - ipi_all_but_self(IPI_HARDCLOCK); -#endif - hardclockintr(frame); - } else { - if (--pscnt <= 0) { - pscnt = psratio; #ifdef SMP - if (smp_started) - ipi_all_but_self(IPI_STATCLOCK); + if (smp_started) + ipi_all_but_self(IPI_HARDCLOCK); #endif - statclockintr(frame); - } else { -#ifdef SMP - if (smp_started) - ipi_all_but_self(IPI_PROFCLOCK); -#endif - profclockintr(frame); - } - } + hardclockintr(frame); #ifdef DEV_MCA /* Reset clock interrupt by asserting bit 7 of port 0x61 */ @@ -295,20 +261,11 @@ rtcintr(struct trapframe *frame) while (rtcin(RTC_INTR) & RTCIR_PERIOD) { flag = 1; - if (--pscnt <= 0) { - pscnt = psdiv; #ifdef SMP - if (smp_started) - ipi_all_but_self(IPI_STATCLOCK); -#endif - statclockintr(frame); - } else { -#ifdef SMP - if (smp_started) - ipi_all_but_self(IPI_PROFCLOCK); + if (smp_started) + ipi_all_but_self(IPI_STATCLOCK); #endif - profclockintr(frame); - } + statclockintr(frame); } return(flag ? FILTER_HANDLED : FILTER_STRAY); } @@ -555,6 +512,7 @@ cpu_initclocks() * timecounter to user a simpler algorithm. */ if (using_lapic_timer == LAPIC_CLOCK_NONE) { + timer1hz = hz; intr_add_handler("clk", 0, (driver_filter_t *)clkintr, NULL, NULL, INTR_TYPE_CLK, NULL); i8254_intsrc = intr_lookup_source(0); @@ -577,6 +535,7 @@ cpu_initclocks() if (using_lapic_timer != LAPIC_CLOCK_ALL) { using_atrtc_timer = tasc; if (using_atrtc_timer) { + timer2hz = RTC_NOPROFRATE; /* Enable periodic interrupts from the RTC. */ intr_add_handler("rtc", 8, (driver_filter_t *)rtcintr, NULL, NULL, @@ -588,6 +547,7 @@ cpu_initclocks() stathz = hz; else stathz = hz / (hz / 128); + timer2hz = 0; } } @@ -601,7 +561,7 @@ cpu_startprofclock(void) if (using_lapic_timer == LAPIC_CLOCK_ALL || !using_atrtc_timer) return; atrtc_rate(RTCSA_PROF); - psdiv = pscnt = psratio; + timer2hz = RTC_PROFRATE; } void @@ -611,7 +571,7 @@ cpu_stopprofclock(void) if (using_lapic_timer == LAPIC_CLOCK_ALL || !using_atrtc_timer) return; atrtc_rate(RTCSA_NOPROF); - psdiv = pscnt = 1; + timer2hz = RTC_NOPROFRATE; } static int Modified: head/sys/x86/x86/local_apic.c ============================================================================== --- head/sys/x86/x86/local_apic.c Mon May 24 11:14:40 2010 (r208493) +++ head/sys/x86/x86/local_apic.c Mon May 24 11:40:49 2010 (r208494) @@ -118,9 +118,6 @@ struct lapic { u_int la_cluster_id:2; u_int la_present:1; u_long *la_timer_count; - u_long la_hard_ticks; - u_long la_stat_ticks; - u_long la_prof_ticks; /* Include IDT_SYSCALL to make indexing easier. */ int la_ioint_irqs[APIC_NUM_IOINTS + 1]; } static lapics[MAX_APIC_ID + 1]; @@ -493,12 +490,14 @@ lapic_setup_clock(enum lapic_clock srcsd } else lapic_timer_hz = hz; lapic_timer_period = value / lapic_timer_hz; + timer1hz = lapic_timer_hz; if (srcsdes == LAPIC_CLOCK_ALL) { if (lapic_timer_hz < 128) stathz = lapic_timer_hz; else stathz = lapic_timer_hz / (lapic_timer_hz / 128); profhz = lapic_timer_hz; + timer2hz = 0; } /* @@ -790,33 +789,7 @@ lapic_handle_timer(struct trapframe *fra (*cyclic_clock_func[cpu])(frame); #endif - /* Fire hardclock at hz. */ - la->la_hard_ticks += hz; - if (la->la_hard_ticks >= lapic_timer_hz) { - la->la_hard_ticks -= lapic_timer_hz; - if (PCPU_GET(cpuid) == 0) - hardclock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); - else - hardclock_cpu(TRAPF_USERMODE(frame)); - } - if (clockcoverage == LAPIC_CLOCK_ALL) { - - /* Fire statclock at stathz. */ - la->la_stat_ticks += stathz; - if (la->la_stat_ticks >= lapic_timer_hz) { - la->la_stat_ticks -= lapic_timer_hz; - statclock(TRAPF_USERMODE(frame)); - } - - /* Fire profclock at profhz, but only when needed. */ - la->la_prof_ticks += profhz; - if (la->la_prof_ticks >= lapic_timer_hz) { - la->la_prof_ticks -= lapic_timer_hz; - if (profprocs != 0) - profclock(TRAPF_USERMODE(frame), - TRAPF_PC(frame)); - } - } + timer1clock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); critical_exit(); } From owner-svn-src-all@FreeBSD.ORG Mon May 24 12:10:54 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Mon May 24 12:11:19 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8AB87106585E; Mon, 24 May 2010 12:11:19 +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 78F728FC13; Mon, 24 May 2010 12:11:19 +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 o4OCBJee095260; Mon, 24 May 2010 12:11:19 GMT (envelope-from gallatin@svn.freebsd.org) Received: (from gallatin@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OCBJSU095257; Mon, 24 May 2010 12:11:19 GMT (envelope-from gallatin@svn.freebsd.org) Message-Id: <201005241211.o4OCBJSU095257@svn.freebsd.org> From: Andrew Gallatin Date: Mon, 24 May 2010 12:11:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208496 - stable/7/sys/dev/mxge X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 12:11:19 -0000 Author: gallatin Date: Mon May 24 12:11:19 2010 New Revision: 208496 URL: http://svn.freebsd.org/changeset/base/208496 Log: MFC 208309: Update mxge firmware to latest available from Myricom. Modified: stable/7/sys/dev/mxge/eth_z8e.h stable/7/sys/dev/mxge/ethp_z8e.h stable/7/sys/dev/mxge/rss_eth_z8e.h stable/7/sys/dev/mxge/rss_ethp_z8e.h Directory Properties: stable/7/sys/ (props changed) stable/7/sys/cddl/contrib/opensolaris/ (props changed) stable/7/sys/contrib/dev/acpica/ (props changed) stable/7/sys/contrib/pf/ (props changed) Modified: stable/7/sys/dev/mxge/eth_z8e.h ============================================================================== --- stable/7/sys/dev/mxge/eth_z8e.h Mon May 24 12:10:53 2010 (r208495) +++ stable/7/sys/dev/mxge/eth_z8e.h Mon May 24 12:11:19 2010 (r208496) @@ -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-all@FreeBSD.ORG Mon May 24 12:23:47 2010 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 03FD51065679; Mon, 24 May 2010 12:23:47 +0000 (UTC) (envelope-from marius@alchemy.franken.de) Received: from alchemy.franken.de (alchemy.franken.de [194.94.249.214]) by mx1.freebsd.org (Postfix) with ESMTP id 650858FC0A; Mon, 24 May 2010 12:23:46 +0000 (UTC) Received: from alchemy.franken.de (localhost [127.0.0.1]) by alchemy.franken.de (8.14.3/8.14.3/ALCHEMY.FRANKEN.DE) with ESMTP id o4OCNjAF013649; Mon, 24 May 2010 14:23:45 +0200 (CEST) (envelope-from marius@alchemy.franken.de) Received: (from marius@localhost) by alchemy.franken.de (8.14.3/8.14.3/Submit) id o4OCNjZP013648; Mon, 24 May 2010 14:23:45 +0200 (CEST) (envelope-from marius) Date: Mon, 24 May 2010 14:23:45 +0200 From: Marius Strobl To: "Simon L. Nielsen" Message-ID: <20100524122345.GI68288@alchemy.franken.de> References: <201005231946.o4NJkJLL072302@svn.freebsd.org> <20100524113941.GA1396@arthur.nitro.dk> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="5/uDoXvLw7AC5HRs" Content-Disposition: inline In-Reply-To: <20100524113941.GA1396@arthur.nitro.dk> User-Agent: Mutt/1.4.2.3i Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r208459 - head/release/doc/en_US.ISO8859-1/hardware X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 12:23:47 -0000 --5/uDoXvLw7AC5HRs Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Mon, May 24, 2010 at 01:39:42PM +0200, Simon L. Nielsen wrote: > On 2010.05.23 19:46:19 +0000, Marius Strobl wrote: > > > New Revision: 208459 > > > > Log: > > 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. > > > > > - &netra; t1 105 > > + &sun; &netra; t1 100/105 > > If the product is called Netra and you just added the Sun part to > identify the company it should just be Sun, and not &sun; as you are > refering to Sun the company and not as part of a trademark. > > (It's a bit since I looked at it, but I'm rather sure above ist still > the case.) > > > + 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: > > Same here, if you are refering to Fujitsu the company it should not > include a trademark symbol. > It's kind of hard to think of a case where one would use the name of a company in a way that doesn't refer to the company but rather to a trademark when even using "company product" doesn't mean to refer to it as part of a trademark :) I.e. when would one have to use the company trademark? In any case, do the attached patches look correct to you? Marius --5/uDoXvLw7AC5HRs Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="article.sgml.diff" Index: article.sgml =================================================================== --- article.sgml (revision 208494) +++ article.sgml (working copy) @@ -380,7 +380,7 @@ sparc64 This section describes the systems currently known to be - supported by &os; on the &fujitsu; &sparc64; and &sun; &ultrasparc; + supported by &os; on the Fujitsu &sparc64; and Sun &ultrasparc; platforms. For background information on the various hardware designs see the Sun System @@ -391,8 +391,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. @@ -451,55 +451,55 @@ - &sun; &netra; t1 100/105 + Sun &netra; t1 100/105 - &sun; &netra; T1 AC200/DC200 + Sun &netra; T1 AC200/DC200 - &sun; &netra; t 1100 + Sun &netra; t 1100 - &sun; &netra; t 1120 + Sun &netra; t 1120 - &sun; &netra; t 1125 + Sun &netra; t 1125 - &sun; &netra; t 1400/1405 + Sun &netra; t 1400/1405 - &sun; &netra; 120 + Sun &netra; 120 - &sun; &netra; X1 + Sun &netra; X1 - &sun; &sparcengine; Ultra AX1105 + Sun &sparcengine; Ultra AX1105 - &sun; &sparcengine; Ultra AXe + Sun &sparcengine; Ultra AXe - &sun; &sparcengine; Ultra AXi + Sun &sparcengine; Ultra AXi - &sun; &sparcengine; Ultra AXmp + Sun &sparcengine; Ultra AXmp - &sun; &sparcengine; CP1500 + Sun &sparcengine; CP1500 @@ -542,8 +542,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). @@ -555,7 +555,7 @@ - Starting with 7.2-RELEASE, &arch.sparc64; systems based on &sun; + 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: @@ -616,7 +616,7 @@ - The following &sun; &ultrasparc; systems are not tested but + The following Sun &ultrasparc; systems are not tested but believed to be also supported by &os;: @@ -639,29 +639,29 @@ Starting with 8.1-RELEASE, &arch.sparc64; systems based on - &fujitsu; &sparc64; V are also supported by &os;, which + Fujitsu &sparc64; V are also supported by &os;, which includes the following known working systems: - &fujitsu; &primepower; 250 + Fujitsu &primepower; 250 - The following &fujitsu; &primepower; systems are not tested but + The following Fujitsu &primepower; systems are not tested but believed to be also supported by &os;: - &fujitsu; &primepower; 450 + Fujitsu &primepower; 450 - &fujitsu; &primepower; 650 + Fujitsu &primepower; 650 - &fujitsu; &primepower; 850 + Fujitsu &primepower; 850 --5/uDoXvLw7AC5HRs Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="sparc.sgml.diff" Index: sparc.sgml =================================================================== RCS file: /home/dcvs/www/en/platforms/sparc.sgml,v retrieving revision 1.35 diff -u -r1.35 sparc.sgml --- sparc.sgml 23 May 2010 19:59:12 -0000 1.35 +++ sparc.sgml 24 May 2010 12:08:30 -0000 @@ -12,7 +12,7 @@

Introduction

-

This page contains information about the FreeBSD port to Fujitsu®'s +

This page contains information about the FreeBSD port to Fujitsu's SPARC64® and Sun Microsystem's UltraSPARC® architectures. Discussion of this port takes place on the --5/uDoXvLw7AC5HRs-- From owner-svn-src-all@FreeBSD.ORG Mon May 24 12:50:55 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7EE13106564A; Mon, 24 May 2010 12:50:55 +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 6D98F8FC16; Mon, 24 May 2010 12:50: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 o4OCotaZ004199; Mon, 24 May 2010 12:50:55 GMT (envelope-from gallatin@svn.freebsd.org) Received: (from gallatin@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OCotZZ004197; Mon, 24 May 2010 12:50:55 GMT (envelope-from gallatin@svn.freebsd.org) Message-Id: <201005241250.o4OCotZZ004197@svn.freebsd.org> From: Andrew Gallatin Date: Mon, 24 May 2010 12:50:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208497 - stable/7/sys/dev/mxge X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 12:50:55 -0000 Author: gallatin Date: Mon May 24 12:50:55 2010 New Revision: 208497 URL: http://svn.freebsd.org/changeset/base/208497 Log: MFC 208312: Correctly identify some twinax cables, which report a media type of 1 Modified: stable/7/sys/dev/mxge/if_mxge.c Directory Properties: stable/7/sys/ (props changed) stable/7/sys/cddl/contrib/opensolaris/ (props changed) stable/7/sys/contrib/dev/acpica/ (props changed) stable/7/sys/contrib/pf/ (props changed) Modified: stable/7/sys/dev/mxge/if_mxge.c ============================================================================== --- stable/7/sys/dev/mxge/if_mxge.c Mon May 24 12:11:19 2010 (r208496) +++ stable/7/sys/dev/mxge/if_mxge.c Mon May 24 12:50:55 2010 (r208497) @@ -2595,7 +2595,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-all@FreeBSD.ORG Mon May 24 12:51:01 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Mon May 24 13:01:02 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Mon May 24 13:01:09 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4AF591065672; Mon, 24 May 2010 13:01:08 +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 2CE3E8FC17; Mon, 24 May 2010 13:01:08 +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 o4OD18fh006616; Mon, 24 May 2010 13:01:08 GMT (envelope-from gallatin@svn.freebsd.org) Received: (from gallatin@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OD18AU006614; Mon, 24 May 2010 13:01:08 GMT (envelope-from gallatin@svn.freebsd.org) Message-Id: <201005241301.o4OD18AU006614@svn.freebsd.org> From: Andrew Gallatin Date: Mon, 24 May 2010 13:01:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208500 - stable/7/sys/dev/mxge X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 13:01:09 -0000 Author: gallatin Date: Mon May 24 13:01:07 2010 New Revision: 208500 URL: http://svn.freebsd.org/changeset/base/208500 Log: MFC 208379: Add interrupt descriptions for mxge's msi-x vectors Modified: stable/7/sys/dev/mxge/if_mxge.c Directory Properties: stable/7/sys/ (props changed) stable/7/sys/cddl/contrib/opensolaris/ (props changed) stable/7/sys/contrib/dev/acpica/ (props changed) stable/7/sys/contrib/pf/ (props changed) Modified: stable/7/sys/dev/mxge/if_mxge.c ============================================================================== --- stable/7/sys/dev/mxge/if_mxge.c Mon May 24 13:01:02 2010 (r208499) +++ stable/7/sys/dev/mxge/if_mxge.c Mon May 24 13:01:07 2010 (r208500) @@ -4200,6 +4200,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-all@FreeBSD.ORG Mon May 24 13:21:30 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0BBFB1065672; Mon, 24 May 2010 13:21:30 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id D0D7F8FC1E; Mon, 24 May 2010 13:21:29 +0000 (UTC) Received: from bigwig.baldwin.cx (66.111.2.69.static.nyinternet.net [66.111.2.69]) by cyrus.watson.org (Postfix) with ESMTPSA id 6F45A46B39; Mon, 24 May 2010 09:21:29 -0400 (EDT) Received: from jhbbsd.localnet (smtp.hudson-trading.com [209.249.190.9]) by bigwig.baldwin.cx (Postfix) with ESMTPA id AD30D8A021; Mon, 24 May 2010 09:21:28 -0400 (EDT) From: John Baldwin To: Alexander Motin Date: Mon, 24 May 2010 09:19:16 -0400 User-Agent: KMail/1.12.1 (FreeBSD/7.3-CBSD-20100217; KDE/4.3.1; amd64; ; ) References: <201005231745.o4NHj2wF045486@svn.freebsd.org> In-Reply-To: <201005231745.o4NHj2wF045486@svn.freebsd.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <201005240919.16796.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.0.1 (bigwig.baldwin.cx); Mon, 24 May 2010 09:21:28 -0400 (EDT) X-Virus-Scanned: clamav-milter 0.95.1 at bigwig.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-2.5 required=4.2 tests=AWL,BAYES_00 autolearn=ham version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bigwig.baldwin.cx Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r208452 - in head/sys: amd64/amd64 conf i386/i386 x86/x86 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 13:21:30 -0000 On Sunday 23 May 2010 1:45:02 pm Alexander Motin wrote: > Author: mav > Date: Sun May 23 17:45:01 2010 > New Revision: 208452 > URL: http://svn.freebsd.org/changeset/base/208452 > > Log: > Unify local_apic.c for x86 archs, Aiee! I have local changes here you just hosed! -- John Baldwin From owner-svn-src-all@FreeBSD.ORG Mon May 24 13:28:13 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3B4C2106564A; Mon, 24 May 2010 13:28:13 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2A87D8FC1D; Mon, 24 May 2010 13:28: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 o4ODSCkL012571; Mon, 24 May 2010 13:28:12 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4ODSCEH012569; Mon, 24 May 2010 13:28:12 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201005241328.o4ODSCEH012569@svn.freebsd.org> From: Jilles Tjoelker Date: Mon, 24 May 2010 13:28:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208501 - head/bin/sh X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 13:28:13 -0000 Author: jilles Date: Mon May 24 13:28:12 2010 New Revision: 208501 URL: http://svn.freebsd.org/changeset/base/208501 Log: sh(1): Improve wording of 'Special Parameters' section. Modified: head/bin/sh/sh.1 Modified: head/bin/sh/sh.1 ============================================================================== --- head/bin/sh/sh.1 Mon May 24 13:01:07 2010 (r208500) +++ head/bin/sh/sh.1 Mon May 24 13:28:12 2010 (r208501) @@ -1040,13 +1040,9 @@ The .Ic set built-in command can also be used to set or reset them. .Ss Special Parameters -A special parameter is a parameter denoted by a special one-character -name. -The special parameters recognized by the -.Nm -shell of -.Fx -are shown in the following list, exactly as they would appear in input +Special parameters are parameters denoted by a single special character +or the digit zero. +They are shown in the following list, exactly as they would appear in input typed by the user or in the source of a shell script. .Bl -hang .It Li $* From owner-svn-src-all@FreeBSD.ORG Mon May 24 13:34:05 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 76957106564A; Mon, 24 May 2010 13:34:05 +0000 (UTC) (envelope-from mavbsd@gmail.com) Received: from mail-fx0-f54.google.com (mail-fx0-f54.google.com [209.85.161.54]) by mx1.freebsd.org (Postfix) with ESMTP id 700388FC0C; Mon, 24 May 2010 13:34:04 +0000 (UTC) Received: by fxm4 with SMTP id 4so3248896fxm.13 for ; Mon, 24 May 2010 06:34:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:sender:message-id:date:from :user-agent:mime-version:to:cc:subject:references:in-reply-to :x-enigmail-version:content-type:content-transfer-encoding; bh=9yuol2/INnPlkHtnyPYEqZAH2XysUkJ81aCNNt4ALdk=; b=l7P7I8MwDzDtBwIPban1QVNxUBgVEhsOMwEWuQbfFSmdicf7ms3rtEWcuTzbWVAC9p MyF8d9hwNnAQCqV/Qp006qVfJBWEXCzZ2fOtF4t3nC0PNhCvk0+XXTiTLCF6HENCU8s2 Afw8DWDBFJEqOcFsbLLDrLekCrbP10vSNr4MI= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:x-enigmail-version:content-type :content-transfer-encoding; b=XpSoBJL+EkF46wcO5BdYIlmQvYp4gCUEes8udh19FOynrOZtpN/6WiRKHohFny05nV c5kvp9DWDN57BbwB6zRDnErfnOUgdPcaHnw0zKjnYbCtwPtjasDxFK6osKOsgtPorEt2 iFknpV1arj7Cadgll8QDCMtfwQBp+YzAkQtMU= Received: by 10.223.26.130 with SMTP id e2mr4897842fac.101.1274708043220; Mon, 24 May 2010 06:34:03 -0700 (PDT) Received: from mavbook.mavhome.dp.ua (pc.mavhome.dp.ua [212.86.226.226]) by mx.google.com with ESMTPS id 15sm19585999fad.10.2010.05.24.06.34.01 (version=SSLv3 cipher=RC4-MD5); Mon, 24 May 2010 06:34:02 -0700 (PDT) Sender: Alexander Motin Message-ID: <4BFA8037.50108@FreeBSD.org> Date: Mon, 24 May 2010 16:33:43 +0300 From: Alexander Motin User-Agent: Thunderbird 2.0.0.24 (X11/20100402) MIME-Version: 1.0 To: John Baldwin References: <201005231745.o4NHj2wF045486@svn.freebsd.org> <201005240919.16796.jhb@freebsd.org> In-Reply-To: <201005240919.16796.jhb@freebsd.org> X-Enigmail-Version: 0.96.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r208452 - in head/sys: amd64/amd64 conf i386/i386 x86/x86 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 13:34:05 -0000 John Baldwin wrote: > On Sunday 23 May 2010 1:45:02 pm Alexander Motin wrote: >> Author: mav >> Date: Sun May 23 17:45:01 2010 >> New Revision: 208452 >> URL: http://svn.freebsd.org/changeset/base/208452 >> >> Log: >> Unify local_apic.c for x86 archs, > > Aiee! I have local changes here you just hosed! Sorry, but I didn't want to do same work twice. Is there some problems for you to just patch different file? Or it is specific for only one platform? -- Alexander Motin From owner-svn-src-all@FreeBSD.ORG Mon May 24 13:43:11 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 581A1106567E; Mon, 24 May 2010 13:43:11 +0000 (UTC) (envelope-from deischen@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 472258FC12; Mon, 24 May 2010 13:43: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 o4ODhBN5015862; Mon, 24 May 2010 13:43:11 GMT (envelope-from deischen@svn.freebsd.org) Received: (from deischen@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4ODhBFT015851; Mon, 24 May 2010 13:43:11 GMT (envelope-from deischen@svn.freebsd.org) Message-Id: <201005241343.o4ODhBFT015851@svn.freebsd.org> From: Daniel Eischen Date: Mon, 24 May 2010 13:43:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208502 - head/lib/libthr/thread X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 13:43:11 -0000 Author: deischen Date: Mon May 24 13:43:11 2010 New Revision: 208502 URL: http://svn.freebsd.org/changeset/base/208502 Log: Coalesce a couple of broken lines since they can fit within 80 characters. Little nit found while looking at a bug report. Modified: head/lib/libthr/thread/thr_condattr.c Modified: head/lib/libthr/thread/thr_condattr.c ============================================================================== --- head/lib/libthr/thread/thr_condattr.c Mon May 24 13:28:12 2010 (r208501) +++ head/lib/libthr/thread/thr_condattr.c Mon May 24 13:43:11 2010 (r208502) @@ -79,8 +79,7 @@ _pthread_condattr_destroy(pthread_condat } int -_pthread_condattr_getclock(const pthread_condattr_t *attr, - clockid_t *clock_id) +_pthread_condattr_getclock(const pthread_condattr_t *attr, clockid_t *clock_id) { if (attr == NULL || *attr == NULL) return (EINVAL); @@ -89,8 +88,7 @@ _pthread_condattr_getclock(const pthread } int -_pthread_condattr_setclock(pthread_condattr_t *attr, - clockid_t clock_id) +_pthread_condattr_setclock(pthread_condattr_t *attr, clockid_t clock_id) { if (attr == NULL || *attr == NULL) return (EINVAL); From owner-svn-src-all@FreeBSD.ORG Mon May 24 13:44:39 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 68633106566B; Mon, 24 May 2010 13:44:39 +0000 (UTC) (envelope-from deischen@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 57AB68FC1E; Mon, 24 May 2010 13:44: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 o4ODidsC016235; Mon, 24 May 2010 13:44:39 GMT (envelope-from deischen@svn.freebsd.org) Received: (from deischen@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4ODidVZ016233; Mon, 24 May 2010 13:44:39 GMT (envelope-from deischen@svn.freebsd.org) Message-Id: <201005241344.o4ODidVZ016233@svn.freebsd.org> From: Daniel Eischen Date: Mon, 24 May 2010 13:44:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208503 - head/lib/libthr/thread X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 13:44:39 -0000 Author: deischen Date: Mon May 24 13:44:39 2010 New Revision: 208503 URL: http://svn.freebsd.org/changeset/base/208503 Log: Coalesce one more broken line. Modified: head/lib/libthr/thread/thr_condattr.c Modified: head/lib/libthr/thread/thr_condattr.c ============================================================================== --- head/lib/libthr/thread/thr_condattr.c Mon May 24 13:43:11 2010 (r208502) +++ head/lib/libthr/thread/thr_condattr.c Mon May 24 13:44:39 2010 (r208503) @@ -103,8 +103,7 @@ _pthread_condattr_setclock(pthread_conda } int -_pthread_condattr_getpshared(const pthread_condattr_t *attr, - int *pshared) +_pthread_condattr_getpshared(const pthread_condattr_t *attr, int *pshared) { if (attr == NULL || *attr == NULL) return (EINVAL); From owner-svn-src-all@FreeBSD.ORG Mon May 24 13:48:58 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1207F106567A; Mon, 24 May 2010 13:48:58 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id D606F8FC0C; Mon, 24 May 2010 13:48:57 +0000 (UTC) Received: from bigwig.baldwin.cx (66.111.2.69.static.nyinternet.net [66.111.2.69]) by cyrus.watson.org (Postfix) with ESMTPSA id 87B6E46B39; Mon, 24 May 2010 09:48:57 -0400 (EDT) Received: from jhbbsd.localnet (smtp.hudson-trading.com [209.249.190.9]) by bigwig.baldwin.cx (Postfix) with ESMTPA id 833E58A025; Mon, 24 May 2010 09:48:53 -0400 (EDT) From: John Baldwin To: Alexander Motin Date: Mon, 24 May 2010 09:44:16 -0400 User-Agent: KMail/1.12.1 (FreeBSD/7.3-CBSD-20100217; KDE/4.3.1; amd64; ; ) References: <201005231745.o4NHj2wF045486@svn.freebsd.org> <201005240919.16796.jhb@freebsd.org> <4BFA8037.50108@FreeBSD.org> In-Reply-To: <4BFA8037.50108@FreeBSD.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <201005240944.16424.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.0.1 (bigwig.baldwin.cx); Mon, 24 May 2010 09:48:53 -0400 (EDT) X-Virus-Scanned: clamav-milter 0.95.1 at bigwig.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-2.5 required=4.2 tests=AWL,BAYES_00 autolearn=ham version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bigwig.baldwin.cx Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r208452 - in head/sys: amd64/amd64 conf i386/i386 x86/x86 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 13:48:58 -0000 On Monday 24 May 2010 9:33:43 am Alexander Motin wrote: > John Baldwin wrote: > > On Sunday 23 May 2010 1:45:02 pm Alexander Motin wrote: > >> Author: mav > >> Date: Sun May 23 17:45:01 2010 > >> New Revision: 208452 > >> URL: http://svn.freebsd.org/changeset/base/208452 > >> > >> Log: > >> Unify local_apic.c for x86 archs, > > > > Aiee! I have local changes here you just hosed! > > Sorry, but I didn't want to do same work twice. Is there some problems > for you to just patch different file? Or it is specific for only one > platform? No, it is just extra pain, and will make MFC'ing my changes more painful as well. It would perhaps be a good idea in the future for folks to send out a bit of a heads up before moving a file to sys/x86. -- John Baldwin From owner-svn-src-all@FreeBSD.ORG Mon May 24 14:26:57 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9F8431065674; Mon, 24 May 2010 14:26:57 +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 8B2B38FC08; Mon, 24 May 2010 14:26: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 o4OEQv5o025592; Mon, 24 May 2010 14:26:57 GMT (envelope-from alc@svn.freebsd.org) Received: (from alc@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OEQv92025582; Mon, 24 May 2010 14:26:57 GMT (envelope-from alc@svn.freebsd.org) Message-Id: <201005241426.o4OEQv92025582@svn.freebsd.org> From: Alan Cox Date: Mon, 24 May 2010 14:26:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208504 - in head/sys: amd64/amd64 arm/arm i386/i386 i386/xen ia64/ia64 kern mips/mips powerpc/aim powerpc/booke powerpc/powerpc sparc64/sparc64 sun4v/sun4v sys vm X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 14:26:57 -0000 Author: alc Date: Mon May 24 14:26:57 2010 New Revision: 208504 URL: http://svn.freebsd.org/changeset/base/208504 Log: Roughly half of a typical pmap_mincore() implementation is machine- independent code. Move this code into mincore(), and eliminate the page queues lock from pmap_mincore(). Push down the page queues lock into pmap_clear_modify(), pmap_clear_reference(), and pmap_is_modified(). Assert that these functions are never passed an unmanaged page. Eliminate an inaccurate comment from powerpc/powerpc/mmu_if.m: Contrary to what the comment says, pmap_mincore() is not simply an optimization. Without a complete pmap_mincore() implementation, mincore() cannot return either MINCORE_MODIFIED or MINCORE_REFERENCED because only the pmap can provide this information. Eliminate the page queues lock from vfs_setdirty_locked_object(), vm_pageout_clean(), vm_object_page_collect_flush(), and vm_object_page_clean(). Generally speaking, these are all accesses to the page's dirty field, which are synchronized by the containing vm object's lock. Reduce the scope of the page queues lock in vm_object_madvise() and vm_page_dontneed(). Reviewed by: kib (an earlier version) Modified: head/sys/amd64/amd64/pmap.c head/sys/arm/arm/pmap.c head/sys/i386/i386/pmap.c head/sys/i386/xen/pmap.c head/sys/ia64/ia64/pmap.c head/sys/kern/vfs_bio.c head/sys/mips/mips/pmap.c head/sys/powerpc/aim/mmu_oea.c head/sys/powerpc/aim/mmu_oea64.c head/sys/powerpc/booke/pmap.c head/sys/powerpc/powerpc/mmu_if.m head/sys/powerpc/powerpc/pmap_dispatch.c head/sys/sparc64/sparc64/pmap.c head/sys/sun4v/sun4v/pmap.c head/sys/sys/pcpu.h head/sys/vm/pmap.h head/sys/vm/vm_mmap.c head/sys/vm/vm_object.c head/sys/vm/vm_page.c head/sys/vm/vm_page.h head/sys/vm/vm_pageout.c Modified: head/sys/amd64/amd64/pmap.c ============================================================================== --- head/sys/amd64/amd64/pmap.c Mon May 24 13:44:39 2010 (r208503) +++ head/sys/amd64/amd64/pmap.c Mon May 24 14:26:57 2010 (r208504) @@ -4128,12 +4128,25 @@ pmap_remove_pages(pmap_t pmap) boolean_t pmap_is_modified(vm_page_t m) { + boolean_t rv; - if (m->flags & PG_FICTITIOUS) + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_is_modified: page %p is not managed", m)); + + /* + * If the page is not VPO_BUSY, then PG_WRITEABLE cannot be + * concurrently set while the object is locked. Thus, if PG_WRITEABLE + * is clear, no PTEs can have PG_M set. + */ + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); + if ((m->oflags & VPO_BUSY) == 0 && + (m->flags & PG_WRITEABLE) == 0) return (FALSE); - if (pmap_is_modified_pvh(&m->md)) - return (TRUE); - return (pmap_is_modified_pvh(pa_to_pvh(VM_PAGE_TO_PHYS(m)))); + vm_page_lock_queues(); + rv = pmap_is_modified_pvh(&m->md) || + pmap_is_modified_pvh(pa_to_pvh(VM_PAGE_TO_PHYS(m))); + vm_page_unlock_queues(); + return (rv); } /* @@ -4384,9 +4397,20 @@ pmap_clear_modify(vm_page_t m) pt_entry_t oldpte, *pte; vm_offset_t va; - if ((m->flags & PG_FICTITIOUS) != 0) + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_clear_modify: page %p is not managed", m)); + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); + KASSERT((m->oflags & VPO_BUSY) == 0, + ("pmap_clear_modify: page %p is busy", m)); + + /* + * If the page is not PG_WRITEABLE, then no PTEs can have PG_M set. + * If the object containing the page is locked and the page is not + * VPO_BUSY, then PG_WRITEABLE cannot be concurrently set. + */ + if ((m->flags & PG_WRITEABLE) == 0) return; - mtx_assert(&vm_page_queue_mtx, MA_OWNED); + vm_page_lock_queues(); pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m)); TAILQ_FOREACH_SAFE(pv, &pvh->pv_list, pv_list, next_pv) { pmap = PV_PMAP(pv); @@ -4432,6 +4456,7 @@ pmap_clear_modify(vm_page_t m) } PMAP_UNLOCK(pmap); } + vm_page_unlock_queues(); } /* @@ -4449,9 +4474,9 @@ pmap_clear_reference(vm_page_t m) pt_entry_t *pte; vm_offset_t va; - if ((m->flags & PG_FICTITIOUS) != 0) - return; - mtx_assert(&vm_page_queue_mtx, MA_OWNED); + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_clear_reference: page %p is not managed", m)); + vm_page_lock_queues(); pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m)); TAILQ_FOREACH_SAFE(pv, &pvh->pv_list, pv_list, next_pv) { pmap = PV_PMAP(pv); @@ -4488,6 +4513,7 @@ pmap_clear_reference(vm_page_t m) } PMAP_UNLOCK(pmap); } + vm_page_unlock_queues(); } /* @@ -4897,70 +4923,49 @@ pmap_change_attr_locked(vm_offset_t va, * perform the pmap work for mincore */ int -pmap_mincore(pmap_t pmap, vm_offset_t addr) +pmap_mincore(pmap_t pmap, vm_offset_t addr, vm_paddr_t *locked_pa) { pd_entry_t *pdep; pt_entry_t pte; vm_paddr_t pa; - vm_page_t m; - int val = 0; - + int val; + PMAP_LOCK(pmap); +retry: pdep = pmap_pde(pmap, addr); if (pdep != NULL && (*pdep & PG_V)) { if (*pdep & PG_PS) { pte = *pdep; - val = MINCORE_SUPER; /* Compute the physical address of the 4KB page. */ pa = ((*pdep & PG_PS_FRAME) | (addr & PDRMASK)) & PG_FRAME; + val = MINCORE_SUPER; } else { pte = *pmap_pde_to_pte(pdep, addr); pa = pte & PG_FRAME; + val = 0; } } else { pte = 0; pa = 0; + val = 0; } - PMAP_UNLOCK(pmap); - - if (pte != 0) { + if ((pte & PG_V) != 0) { val |= MINCORE_INCORE; - if ((pte & PG_MANAGED) == 0) - return (val); - - m = PHYS_TO_VM_PAGE(pa); - - /* - * Modified by us - */ if ((pte & (PG_M | PG_RW)) == (PG_M | PG_RW)) - val |= MINCORE_MODIFIED|MINCORE_MODIFIED_OTHER; - else { - /* - * Modified by someone else - */ - vm_page_lock_queues(); - if (m->dirty || pmap_is_modified(m)) - val |= MINCORE_MODIFIED_OTHER; - vm_page_unlock_queues(); - } - /* - * Referenced by us - */ - if (pte & PG_A) - val |= MINCORE_REFERENCED|MINCORE_REFERENCED_OTHER; - else { - /* - * Referenced by someone else - */ - vm_page_lock_queues(); - if ((m->flags & PG_REFERENCED) || - pmap_is_referenced(m)) - val |= MINCORE_REFERENCED_OTHER; - vm_page_unlock_queues(); - } - } + val |= MINCORE_MODIFIED | MINCORE_MODIFIED_OTHER; + if ((pte & PG_A) != 0) + val |= MINCORE_REFERENCED | MINCORE_REFERENCED_OTHER; + } + if ((val & (MINCORE_MODIFIED_OTHER | MINCORE_REFERENCED_OTHER)) != + (MINCORE_MODIFIED_OTHER | MINCORE_REFERENCED_OTHER) && + (pte & (PG_MANAGED | PG_V)) == (PG_MANAGED | PG_V)) { + /* Ensure that "PHYS_TO_VM_PAGE(pa)->object" doesn't change. */ + if (vm_page_pa_tryrelock(pmap, pa, locked_pa)) + goto retry; + } else + PA_UNLOCK_COND(*locked_pa); + PMAP_UNLOCK(pmap); return (val); } Modified: head/sys/arm/arm/pmap.c ============================================================================== --- head/sys/arm/arm/pmap.c Mon May 24 13:44:39 2010 (r208503) +++ head/sys/arm/arm/pmap.c Mon May 24 14:26:57 2010 (r208504) @@ -4475,6 +4475,8 @@ boolean_t pmap_is_modified(vm_page_t m) { + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_is_modified: page %p is not managed", m)); if (m->md.pvh_attrs & PVF_MOD) return (TRUE); @@ -4489,8 +4491,23 @@ void pmap_clear_modify(vm_page_t m) { + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_clear_modify: page %p is not managed", m)); + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); + KASSERT((m->oflags & VPO_BUSY) == 0, + ("pmap_clear_modify: page %p is busy", m)); + + /* + * If the page is not PG_WRITEABLE, then no mappings can be modified. + * If the object containing the page is locked and the page is not + * VPO_BUSY, then PG_WRITEABLE cannot be concurrently set. + */ + if ((m->flags & PG_WRITEABLE) == 0) + return; + vm_page_lock_queues(); if (m->md.pvh_attrs & PVF_MOD) pmap_clearbit(m, PVF_MOD); + vm_page_unlock_queues(); } @@ -4517,8 +4534,12 @@ void pmap_clear_reference(vm_page_t m) { + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_clear_reference: page %p is not managed", m)); + vm_page_lock_queues(); if (m->md.pvh_attrs & PVF_REF) pmap_clearbit(m, PVF_REF); + vm_page_unlock_queues(); } @@ -4551,7 +4572,7 @@ pmap_remove_write(vm_page_t m) * perform the pmap work for mincore */ int -pmap_mincore(pmap_t pmap, vm_offset_t addr) +pmap_mincore(pmap_t pmap, vm_offset_t addr, vm_paddr_t *locked_pa) { printf("pmap_mincore()\n"); Modified: head/sys/i386/i386/pmap.c ============================================================================== --- head/sys/i386/i386/pmap.c Mon May 24 13:44:39 2010 (r208503) +++ head/sys/i386/i386/pmap.c Mon May 24 14:26:57 2010 (r208504) @@ -4294,12 +4294,25 @@ pmap_remove_pages(pmap_t pmap) boolean_t pmap_is_modified(vm_page_t m) { + boolean_t rv; - if (m->flags & PG_FICTITIOUS) + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_is_modified: page %p is not managed", m)); + + /* + * If the page is not VPO_BUSY, then PG_WRITEABLE cannot be + * concurrently set while the object is locked. Thus, if PG_WRITEABLE + * is clear, no PTEs can have PG_M set. + */ + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); + if ((m->oflags & VPO_BUSY) == 0 && + (m->flags & PG_WRITEABLE) == 0) return (FALSE); - if (pmap_is_modified_pvh(&m->md)) - return (TRUE); - return (pmap_is_modified_pvh(pa_to_pvh(VM_PAGE_TO_PHYS(m)))); + vm_page_lock_queues(); + rv = pmap_is_modified_pvh(&m->md) || + pmap_is_modified_pvh(pa_to_pvh(VM_PAGE_TO_PHYS(m))); + vm_page_unlock_queues(); + return (rv); } /* @@ -4563,9 +4576,20 @@ pmap_clear_modify(vm_page_t m) pt_entry_t oldpte, *pte; vm_offset_t va; - mtx_assert(&vm_page_queue_mtx, MA_OWNED); - if ((m->flags & PG_FICTITIOUS) != 0) + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_clear_modify: page %p is not managed", m)); + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); + KASSERT((m->oflags & VPO_BUSY) == 0, + ("pmap_clear_modify: page %p is busy", m)); + + /* + * If the page is not PG_WRITEABLE, then no PTEs can have PG_M set. + * If the object containing the page is locked and the page is not + * VPO_BUSY, then PG_WRITEABLE cannot be concurrently set. + */ + if ((m->flags & PG_WRITEABLE) == 0) return; + vm_page_lock_queues(); sched_pin(); pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m)); TAILQ_FOREACH_SAFE(pv, &pvh->pv_list, pv_list, next_pv) { @@ -4623,6 +4647,7 @@ pmap_clear_modify(vm_page_t m) PMAP_UNLOCK(pmap); } sched_unpin(); + vm_page_unlock_queues(); } /* @@ -4640,9 +4665,9 @@ pmap_clear_reference(vm_page_t m) pt_entry_t *pte; vm_offset_t va; - mtx_assert(&vm_page_queue_mtx, MA_OWNED); - if ((m->flags & PG_FICTITIOUS) != 0) - return; + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_clear_reference: page %p is not managed", m)); + vm_page_lock_queues(); sched_pin(); pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m)); TAILQ_FOREACH_SAFE(pv, &pvh->pv_list, pv_list, next_pv) { @@ -4686,6 +4711,7 @@ pmap_clear_reference(vm_page_t m) PMAP_UNLOCK(pmap); } sched_unpin(); + vm_page_unlock_queues(); } /* @@ -4955,72 +4981,51 @@ pmap_change_attr(vm_offset_t va, vm_size * perform the pmap work for mincore */ int -pmap_mincore(pmap_t pmap, vm_offset_t addr) +pmap_mincore(pmap_t pmap, vm_offset_t addr, vm_paddr_t *locked_pa) { pd_entry_t *pdep; pt_entry_t *ptep, pte; vm_paddr_t pa; - vm_page_t m; - int val = 0; - + int val; + PMAP_LOCK(pmap); +retry: pdep = pmap_pde(pmap, addr); if (*pdep != 0) { if (*pdep & PG_PS) { pte = *pdep; - val = MINCORE_SUPER; /* Compute the physical address of the 4KB page. */ pa = ((*pdep & PG_PS_FRAME) | (addr & PDRMASK)) & PG_FRAME; + val = MINCORE_SUPER; } else { ptep = pmap_pte(pmap, addr); pte = *ptep; pmap_pte_release(ptep); pa = pte & PG_FRAME; + val = 0; } } else { pte = 0; pa = 0; + val = 0; } - PMAP_UNLOCK(pmap); - - if (pte != 0) { + if ((pte & PG_V) != 0) { val |= MINCORE_INCORE; - if ((pte & PG_MANAGED) == 0) - return (val); - - m = PHYS_TO_VM_PAGE(pa); - - /* - * Modified by us - */ if ((pte & (PG_M | PG_RW)) == (PG_M | PG_RW)) - val |= MINCORE_MODIFIED|MINCORE_MODIFIED_OTHER; - else { - /* - * Modified by someone else - */ - vm_page_lock_queues(); - if (m->dirty || pmap_is_modified(m)) - val |= MINCORE_MODIFIED_OTHER; - vm_page_unlock_queues(); - } - /* - * Referenced by us - */ - if (pte & PG_A) - val |= MINCORE_REFERENCED|MINCORE_REFERENCED_OTHER; - else { - /* - * Referenced by someone else - */ - vm_page_lock_queues(); - if ((m->flags & PG_REFERENCED) || - pmap_is_referenced(m)) - val |= MINCORE_REFERENCED_OTHER; - vm_page_unlock_queues(); - } - } + val |= MINCORE_MODIFIED | MINCORE_MODIFIED_OTHER; + if ((pte & PG_A) != 0) + val |= MINCORE_REFERENCED | MINCORE_REFERENCED_OTHER; + } + if ((val & (MINCORE_MODIFIED_OTHER | MINCORE_REFERENCED_OTHER)) != + (MINCORE_MODIFIED_OTHER | MINCORE_REFERENCED_OTHER) && + (pte & (PG_MANAGED | PG_V)) == (PG_MANAGED | PG_V)) { + /* Ensure that "PHYS_TO_VM_PAGE(pa)->object" doesn't change. */ + if (vm_page_pa_tryrelock(pmap, pa, locked_pa)) + goto retry; + } else + PA_UNLOCK_COND(*locked_pa); + PMAP_UNLOCK(pmap); return (val); } Modified: head/sys/i386/xen/pmap.c ============================================================================== --- head/sys/i386/xen/pmap.c Mon May 24 13:44:39 2010 (r208503) +++ head/sys/i386/xen/pmap.c Mon May 24 14:26:57 2010 (r208504) @@ -3663,12 +3663,21 @@ pmap_is_modified(vm_page_t m) pmap_t pmap; boolean_t rv; + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_is_modified: page %p is not managed", m)); rv = FALSE; - if (m->flags & PG_FICTITIOUS) - return (rv); + /* + * If the page is not VPO_BUSY, then PG_WRITEABLE cannot be + * concurrently set while the object is locked. Thus, if PG_WRITEABLE + * is clear, no PTEs can have PG_M set. + */ + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); + if ((m->oflags & VPO_BUSY) == 0 && + (m->flags & PG_WRITEABLE) == 0) + return (rv); + vm_page_lock_queues(); sched_pin(); - mtx_assert(&vm_page_queue_mtx, MA_OWNED); TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { pmap = PV_PMAP(pv); PMAP_LOCK(pmap); @@ -3681,6 +3690,7 @@ pmap_is_modified(vm_page_t m) if (*PMAP1) PT_SET_MA(PADDR1, 0); sched_unpin(); + vm_page_unlock_queues(); return (rv); } @@ -3887,9 +3897,20 @@ pmap_clear_modify(vm_page_t m) pmap_t pmap; pt_entry_t *pte; - mtx_assert(&vm_page_queue_mtx, MA_OWNED); - if ((m->flags & PG_FICTITIOUS) != 0) + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_clear_modify: page %p is not managed", m)); + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); + KASSERT((m->oflags & VPO_BUSY) == 0, + ("pmap_clear_modify: page %p is busy", m)); + + /* + * If the page is not PG_WRITEABLE, then no PTEs can have PG_M set. + * If the object containing the page is locked and the page is not + * VPO_BUSY, then PG_WRITEABLE cannot be concurrently set. + */ + if ((m->flags & PG_WRITEABLE) == 0) return; + vm_page_lock_queues(); sched_pin(); TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { pmap = PV_PMAP(pv); @@ -3907,6 +3928,7 @@ pmap_clear_modify(vm_page_t m) PMAP_UNLOCK(pmap); } sched_unpin(); + vm_page_unlock_queues(); } /* @@ -3921,9 +3943,9 @@ pmap_clear_reference(vm_page_t m) pmap_t pmap; pt_entry_t *pte; - mtx_assert(&vm_page_queue_mtx, MA_OWNED); - if ((m->flags & PG_FICTITIOUS) != 0) - return; + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_clear_reference: page %p is not managed", m)); + vm_page_lock_queues(); sched_pin(); TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { pmap = PV_PMAP(pv); @@ -3941,6 +3963,7 @@ pmap_clear_reference(vm_page_t m) PMAP_UNLOCK(pmap); } sched_unpin(); + vm_page_unlock_queues(); } /* @@ -4133,60 +4156,36 @@ pmap_change_attr(va, size, mode) * perform the pmap work for mincore */ int -pmap_mincore(pmap_t pmap, vm_offset_t addr) +pmap_mincore(pmap_t pmap, vm_offset_t addr, vm_paddr_t *locked_pa) { pt_entry_t *ptep, pte; - vm_page_t m; - int val = 0; + vm_paddr_t pa; + int val; PMAP_LOCK(pmap); +retry: ptep = pmap_pte(pmap, addr); pte = (ptep != NULL) ? PT_GET(ptep) : 0; pmap_pte_release(ptep); - PMAP_UNLOCK(pmap); - - if (pte != 0) { - vm_paddr_t pa; - - val = MINCORE_INCORE; - if ((pte & PG_MANAGED) == 0) - return val; - + val = 0; + if ((pte & PG_V) != 0) { + val |= MINCORE_INCORE; + if ((pte & (PG_M | PG_RW)) == (PG_M | PG_RW)) + val |= MINCORE_MODIFIED | MINCORE_MODIFIED_OTHER; + if ((pte & PG_A) != 0) + val |= MINCORE_REFERENCED | MINCORE_REFERENCED_OTHER; + } + if ((val & (MINCORE_MODIFIED_OTHER | MINCORE_REFERENCED_OTHER)) != + (MINCORE_MODIFIED_OTHER | MINCORE_REFERENCED_OTHER) && + (pte & (PG_MANAGED | PG_V)) == (PG_MANAGED | PG_V)) { pa = pte & PG_FRAME; - - m = PHYS_TO_VM_PAGE(pa); - - /* - * Modified by us - */ - if (pte & PG_M) - val |= MINCORE_MODIFIED|MINCORE_MODIFIED_OTHER; - else { - /* - * Modified by someone else - */ - vm_page_lock_queues(); - if (m->dirty || pmap_is_modified(m)) - val |= MINCORE_MODIFIED_OTHER; - vm_page_unlock_queues(); - } - /* - * Referenced by us - */ - if (pte & PG_A) - val |= MINCORE_REFERENCED|MINCORE_REFERENCED_OTHER; - else { - /* - * Referenced by someone else - */ - vm_page_lock_queues(); - if ((m->flags & PG_REFERENCED) || - pmap_is_referenced(m)) - val |= MINCORE_REFERENCED_OTHER; - vm_page_unlock_queues(); - } - } - return val; + /* Ensure that "PHYS_TO_VM_PAGE(pa)->object" doesn't change. */ + if (vm_page_pa_tryrelock(pmap, pa, locked_pa)) + goto retry; + } else + PA_UNLOCK_COND(*locked_pa); + PMAP_UNLOCK(pmap); + return (val); } void Modified: head/sys/ia64/ia64/pmap.c ============================================================================== --- head/sys/ia64/ia64/pmap.c Mon May 24 13:44:39 2010 (r208503) +++ head/sys/ia64/ia64/pmap.c Mon May 24 14:26:57 2010 (r208504) @@ -1981,10 +1981,20 @@ pmap_is_modified(vm_page_t m) pv_entry_t pv; boolean_t rv; + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_is_modified: page %p is not managed", m)); rv = FALSE; - if (m->flags & PG_FICTITIOUS) - return (rv); + /* + * If the page is not VPO_BUSY, then PG_WRITEABLE cannot be + * concurrently set while the object is locked. Thus, if PG_WRITEABLE + * is clear, no PTEs can be dirty. + */ + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); + if ((m->oflags & VPO_BUSY) == 0 && + (m->flags & PG_WRITEABLE) == 0) + return (rv); + vm_page_lock_queues(); TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { PMAP_LOCK(pv->pv_pmap); oldpmap = pmap_switch(pv->pv_pmap); @@ -1996,7 +2006,7 @@ pmap_is_modified(vm_page_t m) if (rv) break; } - + vm_page_unlock_queues(); return (rv); } @@ -2058,9 +2068,20 @@ pmap_clear_modify(vm_page_t m) pmap_t oldpmap; pv_entry_t pv; - if (m->flags & PG_FICTITIOUS) - return; + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_clear_modify: page %p is not managed", m)); + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); + KASSERT((m->oflags & VPO_BUSY) == 0, + ("pmap_clear_modify: page %p is busy", m)); + /* + * If the page is not PG_WRITEABLE, then no PTEs can be modified. + * If the object containing the page is locked and the page is not + * VPO_BUSY, then PG_WRITEABLE cannot be concurrently set. + */ + if ((m->flags & PG_WRITEABLE) == 0) + return; + vm_page_lock_queues(); TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { PMAP_LOCK(pv->pv_pmap); oldpmap = pmap_switch(pv->pv_pmap); @@ -2073,6 +2094,7 @@ pmap_clear_modify(vm_page_t m) pmap_switch(oldpmap); PMAP_UNLOCK(pv->pv_pmap); } + vm_page_unlock_queues(); } /* @@ -2087,9 +2109,9 @@ pmap_clear_reference(vm_page_t m) pmap_t oldpmap; pv_entry_t pv; - if (m->flags & PG_FICTITIOUS) - return; - + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_clear_reference: page %p is not managed", m)); + vm_page_lock_queues(); TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { PMAP_LOCK(pv->pv_pmap); oldpmap = pmap_switch(pv->pv_pmap); @@ -2102,6 +2124,7 @@ pmap_clear_reference(vm_page_t m) pmap_switch(oldpmap); PMAP_UNLOCK(pv->pv_pmap); } + vm_page_unlock_queues(); } /* @@ -2178,13 +2201,15 @@ pmap_unmapdev(vm_offset_t va, vm_size_t * perform the pmap work for mincore */ int -pmap_mincore(pmap_t pmap, vm_offset_t addr) +pmap_mincore(pmap_t pmap, vm_offset_t addr, vm_paddr_t *locked_pa) { pmap_t oldpmap; struct ia64_lpte *pte, tpte; - int val = 0; + vm_paddr_t pa; + int val; PMAP_LOCK(pmap); +retry: oldpmap = pmap_switch(pmap); pte = pmap_find_vhpt(addr); if (pte != NULL) { @@ -2192,53 +2217,27 @@ pmap_mincore(pmap_t pmap, vm_offset_t ad pte = &tpte; } pmap_switch(oldpmap); - PMAP_UNLOCK(pmap); - - if (pte == NULL) - return 0; - - if (pmap_present(pte)) { - vm_page_t m; - vm_offset_t pa; - - val = MINCORE_INCORE; - if (!pmap_managed(pte)) - return val; - + if (pte == NULL || !pmap_present(pte)) { + val = 0; + goto out; + } + val = MINCORE_INCORE; + if (pmap_dirty(pte)) + val |= MINCORE_MODIFIED | MINCORE_MODIFIED_OTHER; + if (pmap_accessed(pte)) + val |= MINCORE_REFERENCED | MINCORE_REFERENCED_OTHER; + if ((val & (MINCORE_MODIFIED_OTHER | MINCORE_REFERENCED_OTHER)) != + (MINCORE_MODIFIED_OTHER | MINCORE_REFERENCED_OTHER) && + pmap_managed(pte)) { pa = pmap_ppn(pte); - - m = PHYS_TO_VM_PAGE(pa); - - /* - * Modified by us - */ - if (pmap_dirty(pte)) - val |= MINCORE_MODIFIED|MINCORE_MODIFIED_OTHER; - else { - /* - * Modified by someone - */ - vm_page_lock_queues(); - if (pmap_is_modified(m)) - val |= MINCORE_MODIFIED_OTHER; - vm_page_unlock_queues(); - } - /* - * Referenced by us - */ - if (pmap_accessed(pte)) - val |= MINCORE_REFERENCED|MINCORE_REFERENCED_OTHER; - else { - /* - * Referenced by someone - */ - vm_page_lock_queues(); - if (pmap_is_referenced(m)) - val |= MINCORE_REFERENCED_OTHER; - vm_page_unlock_queues(); - } - } - return val; + /* Ensure that "PHYS_TO_VM_PAGE(pa)->object" doesn't change. */ + if (vm_page_pa_tryrelock(pmap, pa, locked_pa)) + goto retry; + } else +out: + PA_UNLOCK_COND(*locked_pa); + PMAP_UNLOCK(pmap); + return (val); } void Modified: head/sys/kern/vfs_bio.c ============================================================================== --- head/sys/kern/vfs_bio.c Mon May 24 13:44:39 2010 (r208503) +++ head/sys/kern/vfs_bio.c Mon May 24 14:26:57 2010 (r208504) @@ -2443,7 +2443,6 @@ vfs_setdirty_locked_object(struct buf *b vm_offset_t boffset; vm_offset_t eoffset; - vm_page_lock_queues(); /* * test the pages to see if they have been modified directly * by users through the VM system. @@ -2469,7 +2468,6 @@ vfs_setdirty_locked_object(struct buf *b } eoffset = ((i + 1) << PAGE_SHIFT) - (bp->b_offset & PAGE_MASK); - vm_page_unlock_queues(); /* * Fit it to the buffer. */ Modified: head/sys/mips/mips/pmap.c ============================================================================== --- head/sys/mips/mips/pmap.c Mon May 24 13:44:39 2010 (r208503) +++ head/sys/mips/mips/pmap.c Mon May 24 14:26:57 2010 (r208504) @@ -2586,13 +2586,27 @@ pmap_ts_referenced(vm_page_t m) boolean_t pmap_is_modified(vm_page_t m) { - if (m->flags & PG_FICTITIOUS) - return FALSE; + boolean_t rv; + + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_is_modified: page %p is not managed", m)); + /* + * If the page is not VPO_BUSY, then PG_WRITEABLE cannot be + * concurrently set while the object is locked. Thus, if PG_WRITEABLE + * is clear, no PTEs can have PTE_M set. + */ + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); + if ((m->oflags & VPO_BUSY) == 0 && + (m->flags & PG_WRITEABLE) == 0) + return (FALSE); + vm_page_lock_queues(); if (m->md.pv_flags & PV_TABLE_MOD) - return TRUE; + rv = TRUE; else - return pmap_testbit(m, PTE_M); + rv = pmap_testbit(m, PTE_M); + vm_page_unlock_queues(); + return (rv); } /* N/C */ @@ -2625,13 +2639,26 @@ pmap_is_prefaultable(pmap_t pmap, vm_off void pmap_clear_modify(vm_page_t m) { - if (m->flags & PG_FICTITIOUS) + + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_clear_modify: page %p is not managed", m)); + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); + KASSERT((m->oflags & VPO_BUSY) == 0, + ("pmap_clear_modify: page %p is busy", m)); + + /* + * If the page is not PG_WRITEABLE, then no PTEs can have PTE_M set. + * If the object containing the page is locked and the page is not + * VPO_BUSY, then PG_WRITEABLE cannot be concurrently set. + */ + if ((m->flags & PG_WRITEABLE) == 0) return; - mtx_assert(&vm_page_queue_mtx, MA_OWNED); + vm_page_lock_queues(); if (m->md.pv_flags & PV_TABLE_MOD) { pmap_changebit(m, PTE_M, FALSE); m->md.pv_flags &= ~PV_TABLE_MOD; } + vm_page_unlock_queues(); } /* @@ -2656,13 +2683,14 @@ pmap_is_referenced(vm_page_t m) void pmap_clear_reference(vm_page_t m) { - if (m->flags & PG_FICTITIOUS) - return; - mtx_assert(&vm_page_queue_mtx, MA_OWNED); + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_clear_reference: page %p is not managed", m)); + vm_page_lock_queues(); if (m->md.pv_flags & PV_TABLE_REF) { m->md.pv_flags &= ~PV_TABLE_REF; } + vm_page_unlock_queues(); } /* @@ -2733,51 +2761,47 @@ pmap_unmapdev(vm_offset_t va, vm_size_t * perform the pmap work for mincore */ int -pmap_mincore(pmap_t pmap, vm_offset_t addr) +pmap_mincore(pmap_t pmap, vm_offset_t addr, vm_paddr_t *locked_pa) { - pt_entry_t *ptep, pte; - vm_page_t m; - int val = 0; + vm_offset_t pa; + int val; + boolean_t managed; PMAP_LOCK(pmap); +retry: ptep = pmap_pte(pmap, addr); pte = (ptep != NULL) ? *ptep : 0; - PMAP_UNLOCK(pmap); - - if (mips_pg_v(pte)) { - vm_offset_t pa; - - val = MINCORE_INCORE; - pa = mips_tlbpfn_to_paddr(pte); - if (!page_is_managed(pa)) - return val; - - m = PHYS_TO_VM_PAGE(pa); - + if (!mips_pg_v(pte)) { + val = 0; + goto out; + } + val = MINCORE_INCORE; + if ((pte & PTE_M) != 0) + val |= MINCORE_MODIFIED | MINCORE_MODIFIED_OTHER; + pa = mips_tlbpfn_to_paddr(pte); + managed = page_is_managed(pa); + if (managed) { /* - * Modified by us + * This may falsely report the given address as + * MINCORE_REFERENCED. Unfortunately, due to the lack of + * per-PTE reference information, it is impossible to + * determine if the address is MINCORE_REFERENCED. */ - if (pte & PTE_M) - val |= MINCORE_MODIFIED | MINCORE_MODIFIED_OTHER; - /* - * Modified by someone - */ - else { - vm_page_lock_queues(); - if (m->dirty || pmap_is_modified(m)) - val |= MINCORE_MODIFIED_OTHER; - vm_page_unlock_queues(); - } - /* - * Referenced by us or someone - */ - vm_page_lock_queues(); - if ((m->flags & PG_REFERENCED) || pmap_is_referenced(m)) + m = PHYS_TO_VM_PAGE(pa); + if ((m->flags & PG_REFERENCED) != 0) val |= MINCORE_REFERENCED | MINCORE_REFERENCED_OTHER; - vm_page_unlock_queues(); } - return val; + if ((val & (MINCORE_MODIFIED_OTHER | MINCORE_REFERENCED_OTHER)) != + (MINCORE_MODIFIED_OTHER | MINCORE_REFERENCED_OTHER) && managed) { + /* Ensure that "PHYS_TO_VM_PAGE(pa)->object" doesn't change. */ + if (vm_page_pa_tryrelock(pmap, pa, locked_pa)) + goto retry; + } else +out: + PA_UNLOCK_COND(*locked_pa); + PMAP_UNLOCK(pmap); + return (val); } void Modified: head/sys/powerpc/aim/mmu_oea.c ============================================================================== --- head/sys/powerpc/aim/mmu_oea.c Mon May 24 13:44:39 2010 (r208503) +++ head/sys/powerpc/aim/mmu_oea.c Mon May 24 14:26:57 2010 (r208504) @@ -1290,29 +1290,57 @@ moea_is_referenced(mmu_t mmu, vm_page_t boolean_t moea_is_modified(mmu_t mmu, vm_page_t m) { + boolean_t rv; - if ((m->flags & (PG_FICTITIOUS |PG_UNMANAGED)) != 0) - return (FALSE); + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("moea_is_modified: page %p is not managed", m)); - return (moea_query_bit(m, PTE_CHG)); + /* + * If the page is not VPO_BUSY, then PG_WRITEABLE cannot be + * concurrently set while the object is locked. Thus, if PG_WRITEABLE + * is clear, no PTEs can have PTE_CHG set. + */ + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); + if ((m->oflags & VPO_BUSY) == 0 && + (m->flags & PG_WRITEABLE) == 0) + return (FALSE); + vm_page_lock_queues(); + rv = moea_query_bit(m, PTE_CHG); + vm_page_unlock_queues(); + return (rv); } void moea_clear_reference(mmu_t mmu, vm_page_t m) { - if ((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) != 0) - return; + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("moea_clear_reference: page %p is not managed", m)); + vm_page_lock_queues(); moea_clear_bit(m, PTE_REF, NULL); + vm_page_unlock_queues(); } void moea_clear_modify(mmu_t mmu, vm_page_t m) { - if ((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) != 0) + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("moea_clear_modify: page %p is not managed", m)); + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); + KASSERT((m->oflags & VPO_BUSY) == 0, + ("moea_clear_modify: page %p is busy", m)); + + /* + * If the page is not PG_WRITEABLE, then no PTEs can have PTE_CHG + * set. If the object containing the page is locked and the page is + * not VPO_BUSY, then PG_WRITEABLE cannot be concurrently set. + */ + if ((m->flags & PG_WRITEABLE) == 0) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Mon May 24 14:37:28 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7530C1065674; Mon, 24 May 2010 14:37:28 +0000 (UTC) (envelope-from avg@freebsd.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id CD7868FC13; Mon, 24 May 2010 14:37:26 +0000 (UTC) Received: from porto.topspin.kiev.ua (porto-e.starpoint.kiev.ua [212.40.38.100]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id RAA01500; Mon, 24 May 2010 17:37:24 +0300 (EEST) (envelope-from avg@freebsd.org) Received: from localhost.topspin.kiev.ua ([127.0.0.1]) by porto.topspin.kiev.ua with esmtp (Exim 4.34 (FreeBSD)) id 1OGYmR-000BlE-Uk; Mon, 24 May 2010 17:37:24 +0300 Message-ID: <4BFA8F22.6040402@freebsd.org> Date: Mon, 24 May 2010 17:37:22 +0300 From: Andriy Gapon User-Agent: Thunderbird 2.0.0.24 (X11/20100321) MIME-Version: 1.0 To: Alexander Motin References: <201005241140.o4OBeova088506@svn.freebsd.org> In-Reply-To: <201005241140.o4OBeova088506@svn.freebsd.org> X-Enigmail-Version: 0.96.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r208494 - in head/sys: amd64/amd64 amd64/include i386/i386 i386/include kern pc98/cbus sys x86/isa x86/x86 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 14:37:28 -0000 on 24/05/2010 14:40 Alexander Motin said the following: > Author: mav > Date: Mon May 24 11:40:49 2010 > New Revision: 208494 > URL: http://svn.freebsd.org/changeset/base/208494 > > Log: > - Implement MI helper functions, dividing one or two timer interrupts with > arbitrary frequencies into hardclock(), statclock() and profclock() calls. > Same code with minor variations duplicated several times over the tree for > different timer drivers and architectures. > - Switch all x86 archs to new functions, simplifying the code and removing > extra logic from timer drivers. Other archs are also welcome. Alexander, could you please describe the new code/KPI in greater detail, perhaps on a more appropriate mailing list? For me it is not immediately obvious why IPI_PROFCLOCK is gone now. I haven't spent much time reverse engineering this change and perhaps it's easier for you to describe the change. Thanks! > Modified: > head/sys/amd64/amd64/mp_machdep.c > head/sys/amd64/include/apicvar.h > head/sys/amd64/include/clock.h > head/sys/i386/i386/mp_machdep.c > head/sys/i386/include/apicvar.h > head/sys/i386/include/clock.h > head/sys/kern/kern_clock.c > head/sys/pc98/cbus/clock.c > head/sys/sys/kernel.h > head/sys/sys/systm.h > head/sys/x86/isa/clock.c > head/sys/x86/x86/local_apic.c > > Modified: head/sys/amd64/amd64/mp_machdep.c > ============================================================================== > --- head/sys/amd64/amd64/mp_machdep.c Mon May 24 11:14:40 2010 (r208493) > +++ head/sys/amd64/amd64/mp_machdep.c Mon May 24 11:40:49 2010 (r208494) > @@ -1112,9 +1112,6 @@ ipi_bitmap_handler(struct trapframe fram > > if (ipi_bitmap & (1 << IPI_STATCLOCK)) > statclockintr(&frame); > - > - if (ipi_bitmap & (1 << IPI_PROFCLOCK)) > - profclockintr(&frame); > } > > /* > > Modified: head/sys/amd64/include/apicvar.h > ============================================================================== > --- head/sys/amd64/include/apicvar.h Mon May 24 11:14:40 2010 (r208493) > +++ head/sys/amd64/include/apicvar.h Mon May 24 11:40:49 2010 (r208494) > @@ -123,8 +123,7 @@ > #define IPI_PREEMPT 1 > #define IPI_HARDCLOCK 2 > #define IPI_STATCLOCK 3 > -#define IPI_PROFCLOCK 4 > -#define IPI_BITMAP_LAST IPI_PROFCLOCK > +#define IPI_BITMAP_LAST IPI_STATCLOCK > #define IPI_IS_BITMAPED(x) ((x) <= IPI_BITMAP_LAST) > > #define IPI_STOP (APIC_IPI_INTS + 7) /* Stop CPU until restarted. */ > > Modified: head/sys/amd64/include/clock.h > ============================================================================== > --- head/sys/amd64/include/clock.h Mon May 24 11:14:40 2010 (r208493) > +++ head/sys/amd64/include/clock.h Mon May 24 11:40:49 2010 (r208494) > @@ -27,7 +27,6 @@ struct trapframe; > > int hardclockintr(struct trapframe *frame); > int statclockintr(struct trapframe *frame); > -int profclockintr(struct trapframe *frame); > > /* > * Driver to clock driver interface. > > Modified: head/sys/i386/i386/mp_machdep.c > ============================================================================== > --- head/sys/i386/i386/mp_machdep.c Mon May 24 11:14:40 2010 (r208493) > +++ head/sys/i386/i386/mp_machdep.c Mon May 24 11:40:49 2010 (r208494) > @@ -1279,9 +1279,6 @@ ipi_bitmap_handler(struct trapframe fram > > if (ipi_bitmap & (1 << IPI_STATCLOCK)) > statclockintr(&frame); > - > - if (ipi_bitmap & (1 << IPI_PROFCLOCK)) > - profclockintr(&frame); > } > > /* > > Modified: head/sys/i386/include/apicvar.h > ============================================================================== > --- head/sys/i386/include/apicvar.h Mon May 24 11:14:40 2010 (r208493) > +++ head/sys/i386/include/apicvar.h Mon May 24 11:40:49 2010 (r208494) > @@ -124,8 +124,7 @@ > #define IPI_PREEMPT 1 > #define IPI_HARDCLOCK 2 > #define IPI_STATCLOCK 3 > -#define IPI_PROFCLOCK 4 > -#define IPI_BITMAP_LAST IPI_PROFCLOCK > +#define IPI_BITMAP_LAST IPI_STATCLOCK > #define IPI_IS_BITMAPED(x) ((x) <= IPI_BITMAP_LAST) > > #define IPI_STOP (APIC_IPI_INTS + 7) /* Stop CPU until restarted. */ > @@ -152,8 +151,7 @@ > #define IPI_PREEMPT 1 > #define IPI_HARDCLOCK 2 > #define IPI_STATCLOCK 3 > -#define IPI_PROFCLOCK 4 > -#define IPI_BITMAP_LAST IPI_PROFCLOCK > +#define IPI_BITMAP_LAST IPI_STATCLOCK > #define IPI_IS_BITMAPED(x) ((x) <= IPI_BITMAP_LAST) > > #define IPI_STOP (APIC_IPI_INTS + 7) /* Stop CPU until restarted. */ > > Modified: head/sys/i386/include/clock.h > ============================================================================== > --- head/sys/i386/include/clock.h Mon May 24 11:14:40 2010 (r208493) > +++ head/sys/i386/include/clock.h Mon May 24 11:40:49 2010 (r208494) > @@ -27,7 +27,6 @@ struct trapframe; > > int hardclockintr(struct trapframe *frame); > int statclockintr(struct trapframe *frame); > -int profclockintr(struct trapframe *frame); > > /* > * Driver to clock driver interface. > > Modified: head/sys/kern/kern_clock.c > ============================================================================== > --- head/sys/kern/kern_clock.c Mon May 24 11:14:40 2010 (r208493) > +++ head/sys/kern/kern_clock.c Mon May 24 11:40:49 2010 (r208494) > @@ -374,6 +374,12 @@ int profprocs; > int ticks; > int psratio; > > +int timer1hz; > +int timer2hz; > +static DPCPU_DEFINE(u_int, hard_cnt); > +static DPCPU_DEFINE(u_int, stat_cnt); > +static DPCPU_DEFINE(u_int, prof_cnt); > + > /* > * Initialize clock frequencies and start both clocks running. > */ > @@ -403,6 +409,52 @@ initclocks(dummy) > #endif > } > > +void > +timer1clock(int usermode, uintfptr_t pc) > +{ > + u_int *cnt; > + > + cnt = DPCPU_PTR(hard_cnt); > + *cnt += hz; > + if (*cnt >= timer1hz) { > + *cnt -= timer1hz; > + if (*cnt >= timer1hz) > + *cnt = 0; > + if (PCPU_GET(cpuid) == 0) > + hardclock(usermode, pc); > + else > + hardclock_cpu(usermode); > + } > + if (timer2hz == 0) > + timer2clock(usermode, pc); > +} > + > +void > +timer2clock(int usermode, uintfptr_t pc) > +{ > + u_int *cnt; > + int t2hz = timer2hz ? timer2hz : timer1hz; > + > + cnt = DPCPU_PTR(stat_cnt); > + *cnt += stathz; > + if (*cnt >= t2hz) { > + *cnt -= t2hz; > + if (*cnt >= t2hz) > + *cnt = 0; > + statclock(usermode); > + } > + if (profprocs == 0) > + return; > + cnt = DPCPU_PTR(prof_cnt); > + *cnt += profhz; > + if (*cnt >= t2hz) { > + *cnt -= t2hz; > + if (*cnt >= t2hz) > + *cnt = 0; > + profclock(usermode, pc); > + } > +} > + > /* > * Each time the real-time timer fires, this function is called on all CPUs. > * Note that hardclock() calls hardclock_cpu() for the boot CPU, so only > > Modified: head/sys/pc98/cbus/clock.c > ============================================================================== > --- head/sys/pc98/cbus/clock.c Mon May 24 11:14:40 2010 (r208493) > +++ head/sys/pc98/cbus/clock.c Mon May 24 11:40:49 2010 (r208494) > @@ -129,10 +129,7 @@ int > hardclockintr(struct trapframe *frame) > { > > - if (PCPU_GET(cpuid) == 0) > - hardclock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); > - else > - hardclock_cpu(TRAPF_USERMODE(frame)); > + timer1clock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); > return (FILTER_HANDLED); > } > > @@ -143,13 +140,6 @@ statclockintr(struct trapframe *frame) > return (FILTER_HANDLED); > } > > -int > -profclockintr(struct trapframe *frame) > -{ > - > - return (FILTER_HANDLED); > -} > - > static int > clkintr(struct trapframe *frame) > { > @@ -448,6 +438,7 @@ cpu_initclocks() > * timecounter to user a simpler algorithm. > */ > if (using_lapic_timer == LAPIC_CLOCK_NONE) { > + timer1hz = hz; > intr_add_handler("clk", 0, (driver_filter_t *)clkintr, NULL, > NULL, INTR_TYPE_CLK, NULL); > i8254_intsrc = intr_lookup_source(0); > @@ -460,6 +451,14 @@ cpu_initclocks() > i8254_timecounter.tc_counter_mask = 0xffff; > set_i8254_freq(i8254_freq, hz); > } > + if (using_lapic_timer != LAPIC_CLOCK_ALL) { > + profhz = hz; > + if (hz < 128) > + stathz = hz; > + else > + stathz = hz / (hz / 128); > + } > + timer2hz = 0; > > init_TSC_tc(); > } > > Modified: head/sys/sys/kernel.h > ============================================================================== > --- head/sys/sys/kernel.h Mon May 24 11:14:40 2010 (r208493) > +++ head/sys/sys/kernel.h Mon May 24 11:40:49 2010 (r208494) > @@ -64,6 +64,8 @@ extern int stathz; /* statistics clock > extern int profhz; /* profiling clock's frequency */ > extern int profprocs; /* number of process's profiling */ > extern int ticks; > +extern int timer1hz; /* timer 1 frequency */ > +extern int timer2hz; /* timer 2 frequency */ > > #endif /* _KERNEL */ > > > Modified: head/sys/sys/systm.h > ============================================================================== > --- head/sys/sys/systm.h Mon May 24 11:14:40 2010 (r208493) > +++ head/sys/sys/systm.h Mon May 24 11:40:49 2010 (r208494) > @@ -240,6 +240,8 @@ void hardclock_cpu(int usermode); > void softclock(void *); > void statclock(int usermode); > void profclock(int usermode, uintfptr_t pc); > +void timer1clock(int usermode, uintfptr_t pc); > +void timer2clock(int usermode, uintfptr_t pc); > > void startprofclock(struct proc *); > void stopprofclock(struct proc *); > > Modified: head/sys/x86/isa/clock.c > ============================================================================== > --- head/sys/x86/isa/clock.c Mon May 24 11:14:40 2010 (r208493) > +++ head/sys/x86/isa/clock.c Mon May 24 11:40:49 2010 (r208494) > @@ -87,8 +87,6 @@ __FBSDID("$FreeBSD$"); > #define TIMER_DIV(x) ((i8254_freq + (x) / 2) / (x)) > > int clkintr_pending; > -static int pscnt = 1; > -static int psdiv = 1; > #ifndef TIMER_FREQ > #define TIMER_FREQ 1193182 > #endif > @@ -134,10 +132,7 @@ int > hardclockintr(struct trapframe *frame) > { > > - if (PCPU_GET(cpuid) == 0) > - hardclock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); > - else > - hardclock_cpu(TRAPF_USERMODE(frame)); > + timer1clock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); > return (FILTER_HANDLED); > } > > @@ -145,19 +140,7 @@ int > statclockintr(struct trapframe *frame) > { > > - profclockintr(frame); > - statclock(TRAPF_USERMODE(frame)); > - return (FILTER_HANDLED); > -} > - > -int > -profclockintr(struct trapframe *frame) > -{ > - > - if (!using_atrtc_timer) > - hardclockintr(frame); > - if (profprocs != 0) > - profclock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); > + timer2clock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); > return (FILTER_HANDLED); > } > > @@ -190,28 +173,11 @@ clkintr(struct trapframe *frame) > (*cyclic_clock_func[cpu])(frame); > #endif > > - if (using_atrtc_timer) { > -#ifdef SMP > - if (smp_started) > - ipi_all_but_self(IPI_HARDCLOCK); > -#endif > - hardclockintr(frame); > - } else { > - if (--pscnt <= 0) { > - pscnt = psratio; > #ifdef SMP > - if (smp_started) > - ipi_all_but_self(IPI_STATCLOCK); > + if (smp_started) > + ipi_all_but_self(IPI_HARDCLOCK); > #endif > - statclockintr(frame); > - } else { > -#ifdef SMP > - if (smp_started) > - ipi_all_but_self(IPI_PROFCLOCK); > -#endif > - profclockintr(frame); > - } > - } > + hardclockintr(frame); > > #ifdef DEV_MCA > /* Reset clock interrupt by asserting bit 7 of port 0x61 */ > @@ -295,20 +261,11 @@ rtcintr(struct trapframe *frame) > > while (rtcin(RTC_INTR) & RTCIR_PERIOD) { > flag = 1; > - if (--pscnt <= 0) { > - pscnt = psdiv; > #ifdef SMP > - if (smp_started) > - ipi_all_but_self(IPI_STATCLOCK); > -#endif > - statclockintr(frame); > - } else { > -#ifdef SMP > - if (smp_started) > - ipi_all_but_self(IPI_PROFCLOCK); > + if (smp_started) > + ipi_all_but_self(IPI_STATCLOCK); > #endif > - profclockintr(frame); > - } > + statclockintr(frame); > } > return(flag ? FILTER_HANDLED : FILTER_STRAY); > } > @@ -555,6 +512,7 @@ cpu_initclocks() > * timecounter to user a simpler algorithm. > */ > if (using_lapic_timer == LAPIC_CLOCK_NONE) { > + timer1hz = hz; > intr_add_handler("clk", 0, (driver_filter_t *)clkintr, NULL, > NULL, INTR_TYPE_CLK, NULL); > i8254_intsrc = intr_lookup_source(0); > @@ -577,6 +535,7 @@ cpu_initclocks() > if (using_lapic_timer != LAPIC_CLOCK_ALL) { > using_atrtc_timer = tasc; > if (using_atrtc_timer) { > + timer2hz = RTC_NOPROFRATE; > /* Enable periodic interrupts from the RTC. */ > intr_add_handler("rtc", 8, > (driver_filter_t *)rtcintr, NULL, NULL, > @@ -588,6 +547,7 @@ cpu_initclocks() > stathz = hz; > else > stathz = hz / (hz / 128); > + timer2hz = 0; > } > } > > @@ -601,7 +561,7 @@ cpu_startprofclock(void) > if (using_lapic_timer == LAPIC_CLOCK_ALL || !using_atrtc_timer) > return; > atrtc_rate(RTCSA_PROF); > - psdiv = pscnt = psratio; > + timer2hz = RTC_PROFRATE; > } > > void > @@ -611,7 +571,7 @@ cpu_stopprofclock(void) > if (using_lapic_timer == LAPIC_CLOCK_ALL || !using_atrtc_timer) > return; > atrtc_rate(RTCSA_NOPROF); > - psdiv = pscnt = 1; > + timer2hz = RTC_NOPROFRATE; > } > > static int > > Modified: head/sys/x86/x86/local_apic.c > ============================================================================== > --- head/sys/x86/x86/local_apic.c Mon May 24 11:14:40 2010 (r208493) > +++ head/sys/x86/x86/local_apic.c Mon May 24 11:40:49 2010 (r208494) > @@ -118,9 +118,6 @@ struct lapic { > u_int la_cluster_id:2; > u_int la_present:1; > u_long *la_timer_count; > - u_long la_hard_ticks; > - u_long la_stat_ticks; > - u_long la_prof_ticks; > /* Include IDT_SYSCALL to make indexing easier. */ > int la_ioint_irqs[APIC_NUM_IOINTS + 1]; > } static lapics[MAX_APIC_ID + 1]; > @@ -493,12 +490,14 @@ lapic_setup_clock(enum lapic_clock srcsd > } else > lapic_timer_hz = hz; > lapic_timer_period = value / lapic_timer_hz; > + timer1hz = lapic_timer_hz; > if (srcsdes == LAPIC_CLOCK_ALL) { > if (lapic_timer_hz < 128) > stathz = lapic_timer_hz; > else > stathz = lapic_timer_hz / (lapic_timer_hz / 128); > profhz = lapic_timer_hz; > + timer2hz = 0; > } > > /* > @@ -790,33 +789,7 @@ lapic_handle_timer(struct trapframe *fra > (*cyclic_clock_func[cpu])(frame); > #endif > > - /* Fire hardclock at hz. */ > - la->la_hard_ticks += hz; > - if (la->la_hard_ticks >= lapic_timer_hz) { > - la->la_hard_ticks -= lapic_timer_hz; > - if (PCPU_GET(cpuid) == 0) > - hardclock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); > - else > - hardclock_cpu(TRAPF_USERMODE(frame)); > - } > - if (clockcoverage == LAPIC_CLOCK_ALL) { > - > - /* Fire statclock at stathz. */ > - la->la_stat_ticks += stathz; > - if (la->la_stat_ticks >= lapic_timer_hz) { > - la->la_stat_ticks -= lapic_timer_hz; > - statclock(TRAPF_USERMODE(frame)); > - } > - > - /* Fire profclock at profhz, but only when needed. */ > - la->la_prof_ticks += profhz; > - if (la->la_prof_ticks >= lapic_timer_hz) { > - la->la_prof_ticks -= lapic_timer_hz; > - if (profprocs != 0) > - profclock(TRAPF_USERMODE(frame), > - TRAPF_PC(frame)); > - } > - } > + timer1clock(TRAPF_USERMODE(frame), TRAPF_PC(frame)); > critical_exit(); > } > -- Andriy Gapon From owner-svn-src-all@FreeBSD.ORG Mon May 24 15:12:12 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A6272106567D; Mon, 24 May 2010 15:12:12 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 940F28FC2B; Mon, 24 May 2010 15:12:12 +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 o4OFCCCj035609; Mon, 24 May 2010 15:12:12 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OFCC9O035607; Mon, 24 May 2010 15:12:12 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201005241512.o4OFCC9O035607@svn.freebsd.org> From: Jilles Tjoelker Date: Mon, 24 May 2010 15:12:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208505 - head/bin/sh X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 15:12:12 -0000 Author: jilles Date: Mon May 24 15:12:12 2010 New Revision: 208505 URL: http://svn.freebsd.org/changeset/base/208505 Log: sh(1): Rework documentation of shell variables. * Move the "environment variables" that do not need exporting to be effective or that are set by the shell without exporting to a new section "Special Variables". * Add special variables LINENO and PPID. * Add environment variables LANG, LC_* and PWD; also describe ENV under environment variables. Modified: head/bin/sh/sh.1 Modified: head/bin/sh/sh.1 ============================================================================== --- head/bin/sh/sh.1 Mon May 24 14:26:57 2010 (r208504) +++ head/bin/sh/sh.1 Mon May 24 15:12:12 2010 (r208505) @@ -32,7 +32,7 @@ .\" from: @(#)sh.1 8.6 (Berkeley) 5/4/95 .\" $FreeBSD$ .\" -.Dd May 9, 2010 +.Dd May 24, 2010 .Dt SH 1 .Os .Sh NAME @@ -665,11 +665,11 @@ Command names containing a slash are sim performing any searches. .It The shell searches each entry in the -.Ev PATH -environment variable +.Va PATH +variable in turn for the command. The value of the -.Ev PATH +.Va PATH variable should be a series of entries separated by colons. Each entry consists of a @@ -1109,6 +1109,84 @@ pipeline. .It Li $0 (zero) Expands to the name of the shell or shell script. .El +.Ss Special Variables +The following variables are set by the shell or +have special meaning to it: +.Bl -tag -width ".Va HISTSIZE" +.It Va CDPATH +The search path used with the +.Ic cd +built-in. +.It Va EDITOR +The fallback editor used with the +.Ic fc +built-in. +If not set, the default editor is +.Xr ed 1 . +.It Va FCEDIT +The default editor used with the +.Ic fc +built-in. +.It Va HISTSIZE +The number of previous commands that are accessible. +.It Va HOME +The user's home directory, +used in tilde expansion and as a default directory for the +.Ic cd +built-in. +.It Va IFS +Input Field Separators. +This is normally set to +.Aq space , +.Aq tab , +and +.Aq newline . +See the +.Sx White Space Splitting +section for more details. +.It Va LINENO +The current line number in the script or function. +.It Va MAIL +The name of a mail file, that will be checked for the arrival of new +mail. +Overridden by +.Va MAILPATH . +.It Va MAILPATH +A colon +.Pq Ql \&: +separated list of file names, for the shell to check for incoming +mail. +This variable overrides the +.Va MAIL +setting. +There is a maximum of 10 mailboxes that can be monitored at once. +.It Va PATH +The default search path for executables. +See the +.Sx Path Search +section for details. +.It Va PPID +The parent process ID of the invoked shell. +This is set at startup +unless this variable is in the environment. +A later change of parent process ID is not reflected. +A subshell retains the same value of +.Va PPID . +.It Va PS1 +The primary prompt string, which defaults to +.Dq Li "$ " , +unless you are the superuser, in which case it defaults to +.Dq Li "# " . +.It Va PS2 +The secondary prompt string, which defaults to +.Dq Li "> " . +.It Va PS4 +The prefix for the trace output (if +.Fl x +is active). +The default is +.Dq Li "+ " . +.El .Ss Word Expansions This clause describes the various expansions that are performed on words. @@ -1162,7 +1240,7 @@ If the username is missing (as in .Pa ~/foobar ) , the tilde is replaced with the value of the -.Ev HOME +.Va HOME variable (the current user's home directory). .Ss Parameter Expansion The format for parameter expansion is as follows: @@ -1487,10 +1565,10 @@ contains any .Ql / characters, it is used as is. Otherwise, the shell searches the -.Ev PATH +.Va PATH for the file. If it is not found in the -.Ev PATH , +.Va PATH , it is sought in the current working directory. .It Ic \&[ A built-in equivalent of @@ -1534,7 +1612,7 @@ This command is documented in Switch to the specified .Ar directory , or to the directory specified in the -.Ev HOME +.Va HOME environment variable if no .Ar directory is specified. @@ -1545,17 +1623,17 @@ does not begin with or .Pa .. , then the directories listed in the -.Ev CDPATH +.Va CDPATH variable will be searched for the specified .Ar directory . If -.Ev CDPATH +.Va CDPATH is unset, the current directory is searched. The format of -.Ev CDPATH +.Va CDPATH is the same as that of -.Ev PATH . +.Va PATH . In an interactive shell, the .Ic cd @@ -1563,7 +1641,7 @@ command will print out the name of the d that it actually switched to if this is different from the name that the user gave. These may be different either because the -.Ev CDPATH +.Va CDPATH mechanism was used or because a symbolic link was crossed. .Pp If the @@ -1597,7 +1675,7 @@ If the .Fl p option is specified, the command search is performed using a default value of -.Ev PATH +.Va PATH that is guaranteed to find all of the standard utilities. .Pp If the @@ -1756,20 +1834,20 @@ The .Ar editor string is a command name, subject to search via the -.Ev PATH +.Va PATH variable. The value in the -.Ev FCEDIT +.Va FCEDIT variable is used as a default when .Fl e is not specified. If -.Ev FCEDIT +.Va FCEDIT is null or unset, the value of the -.Ev EDITOR +.Va EDITOR variable is used. If -.Ev EDITOR +.Va EDITOR is null or unset, .Xr ed 1 is used as the editor. @@ -1803,7 +1881,7 @@ Re-execute the command without invoking Select the commands to list or edit. The number of previous commands that can be accessed are determined by the value of the -.Ev HISTSIZE +.Va HISTSIZE variable. The value of .Ar first @@ -1834,12 +1912,12 @@ the string form of the first operand can .El .El .Pp -The following environment variables affect the execution of +The following variables affect the execution of .Ic fc : -.Bl -tag -width ".Ev HISTSIZE" -.It Ev FCEDIT +.Bl -tag -width ".Va HISTSIZE" +.It Va FCEDIT Name of the editor to use for history editing. -.It Ev HISTSIZE +.It Va HISTSIZE The number of previous commands that are accessible. .El .It Ic fg Op Ar job @@ -2305,74 +2383,27 @@ command line editing features. .Sh ENVIRONMENT The following environment variables affect the execution of .Nm : -.Bl -tag -width ".Ev HISTSIZE" -.It Ev CDPATH -The search path used with the -.Ic cd -built-in. -.It Ev EDITOR -The fallback editor used with the -.Ic fc -built-in. -If not set, the default editor is -.Xr ed 1 . -.It Ev FCEDIT -The default editor used with the -.Ic fc -built-in. -.It Ev HISTSIZE -The number of previous commands that are accessible. -.It Ev HOME -The starting directory of -.Nm . -.It Ev IFS -Input Field Separators. -This is normally set to -.Aq space , -.Aq tab , -and -.Aq newline . -See the -.Sx White Space Splitting -section for more details. -.It Ev MAIL -The name of a mail file, that will be checked for the arrival of new -mail. -Overridden by -.Ev MAILPATH . -.It Ev MAILPATH -A colon -.Pq Ql \&: -separated list of file names, for the shell to check for incoming -mail. -This environment setting overrides the -.Ev MAIL -setting. -There is a maximum of 10 mailboxes that can be monitored at once. -.It Ev PATH -The default search path for executables. -See the -.Sx Path Search -section for details. -.It Ev PS1 -The primary prompt string, which defaults to -.Dq Li "$ " , -unless you are the superuser, in which case it defaults to -.Dq Li "# " . -.It Ev PS2 -The secondary prompt string, which defaults to -.Dq Li "> " . -.It Ev PS4 -The prefix for the trace output (if -.Fl x -is active). -The default is -.Dq Li "+ " . +.Bl -tag -width ".Ev LANGXXXXXX" +.It Ev ENV +Initialization file for interactive shells. +.It Ev LANG , Ev LC_* +Locale settings. +These are inherited by children of the shell, +and is used in a limited manner by the shell itself. +.It Ev PWD +An absolute pathname for the current directory, +possibly containing symbolic links. +This is used and updated by the shell. .It Ev TERM The default terminal setting for the shell. This is inherited by children of the shell, and is used in the history editing modes. .El +.Pp +Additionally, all environment variables are turned into shell variables +at startup, +which may affect the shell as described under +.Sx Special Variables . .Sh EXIT STATUS Errors that are detected by the shell, such as a syntax error, will cause the shell to exit with a non-zero exit status. From owner-svn-src-all@FreeBSD.ORG Mon May 24 15:20:28 2010 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E12771065674; Mon, 24 May 2010 15:20:28 +0000 (UTC) (envelope-from simon@nitro.dk) Received: from mx.nitro.dk (unknown [77.75.165.90]) by mx1.freebsd.org (Postfix) with ESMTP id A03998FC15; Mon, 24 May 2010 15:20:28 +0000 (UTC) Received: from arthur.nitro.dk (arthur.bofh [192.168.2.3]) by mx.nitro.dk (Postfix) with ESMTP id AD5DA2D4CF0; Mon, 24 May 2010 15:20:27 +0000 (UTC) Received: by arthur.nitro.dk (Postfix, from userid 1000) id A4C7E5C19; Mon, 24 May 2010 17:20:27 +0200 (CEST) Date: Mon, 24 May 2010 17:20:27 +0200 From: "Simon L. Nielsen" To: Marius Strobl Message-ID: <20100524152026.GF1396@arthur.nitro.dk> References: <201005231946.o4NJkJLL072302@svn.freebsd.org> <20100524113941.GA1396@arthur.nitro.dk> <20100524122345.GI68288@alchemy.franken.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100524122345.GI68288@alchemy.franken.de> User-Agent: Mutt/1.5.20 (2009-06-14) Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r208459 - head/release/doc/en_US.ISO8859-1/hardware X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 15:20:29 -0000 On 2010.05.24 14:23:45 +0200, Marius Strobl wrote: > On Mon, May 24, 2010 at 01:39:42PM +0200, Simon L. Nielsen wrote: > > On 2010.05.23 19:46:19 +0000, Marius Strobl wrote: > > > > > New Revision: 208459 > > > > > > Log: > > > 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. > > > > > > > > - &netra; t1 105 > > > + &sun; &netra; t1 100/105 > > > > If the product is called Netra and you just added the Sun part to > > identify the company it should just be Sun, and not &sun; as you are > > refering to Sun the company and not as part of a trademark. > > > > (It's a bit since I looked at it, but I'm rather sure above ist still > > the case.) > > > > > + 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: > > > > Same here, if you are refering to Fujitsu the company it should not > > include a trademark symbol. > > > > It's kind of hard to think of a case where one would use the name > of a company in a way that doesn't refer to the company but rather > to a trademark when even using "company product" doesn't mean to > refer to it as part of a trademark :) I.e. when would one have to > use the company trademark? Indeed :). I tried a quick check to see where I found the specific examples (which I do remember existing at least at one point) but I couldn't find them now. > In any case, do the attached patches look correct to you? Yes, that looks good - please commit that. (IE, "Approved" with my doc hat.) -- Simon L. Nielsen From owner-svn-src-all@FreeBSD.ORG Mon May 24 15:26:40 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Mon May 24 15:45:06 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 268B71065675; Mon, 24 May 2010 15:45:06 +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 135818FC08; Mon, 24 May 2010 15:45: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 o4OFj6fd042928; Mon, 24 May 2010 15:45:06 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OFj54s042913; Mon, 24 May 2010 15:45:05 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201005241545.o4OFj54s042913@svn.freebsd.org> From: John Baldwin Date: Mon, 24 May 2010 15:45:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208507 - in head/sys: amd64/amd64 amd64/include i386/i386 i386/include x86/x86 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 15:45:06 -0000 Author: jhb Date: Mon May 24 15:45:05 2010 New Revision: 208507 URL: http://svn.freebsd.org/changeset/base/208507 Log: Add support for corrected machine check interrupts. CMCI is a new local APIC interrupt that fires when a threshold of corrected machine check events is reached. CMCI also includes a count of events when reporting corrected errors in the bank's status register. Note that individual banks may or may not support CMCI. If they do, each bank includes its own threshold register that determines when the interrupt fires. Currently the code uses a very simple strategy where it doubles the threshold on each interrupt until it succeeds in throttling the interrupt to occur only once a minute (this interval can be tuned via sysctl). The threshold is also adjusted on each hourly poll which will lower the threshold once events stop occurring. Tested by: Sailaja Bangaru sbappana at yahoo com MFC after: 1 month Modified: head/sys/amd64/amd64/apic_vector.S head/sys/amd64/amd64/mca.c head/sys/amd64/include/apicreg.h head/sys/amd64/include/apicvar.h head/sys/amd64/include/mca.h head/sys/amd64/include/pcpu.h head/sys/amd64/include/specialreg.h head/sys/i386/i386/apic_vector.s head/sys/i386/i386/mca.c head/sys/i386/include/apicreg.h head/sys/i386/include/apicvar.h head/sys/i386/include/mca.h head/sys/i386/include/pcpu.h head/sys/i386/include/specialreg.h head/sys/x86/x86/local_apic.c Modified: head/sys/amd64/amd64/apic_vector.S ============================================================================== --- head/sys/amd64/amd64/apic_vector.S Mon May 24 15:26:40 2010 (r208506) +++ head/sys/amd64/amd64/apic_vector.S Mon May 24 15:45:05 2010 (r208507) @@ -105,6 +105,18 @@ IDTVEC(timerint) jmp doreti /* + * Local APIC CMCI handler. + */ + .text + SUPERALIGN_TEXT +IDTVEC(cmcint) + PUSH_FRAME + FAKE_MCOUNT(TF_RIP(%rsp)) + call lapic_handle_cmc + MEXITCOUNT + jmp doreti + +/* * Local APIC error interrupt handler. */ .text Modified: head/sys/amd64/amd64/mca.c ============================================================================== --- head/sys/amd64/amd64/mca.c Mon May 24 15:26:40 2010 (r208506) +++ head/sys/amd64/amd64/mca.c Mon May 24 15:45:05 2010 (r208507) @@ -33,6 +33,8 @@ __FBSDID("$FreeBSD$"); #include +#include +#include #include #include #include @@ -43,11 +45,29 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include +#include #include #include #include #include +/* Modes for mca_scan() */ +enum scan_mode { + POLLED, + MCE, + CMCI, +}; + +/* + * State maintained for each monitored MCx bank to control the + * corrected machine check interrupt threshold. + */ +struct cmc_state { + int max_threshold; + int last_intr; +}; + struct mca_internal { struct mca_record rec; int logged; @@ -79,19 +99,22 @@ static struct callout mca_timer; static int mca_ticks = 3600; /* Check hourly by default. */ static struct task mca_task; static struct mtx mca_lock; +static struct cmc_state **cmc_state; /* Indexed by cpuid, bank */ +static int cmc_banks; +static int cmc_throttle = 60; /* Time in seconds to throttle CMCI. */ static int -sysctl_mca_ticks(SYSCTL_HANDLER_ARGS) +sysctl_positive_int(SYSCTL_HANDLER_ARGS) { int error, value; - value = mca_ticks; + value = *(int *)arg1; error = sysctl_handle_int(oidp, &value, 0, req); if (error || req->newptr == NULL) return (error); if (value <= 0) return (EINVAL); - mca_ticks = value; + *(int *)arg1 = value; return (0); } @@ -401,31 +424,112 @@ mca_record_entry(const struct mca_record } /* + * Update the interrupt threshold for a CMCI. The strategy is to use + * a low trigger that interrupts as soon as the first event occurs. + * However, if a steady stream of events arrive, the threshold is + * increased until the interrupts are throttled to once every + * cmc_throttle seconds or the periodic scan. If a periodic scan + * finds that the threshold is too high, it is lowered. + */ +static void +cmci_update(enum scan_mode mode, int bank, int valid, struct mca_record *rec) +{ + struct cmc_state *cc; + uint64_t ctl; + u_int delta; + int count, limit; + + /* Fetch the current limit for this bank. */ + cc = &cmc_state[PCPU_GET(cpuid)][bank]; + ctl = rdmsr(MSR_MC_CTL2(bank)); + count = (rec->mr_status & MC_STATUS_COR_COUNT) >> 38; + delta = (u_int)(ticks - cc->last_intr); + + /* + * If an interrupt was received less than cmc_throttle seconds + * since the previous interrupt and the count from the current + * event is greater than or equal to the current threshold, + * double the threshold up to the max. + */ + if (mode == CMCI && valid) { + limit = ctl & MC_CTL2_THRESHOLD; + if (delta < cmc_throttle && count >= limit && + limit < cc->max_threshold) { + limit = min(limit << 1, cc->max_threshold); + ctl &= ~MC_CTL2_THRESHOLD; + ctl |= limit; + wrmsr(MSR_MC_CTL2(bank), limit); + } + cc->last_intr = ticks; + return; + } + + /* + * When the banks are polled, check to see if the threshold + * should be lowered. + */ + if (mode != POLLED) + return; + + /* If a CMCI occured recently, do nothing for now. */ + if (delta < cmc_throttle) + return; + + /* + * Compute a new limit based on the average rate of events per + * cmc_throttle seconds since the last interrupt. + */ + if (valid) { + count = (rec->mr_status & MC_STATUS_COR_COUNT) >> 38; + limit = count * cmc_throttle / delta; + if (limit <= 0) + limit = 1; + else if (limit > cc->max_threshold) + limit = cc->max_threshold; + } else + limit = 1; + if ((ctl & MC_CTL2_THRESHOLD) != limit) { + ctl &= ~MC_CTL2_THRESHOLD; + ctl |= limit; + wrmsr(MSR_MC_CTL2(bank), limit); + } +} + +/* * This scans all the machine check banks of the current CPU to see if * there are any machine checks. Any non-recoverable errors are * reported immediately via mca_log(). The current thread must be - * pinned when this is called. The 'mcip' parameter indicates if we - * are being called from the MC exception handler. In that case this - * function returns true if the system is restartable. Otherwise, it - * returns a count of the number of valid MC records found. + * pinned when this is called. The 'mode' parameter indicates if we + * are being called from the MC exception handler, the CMCI handler, + * or the periodic poller. In the MC exception case this function + * returns true if the system is restartable. Otherwise, it returns a + * count of the number of valid MC records found. */ static int -mca_scan(int mcip) +mca_scan(enum scan_mode mode) { struct mca_record rec; uint64_t mcg_cap, ucmask; - int count, i, recoverable; + int count, i, recoverable, valid; count = 0; recoverable = 1; ucmask = MC_STATUS_UC | MC_STATUS_PCC; /* When handling a MCE#, treat the OVER flag as non-restartable. */ - if (mcip) + if (mode == MCE) ucmask |= MC_STATUS_OVER; mcg_cap = rdmsr(MSR_MCG_CAP); for (i = 0; i < (mcg_cap & MCG_CAP_COUNT); i++) { - if (mca_check_status(i, &rec)) { + /* + * For a CMCI, only check banks this CPU is + * responsible for. + */ + if (mode == CMCI && !(PCPU_GET(cmci_mask) & 1 << i)) + continue; + + valid = mca_check_status(i, &rec); + if (valid) { count++; if (rec.mr_status & ucmask) { recoverable = 0; @@ -433,8 +537,15 @@ mca_scan(int mcip) } mca_record_entry(&rec); } + + /* + * If this is a bank this CPU monitors via CMCI, + * update the threshold. + */ + if (PCPU_GET(cmci_mask) & (1 << i)) + cmci_update(mode, i, valid, &rec); } - return (mcip ? recoverable : count); + return (mode == MCE ? recoverable : count); } /* @@ -457,7 +568,7 @@ mca_scan_cpus(void *context, int pending continue; sched_bind(td, cpu); thread_unlock(td); - count += mca_scan(0); + count += mca_scan(POLLED); thread_lock(td); sched_unbind(td); } @@ -511,7 +622,24 @@ mca_startup(void *dummy) SYSINIT(mca_startup, SI_SUB_SMP, SI_ORDER_ANY, mca_startup, NULL); static void -mca_setup(void) +cmci_setup(uint64_t mcg_cap) +{ + int i; + + cmc_state = malloc((mp_maxid + 1) * sizeof(struct cmc_state **), + M_MCA, M_WAITOK); + cmc_banks = mcg_cap & MCG_CAP_COUNT; + for (i = 0; i <= mp_maxid; i++) + cmc_state[i] = malloc(sizeof(struct cmc_state) * cmc_banks, + M_MCA, M_WAITOK | M_ZERO); + SYSCTL_ADD_PROC(NULL, SYSCTL_STATIC_CHILDREN(_hw_mca), OID_AUTO, + "cmc_throttle", CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, + &cmc_throttle, 0, sysctl_positive_int, "I", + "Interval in seconds to throttle corrected MC interrupts"); +} + +static void +mca_setup(uint64_t mcg_cap) { mtx_init(&mca_lock, "mca", NULL, MTX_SPIN); @@ -522,13 +650,62 @@ mca_setup(void) "count", CTLFLAG_RD, &mca_count, 0, "Record count"); SYSCTL_ADD_PROC(NULL, SYSCTL_STATIC_CHILDREN(_hw_mca), OID_AUTO, "interval", CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, &mca_ticks, - 0, sysctl_mca_ticks, "I", + 0, sysctl_positive_int, "I", "Periodic interval in seconds to scan for machine checks"); SYSCTL_ADD_NODE(NULL, SYSCTL_STATIC_CHILDREN(_hw_mca), OID_AUTO, "records", CTLFLAG_RD, sysctl_mca_records, "Machine check records"); SYSCTL_ADD_PROC(NULL, SYSCTL_STATIC_CHILDREN(_hw_mca), OID_AUTO, "force_scan", CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, NULL, 0, sysctl_mca_scan, "I", "Force an immediate scan for machine checks"); + if (mcg_cap & MCG_CAP_CMCI_P) + cmci_setup(mcg_cap); +} + +/* + * See if we should monitor CMCI for this bank. If CMCI_EN is already + * set in MC_CTL2, then another CPU is responsible for this bank, so + * ignore it. If CMCI_EN returns zero after being set, then this bank + * does not support CMCI_EN. If this CPU sets CMCI_EN, then it should + * now monitor this bank. + */ +static void +cmci_monitor(int i) +{ + struct cmc_state *cc; + uint64_t ctl; + + KASSERT(i < cmc_banks, ("CPU %d has more MC banks", PCPU_GET(cpuid))); + + ctl = rdmsr(MSR_MC_CTL2(i)); + if (ctl & MC_CTL2_CMCI_EN) + /* Already monitored by another CPU. */ + return; + + /* Set the threshold to one event for now. */ + ctl &= ~MC_CTL2_THRESHOLD; + ctl |= MC_CTL2_CMCI_EN | 1; + wrmsr(MSR_MC_CTL2(i), ctl); + ctl = rdmsr(MSR_MC_CTL2(i)); + if (!(ctl & MC_CTL2_CMCI_EN)) + /* This bank does not support CMCI. */ + return; + + cc = &cmc_state[PCPU_GET(cpuid)][i]; + + /* Determine maximum threshold. */ + ctl &= ~MC_CTL2_THRESHOLD; + ctl |= 0x7fff; + wrmsr(MSR_MC_CTL2(i), ctl); + ctl = rdmsr(MSR_MC_CTL2(i)); + cc->max_threshold = ctl & MC_CTL2_THRESHOLD; + + /* Start off with a threshold of 1. */ + ctl &= ~MC_CTL2_THRESHOLD; + ctl |= 1; + wrmsr(MSR_MC_CTL2(i), ctl); + + /* Mark this bank as monitored. */ + PCPU_SET(cmci_mask, PCPU_GET(cmci_mask) | 1 << i); } /* Must be executed on each CPU. */ @@ -554,14 +731,14 @@ mca_init(void) workaround_erratum383 = 1; if (cpu_feature & CPUID_MCA) { - if (PCPU_GET(cpuid) == 0) - mca_setup(); + PCPU_SET(cmci_mask, 0); - sched_pin(); mcg_cap = rdmsr(MSR_MCG_CAP); if (mcg_cap & MCG_CAP_CTL_P) /* Enable MCA features. */ wrmsr(MSR_MCG_CTL, MCG_CTL_ENABLE); + if (PCPU_GET(cpuid) == 0) + mca_setup(mcg_cap); /* * Disable logging of level one TLB parity (L1TP) errors by @@ -597,10 +774,16 @@ mca_init(void) if (!skip) wrmsr(MSR_MC_CTL(i), ctl); + + if (mcg_cap & MCG_CAP_CMCI_P) + cmci_monitor(i); + /* Clear all errors. */ wrmsr(MSR_MC_STATUS(i), 0); } - sched_unpin(); + + if (PCPU_GET(cmci_mask) != 0) + lapic_enable_cmc(); } load_cr4(rcr4() | CR4_MCE); @@ -624,7 +807,7 @@ mca_intr(void) } /* Scan the banks and check for any non-recoverable errors. */ - recoverable = mca_scan(1); + recoverable = mca_scan(MCE); mcg_status = rdmsr(MSR_MCG_STATUS); if (!(mcg_status & MCG_STATUS_RIPV)) recoverable = 0; @@ -633,3 +816,31 @@ mca_intr(void) wrmsr(MSR_MCG_STATUS, mcg_status & ~MCG_STATUS_MCIP); return (recoverable); } + +/* Called for a CMCI (correctable machine check interrupt). */ +void +cmc_intr(void) +{ + struct mca_internal *mca; + int count; + + /* + * Serialize MCA bank scanning to prevent collisions from + * sibling threads. + */ + count = mca_scan(CMCI); + + /* If we found anything, log them to the console. */ + if (count != 0) { + mtx_lock_spin(&mca_lock); + STAILQ_FOREACH(mca, &mca_records, link) { + if (!mca->logged) { + mca->logged = 1; + mtx_unlock_spin(&mca_lock); + mca_log(&mca->rec); + mtx_lock_spin(&mca_lock); + } + } + mtx_unlock_spin(&mca_lock); + } +} Modified: head/sys/amd64/include/apicreg.h ============================================================================== --- head/sys/amd64/include/apicreg.h Mon May 24 15:26:40 2010 (r208506) +++ head/sys/amd64/include/apicreg.h Mon May 24 15:45:05 2010 (r208507) @@ -89,7 +89,7 @@ * 2C0 Reserved * 2D0 Reserved * 2E0 Reserved - * 2F0 Reserved + * 2F0 Local Vector Table (CMCI) R/W * 300 ICR_LOW Interrupt Command Reg. (0-31) R/W * 310 ICR_HI Interrupt Command Reg. (32-63) R/W * 320 Local Vector Table (Timer) R/W @@ -172,7 +172,7 @@ struct LAPIC { /* reserved */ PAD4; /* reserved */ PAD4; /* reserved */ PAD4; - /* reserved */ PAD4; + u_int32_t lvt_cmci; PAD3; u_int32_t icr_lo; PAD3; u_int32_t icr_hi; PAD3; u_int32_t lvt_timer; PAD3; Modified: head/sys/amd64/include/apicvar.h ============================================================================== --- head/sys/amd64/include/apicvar.h Mon May 24 15:26:40 2010 (r208506) +++ head/sys/amd64/include/apicvar.h Mon May 24 15:45:05 2010 (r208507) @@ -108,8 +108,9 @@ #define APIC_LOCAL_INTS 240 #define APIC_ERROR_INT APIC_LOCAL_INTS #define APIC_THERMAL_INT (APIC_LOCAL_INTS + 1) +#define APIC_CMC_INT (APIC_LOCAL_INTS + 2) -#define APIC_IPI_INTS (APIC_LOCAL_INTS + 2) +#define APIC_IPI_INTS (APIC_LOCAL_INTS + 3) #define IPI_RENDEZVOUS (APIC_IPI_INTS) /* Inter-CPU rendezvous. */ #define IPI_INVLTLB (APIC_IPI_INTS + 1) /* TLB Shootdown IPIs */ #define IPI_INVLPG (APIC_IPI_INTS + 2) @@ -142,7 +143,8 @@ #define LVT_ERROR 3 #define LVT_PMC 4 #define LVT_THERMAL 5 -#define LVT_MAX LVT_THERMAL +#define LVT_CMCI 6 +#define LVT_MAX LVT_CMCI #ifndef LOCORE @@ -178,8 +180,8 @@ struct apic_enumerator { inthand_t IDTVEC(apic_isr1), IDTVEC(apic_isr2), IDTVEC(apic_isr3), IDTVEC(apic_isr4), IDTVEC(apic_isr5), IDTVEC(apic_isr6), - IDTVEC(apic_isr7), IDTVEC(errorint), IDTVEC(spuriousint), - IDTVEC(timerint); + IDTVEC(apic_isr7), IDTVEC(cmcint), IDTVEC(errorint), + IDTVEC(spuriousint), IDTVEC(timerint); extern vm_paddr_t lapic_paddr; extern int apic_cpuids[]; @@ -209,6 +211,7 @@ void lapic_create(u_int apic_id, int boo void lapic_disable(void); void lapic_disable_pmc(void); void lapic_dump(const char *str); +void lapic_enable_cmc(void); int lapic_enable_pmc(void); void lapic_eoi(void); int lapic_id(void); @@ -217,6 +220,7 @@ int lapic_intr_pending(u_int vector); void lapic_ipi_raw(register_t icrlo, u_int dest); void lapic_ipi_vectored(u_int vector, int dest); int lapic_ipi_wait(int delay); +void lapic_handle_cmc(void); void lapic_handle_error(void); void lapic_handle_intr(int vector, struct trapframe *frame); void lapic_handle_timer(struct trapframe *frame); Modified: head/sys/amd64/include/mca.h ============================================================================== --- head/sys/amd64/include/mca.h Mon May 24 15:26:40 2010 (r208506) +++ head/sys/amd64/include/mca.h Mon May 24 15:45:05 2010 (r208507) @@ -46,6 +46,7 @@ struct mca_record { #ifdef _KERNEL +void cmc_intr(void); void mca_init(void); int mca_intr(void); Modified: head/sys/amd64/include/pcpu.h ============================================================================== --- head/sys/amd64/include/pcpu.h Mon May 24 15:26:40 2010 (r208506) +++ head/sys/amd64/include/pcpu.h Mon May 24 15:45:05 2010 (r208507) @@ -75,7 +75,8 @@ /* Pointer to the CPU LDT descriptor */ \ struct system_segment_descriptor *pc_ldt; \ /* Pointer to the CPU TSS descriptor */ \ - struct system_segment_descriptor *pc_tss \ + struct system_segment_descriptor *pc_tss; \ + u_int pc_cmci_mask /* MCx banks for CMCI */ \ PCPU_XEN_FIELDS #ifdef _KERNEL Modified: head/sys/amd64/include/specialreg.h ============================================================================== --- head/sys/amd64/include/specialreg.h Mon May 24 15:26:40 2010 (r208506) +++ head/sys/amd64/include/specialreg.h Mon May 24 15:45:05 2010 (r208507) @@ -385,7 +385,7 @@ #define MC_STATUS_VAL 0x8000000000000000 #define MC_MISC_RA_LSB 0x000000000000003f /* If MCG_CAP_SER_P */ #define MC_MISC_ADDRESS_MODE 0x00000000000001c0 /* If MCG_CAP_SER_P */ -#define MC_CTL2_THRESHOLD 0x0000000000003fff +#define MC_CTL2_THRESHOLD 0x0000000000007fff #define MC_CTL2_CMCI_EN 0x0000000040000000 /* Modified: head/sys/i386/i386/apic_vector.s ============================================================================== --- head/sys/i386/i386/apic_vector.s Mon May 24 15:26:40 2010 (r208506) +++ head/sys/i386/i386/apic_vector.s Mon May 24 15:45:05 2010 (r208507) @@ -111,6 +111,19 @@ IDTVEC(timerint) jmp doreti /* + * Local APIC CMCI handler. + */ + .text + SUPERALIGN_TEXT +IDTVEC(cmcint) + PUSH_FRAME + SET_KERNEL_SREGS + FAKE_MCOUNT(TF_EIP(%esp)) + call lapic_handle_cmc + MEXITCOUNT + jmp doreti + +/* * Local APIC error interrupt handler. */ .text Modified: head/sys/i386/i386/mca.c ============================================================================== --- head/sys/i386/i386/mca.c Mon May 24 15:26:40 2010 (r208506) +++ head/sys/i386/i386/mca.c Mon May 24 15:45:05 2010 (r208507) @@ -33,6 +33,8 @@ __FBSDID("$FreeBSD$"); #include +#include +#include #include #include #include @@ -43,11 +45,29 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include +#include #include #include #include #include +/* Modes for mca_scan() */ +enum scan_mode { + POLLED, + MCE, + CMCI, +}; + +/* + * State maintained for each monitored MCx bank to control the + * corrected machine check interrupt threshold. + */ +struct cmc_state { + int max_threshold; + int last_intr; +}; + struct mca_internal { struct mca_record rec; int logged; @@ -79,19 +99,22 @@ static struct callout mca_timer; static int mca_ticks = 3600; /* Check hourly by default. */ static struct task mca_task; static struct mtx mca_lock; +static struct cmc_state **cmc_state; /* Indexed by cpuid, bank */ +static int cmc_banks; +static int cmc_throttle = 60; /* Time in seconds to throttle CMCI. */ static int -sysctl_mca_ticks(SYSCTL_HANDLER_ARGS) +sysctl_positive_int(SYSCTL_HANDLER_ARGS) { int error, value; - value = mca_ticks; + value = *(int *)arg1; error = sysctl_handle_int(oidp, &value, 0, req); if (error || req->newptr == NULL) return (error); if (value <= 0) return (EINVAL); - mca_ticks = value; + *(int *)arg1 = value; return (0); } @@ -401,31 +424,112 @@ mca_record_entry(const struct mca_record } /* + * Update the interrupt threshold for a CMCI. The strategy is to use + * a low trigger that interrupts as soon as the first event occurs. + * However, if a steady stream of events arrive, the threshold is + * increased until the interrupts are throttled to once every + * cmc_throttle seconds or the periodic scan. If a periodic scan + * finds that the threshold is too high, it is lowered. + */ +static void +cmci_update(enum scan_mode mode, int bank, int valid, struct mca_record *rec) +{ + struct cmc_state *cc; + uint64_t ctl; + u_int delta; + int count, limit; + + /* Fetch the current limit for this bank. */ + cc = &cmc_state[PCPU_GET(cpuid)][bank]; + ctl = rdmsr(MSR_MC_CTL2(bank)); + count = (rec->mr_status & MC_STATUS_COR_COUNT) >> 38; + delta = (u_int)(ticks - cc->last_intr); + + /* + * If an interrupt was received less than cmc_throttle seconds + * since the previous interrupt and the count from the current + * event is greater than or equal to the current threshold, + * double the threshold up to the max. + */ + if (mode == CMCI && valid) { + limit = ctl & MC_CTL2_THRESHOLD; + if (delta < cmc_throttle && count >= limit && + limit < cc->max_threshold) { + limit = min(limit << 1, cc->max_threshold); + ctl &= ~MC_CTL2_THRESHOLD; + ctl |= limit; + wrmsr(MSR_MC_CTL2(bank), limit); + } + cc->last_intr = ticks; + return; + } + + /* + * When the banks are polled, check to see if the threshold + * should be lowered. + */ + if (mode != POLLED) + return; + + /* If a CMCI occured recently, do nothing for now. */ + if (delta < cmc_throttle) + return; + + /* + * Compute a new limit based on the average rate of events per + * cmc_throttle seconds since the last interrupt. + */ + if (valid) { + count = (rec->mr_status & MC_STATUS_COR_COUNT) >> 38; + limit = count * cmc_throttle / delta; + if (limit <= 0) + limit = 1; + else if (limit > cc->max_threshold) + limit = cc->max_threshold; + } else + limit = 1; + if ((ctl & MC_CTL2_THRESHOLD) != limit) { + ctl &= ~MC_CTL2_THRESHOLD; + ctl |= limit; + wrmsr(MSR_MC_CTL2(bank), limit); + } +} + +/* * This scans all the machine check banks of the current CPU to see if * there are any machine checks. Any non-recoverable errors are * reported immediately via mca_log(). The current thread must be - * pinned when this is called. The 'mcip' parameter indicates if we - * are being called from the MC exception handler. In that case this - * function returns true if the system is restartable. Otherwise, it - * returns a count of the number of valid MC records found. + * pinned when this is called. The 'mode' parameter indicates if we + * are being called from the MC exception handler, the CMCI handler, + * or the periodic poller. In the MC exception case this function + * returns true if the system is restartable. Otherwise, it returns a + * count of the number of valid MC records found. */ static int -mca_scan(int mcip) +mca_scan(enum scan_mode mode) { struct mca_record rec; uint64_t mcg_cap, ucmask; - int count, i, recoverable; + int count, i, recoverable, valid; count = 0; recoverable = 1; ucmask = MC_STATUS_UC | MC_STATUS_PCC; /* When handling a MCE#, treat the OVER flag as non-restartable. */ - if (mcip) + if (mode == MCE) ucmask |= MC_STATUS_OVER; mcg_cap = rdmsr(MSR_MCG_CAP); for (i = 0; i < (mcg_cap & MCG_CAP_COUNT); i++) { - if (mca_check_status(i, &rec)) { + /* + * For a CMCI, only check banks this CPU is + * responsible for. + */ + if (mode == CMCI && !(PCPU_GET(cmci_mask) & 1 << i)) + continue; + + valid = mca_check_status(i, &rec); + if (valid) { count++; if (rec.mr_status & ucmask) { recoverable = 0; @@ -433,8 +537,15 @@ mca_scan(int mcip) } mca_record_entry(&rec); } + + /* + * If this is a bank this CPU monitors via CMCI, + * update the threshold. + */ + if (PCPU_GET(cmci_mask) & (1 << i)) + cmci_update(mode, i, valid, &rec); } - return (mcip ? recoverable : count); + return (mode == MCE ? recoverable : count); } /* @@ -457,7 +568,7 @@ mca_scan_cpus(void *context, int pending continue; sched_bind(td, cpu); thread_unlock(td); - count += mca_scan(0); + count += mca_scan(POLLED); thread_lock(td); sched_unbind(td); } @@ -511,7 +622,24 @@ mca_startup(void *dummy) SYSINIT(mca_startup, SI_SUB_SMP, SI_ORDER_ANY, mca_startup, NULL); static void -mca_setup(void) +cmci_setup(uint64_t mcg_cap) +{ + int i; + + cmc_state = malloc((mp_maxid + 1) * sizeof(struct cmc_state **), + M_MCA, M_WAITOK); + cmc_banks = mcg_cap & MCG_CAP_COUNT; + for (i = 0; i <= mp_maxid; i++) + cmc_state[i] = malloc(sizeof(struct cmc_state) * cmc_banks, + M_MCA, M_WAITOK | M_ZERO); + SYSCTL_ADD_PROC(NULL, SYSCTL_STATIC_CHILDREN(_hw_mca), OID_AUTO, + "cmc_throttle", CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, + &cmc_throttle, 0, sysctl_positive_int, "I", + "Interval in seconds to throttle corrected MC interrupts"); +} + +static void +mca_setup(uint64_t mcg_cap) { mtx_init(&mca_lock, "mca", NULL, MTX_SPIN); @@ -522,13 +650,62 @@ mca_setup(void) "count", CTLFLAG_RD, &mca_count, 0, "Record count"); SYSCTL_ADD_PROC(NULL, SYSCTL_STATIC_CHILDREN(_hw_mca), OID_AUTO, "interval", CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, &mca_ticks, - 0, sysctl_mca_ticks, "I", + 0, sysctl_positive_int, "I", "Periodic interval in seconds to scan for machine checks"); SYSCTL_ADD_NODE(NULL, SYSCTL_STATIC_CHILDREN(_hw_mca), OID_AUTO, "records", CTLFLAG_RD, sysctl_mca_records, "Machine check records"); SYSCTL_ADD_PROC(NULL, SYSCTL_STATIC_CHILDREN(_hw_mca), OID_AUTO, "force_scan", CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, NULL, 0, sysctl_mca_scan, "I", "Force an immediate scan for machine checks"); + if (mcg_cap & MCG_CAP_CMCI_P) + cmci_setup(mcg_cap); +} + +/* + * See if we should monitor CMCI for this bank. If CMCI_EN is already + * set in MC_CTL2, then another CPU is responsible for this bank, so + * ignore it. If CMCI_EN returns zero after being set, then this bank + * does not support CMCI_EN. If this CPU sets CMCI_EN, then it should + * now monitor this bank. + */ +static void +cmci_monitor(int i) +{ + struct cmc_state *cc; + uint64_t ctl; + + KASSERT(i < cmc_banks, ("CPU %d has more MC banks", PCPU_GET(cpuid))); + + ctl = rdmsr(MSR_MC_CTL2(i)); + if (ctl & MC_CTL2_CMCI_EN) + /* Already monitored by another CPU. */ + return; + + /* Set the threshold to one event for now. */ + ctl &= ~MC_CTL2_THRESHOLD; + ctl |= MC_CTL2_CMCI_EN | 1; + wrmsr(MSR_MC_CTL2(i), ctl); + ctl = rdmsr(MSR_MC_CTL2(i)); + if (!(ctl & MC_CTL2_CMCI_EN)) + /* This bank does not support CMCI. */ + return; + + cc = &cmc_state[PCPU_GET(cpuid)][i]; + + /* Determine maximum threshold. */ + ctl &= ~MC_CTL2_THRESHOLD; + ctl |= 0x7fff; + wrmsr(MSR_MC_CTL2(i), ctl); + ctl = rdmsr(MSR_MC_CTL2(i)); + cc->max_threshold = ctl & MC_CTL2_THRESHOLD; + + /* Start off with a threshold of 1. */ + ctl &= ~MC_CTL2_THRESHOLD; + ctl |= 1; + wrmsr(MSR_MC_CTL2(i), ctl); + + /* Mark this bank as monitored. */ + PCPU_SET(cmci_mask, PCPU_GET(cmci_mask) | 1 << i); } /* Must be executed on each CPU. */ @@ -554,14 +731,14 @@ mca_init(void) workaround_erratum383 = 1; if (cpu_feature & CPUID_MCA) { - if (PCPU_GET(cpuid) == 0) - mca_setup(); + PCPU_SET(cmci_mask, 0); - sched_pin(); mcg_cap = rdmsr(MSR_MCG_CAP); if (mcg_cap & MCG_CAP_CTL_P) /* Enable MCA features. */ wrmsr(MSR_MCG_CTL, MCG_CTL_ENABLE); + if (PCPU_GET(cpuid) == 0) + mca_setup(mcg_cap); /* * Disable logging of level one TLB parity (L1TP) errors by @@ -597,10 +774,16 @@ mca_init(void) if (!skip) wrmsr(MSR_MC_CTL(i), ctl); + + if (mcg_cap & MCG_CAP_CMCI_P) + cmci_monitor(i); + /* Clear all errors. */ wrmsr(MSR_MC_STATUS(i), 0); } - sched_unpin(); + + if (PCPU_GET(cmci_mask) != 0) + lapic_enable_cmc(); } load_cr4(rcr4() | CR4_MCE); @@ -624,7 +807,7 @@ mca_intr(void) } /* Scan the banks and check for any non-recoverable errors. */ - recoverable = mca_scan(1); + recoverable = mca_scan(MCE); mcg_status = rdmsr(MSR_MCG_STATUS); if (!(mcg_status & MCG_STATUS_RIPV)) recoverable = 0; @@ -633,3 +816,31 @@ mca_intr(void) wrmsr(MSR_MCG_STATUS, mcg_status & ~MCG_STATUS_MCIP); return (recoverable); } + +/* Called for a CMCI (correctable machine check interrupt). */ +void +cmc_intr(void) +{ + struct mca_internal *mca; + int count; + + /* + * Serialize MCA bank scanning to prevent collisions from + * sibling threads. + */ + count = mca_scan(CMCI); + + /* If we found anything, log them to the console. */ + if (count != 0) { + mtx_lock_spin(&mca_lock); + STAILQ_FOREACH(mca, &mca_records, link) { + if (!mca->logged) { + mca->logged = 1; + mtx_unlock_spin(&mca_lock); + mca_log(&mca->rec); + mtx_lock_spin(&mca_lock); + } + } + mtx_unlock_spin(&mca_lock); + } +} Modified: head/sys/i386/include/apicreg.h ============================================================================== --- head/sys/i386/include/apicreg.h Mon May 24 15:26:40 2010 (r208506) +++ head/sys/i386/include/apicreg.h Mon May 24 15:45:05 2010 (r208507) @@ -89,7 +89,7 @@ * 2C0 Reserved * 2D0 Reserved * 2E0 Reserved - * 2F0 Reserved + * 2F0 Local Vector Table (CMCI) R/W * 300 ICR_LOW Interrupt Command Reg. (0-31) R/W * 310 ICR_HI Interrupt Command Reg. (32-63) R/W * 320 Local Vector Table (Timer) R/W @@ -172,7 +172,7 @@ struct LAPIC { /* reserved */ PAD4; /* reserved */ PAD4; /* reserved */ PAD4; - /* reserved */ PAD4; + u_int32_t lvt_cmci; PAD3; u_int32_t icr_lo; PAD3; u_int32_t icr_hi; PAD3; u_int32_t lvt_timer; PAD3; Modified: head/sys/i386/include/apicvar.h ============================================================================== --- head/sys/i386/include/apicvar.h Mon May 24 15:26:40 2010 (r208506) +++ head/sys/i386/include/apicvar.h Mon May 24 15:45:05 2010 (r208507) @@ -108,7 +108,8 @@ #define APIC_LOCAL_INTS 240 #define APIC_ERROR_INT APIC_LOCAL_INTS #define APIC_THERMAL_INT (APIC_LOCAL_INTS + 1) -#define APIC_IPI_INTS (APIC_LOCAL_INTS + 2) +#define APIC_CMC_INT (APIC_LOCAL_INTS + 2) +#define APIC_IPI_INTS (APIC_LOCAL_INTS + 3) #define IPI_RENDEZVOUS (APIC_IPI_INTS) /* Inter-CPU rendezvous. */ #define IPI_INVLTLB (APIC_IPI_INTS + 1) /* TLB Shootdown IPIs */ @@ -135,7 +136,8 @@ #define APIC_LOCAL_INTS 240 #define APIC_ERROR_INT APIC_LOCAL_INTS #define APIC_THERMAL_INT (APIC_LOCAL_INTS + 1) -#define APIC_IPI_INTS (APIC_LOCAL_INTS + 2) +#define APIC_CMC_INT (APIC_LOCAL_INTS + 2) +#define APIC_IPI_INTS (APIC_LOCAL_INTS + 3) #define IPI_RENDEZVOUS (APIC_IPI_INTS) /* Inter-CPU rendezvous. */ #define IPI_INVLTLB (APIC_IPI_INTS + 1) /* TLB Shootdown IPIs */ @@ -170,7 +172,8 @@ #define LVT_ERROR 3 #define LVT_PMC 4 #define LVT_THERMAL 5 -#define LVT_MAX LVT_THERMAL +#define LVT_CMCI 6 +#define LVT_MAX LVT_CMCI #ifndef LOCORE @@ -206,8 +209,8 @@ struct apic_enumerator { inthand_t IDTVEC(apic_isr1), IDTVEC(apic_isr2), IDTVEC(apic_isr3), IDTVEC(apic_isr4), IDTVEC(apic_isr5), IDTVEC(apic_isr6), - IDTVEC(apic_isr7), IDTVEC(errorint), IDTVEC(spuriousint), - IDTVEC(timerint); + IDTVEC(apic_isr7), IDTVEC(cmcint), IDTVEC(errorint), + IDTVEC(spuriousint), IDTVEC(timerint); extern vm_paddr_t lapic_paddr; extern int apic_cpuids[]; @@ -237,6 +240,7 @@ void lapic_create(u_int apic_id, int boo void lapic_disable(void); void lapic_disable_pmc(void); void lapic_dump(const char *str); +void lapic_enable_cmc(void); int lapic_enable_pmc(void); void lapic_eoi(void); int lapic_id(void); @@ -245,6 +249,7 @@ int lapic_intr_pending(u_int vector); void lapic_ipi_raw(register_t icrlo, u_int dest); void lapic_ipi_vectored(u_int vector, int dest); int lapic_ipi_wait(int delay); +void lapic_handle_cmc(void); void lapic_handle_error(void); void lapic_handle_intr(int vector, struct trapframe *frame); void lapic_handle_timer(struct trapframe *frame); Modified: head/sys/i386/include/mca.h ============================================================================== --- head/sys/i386/include/mca.h Mon May 24 15:26:40 2010 (r208506) +++ head/sys/i386/include/mca.h Mon May 24 15:45:05 2010 (r208507) @@ -46,6 +46,7 @@ struct mca_record { #ifdef _KERNEL +void cmc_intr(void); void mca_init(void); int mca_intr(void); Modified: head/sys/i386/include/pcpu.h ============================================================================== --- head/sys/i386/include/pcpu.h Mon May 24 15:26:40 2010 (r208506) +++ head/sys/i386/include/pcpu.h Mon May 24 15:45:05 2010 (r208507) @@ -76,6 +76,7 @@ struct shadow_time_info { *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Mon May 24 16:06:55 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AC9291065672; Mon, 24 May 2010 16:06:55 +0000 (UTC) (envelope-from mavbsd@gmail.com) Received: from mail-fx0-f54.google.com (mail-fx0-f54.google.com [209.85.161.54]) by mx1.freebsd.org (Postfix) with ESMTP id B2F188FC1E; Mon, 24 May 2010 16:06:54 +0000 (UTC) Received: by fxm4 with SMTP id 4so3406993fxm.13 for ; Mon, 24 May 2010 09:06:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:sender:message-id:date:from :user-agent:mime-version:to:cc:subject:references:in-reply-to :x-enigmail-version:content-type:content-transfer-encoding; bh=kkxZMg3bmN8XMDhrIh5838f7nRr90ha+Gh+OBZKfg0o=; b=LkcgLXjSdkUYW39UehLS4LzXikJknwRrrYYqIR/8maHNCIRLpNcc+6ePHjY7QE+mQJ YHiKSmZ6aKss/14X7cDde2G6GX6PDAjt7hDWVjjbacqoLeQv++2lQylk90JiEhsEHRU/ RhHxNAEV5KTAnvz82W+LNATg3XLEzzqbTVE1w= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:x-enigmail-version:content-type :content-transfer-encoding; b=ntn5I0O5X0S1g89pwyZOHTMFB7CXIJ3hqBNfB1pLM+fzGuCudKnOLGM21qwtNuN6al z2+OxndvAAJ+ePXvGQmS+KFzsJkdLfJG1UzmFE3pJSamno0BwPLePSBvz9rMErOtBtIU uKy7Zw40F3po6v68DPReW1ObWcyfxJqcWcWxk= Received: by 10.223.67.144 with SMTP id r16mr4841956fai.102.1274717213599; Mon, 24 May 2010 09:06:53 -0700 (PDT) Received: from mavbook.mavhome.dp.ua (pc.mavhome.dp.ua [212.86.226.226]) by mx.google.com with ESMTPS id j23sm20179637faa.2.2010.05.24.09.06.51 (version=SSLv3 cipher=RC4-MD5); Mon, 24 May 2010 09:06:52 -0700 (PDT) Sender: Alexander Motin Message-ID: <4BFAA409.4040008@FreeBSD.org> Date: Mon, 24 May 2010 19:06:33 +0300 From: Alexander Motin User-Agent: Thunderbird 2.0.0.24 (X11/20100402) MIME-Version: 1.0 To: Andriy Gapon References: <201005241140.o4OBeova088506@svn.freebsd.org> <4BFA8F22.6040402@freebsd.org> In-Reply-To: <4BFA8F22.6040402@freebsd.org> X-Enigmail-Version: 0.96.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r208494 - in head/sys: amd64/amd64 amd64/include i386/i386 i386/include kern pc98/cbus sys x86/isa x86/x86 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 16:06:55 -0000 Andriy Gapon wrote: > on 24/05/2010 14:40 Alexander Motin said the following: >> Author: mav >> Date: Mon May 24 11:40:49 2010 >> New Revision: 208494 >> URL: http://svn.freebsd.org/changeset/base/208494 >> >> Log: >> - Implement MI helper functions, dividing one or two timer interrupts with >> arbitrary frequencies into hardclock(), statclock() and profclock() calls. >> Same code with minor variations duplicated several times over the tree for >> different timer drivers and architectures. >> - Switch all x86 archs to new functions, simplifying the code and removing >> extra logic from timer drivers. Other archs are also welcome. > > could you please describe the new code/KPI in greater detail, perhaps on a more > appropriate mailing list? Sent some summary to arch@. > For me it is not immediately obvious why IPI_PROFCLOCK is gone now. I haven't > spent much time reverse engineering this change and perhaps it's easier for you > to describe the change. IPI_PROFCLOCK is not used any more. Separation between statclock() and profclock() now handled in common machine-independent code. Timer driver generates interrupts, MD code manages timers configuration and events redistribution to every CPU, using up to two IPIs if needed, MI code do the rest of things. -- Alexander Motin From owner-svn-src-all@FreeBSD.ORG Mon May 24 16:18:16 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id ACDA81065674; Mon, 24 May 2010 16:18:16 +0000 (UTC) (envelope-from avg@freebsd.org) Received: from citadel.icyb.net.ua (citadel.icyb.net.ua [212.40.38.140]) by mx1.freebsd.org (Postfix) with ESMTP id 4F6018FC12; Mon, 24 May 2010 16:18:14 +0000 (UTC) Received: from porto.topspin.kiev.ua (porto-e.starpoint.kiev.ua [212.40.38.100]) by citadel.icyb.net.ua (8.8.8p3/ICyb-2.3exp) with ESMTP id TAA04482; Mon, 24 May 2010 19:18:13 +0300 (EEST) (envelope-from avg@freebsd.org) Received: from localhost.topspin.kiev.ua ([127.0.0.1]) by porto.topspin.kiev.ua with esmtp (Exim 4.34 (FreeBSD)) id 1OGaM1-000Byz-EZ; Mon, 24 May 2010 19:18:13 +0300 Message-ID: <4BFAA6C4.3040706@freebsd.org> Date: Mon, 24 May 2010 19:18:12 +0300 From: Andriy Gapon User-Agent: Thunderbird 2.0.0.24 (X11/20100321) MIME-Version: 1.0 To: Alexander Motin References: <201005241140.o4OBeova088506@svn.freebsd.org> <4BFA8F22.6040402@freebsd.org> <4BFAA409.4040008@FreeBSD.org> In-Reply-To: <4BFAA409.4040008@FreeBSD.org> X-Enigmail-Version: 0.96.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r208494 - in head/sys: amd64/amd64 amd64/include i386/i386 i386/include kern pc98/cbus sys x86/isa x86/x86 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 16:18:16 -0000 on 24/05/2010 19:06 Alexander Motin said the following: > Andriy Gapon wrote: >> on 24/05/2010 14:40 Alexander Motin said the following: >>> Author: mav >>> Date: Mon May 24 11:40:49 2010 >>> New Revision: 208494 >>> URL: http://svn.freebsd.org/changeset/base/208494 >>> >>> Log: >>> - Implement MI helper functions, dividing one or two timer interrupts with >>> arbitrary frequencies into hardclock(), statclock() and profclock() calls. >>> Same code with minor variations duplicated several times over the tree for >>> different timer drivers and architectures. >>> - Switch all x86 archs to new functions, simplifying the code and removing >>> extra logic from timer drivers. Other archs are also welcome. >> could you please describe the new code/KPI in greater detail, perhaps on a more >> appropriate mailing list? > > Sent some summary to arch@. Thanks! >> For me it is not immediately obvious why IPI_PROFCLOCK is gone now. I haven't >> spent much time reverse engineering this change and perhaps it's easier for you >> to describe the change. > > IPI_PROFCLOCK is not used any more. Separation between statclock() and > profclock() now handled in common machine-independent code. Timer driver > generates interrupts, MD code manages timers configuration and events > redistribution to every CPU, using up to two IPIs if needed, MI code do > the rest of things. Thank you for the explanation. BTW, with e.g. HPET we may consider using a separate clock for profiling, but I am not sure. -- Andriy Gapon From owner-svn-src-all@FreeBSD.ORG Mon May 24 16:27:47 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F1541106566C; Mon, 24 May 2010 16:27:47 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E01EE8FC12; Mon, 24 May 2010 16:27: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 o4OGRlP4052363; Mon, 24 May 2010 16:27:47 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OGRlLV052361; Mon, 24 May 2010 16:27:47 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201005241627.o4OGRlLV052361@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Mon, 24 May 2010 16:27:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208508 - head/sys/netipsec X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 16:27:48 -0000 Author: bz Date: Mon May 24 16:27:47 2010 New Revision: 208508 URL: http://svn.freebsd.org/changeset/base/208508 Log: MFp4 @178283: Improve IPsec flow distribution for better netisr parallelism. Instead of using the pointer that would have the last bits masked in a % statement in netisr_select_cpuid() to select the queue, use the SPI. Reviewed by: rwatson MFC after: 4 weeks Modified: head/sys/netipsec/ipsec_input.c Modified: head/sys/netipsec/ipsec_input.c ============================================================================== --- head/sys/netipsec/ipsec_input.c Mon May 24 15:45:05 2010 (r208507) +++ head/sys/netipsec/ipsec_input.c Mon May 24 16:27:47 2010 (r208508) @@ -489,7 +489,7 @@ ipsec4_common_input_cb(struct mbuf *m, s /* * Re-dispatch via software interrupt. */ - if ((error = netisr_queue_src(NETISR_IP, (uintptr_t)sav, m))) { + if ((error = netisr_queue_src(NETISR_IP, (uintptr_t)sav->spi, m))) { IPSEC_ISTAT(sproto, V_espstat.esps_qfull, V_ahstat.ahs_qfull, V_ipcompstat.ipcomps_qfull); From owner-svn-src-all@FreeBSD.ORG Mon May 24 16:41:06 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 39DE9106566C; Mon, 24 May 2010 16:41:06 +0000 (UTC) (envelope-from bz@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 280748FC1D; Mon, 24 May 2010 16:41: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 o4OGf6LG055313; Mon, 24 May 2010 16:41:06 GMT (envelope-from bz@svn.freebsd.org) Received: (from bz@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OGf6n4055308; Mon, 24 May 2010 16:41:06 GMT (envelope-from bz@svn.freebsd.org) Message-Id: <201005241641.o4OGf6n4055308@svn.freebsd.org> From: "Bjoern A. Zeeb" Date: Mon, 24 May 2010 16:41:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208509 - in head: share/man/man4 sys/ddb X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 16:41:06 -0000 Author: bz Date: Mon May 24 16:41:05 2010 New Revision: 208509 URL: http://svn.freebsd.org/changeset/base/208509 Log: MFp4 @178364: Implement an optional delay to the ddb reset/reboot command. This allows textdumps to be run automatically with unattended reboots after a resonable timeout, while still permitting an administrator to break into debugger if attached to the console at the time of the event for further debugging. Cap the maximum delay at 1 week to avoid highly accidental results, and default to 15s in case of problems parsing the timeout value. Move hex2dec helper function from db_thread.c to db_command.c to make it generally available and prefix it with a "db_" to avoid namespace collisions. Reviewed by: rwatson MFC after: 4 weeks Modified: head/share/man/man4/ddb.4 head/sys/ddb/db_command.c head/sys/ddb/db_command.h head/sys/ddb/db_thread.c Modified: head/share/man/man4/ddb.4 ============================================================================== --- head/share/man/man4/ddb.4 Mon May 24 16:27:47 2010 (r208508) +++ head/share/man/man4/ddb.4 Mon May 24 16:41:05 2010 (r208509) @@ -60,7 +60,7 @@ .\" .\" $FreeBSD$ .\" -.Dd November 29, 2008 +.Dd May 24, 2010 .Dt DDB 4 .Os .Sh NAME @@ -1092,9 +1092,13 @@ for a list of signals. Note that the arguments are reversed relative to .Xr kill 2 . .Pp -.It Ic reboot -.It Ic reset +.It Ic reboot Op Ar seconds +.It Ic reset Op Ar seconds Hard reset the system. +If the optional argument +.Ar seconds +is given, the debugger will wait for this long, at most a week, +before rebooting. .Pp .It Ic help Print a short summary of the available commands and command Modified: head/sys/ddb/db_command.c ============================================================================== --- head/sys/ddb/db_command.c Mon May 24 16:27:47 2010 (r208508) +++ head/sys/ddb/db_command.c Mon May 24 16:41:05 2010 (r208509) @@ -661,13 +661,42 @@ out: #undef DB_ERROR } +/* + * Reboot. In case there is an additional argument, take it as delay in + * seconds. Default to 15s if we cannot parse it and make sure we will + * never wait longer than 1 week. Some code is similar to + * kern_shutdown.c:shutdown_panic(). + */ +#ifndef DB_RESET_MAXDELAY +#define DB_RESET_MAXDELAY (3600 * 24 * 7) +#endif + static void -db_reset(dummy1, dummy2, dummy3, dummy4) - db_expr_t dummy1; - boolean_t dummy2; - db_expr_t dummy3; - char * dummy4; +db_reset(db_expr_t addr, boolean_t have_addr, db_expr_t count __unused, + char *modif __unused) { + int delay, loop; + + if (have_addr) { + delay = (int)db_hex2dec(addr); + + /* If we parse to fail, use 15s. */ + if (delay == -1) + delay = 15; + + /* Cap at one week. */ + if ((uintmax_t)delay > (uintmax_t)DB_RESET_MAXDELAY) + delay = DB_RESET_MAXDELAY; + + db_printf("Automatic reboot in %d seconds - " + "press a key on the console to abort\n", delay); + for (loop = delay * 10; loop > 0; --loop) { + DELAY(1000 * 100); /* 1/10th second */ + /* Did user type a key? */ + if (cncheckc() != -1) + return; + } + } cpu_reset(); } @@ -771,3 +800,28 @@ db_stack_trace_all(db_expr_t dummy, bool kdb_jmpbuf(prev_jb); } } + +/* + * Take the parsed expression value from the command line that was parsed + * as a hexadecimal value and convert it as if the expression was parsed + * as a decimal value. Returns -1 if the expression was not a valid + * decimal value. + */ +db_expr_t +db_hex2dec(db_expr_t expr) +{ + uintptr_t x, y; + db_expr_t val; + + y = 1; + val = 0; + x = expr; + while (x != 0) { + if (x % 16 > 9) + return (-1); + val += (x % 16) * (y); + x >>= 4; + y *= 10; + } + return (val); +} Modified: head/sys/ddb/db_command.h ============================================================================== --- head/sys/ddb/db_command.h Mon May 24 16:27:47 2010 (r208508) +++ head/sys/ddb/db_command.h Mon May 24 16:41:05 2010 (r208509) @@ -33,6 +33,12 @@ * Author: David B. Golub, Carnegie Mellon University * Date: 7/90 */ + +/* + * Helper functions. + */ +db_expr_t db_hex2dec(db_expr_t expr); + /* * Command loop declarations. */ Modified: head/sys/ddb/db_thread.c ============================================================================== --- head/sys/ddb/db_thread.c Mon May 24 16:27:47 2010 (r208508) +++ head/sys/ddb/db_thread.c Mon May 24 16:41:05 2010 (r208509) @@ -38,8 +38,6 @@ __FBSDID("$FreeBSD$"); #include #include -static db_expr_t hex2dec(db_expr_t expr); - void db_print_thread(void) { @@ -108,31 +106,6 @@ db_show_threads(db_expr_t addr, boolean_ } /* - * Take the parsed expression value from the command line that was parsed - * as a hexadecimal value and convert it as if the expression was parsed - * as a decimal value. Returns -1 if the expression was not a valid - * decimal value. - */ -static db_expr_t -hex2dec(db_expr_t expr) -{ - uintptr_t x, y; - db_expr_t val; - - y = 1; - val = 0; - x = expr; - while (x != 0) { - if (x % 16 > 9) - return (-1); - val += (x % 16) * (y); - x >>= 4; - y *= 10; - } - return (val); -} - -/* * Lookup a thread based on a db expression address. We assume that the * address was parsed in hexadecimal. We reparse the address in decimal * first and try to treat it as a thread ID to find an associated thread. @@ -151,7 +124,7 @@ db_lookup_thread(db_expr_t addr, boolean * If the parsed address was not a valid decimal expression, * assume it is a thread pointer. */ - decaddr = hex2dec(addr); + decaddr = db_hex2dec(addr); if (decaddr == -1) return ((struct thread *)addr); @@ -183,7 +156,7 @@ db_lookup_proc(db_expr_t addr) db_expr_t decaddr; struct proc *p; - decaddr = hex2dec(addr); + decaddr = db_hex2dec(addr); if (decaddr != -1) { FOREACH_PROC_IN_SYSTEM(p) { if (p->p_pid == decaddr) From owner-svn-src-all@FreeBSD.ORG Mon May 24 16:42:53 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 695961065672; Mon, 24 May 2010 16:42:53 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 587568FC12; Mon, 24 May 2010 16:42: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 o4OGgrIE055752; Mon, 24 May 2010 16:42:53 GMT (envelope-from sbruno@svn.freebsd.org) Received: (from sbruno@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OGgrBQ055750; Mon, 24 May 2010 16:42:53 GMT (envelope-from sbruno@svn.freebsd.org) Message-Id: <201005241642.o4OGgrBQ055750@svn.freebsd.org> From: Sean Bruno Date: Mon, 24 May 2010 16:42:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208510 - head/usr.sbin/iostat X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 16:42:53 -0000 Author: sbruno Date: Mon May 24 16:42:53 2010 New Revision: 208510 URL: http://svn.freebsd.org/changeset/base/208510 Log: Cleanup manpage as suggested by jhb@ to start new sentences on a new line. MFC after: 2 Weeks Modified: head/usr.sbin/iostat/iostat.8 Modified: head/usr.sbin/iostat/iostat.8 ============================================================================== --- head/usr.sbin/iostat/iostat.8 Mon May 24 16:41:05 2010 (r208509) +++ head/usr.sbin/iostat/iostat.8 Mon May 24 16:42:53 2010 (r208510) @@ -241,9 +241,9 @@ If no repeat is specified, the default is infinity. The .Nm -command will accept and honor a non-integer number of seconds. Note that -the interval only has millisecond granularity. Smaller values will be -truncated. +command will accept and honor a non-integer number of seconds. +Note that the interval only has millisecond granularity. +Smaller values will be truncated. .Pp e.g. -w1.0001 becomes -w1.000 .Pp From owner-svn-src-all@FreeBSD.ORG Mon May 24 16:42:55 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BC84E106564A; Mon, 24 May 2010 16:42:55 +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 AAA428FC0A; Mon, 24 May 2010 16:42: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 o4OGgth3055788; Mon, 24 May 2010 16:42:55 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OGgt0g055786; Mon, 24 May 2010 16:42:55 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201005241642.o4OGgt0g055786@svn.freebsd.org> From: Marius Strobl Date: Mon, 24 May 2010 16:42:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208511 - head/release/doc/en_US.ISO8859-1/hardware X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 16:42:55 -0000 Author: marius Date: Mon May 24 16:42:55 2010 New Revision: 208511 URL: http://svn.freebsd.org/changeset/base/208511 Log: According to simon@ when referring to a company along a product just to identify the company one shouldn't use the company trademark. Approved by: simon Modified: head/release/doc/en_US.ISO8859-1/hardware/article.sgml Modified: head/release/doc/en_US.ISO8859-1/hardware/article.sgml ============================================================================== --- head/release/doc/en_US.ISO8859-1/hardware/article.sgml Mon May 24 16:42:53 2010 (r208510) +++ head/release/doc/en_US.ISO8859-1/hardware/article.sgml Mon May 24 16:42:55 2010 (r208511) @@ -380,7 +380,7 @@ sparc64 This section describes the systems currently known to be - supported by &os; on the &fujitsu; &sparc64; and &sun; &ultrasparc; + supported by &os; on the Fujitsu &sparc64; and Sun &ultrasparc; platforms. For background information on the various hardware designs see the Sun System @@ -391,8 +391,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. @@ -451,55 +451,55 @@ - &sun; &netra; t1 100/105 + Sun &netra; t1 100/105 - &sun; &netra; T1 AC200/DC200 + Sun &netra; T1 AC200/DC200 - &sun; &netra; t 1100 + Sun &netra; t 1100 - &sun; &netra; t 1120 + Sun &netra; t 1120 - &sun; &netra; t 1125 + Sun &netra; t 1125 - &sun; &netra; t 1400/1405 + Sun &netra; t 1400/1405 - &sun; &netra; 120 + Sun &netra; 120 - &sun; &netra; X1 + Sun &netra; X1 - &sun; &sparcengine; Ultra AX1105 + Sun &sparcengine; Ultra AX1105 - &sun; &sparcengine; Ultra AXe + Sun &sparcengine; Ultra AXe - &sun; &sparcengine; Ultra AXi + Sun &sparcengine; Ultra AXi - &sun; &sparcengine; Ultra AXmp + Sun &sparcengine; Ultra AXmp - &sun; &sparcengine; CP1500 + Sun &sparcengine; CP1500 @@ -542,8 +542,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). @@ -555,7 +555,7 @@ - Starting with 7.2-RELEASE, &arch.sparc64; systems based on &sun; + 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: @@ -616,7 +616,7 @@ - The following &sun; &ultrasparc; systems are not tested but + The following Sun &ultrasparc; systems are not tested but believed to be also supported by &os;: @@ -639,29 +639,29 @@ Starting with 8.1-RELEASE, &arch.sparc64; systems based on - &fujitsu; &sparc64; V are also supported by &os;, which + Fujitsu &sparc64; V are also supported by &os;, which includes the following known working systems: - &fujitsu; &primepower; 250 + Fujitsu &primepower; 250 - The following &fujitsu; &primepower; systems are not tested but + The following Fujitsu &primepower; systems are not tested but believed to be also supported by &os;: - &fujitsu; &primepower; 450 + Fujitsu &primepower; 450 - &fujitsu; &primepower; 650 + Fujitsu &primepower; 650 - &fujitsu; &primepower; 850 + Fujitsu &primepower; 850 From owner-svn-src-all@FreeBSD.ORG Mon May 24 17:12:44 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BCF6A106566C; Mon, 24 May 2010 17:12:44 +0000 (UTC) (envelope-from yongari@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AB88B8FC08; Mon, 24 May 2010 17: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 o4OHCiVt062564; Mon, 24 May 2010 17:12:44 GMT (envelope-from yongari@svn.freebsd.org) Received: (from yongari@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OHCiLv062562; Mon, 24 May 2010 17:12:44 GMT (envelope-from yongari@svn.freebsd.org) Message-Id: <201005241712.o4OHCiLv062562@svn.freebsd.org> From: Pyun YongHyeon Date: Mon, 24 May 2010 17:12:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208512 - head/sys/dev/sge X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 17:12:44 -0000 Author: yongari Date: Mon May 24 17:12:44 2010 New Revision: 208512 URL: http://svn.freebsd.org/changeset/base/208512 Log: sge_encap() can sometimes return an error with m_head set to NULL. Make sure not to requeue freed mbuf in sge_start_locked(). This should fix NULL pointer dereference panic. Reported by: Nikolay Denev gmail dot com> Submitted by: jhb Modified: head/sys/dev/sge/if_sge.c Modified: head/sys/dev/sge/if_sge.c ============================================================================== --- head/sys/dev/sge/if_sge.c Mon May 24 16:42:55 2010 (r208511) +++ head/sys/dev/sge/if_sge.c Mon May 24 17:12:44 2010 (r208512) @@ -1588,7 +1588,8 @@ sge_start_locked(struct ifnet *ifp) if (m_head == NULL) break; if (sge_encap(sc, &m_head)) { - IFQ_DRV_PREPEND(&ifp->if_snd, m_head); + if (m_head != NULL) + IFQ_DRV_PREPEND(&ifp->if_snd, m_head); ifp->if_drv_flags |= IFF_DRV_OACTIVE; break; } From owner-svn-src-all@FreeBSD.ORG Mon May 24 17:23:15 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5605A10656C6; Mon, 24 May 2010 17:23:15 +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 2B3208FC24; Mon, 24 May 2010 17:23:15 +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 o4OHNEXl064908; Mon, 24 May 2010 17:23:14 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OHNE3r064906; Mon, 24 May 2010 17:23:14 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201005241723.o4OHNE3r064906@svn.freebsd.org> From: Konstantin Belousov Date: Mon, 24 May 2010 17:23:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208513 - head/lib/libc/sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 17:23:15 -0000 Author: kib Date: Mon May 24 17:23:14 2010 New Revision: 208513 URL: http://svn.freebsd.org/changeset/base/208513 Log: Improve the documentation for PT_LWPINFO. Note that some features are not implemented on MIPS and ARM. MFC after: 1 month Modified: head/lib/libc/sys/ptrace.2 Modified: head/lib/libc/sys/ptrace.2 ============================================================================== --- head/lib/libc/sys/ptrace.2 Mon May 24 17:12:44 2010 (r208512) +++ head/lib/libc/sys/ptrace.2 Mon May 24 17:23:14 2010 (r208513) @@ -2,7 +2,7 @@ .\" $NetBSD: ptrace.2,v 1.2 1995/02/27 12:35:37 cgd Exp $ .\" .\" This file is in the public domain. -.Dd February 11, 2010 +.Dd May 24, 2010 .Dt PTRACE 2 .Os .Sh NAME @@ -289,8 +289,11 @@ argument specifies a pointer to a which is defined as follows: .Bd -literal struct ptrace_lwpinfo { - lwpid_t pl_lwpid; /* LWP described. */ - int pl_event; /* Event received. */ + lwpid_t pl_lwpid; + int pl_event; + int pl_flags; + sigset_t pl_sigmask; + sigset_t pl_siglist; }; .Ed .Pp @@ -298,6 +301,51 @@ The .Fa data argument is to be set to the size of the structure known to the caller. This allows the structure to grow without affecting older programs. +.Pp +The fields in the +.Vt "struct ptrace_lwpinfo" +have the following meaning: +.Bl -tag -width indent -compact +.It pl_lwpid +LWP id of the thread +.It pl_event +Event that caused the stop. +Currently defined events are +.Bl -tag -width indent -compact +.It PL_EVENT_NONE +No reason given +.It PL_EVENT_SIGNAL +Thread stopped due to the pending signal +.El +.It pl_flags +Flags that specify additional details about observed stop. +Currently defined flags are: +.Bl -tag -width indent -compact +.It PL_FLAG_SCE +The thread stopped due to system call entry, right after the kernel is entered. +The debugger may examine syscall arguments that are stored in memory and +registers according to the ABI of the current process, and modify them, +if needed. +.It PL_FLAG_SCX +The thread is stopped immediately before syscall is returning to the usermode. +The debugger may examine system call return values in the ABI-defined registers +and/or memory. +.It PL_FLAG_EXEC +When +.Dv PL_FLAG_SCX +is set, this flag may be additionally specified to inform that the +program being executed by debuggee process has been changed by succesful +execution of a system call from the +.Fn execve 2 +family. +.El +.It pl_sigmask +The current signal mask of the LWP +.It pl_siglist +The current pending set of signals for the LWP. Note that signals that +are delivered to the process would not appear on an LWP siglist until +the thread is selected for delivery. +.El .It PT_GETNUMLWPS This request returns the number of kernel threads associated with the traced process. @@ -501,3 +549,10 @@ The .Fn ptrace function appeared in .At v7 . +.Sh BUGS +The +.Dv PL_FLAG_SCE , +.Dv PL_FLAG_SCX +and +.Dv PL_FLAG_EXEC +are not implemented for MIPS and ARM architectures. From owner-svn-src-all@FreeBSD.ORG Mon May 24 17:24:14 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 962CB106567C; Mon, 24 May 2010 17:24:14 +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 6B43D8FC1E; Mon, 24 May 2010 17:24: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 o4OHOEVb065151; Mon, 24 May 2010 17:24:14 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OHOEuE065147; Mon, 24 May 2010 17:24:14 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201005241724.o4OHOEuE065147@svn.freebsd.org> From: Konstantin Belousov Date: Mon, 24 May 2010 17:24:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208514 - in head/sys/ia64: ia32 ia64 include X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 17:24:14 -0000 Author: kib Date: Mon May 24 17:24:14 2010 New Revision: 208514 URL: http://svn.freebsd.org/changeset/base/208514 Log: Change ia64' struct syscall_args definition so that args is a pointer to the arguments array instead of array itself. ia64 syscall arguments are readily available in the frame, point args to it, do not do unnecessary bcopy. Still reserve the array in syscall_args for ia32 emulation. Suggested and reviewed by: marcel MFC after: 1 month Modified: head/sys/ia64/ia32/ia32_trap.c head/sys/ia64/ia64/trap.c head/sys/ia64/include/proc.h Modified: head/sys/ia64/ia32/ia32_trap.c ============================================================================== --- head/sys/ia64/ia32/ia32_trap.c Mon May 24 17:23:14 2010 (r208513) +++ head/sys/ia64/ia32/ia32_trap.c Mon May 24 17:24:14 2010 (r208514) @@ -132,10 +132,11 @@ ia32_fetch_syscall_args(struct thread *t error = copyin(params, (caddr_t)args, sa->narg * sizeof(int)); else error = 0; + sa->args = &sa->args32[0]; if (error == 0) { for (i = 0; i < sa->narg; i++) - sa->args[i] = args[i]; + sa->args32[i] = args[i]; td->td_retval[0] = 0; td->td_retval[1] = tf->tf_scratch.gr10; /* edx */ } Modified: head/sys/ia64/ia64/trap.c ============================================================================== --- head/sys/ia64/ia64/trap.c Mon May 24 17:23:14 2010 (r208513) +++ head/sys/ia64/ia64/trap.c Mon May 24 17:24:14 2010 (r208514) @@ -902,13 +902,12 @@ cpu_fetch_syscall_args(struct thread *td { struct proc *p; struct trapframe *tf; - register_t *args; p = td->td_proc; tf = td->td_frame; sa->code = tf->tf_scratch.gr15; - args = &tf->tf_scratch.gr16; + sa->args = &tf->tf_scratch.gr16; /* * syscall() and __syscall() are handled the same on @@ -918,8 +917,8 @@ cpu_fetch_syscall_args(struct thread *td /* * Code is first argument, followed by actual args. */ - sa->code = args[0]; - args++; + sa->code = sa->args[0]; + sa->args++; } if (p->p_sysent->sv_mask) @@ -929,7 +928,6 @@ cpu_fetch_syscall_args(struct thread *td else sa->callp = &p->p_sysent->sv_table[sa->code]; sa->narg = sa->callp->sy_narg; - bcopy(args, sa->args, sa->narg * sizeof(sa->args[0])); td->td_retval[0] = 0; td->td_retval[1] = 0; Modified: head/sys/ia64/include/proc.h ============================================================================== --- head/sys/ia64/include/proc.h Mon May 24 17:23:14 2010 (r208513) +++ head/sys/ia64/include/proc.h Mon May 24 17:24:14 2010 (r208514) @@ -45,7 +45,8 @@ struct mdproc { struct syscall_args { u_int code; struct sysent *callp; - register_t args[8]; + register_t *args; + register_t args32[8]; int narg; }; #define HAVE_SYSCALL_ARGS_DEF 1 From owner-svn-src-all@FreeBSD.ORG Mon May 24 17:33:02 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E9888106564A; Mon, 24 May 2010 17:33:02 +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 BD3488FC0A; Mon, 24 May 2010 17:33: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 o4OHX2WM067113; Mon, 24 May 2010 17:33:02 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OHX2Q3067111; Mon, 24 May 2010 17:33:02 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201005241733.o4OHX2Q3067111@svn.freebsd.org> From: Marius Strobl Date: Mon, 24 May 2010 17:33:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208515 - head/sys/geom/part X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 17:33:03 -0000 Author: marius Date: Mon May 24 17:33:02 2010 New Revision: 208515 URL: http://svn.freebsd.org/changeset/base/208515 Log: Fix some whitespace nits. Modified: head/sys/geom/part/g_part_vtoc8.c Modified: head/sys/geom/part/g_part_vtoc8.c ============================================================================== --- head/sys/geom/part/g_part_vtoc8.c Mon May 24 17:24:14 2010 (r208514) +++ head/sys/geom/part/g_part_vtoc8.c Mon May 24 17:33:02 2010 (r208515) @@ -55,19 +55,19 @@ static int g_part_vtoc8_add(struct g_par struct g_part_parms *); static int g_part_vtoc8_create(struct g_part_table *, struct g_part_parms *); static int g_part_vtoc8_destroy(struct g_part_table *, struct g_part_parms *); -static void g_part_vtoc8_dumpconf(struct g_part_table *, struct g_part_entry *, - struct sbuf *, const char *); +static void g_part_vtoc8_dumpconf(struct g_part_table *, + struct g_part_entry *, struct sbuf *, const char *); static int g_part_vtoc8_dumpto(struct g_part_table *, struct g_part_entry *); -static int g_part_vtoc8_modify(struct g_part_table *, struct g_part_entry *, +static int g_part_vtoc8_modify(struct g_part_table *, struct g_part_entry *, struct g_part_parms *); -static const char *g_part_vtoc8_name(struct g_part_table *, struct g_part_entry *, - char *, size_t); +static const char *g_part_vtoc8_name(struct g_part_table *, + struct g_part_entry *, char *, size_t); static int g_part_vtoc8_probe(struct g_part_table *, struct g_consumer *); static int g_part_vtoc8_read(struct g_part_table *, struct g_consumer *); -static const char *g_part_vtoc8_type(struct g_part_table *, struct g_part_entry *, - char *, size_t); +static const char *g_part_vtoc8_type(struct g_part_table *, + struct g_part_entry *, char *, size_t); static int g_part_vtoc8_write(struct g_part_table *, struct g_consumer *); -static int g_part_vtoc8_resize(struct g_part_table *, struct g_part_entry *, +static int g_part_vtoc8_resize(struct g_part_table *, struct g_part_entry *, struct g_part_parms *); static kobj_method_t g_part_vtoc8_methods[] = { @@ -261,7 +261,8 @@ g_part_vtoc8_dumpconf(struct g_part_tabl } static int -g_part_vtoc8_dumpto(struct g_part_table *basetable, struct g_part_entry *entry) +g_part_vtoc8_dumpto(struct g_part_table *basetable, + struct g_part_entry *entry) { struct g_part_vtoc8_table *table; uint16_t tag; @@ -477,7 +478,7 @@ g_part_vtoc8_read(struct g_part_table *b } static const char * -g_part_vtoc8_type(struct g_part_table *basetable, struct g_part_entry *entry, +g_part_vtoc8_type(struct g_part_table *basetable, struct g_part_entry *entry, char *buf, size_t bufsz) { struct g_part_vtoc8_table *table; From owner-svn-src-all@FreeBSD.ORG Mon May 24 18:00:29 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Mon May 24 18:21:42 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Mon May 24 19:36:16 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Mon May 24 19:36:32 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C003E106567C; Mon, 24 May 2010 19:36:32 +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 AE95E8FC0A; Mon, 24 May 2010 19:36: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 o4OJaWNg094782; Mon, 24 May 2010 19:36:32 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4OJaWKZ094780; Mon, 24 May 2010 19:36:32 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201005241936.o4OJaWKZ094780@svn.freebsd.org> From: John Baldwin Date: Mon, 24 May 2010 19:36:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208519 - stable/7/sys/dev/puc X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 24 May 2010 19:36:32 -0000 Author: jhb Date: Mon May 24 19:36:32 2010 New Revision: 208519 URL: http://svn.freebsd.org/changeset/base/208519 Log: MFC 208350: Add support for the Perle Speed4 LE. Modified: stable/7/sys/dev/puc/pucdata.c Directory Properties: stable/7/sys/ (props changed) stable/7/sys/cddl/contrib/opensolaris/ (props changed) stable/7/sys/contrib/dev/acpica/ (props changed) stable/7/sys/contrib/pf/ (props changed) Modified: stable/7/sys/dev/puc/pucdata.c ============================================================================== --- stable/7/sys/dev/puc/pucdata.c Mon May 24 19:36:15 2010 (r208518) +++ stable/7/sys/dev/puc/pucdata.c Mon May 24 19:36:32 2010 (r208519) @@ -632,6 +632,18 @@ const struct puc_cfg puc_pci_devices[] = PUC_PORT_2S, 0x10, 4, 0, }, + /* + * 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-all@FreeBSD.ORG Mon May 24 19:42:27 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Mon May 24 19:56:33 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Mon May 24 20:09:40 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Mon May 24 20:12:32 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Mon May 24 21:01:38 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Tue May 25 02:26:25 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CB629106566C; Tue, 25 May 2010 02:26:25 +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 BA5EA8FC13; Tue, 25 May 2010 02:26:25 +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 o4P2QPWl085210; Tue, 25 May 2010 02:26:25 GMT (envelope-from alc@svn.freebsd.org) Received: (from alc@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4P2QPC4085207; Tue, 25 May 2010 02:26:25 GMT (envelope-from alc@svn.freebsd.org) Message-Id: <201005250226.o4P2QPC4085207@svn.freebsd.org> From: Alan Cox Date: Tue, 25 May 2010 02:26:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208524 - in head/sys: kern vm X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 02:26:25 -0000 Author: alc Date: Tue May 25 02:26:25 2010 New Revision: 208524 URL: http://svn.freebsd.org/changeset/base/208524 Log: Eliminate the acquisition and release of the page queues lock from vfs_busy_pages(). It is no longer needed. Submitted by: kib Modified: head/sys/kern/vfs_bio.c head/sys/vm/vm_page.c Modified: head/sys/kern/vfs_bio.c ============================================================================== --- head/sys/kern/vfs_bio.c Mon May 24 21:01:37 2010 (r208523) +++ head/sys/kern/vfs_bio.c Tue May 25 02:26:25 2010 (r208524) @@ -3508,7 +3508,6 @@ vfs_page_set_validclean(struct buf *bp, { vm_ooffset_t soff, eoff; - mtx_assert(&vm_page_queue_mtx, MA_OWNED); /* * Start and end offsets in buffer. eoff - soff may not cross a * page boundry or cross the end of the buffer. The end of the @@ -3571,8 +3570,6 @@ retry: goto retry; } bogus = 0; - if (clear_modify) - vm_page_lock_queues(); for (i = 0; i < bp->b_npages; i++) { m = bp->b_pages[i]; @@ -3605,8 +3602,6 @@ retry: } foff = (foff + PAGE_SIZE) & ~(off_t)PAGE_MASK; } - if (clear_modify) - vm_page_unlock_queues(); VM_OBJECT_UNLOCK(obj); if (bogus) pmap_qenter(trunc_page((vm_offset_t)bp->b_data), Modified: head/sys/vm/vm_page.c ============================================================================== --- head/sys/vm/vm_page.c Mon May 24 21:01:37 2010 (r208523) +++ head/sys/vm/vm_page.c Tue May 25 02:26:25 2010 (r208524) @@ -2084,7 +2084,6 @@ vm_page_set_validclean(vm_page_t m, int int frag; int endoff; - mtx_assert(&vm_page_queue_mtx, MA_OWNED); VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); if (size == 0) /* handle degenerate case */ return; From owner-svn-src-all@FreeBSD.ORG Tue May 25 02:28:40 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Tue May 25 02:36:07 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Tue May 25 02:39:55 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Tue May 25 02:52:10 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Tue May 25 03:08:47 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Tue May 25 03:15:10 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Tue May 25 03:59:48 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F384D106566B; Tue, 25 May 2010 03:59:47 +0000 (UTC) (envelope-from glewis@eyesbeyond.com) Received: from misty.eyesbeyond.com (gerbercreations.com [71.39.140.16]) by mx1.freebsd.org (Postfix) with ESMTP id 5C8248FC14; Tue, 25 May 2010 03:59:47 +0000 (UTC) Received: from misty.eyesbeyond.com (localhost.eyesbeyond.com [127.0.0.1]) by misty.eyesbeyond.com (8.14.4/8.14.4) with ESMTP id o4P3eIxb075607; Mon, 24 May 2010 20:40:18 -0700 (PDT) (envelope-from glewis@eyesbeyond.com) Received: (from glewis@localhost) by misty.eyesbeyond.com (8.14.4/8.14.4/Submit) id o4P3eHPW075606; Mon, 24 May 2010 20:40:17 -0700 (PDT) (envelope-from glewis@eyesbeyond.com) X-Authentication-Warning: misty.eyesbeyond.com: glewis set sender to glewis@eyesbeyond.com using -f Date: Mon, 24 May 2010 20:40:16 -0700 From: Greg Lewis To: Bruce Evans Message-ID: <20100525034016.GA75384@misty.eyesbeyond.com> References: <11069.1274618175@critter.freebsd.dk> <20100523230410.K17698@delplex.bde.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100523230410.K17698@delplex.bde.org> User-Agent: Mutt/1.5.20 (2009-06-14) Cc: svn-src-head@freebsd.org, Poul-Henning Kamp , src-committers@freebsd.org, svn-src-all@freebsd.org Subject: Re: svn commit: r208332 - in head/sys: amd64/include i386/include X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 03:59:48 -0000 On Sun, May 23, 2010 at 11:15:09PM +1000, Bruce Evans wrote: > On Sun, 23 May 2010, Poul-Henning Kamp wrote: > > In message <20100523183502.C13588@delplex.bde.org>, Bruce Evans writes: > >> On Thu, 20 May 2010, Poul-Henning Kamp wrote: > > > >> should be kernel-only. > > > > No, it absolutely should not, if anything, it should be pushed as > > international standards (with , and ). > > > > Atomic operations and write barriers are necessary when multiple > > threads or processes cooperate using shared memory. and if anything > > the bug is that POSIX has not updated pthreads to have these and > > other necessary primitives. (pthread_mutex_assert_held() for instance). > > Pehraps, but was only designed, implemented and > documented for use in the kernel. And of course any standardized version > won't look like the FreeBSD kernel one. The kernel one is too bloated > for me, but a general-purpose one should be even more bloated so as > to support all types and more than atomic ops. The FreeBSD port of the "Zero" Java VM uses . Well, except on sparc64 where pulls in too much namespace pollution and it instead includes chunks of the header verbatim instead :(. -- Greg Lewis Email : glewis@eyesbeyond.com Eyes Beyond Web : http://www.eyesbeyond.com Information Technology FreeBSD : glewis@FreeBSD.org From owner-svn-src-all@FreeBSD.ORG Tue May 25 04:56:33 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8DD781065670; Tue, 25 May 2010 04:56:33 +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 7C7938FC12; Tue, 25 May 2010 04: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 o4P4uXHF018630; Tue, 25 May 2010 04:56:33 GMT (envelope-from kensmith@svn.freebsd.org) Received: (from kensmith@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4P4uXMG018628; Tue, 25 May 2010 04:56:33 GMT (envelope-from kensmith@svn.freebsd.org) Message-Id: <201005250456.o4P4uXMG018628@svn.freebsd.org> From: Ken Smith Date: Tue, 25 May 2010 04:56:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-svnadmin@freebsd.org X-SVN-Group: svnadmin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208531 - svnadmin/conf X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 04:56:33 -0000 Author: kensmith Date: Tue May 25 04:56:31 2010 New Revision: 208531 URL: http://svn.freebsd.org/changeset/base/208531 Log: Enter code freeze on stable/8 for the 8.1-RELEASE release cycle. While here prepare for releng/8.1 being created later. Approved by: core (implicit) Modified: svnadmin/conf/approvers Modified: svnadmin/conf/approvers ============================================================================== --- svnadmin/conf/approvers Tue May 25 03:15:09 2010 (r208530) +++ svnadmin/conf/approvers Tue May 25 04:56:31 2010 (r208531) @@ -17,8 +17,9 @@ # $FreeBSD$ # #^head/ re -#^stable/8/ re +^stable/8/ re #^stable/7/ re +^releng/8.1/ re ^releng/8.0/ (security-officer|so) ^releng/7.[0-3]/ (security-officer|so) ^releng/6.[0-4]/ (security-officer|so) From owner-svn-src-all@FreeBSD.ORG Tue May 25 05:42:13 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0B2A11065672; Tue, 25 May 2010 05:42:13 +0000 (UTC) (envelope-from neel@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D4EA18FC14; Tue, 25 May 2010 05:42:12 +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 o4P5gCkr028663; Tue, 25 May 2010 05:42:12 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4P5gCZD028661; Tue, 25 May 2010 05:42:12 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201005250542.o4P5gCZD028661@svn.freebsd.org> From: Neel Natu Date: Tue, 25 May 2010 05:42:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208532 - head/sys/mips/mips X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 05:42:13 -0000 Author: neel Date: Tue May 25 05:42:12 2010 New Revision: 208532 URL: http://svn.freebsd.org/changeset/base/208532 Log: Fix mips kernel build breakage caused by revision 208504. Modified: head/sys/mips/mips/pmap.c Modified: head/sys/mips/mips/pmap.c ============================================================================== --- head/sys/mips/mips/pmap.c Tue May 25 04:56:31 2010 (r208531) +++ head/sys/mips/mips/pmap.c Tue May 25 05:42:12 2010 (r208532) @@ -2765,6 +2765,7 @@ pmap_mincore(pmap_t pmap, vm_offset_t ad { pt_entry_t *ptep, pte; vm_offset_t pa; + vm_page_t m; int val; boolean_t managed; From owner-svn-src-all@FreeBSD.ORG Tue May 25 05:45:16 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BF278106566B; Tue, 25 May 2010 05:45:16 +0000 (UTC) (envelope-from neel@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id ADB178FC12; Tue, 25 May 2010 05:45: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 o4P5jGIW029370; Tue, 25 May 2010 05:45:16 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4P5jGf9029367; Tue, 25 May 2010 05:45:16 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201005250545.o4P5jGf9029367@svn.freebsd.org> From: Neel Natu Date: Tue, 25 May 2010 05:45:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208533 - in head/sys/mips: include mips X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 05:45:16 -0000 Author: neel Date: Tue May 25 05:45:16 2010 New Revision: 208533 URL: http://svn.freebsd.org/changeset/base/208533 Log: Get rid of empty and unused KSEG0TEXT macros. Modified: head/sys/mips/include/asm.h head/sys/mips/mips/swtch.S Modified: head/sys/mips/include/asm.h ============================================================================== --- head/sys/mips/include/asm.h Tue May 25 05:42:12 2010 (r208532) +++ head/sys/mips/include/asm.h Tue May 25 05:45:16 2010 (r208533) @@ -257,10 +257,6 @@ _C_LABEL(x): EXPORT(x ## End); \ END(x) -#define KSEG0TEXT_START -#define KSEG0TEXT_END -#define KSEG0TEXT .text - /* * Macros to panic and printf from assembly language. */ Modified: head/sys/mips/mips/swtch.S ============================================================================== --- head/sys/mips/mips/swtch.S Tue May 25 05:42:12 2010 (r208532) +++ head/sys/mips/mips/swtch.S Tue May 25 05:45:16 2010 (r208533) @@ -216,9 +216,6 @@ LEAF(savectx) move v0, zero END(savectx) - -KSEG0TEXT_START; - NON_LEAF(mips_cpu_throw, CALLFRAME_SIZ, ra) mfc0 t0, COP_0_STATUS_REG # t0 = saved status register nop @@ -376,7 +373,6 @@ sw2: j ra nop END(cpu_switch) -KSEG0TEXT_END; /*---------------------------------------------------------------------------- * From owner-svn-src-all@FreeBSD.ORG Tue May 25 09:59:54 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0A3AA1065676; Tue, 25 May 2010 09:59:54 +0000 (UTC) (envelope-from raj@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id ED6A98FC1B; Tue, 25 May 2010 09:59: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 o4P9xrFr085270; Tue, 25 May 2010 09:59:53 GMT (envelope-from raj@svn.freebsd.org) Received: (from raj@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4P9xrIs085267; Tue, 25 May 2010 09:59:53 GMT (envelope-from raj@svn.freebsd.org) Message-Id: <201005250959.o4P9xrIs085267@svn.freebsd.org> From: Rafal Jaworowski Date: Tue, 25 May 2010 09:59:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208534 - in head/sys/boot/uboot: common lib X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 09:59:54 -0000 Author: raj Date: Tue May 25 09:59:53 2010 New Revision: 208534 URL: http://svn.freebsd.org/changeset/base/208534 Log: Use loader devices only when they initialized properly. Modified: head/sys/boot/uboot/common/main.c head/sys/boot/uboot/lib/disk.c Modified: head/sys/boot/uboot/common/main.c ============================================================================== --- head/sys/boot/uboot/common/main.c Tue May 25 05:45:16 2010 (r208533) +++ head/sys/boot/uboot/common/main.c Tue May 25 09:59:53 2010 (r208534) @@ -157,20 +157,22 @@ main(void) panic("no U-Boot devices found"); printf("Number of U-Boot devices: %d\n", devs_no); - /* - * March through the device switch probing for things. - */ - for (i = 0; devsw[i] != NULL; i++) - if (devsw[i]->dv_init != NULL) - (devsw[i]->dv_init)(); - printf("\n"); printf("%s, Revision %s\n", bootprog_name, bootprog_rev); printf("(%s, %s)\n", bootprog_maker, bootprog_date); meminfo(); + /* + * March through the device switch probing for things. + */ for (i = 0; devsw[i] != NULL; i++) { - printf("\nDevice %d: %s\n", i, devsw[i]->dv_name); + + if (devsw[i]->dv_init == NULL) + continue; + if ((devsw[i]->dv_init)() != 0) + continue; + + printf("\nDevice: %s\n", devsw[i]->dv_name); currdev.d_dev = devsw[i]; currdev.d_type = currdev.d_dev->dv_type; Modified: head/sys/boot/uboot/lib/disk.c ============================================================================== --- head/sys/boot/uboot/lib/disk.c Tue May 25 05:45:16 2010 (r208533) +++ head/sys/boot/uboot/lib/disk.c Tue May 25 09:59:53 2010 (r208534) @@ -157,7 +157,7 @@ stor_init(void) } if (!found) { - printf("No storage devices\n"); + debugf("No storage devices\n"); return (-1); } From owner-svn-src-all@FreeBSD.ORG Tue May 25 10:15:31 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 382DD106564A; Tue, 25 May 2010 10:15:31 +0000 (UTC) (envelope-from raj@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 27AA08FC14; Tue, 25 May 2010 10:15: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 o4PAFVaa088804; Tue, 25 May 2010 10:15:31 GMT (envelope-from raj@svn.freebsd.org) Received: (from raj@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4PAFVx4088802; Tue, 25 May 2010 10:15:31 GMT (envelope-from raj@svn.freebsd.org) Message-Id: <201005251015.o4PAFVx4088802@svn.freebsd.org> From: Rafal Jaworowski Date: Tue, 25 May 2010 10:15:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208535 - head/sys/boot/uboot/lib X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 10:15:31 -0000 Author: raj Date: Tue May 25 10:15:30 2010 New Revision: 208535 URL: http://svn.freebsd.org/changeset/base/208535 Log: Mostly revert r200691. U-Boot syscall() entry point returns 1 on success. Modified: head/sys/boot/uboot/lib/glue.c Modified: head/sys/boot/uboot/lib/glue.c ============================================================================== --- head/sys/boot/uboot/lib/glue.c Tue May 25 09:59:53 2010 (r208534) +++ head/sys/boot/uboot/lib/glue.c Tue May 25 10:15:30 2010 (r208535) @@ -574,7 +574,7 @@ ub_env_enum(const char *last) * internally, which handles such case */ env = NULL; - if (syscall(API_ENV_ENUM, NULL, (uint32_t)last, (uint32_t)&env) != 0) + if (!syscall(API_ENV_ENUM, NULL, (uint32_t)last, (uint32_t)&env)) return (NULL); if (env == NULL) From owner-svn-src-all@FreeBSD.ORG Tue May 25 13:27:56 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4396F1065674; Tue, 25 May 2010 13:27:56 +0000 (UTC) (envelope-from raj@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 193CB8FC26; Tue, 25 May 2010 13:27: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 o4PDRtev035486; Tue, 25 May 2010 13:27:55 GMT (envelope-from raj@svn.freebsd.org) Received: (from raj@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4PDRt7Q035485; Tue, 25 May 2010 13:27:55 GMT (envelope-from raj@svn.freebsd.org) Message-Id: <201005251327.o4PDRt7Q035485@svn.freebsd.org> From: Rafal Jaworowski Date: Tue, 25 May 2010 13:27:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208536 - head/gnu/usr.bin/dtc X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 13:27:56 -0000 Author: raj Date: Tue May 25 13:27:55 2010 New Revision: 208536 URL: http://svn.freebsd.org/changeset/base/208536 Log: Correct dtc version header autogen location. While there unify brackets usage. Modified: head/gnu/usr.bin/dtc/Makefile Modified: head/gnu/usr.bin/dtc/Makefile ============================================================================== --- head/gnu/usr.bin/dtc/Makefile Tue May 25 10:15:30 2010 (r208535) +++ head/gnu/usr.bin/dtc/Makefile Tue May 25 13:27:55 2010 (r208536) @@ -11,18 +11,18 @@ PROG= dtc SRCS= dtc.c checks.c fstree.c livetree.c treesource.c data.c \ flattree.c srcpos.c util.c \ fdt.c fdt_ro.c fdt_rw.c fdt_strerror.c \ - fdt_sw.c fdt_wip.c $(DTCDIR)/version_gen.h + fdt_sw.c fdt_wip.c ${DTCVERSIONFILE} CFLAGS = -Wall -g -Os -fPIC -Wpointer-arith -Wcast-qual CFLAGS+= -I. -I${.CURDIR} -I${DTCDIR} -I${LIBFDTDIR} -VERSIONMAJ!= awk '/^VERSION =/ { print $$3 }' $(DTCDIR)/Makefile -VERSIONMIN!= awk '/^PATCHLEVEL =/ { print $$3 }' $(DTCDIR)/Makefile -VERSIONSUB!= awk '/^SUBLEVEL =/ { print $$3 }' $(DTCDIR)/Makefile -VERSIONEXTRA!= $(DTCDIR)/scripts/setlocalversion +VERSIONMAJ!= awk '/^VERSION =/ { print $$3 }' ${DTCDIR}/Makefile +VERSIONMIN!= awk '/^PATCHLEVEL =/ { print $$3 }' ${DTCDIR}/Makefile +VERSIONSUB!= awk '/^SUBLEVEL =/ { print $$3 }' ${DTCDIR}/Makefile +VERSIONEXTRA= DTCVERSION:= ${VERSIONMAJ}.${VERSIONMIN}.${VERSIONSUB}${VERSIONEXTRA} -DTCVERSIONFILE:= $(DTCDIR)/version_gen.h +DTCVERSIONFILE:= version_gen.h MAN= @@ -34,18 +34,18 @@ OBJS+= dtc-parser.tab.o dtc-lexer.lex.o CLEANFILES+= dtc-parser.tab.o dtc-lexer.lex.o dtc-parser.tab.c \ dtc-parser.tab.h dtc-lexer.lex.c ${DTCVERSIONFILE} -$(DTCVERSIONFILE): +${DTCVERSIONFILE}: @echo '#define DTC_VERSION "DTC ${DTCVERSION}"' > ${DTCVERSIONFILE} dtc-parser.tab.o: dtc-parser.tab.c dtc-parser.tab.h dtc-lexer.lex.o: dtc-lexer.lex.c dtc-parser.tab.h dtc-parser.tab.c: dtc-parser.y - $(BISON) -o$@ -d $(DTCDIR)/dtc-parser.y + ${BISON} -o$@ -d ${DTCDIR}/dtc-parser.y dtc-parser.tab.h: dtc-parser.tab.c dtc-lexer.lex.c: dtc-lexer.l - $(LEX) -o$@ $(DTCDIR)/dtc-lexer.l + ${LEX} -o$@ ${DTCDIR}/dtc-lexer.l .include From owner-svn-src-all@FreeBSD.ORG Tue May 25 15:12:22 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1BEBD106567B; Tue, 25 May 2010 15:12:22 +0000 (UTC) (envelope-from raj@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0AC018FC12; Tue, 25 May 2010 15:12:22 +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 o4PFCLhj058551; Tue, 25 May 2010 15:12:21 GMT (envelope-from raj@svn.freebsd.org) Received: (from raj@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4PFCLwl058548; Tue, 25 May 2010 15:12:21 GMT (envelope-from raj@svn.freebsd.org) Message-Id: <201005251512.o4PFCLwl058548@svn.freebsd.org> From: Rafal Jaworowski Date: Tue, 25 May 2010 15:12:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208537 - in head: share/mk tools/build/options X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 15:12:22 -0000 Author: raj Date: Tue May 25 15:12:21 2010 New Revision: 208537 URL: http://svn.freebsd.org/changeset/base/208537 Log: Introduce a new build knob for Flattened Device Tree support. Reviewed by: imp Sponsored by: The FreeBSD Foundation Added: head/tools/build/options/WITH_FDT (contents, props changed) Modified: head/share/mk/bsd.own.mk Modified: head/share/mk/bsd.own.mk ============================================================================== --- head/share/mk/bsd.own.mk Tue May 25 13:27:55 2010 (r208536) +++ head/share/mk/bsd.own.mk Tue May 25 15:12:21 2010 (r208537) @@ -278,6 +278,16 @@ WITH_HESIOD= WITH_IDEA= .endif +# Enable FDT by default for selected platforms. +.if defined(TARGET_ARCH) && \ + (${TARGET_ARCH} == "arm" || ${TARGET_ARCH} == "powerpc") +# XXX this is temporarily disabled until all FDT support code is in place. +#_fdt= FDT +_no_fdt= FDT +.else +_no_fdt= FDT +.endif + # # MK_* options which default to "yes". # @@ -313,6 +323,7 @@ WITH_IDEA= DICT \ DYNAMICROOT \ EXAMPLES \ + ${_fdt} \ FLOPPY \ FORTH \ FP_LIBC \ @@ -407,6 +418,7 @@ MK_${var}:= yes BIND_LIBS \ BIND_SIGCHASE \ BIND_XML \ + ${_no_fdt} \ HESIOD \ IDEA .if defined(WITH_${var}) && defined(WITHOUT_${var}) Added: head/tools/build/options/WITH_FDT ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/build/options/WITH_FDT Tue May 25 15:12:21 2010 (r208537) @@ -0,0 +1,3 @@ +.\" $FreeBSD$ +Set to build Flattened Device Tree support as part of the base system. This +includes the device tree compiler (dtc) and libfdt support library. From owner-svn-src-all@FreeBSD.ORG Tue May 25 15:21:39 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B1F1D1065674; Tue, 25 May 2010 15:21:39 +0000 (UTC) (envelope-from raj@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9E3238FC21; Tue, 25 May 2010 15:21: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 o4PFLd4H060686; Tue, 25 May 2010 15:21:39 GMT (envelope-from raj@svn.freebsd.org) Received: (from raj@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4PFLdFa060679; Tue, 25 May 2010 15:21:39 GMT (envelope-from raj@svn.freebsd.org) Message-Id: <201005251521.o4PFLdFa060679@svn.freebsd.org> From: Rafal Jaworowski Date: Tue, 25 May 2010 15:21:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208538 - in head/sys: arm/include boot/arm/uboot boot/fdt boot/powerpc/uboot boot/uboot/common boot/uboot/lib powerpc/include X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 15:21:39 -0000 Author: raj Date: Tue May 25 15:21:39 2010 New Revision: 208538 URL: http://svn.freebsd.org/changeset/base/208538 Log: Initial loader(8) support for Flattened Device Tree. o This is disabled by default for now, and can be enabled using WITH_FDT at build time. o Tested with ARM and PowerPC. Reviewed by: imp Sponsored by: The FreeBSD Foundation Added: head/sys/boot/fdt/ head/sys/boot/fdt/Makefile (contents, props changed) head/sys/boot/fdt/fdt_loader_cmd.c (contents, props changed) Modified: head/sys/arm/include/metadata.h head/sys/boot/arm/uboot/Makefile head/sys/boot/arm/uboot/version head/sys/boot/powerpc/uboot/Makefile head/sys/boot/powerpc/uboot/version head/sys/boot/uboot/common/main.c head/sys/boot/uboot/common/metadata.c head/sys/boot/uboot/lib/Makefile head/sys/powerpc/include/metadata.h Modified: head/sys/arm/include/metadata.h ============================================================================== --- head/sys/arm/include/metadata.h Tue May 25 15:12:21 2010 (r208537) +++ head/sys/arm/include/metadata.h Tue May 25 15:21:39 2010 (r208538) @@ -30,5 +30,6 @@ #define _MACHINE_METADATA_H_ #define MODINFOMD_BOOTINFO 0x1001 +#define MODINFOMD_DTBP 0x1002 #endif /* !_MACHINE_METADATA_H_ */ Modified: head/sys/boot/arm/uboot/Makefile ============================================================================== --- head/sys/boot/arm/uboot/Makefile Tue May 25 15:12:21 2010 (r208537) +++ head/sys/boot/arm/uboot/Makefile Tue May 25 15:21:39 2010 (r208538) @@ -18,6 +18,11 @@ LOADER_NFS_SUPPORT?= yes LOADER_TFTP_SUPPORT?= no LOADER_GZIP_SUPPORT?= no LOADER_BZIP2_SUPPORT?= no +.if defined(WITH_FDT) +LOADER_FDT_SUPPORT= yes +.else +LOADER_FDT_SUPPORT= no +.endif .if ${LOADER_DISK_SUPPORT} == "yes" CFLAGS+= -DLOADER_DISK_SUPPORT @@ -46,6 +51,12 @@ CFLAGS+= -DLOADER_NFS_SUPPORT .if ${LOADER_TFTP_SUPPORT} == "yes" CFLAGS+= -DLOADER_TFTP_SUPPORT .endif +.if ${LOADER_FDT_SUPPORT} == "yes" +CFLAGS+= -I${.CURDIR}/../../fdt +CFLAGS+= -I${.OBJDIR}/../../fdt +CFLAGS+= -DLOADER_FDT_SUPPORT +LIBFDT= ${.OBJDIR}/../../fdt/libfdt.a +.endif .if !defined(NO_FORTH) # Enable BootForth @@ -79,8 +90,8 @@ CFLAGS+= -I${.OBJDIR}/../../uboot/lib # where to get libstand from CFLAGS+= -I${.CURDIR}/../../../../lib/libstand/ -DPADD= ${LIBFICL} ${LIBUBOOT} ${LIBSTAND} -LDADD= ${LIBFICL} ${LIBUBOOT} -lstand +DPADD= ${LIBFICL} ${LIBUBOOT} ${LIBFDT} ${LIBSTAND} +LDADD= ${LIBFICL} ${LIBUBOOT} ${LIBFDT} -lstand vers.c: ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version sh ${.CURDIR}/../../common/newvers.sh ${.CURDIR}/version ${NEWVERSWHAT} Modified: head/sys/boot/arm/uboot/version ============================================================================== --- head/sys/boot/arm/uboot/version Tue May 25 15:12:21 2010 (r208537) +++ head/sys/boot/arm/uboot/version Tue May 25 15:21:39 2010 (r208538) @@ -3,5 +3,6 @@ $FreeBSD$ NOTE ANY CHANGES YOU MAKE TO THE BOOTBLOCKS HERE. The format of this file is important. Make sure the current version number is on line 6. +1.1: Flattened Device Tree blob support. 1.0: Added storage support. Booting from HDD, USB, etc. is now possible. 0.5: Initial U-Boot/arm version (netbooting only). Added: head/sys/boot/fdt/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/boot/fdt/Makefile Tue May 25 15:21:39 2010 (r208538) @@ -0,0 +1,25 @@ +# $FreeBSD$ + +.PATH: ${.CURDIR}/../../contrib/libfdt/ + +LIB= fdt +INTERNALLIB= + +# Vendor sources of libfdt. +SRCS+= fdt.c fdt_ro.c fdt_wip.c fdt_sw.c fdt_rw.c fdt_strerror.c + +# Loader's fdt commands extension sources. +SRCS+= fdt_loader_cmd.c + +CFLAGS+= -I${.CURDIR}/../../contrib/libfdt/ -I${.CURDIR}/../common/ \ + -I${.CURDIR}/../uboot/lib + +CFLAGS+= -ffreestanding + +.if ${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "arm" +CFLAGS+= -msoft-float +.endif + +CFLAGS+= -Wformat -Wall + +.include Added: head/sys/boot/fdt/fdt_loader_cmd.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/boot/fdt/fdt_loader_cmd.c Tue May 25 15:21:39 2010 (r208538) @@ -0,0 +1,1290 @@ +/*- + * Copyright (c) 2009-2010 The FreeBSD Foundation + * All rights reserved. + * + * This software was developed by Semihalf under sponsorship from + * the FreeBSD Foundation. + * + * 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 AUTHOR 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 AUTHOR 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. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include + +#include "bootstrap.h" +#include "glue.h" + +#define DEBUG + +#ifdef DEBUG +#define debugf(fmt, args...) do { printf("%s(): ", __func__); \ + printf(fmt,##args); } while (0) +#else +#define debugf(fmt, args...) +#endif + +#define FDT_CWD_LEN 256 +#define FDT_MAX_DEPTH 6 + +#define FDT_PROP_SEP " = " + +#define STR(number) #number +#define STRINGIFY(number) STR(number) + +#define MIN(num1, num2) (((num1) < (num2)) ? (num1):(num2)) + +static struct fdt_header *fdtp = NULL; + +static int fdt_cmd_nyi(int argc, char *argv[]); + +static int fdt_cmd_mkprop(int argc, char *argv[]); +static int fdt_cmd_cd(int argc, char *argv[]); +static int fdt_cmd_hdr(int argc, char *argv[]); +static int fdt_cmd_ls(int argc, char *argv[]); +static int fdt_cmd_prop(int argc, char *argv[]); +static int fdt_cmd_pwd(int argc, char *argv[]); +static int fdt_cmd_rm(int argc, char *argv[]); +static int fdt_cmd_mknode(int argc, char *argv[]); + +typedef int cmdf_t(int, char *[]); + +struct cmdtab { + char *name; + cmdf_t *handler; +}; + +static const struct cmdtab commands[] = { + { "alias", &fdt_cmd_nyi }, + { "cd", &fdt_cmd_cd }, + { "header", &fdt_cmd_hdr }, + { "ls", &fdt_cmd_ls }, + { "mknode", &fdt_cmd_mknode }, + { "mkprop", &fdt_cmd_mkprop }, + { "mres", &fdt_cmd_nyi }, + { "prop", &fdt_cmd_prop }, + { "pwd", &fdt_cmd_pwd }, + { "rm", &fdt_cmd_rm }, + { NULL, NULL } +}; + +static char cwd[FDT_CWD_LEN] = "/"; + +static int +fdt_setup_fdtp() +{ + struct preloaded_file *bfp; + int err; + + /* + * Find the device tree blob. + */ + bfp = file_findfile(NULL, "dtb"); + if (bfp == NULL) { + command_errmsg = "no device tree blob loaded"; + return (CMD_ERROR); + } + fdtp = (struct fdt_header *)bfp->f_addr; + + /* + * Validate the blob. + */ + err = fdt_check_header(fdtp); + if (err < 0) { + if (err == -FDT_ERR_BADVERSION) + sprintf(command_errbuf, + "incompatible blob version: %d, should be: %d", + fdt_version(fdtp), FDT_LAST_SUPPORTED_VERSION); + + else + sprintf(command_errbuf, "error validating blob: %s", + fdt_strerror(err)); + return (CMD_ERROR); + } + return (CMD_OK); +} + +#define fdt_strtovect(str, cellbuf, lim, cellsize) _fdt_strtovect((str), \ + (cellbuf), (lim), (cellsize), 0); + +/* Force using base 16 */ +#define fdt_strtovectx(str, cellbuf, lim, cellsize) _fdt_strtovect((str), \ + (cellbuf), (lim), (cellsize), 16); + +static int +_fdt_strtovect(char *str, void *cellbuf, int lim, unsigned char cellsize, + uint8_t base) +{ + char *buf = str; + char *end = str + strlen(str) - 2; + uint32_t *u32buf = NULL; + uint8_t *u8buf = NULL; + int cnt = 0; + + if (cellsize == sizeof(uint32_t)) + u32buf = (uint32_t *)cellbuf; + else + u8buf = (uint8_t *)cellbuf; + + if (lim == 0) + return (0); + + while (buf < end) { + + /* Skip white whitespace(s)/separators */ + while (!isxdigit(*buf) && buf < end) + buf++; + + if (u32buf != NULL) + u32buf[cnt] = + cpu_to_fdt32((uint32_t)strtol(buf, NULL, base)); + + else + u8buf[cnt] = (uint8_t)strtol(buf, NULL, base); + + if (cnt + 1 <= lim - 1) + cnt++; + else + break; + buf++; + /* Find another number */ + while ((isxdigit(*buf) || *buf == 'x') && buf < end) + buf++; + } + return (cnt); +} + +#define TMP_MAX_ETH 8 + +void +fixup_ethernet(const char *env, char *ethstr, int *eth_no, int len) +{ + char *end, *str; + uint8_t tmp_addr[6]; + int i, n; + + /* Extract interface number */ + i = strtol(env + 3, &end, 10); + if (end == (env + 3)) + /* 'ethaddr' means interface 0 address */ + n = 0; + else + n = i; + + if (n > TMP_MAX_ETH) + return; + + str = ub_env_get(env); + + /* Convert macaddr string into a vector of uints */ + fdt_strtovectx(str, &tmp_addr, 6, sizeof(uint8_t)); + if (n != 0) { + i = strlen(env) - 7; + strncpy(ethstr + 8, env + 3, i); + } + /* Set actual property to a value from vect */ + fdt_setprop(fdtp, fdt_path_offset(fdtp, ethstr), + "local-mac-address", &tmp_addr, 6 * sizeof(uint8_t)); + + /* Clear ethernet..XXXX.. string */ + bzero(ethstr + 8, len - 8); + + if (n + 1 > *eth_no) + *eth_no = n + 1; +} + +void +fixup_cpubusfreqs(unsigned long cpufreq, unsigned long busfreq) +{ + int lo, o = 0, o2, maxo = 0, depth; + const uint32_t zero = 0; + + /* We want to modify every subnode of /cpus */ + o = fdt_path_offset(fdtp, "/cpus"); + + /* maxo should contain offset of node next to /cpus */ + depth = 0; + maxo = o; + while (depth != -1) + maxo = fdt_next_node(fdtp, maxo, &depth); + + /* Find CPU frequency properties */ + o = fdt_node_offset_by_prop_value(fdtp, o, "clock-frequency", + &zero, sizeof(uint32_t)); + + o2 = fdt_node_offset_by_prop_value(fdtp, o, "bus-frequency", &zero, + sizeof(uint32_t)); + + lo = MIN(o, o2); + + while (o != -FDT_ERR_NOTFOUND && o2 != -FDT_ERR_NOTFOUND) { + + o = fdt_node_offset_by_prop_value(fdtp, lo, + "clock-frequency", &zero, sizeof(uint32_t)); + + o2 = fdt_node_offset_by_prop_value(fdtp, lo, "bus-frequency", + &zero, sizeof(uint32_t)); + + /* We're only interested in /cpus subnode(s) */ + if (lo > maxo) + break; + + fdt_setprop_inplace_cell(fdtp, lo, "clock-frequency", + (uint32_t)cpufreq); + + fdt_setprop_inplace_cell(fdtp, lo, "bus-frequency", + (uint32_t)busfreq); + + lo = MIN(o, o2); + } +} + +int +fdt_reg_valid(uint32_t *reg, int len, int addr_cells, int size_cells) +{ + int cells_in_tuple, i, tuples, tuple_size; + uint32_t cur_start, cur_size; + + cells_in_tuple = (addr_cells + size_cells); + tuple_size = cells_in_tuple * sizeof(uint32_t); + tuples = len / tuple_size; + if (tuples == 0) + return (EINVAL); + + for (i = 0; i < tuples; i++) { + if (addr_cells == 2) + cur_start = fdt64_to_cpu(reg[i * cells_in_tuple]); + else + cur_start = fdt32_to_cpu(reg[i * cells_in_tuple]); + + if (size_cells == 2) + cur_size = fdt64_to_cpu(reg[i * cells_in_tuple + 2]); + else + cur_size = fdt32_to_cpu(reg[i * cells_in_tuple + 1]); + + if (cur_size == 0) + return (EINVAL); + + debugf(" reg#%d (start: 0x%0x size: 0x%0x) valid!\n", + i, cur_start, cur_size); + } + return (0); +} + +void +fixup_memory(struct sys_info *si) +{ + struct mem_region *curmr; + uint32_t addr_cells, size_cells; + uint32_t *addr_cellsp, *reg, *size_cellsp; + int err, i, len, memory, realmrno, root; + uint8_t *buf, *sb; + + root = fdt_path_offset(fdtp, "/"); + if (root < 0) { + sprintf(command_errbuf, "Could not find root node !"); + return; + } + + memory = fdt_path_offset(fdtp, "/memory"); + if (memory <= 0) { + /* Create proper '/memory' node. */ + memory = fdt_add_subnode(fdtp, root, "memory"); + if (memory <= 0) { + sprintf(command_errbuf, "Could not fixup '/memory' " + "node, error code : %d!\n", memory); + return; + } + + err = fdt_setprop(fdtp, memory, "device_type", "memory", + sizeof("memory")); + + if (err < 0) + return; + } + + addr_cellsp = (uint32_t *)fdt_getprop(fdtp, root, "#address-cells", + NULL); + size_cellsp = (uint32_t *)fdt_getprop(fdtp, root, "#size-cells", NULL); + + if (addr_cellsp == NULL || size_cellsp == NULL) { + sprintf(command_errbuf, "Could not fixup '/memory' node : " + "%s %s property not found in root node!\n", + (!addr_cellsp) ? "#address-cells" : "", + (!size_cellsp) ? "#size-cells" : ""); + return; + } + + addr_cells = fdt32_to_cpu(*addr_cellsp); + size_cells = fdt32_to_cpu(*size_cellsp); + + /* Count valid memory regions entries in sysinfo. */ + realmrno = si->mr_no; + for (i = 0; i < si->mr_no; i++) + if (si->mr[i].start == 0 && si->mr[i].size == 0) + realmrno--; + + if (realmrno == 0) { + sprintf(command_errbuf, "Could not fixup '/memory' node : " + "sysinfo doesn't contain valid memory regions info!\n"); + return; + } + + if ((reg = (uint32_t *)fdt_getprop(fdtp, memory, "reg", + &len)) != NULL) { + + if (fdt_reg_valid(reg, len, addr_cells, size_cells) == 0) + /* + * Do not apply fixup if existing 'reg' property + * seems to be valid. + */ + return; + } + + len = (addr_cells + size_cells) * realmrno * sizeof(uint32_t); + sb = buf = (uint8_t *)malloc(len); + if (!buf) + return; + + bzero(buf, len); + + for (i = 0; i < si->mr_no; i++) { + curmr = &si->mr[i]; + if (curmr->size != 0) { + /* Ensure endianess, and put cells into a buffer */ + if (addr_cells == 2) + *(uint64_t *)buf = + cpu_to_fdt64(curmr->start); + else + *(uint32_t *)buf = + cpu_to_fdt32(curmr->start); + + buf += sizeof(uint32_t) * addr_cells; + if (size_cells == 2) + *(uint64_t *)buf = + cpu_to_fdt64(curmr->size); + else + *(uint32_t *)buf = + cpu_to_fdt32(curmr->size); + + buf += sizeof(uint32_t) * size_cells; + } + } + + /* Set property */ + if ((err = fdt_setprop(fdtp, memory, "reg", sb, len)) < 0) + sprintf(command_errbuf, "Could not fixup '/memory' node.\n"); +} + +void +fixup_stdout(const char *env) +{ + const char *str; + char *ptr; + int serialno; + int len, no, sero; + const struct fdt_property *prop; + char *tmp[10]; + + str = ub_env_get(env); + ptr = (char *)str + strlen(str) - 1; + while (ptr > str && isdigit(*(str - 1))) + str--; + + if (ptr == str) + return; + + serialno = (int)strtol(ptr, NULL, 0); + no = fdt_path_offset(fdtp, "/chosen"); + if (no < 0) + return; + + prop = fdt_get_property(fdtp, no, "stdout", &len); + + /* If /chosen/stdout does not extist, create it */ + if (prop == NULL || (prop != NULL && len == 0)) { + + bzero(tmp, 10 * sizeof(char)); + strcpy((char *)&tmp, "serial"); + if (strlen(ptr) > 3) + /* Serial number too long */ + return; + + strncpy((char *)tmp + 6, ptr, 3); + sero = fdt_path_offset(fdtp, (const char *)tmp); + if (sero < 0) + /* + * If serial device we're trying to assign + * stdout to doesn't exist in DT -- return. + */ + return; + + fdt_setprop(fdtp, no, "stdout", &tmp, + strlen((char *)&tmp) + 1); + fdt_setprop(fdtp, no, "stdin", &tmp, + strlen((char *)&tmp) + 1); + } +} + +int +fdt_fixup(void) +{ + const char *env; + char *ethstr; + int chosen, err, eth_no, len; + struct sys_info *si; + + env = NULL; + eth_no = 0; + ethstr = NULL; + len = 0; + + if (!fdtp) { + err = fdt_setup_fdtp(); + if (err) { + sprintf(command_errbuf, "Could not perform blob " + "fixups. Error code: %d\n", err); + return (err); + } + } + + /* Create /chosen node (if not exists) */ + if ((chosen = fdt_subnode_offset(fdtp, 0, "chosen")) == + -FDT_ERR_NOTFOUND) + chosen = fdt_add_subnode(fdtp, 0, "chosen"); + + /* Value assigned to fixup-applied does not matter. */ + if (fdt_getprop(fdtp, chosen, "fixup-applied", NULL)) + return (CMD_OK); + + /* Acquire sys_info */ + si = ub_get_sys_info(); + + while ((env = ub_env_enum(env)) != NULL) { + if (strncmp(env, "eth", 3) == 0 && + strncmp(env + (strlen(env) - 4), "addr", 4) == 0) { + /* + * Handle Ethernet addrs: parse uboot env eth%daddr + */ + + if (!eth_no) { + /* + * Check how many chars we will need to store + * maximal eth iface number. + */ + len = strlen(STRINGIFY(TMP_MAX_ETH)) + + strlen("ethernet"); + + /* + * Reserve mem for string "ethernet" and len + * chars for iface no. + */ + ethstr = (char *)malloc(len * sizeof(char)); + bzero(ethstr, len * sizeof(char)); + strcpy(ethstr, "ethernet0"); + } + + /* Modify blob */ + fixup_ethernet(env, ethstr, ð_no, len); + + } else if (strcmp(env, "consoledev") == 0) + fixup_stdout(env); + } + + /* Modify cpu(s) and bus clock frequenties in /cpus node [Hz] */ + fixup_cpubusfreqs(si->clk_cpu, si->clk_bus); + + /* Fixup memory regions */ + fixup_memory(si); + + fdt_setprop(fdtp, chosen, "fixup-applied", NULL, 0); + + return (CMD_OK); +} + +int +command_fdt_internal(int argc, char *argv[]) +{ + cmdf_t *cmdh; + char *cmd; + int i, err; + + if (argc < 2) { + command_errmsg = "usage is 'fdt []"; + return (CMD_ERROR); + } + + /* + * Check if uboot env vars were parsed already. If not, do it now. + */ + fdt_fixup(); + + /* + * Validate fdt . + */ + cmd = strdup(argv[1]); + i = 0; + cmdh = NULL; + while (!(commands[i].name == NULL)) { + if (strcmp(cmd, commands[i].name) == 0) { + /* found it */ + cmdh = commands[i].handler; + break; + } + i++; + } + if (cmdh == NULL) { + command_errmsg = "unknown command"; + return (CMD_ERROR); + } + + if (!fdtp) + if (fdt_setup_fdtp()) + return (CMD_ERROR); + + /* + * Call command handler. + */ + err = (*cmdh)(argc, argv); + + return (err); +} + +static int +fdt_cmd_cd(int argc, char *argv[]) +{ + char *path; + char tmp[FDT_CWD_LEN]; + int len, o; + + path = (argc > 2) ? argv[2] : "/"; + + if (path[0] == '/') { + len = strlen(path); + if (len >= FDT_CWD_LEN) + goto fail; + } else { + /* Handle path specification relative to cwd */ + len = strlen(cwd) + strlen(path) + 1; + if (len >= FDT_CWD_LEN) + goto fail; + + strcpy(tmp, cwd); + strcat(tmp, "/"); + strcat(tmp, path); + path = tmp; + } + + o = fdt_path_offset(fdtp, path); + if (o < 0) { + sprintf(command_errbuf, "could not find node: '%s'", path); + return (CMD_ERROR); + } + + strcpy(cwd, path); + return (CMD_OK); + +fail: + sprintf(command_errbuf, "path too long: %d, max allowed: %d", + len, FDT_CWD_LEN - 1); + return (CMD_ERROR); +} + +static int +fdt_cmd_hdr(int argc __unused, char *argv[] __unused) +{ + char line[80]; + int ver; + + if (fdtp == NULL) { + command_errmsg = "no device tree blob pointer?!"; + return (CMD_ERROR); + } + + ver = fdt_version(fdtp); + pager_open(); + sprintf(line, "\nFlattened device tree header (%p):\n", fdtp); + pager_output(line); + sprintf(line, " magic = 0x%08x\n", fdt_magic(fdtp)); + pager_output(line); + sprintf(line, " size = %d\n", fdt_totalsize(fdtp)); + pager_output(line); + sprintf(line, " off_dt_struct = 0x%08x\n", + fdt_off_dt_struct(fdtp)); + pager_output(line); + sprintf(line, " off_dt_strings = 0x%08x\n", + fdt_off_dt_strings(fdtp)); + pager_output(line); + sprintf(line, " off_mem_rsvmap = 0x%08x\n", + fdt_off_mem_rsvmap(fdtp)); + pager_output(line); + sprintf(line, " version = %d\n", ver); + pager_output(line); + sprintf(line, " last compatible version = %d\n", + fdt_last_comp_version(fdtp)); + pager_output(line); + if (ver >= 2) { + sprintf(line, " boot_cpuid = %d\n", + fdt_boot_cpuid_phys(fdtp)); + pager_output(line); + } + if (ver >= 3) { + sprintf(line, " size_dt_strings = %d\n", + fdt_size_dt_strings(fdtp)); + pager_output(line); + } + if (ver >= 17) { + sprintf(line, " size_dt_struct = %d\n", + fdt_size_dt_struct(fdtp)); + pager_output(line); + } + pager_close(); + + return (CMD_OK); +} + +static int +fdt_cmd_ls(int argc, char *argv[]) +{ + const char *prevname[FDT_MAX_DEPTH] = { NULL }; + const char *name; + char *path; + int i, o, depth, len; + + path = (argc > 2) ? argv[2] : NULL; + if (path == NULL) + path = cwd; + + o = fdt_path_offset(fdtp, path); + if (o < 0) { + sprintf(command_errbuf, "could not find node: '%s'", path); + return (CMD_ERROR); + } + + for (depth = 0; + (o >= 0) && (depth >= 0); + o = fdt_next_node(fdtp, o, &depth)) { + + name = fdt_get_name(fdtp, o, &len); + + if (depth > FDT_MAX_DEPTH) { + printf("max depth exceeded: %d\n", depth); + continue; + } + + prevname[depth] = name; + + /* Skip root (i = 1) when printing devices */ + for (i = 1; i <= depth; i++) { + if (prevname[i] == NULL) + break; + + if (strcmp(cwd, "/") == 0) + printf("/"); + printf("%s", prevname[i]); + } + printf("\n"); + } + + return (CMD_OK); +} + +static __inline int +isprint(int c) +{ + + return (c >= ' ' && c <= 0x7e); +} + +static int +fdt_isprint(const void *data, int len, int *count) +{ + const char *d; + char ch; + int yesno, i; + + if (len == 0) + return (0); + + d = (const char *)data; + if (d[len - 1] != '\0') + return (0); + + *count = 0; + yesno = 1; + for (i = 0; i < len; i++) { + ch = *(d + i); + if (isprint(ch) || (ch == '\0' && i > 0)) { + /* Count strings */ + if (ch == '\0') + (*count)++; + continue; + } + + yesno = 0; + break; + } + + return (yesno); +} + +static int +fdt_data_str(const void *data, int len, int count, char **buf) +{ + char tmp[80], *b; + const char *d; + int i, l; + + /* + * Calculate the length for the string and allocate memory. + * + * Note len already includes at least one terminator. + */ + l = len; + if (count > 1) { + /* + * Each token had already a terminator buried in 'len', but we + * only need one eventually, don't count space for these. + */ + l -= count - 1; + + /* Each consecutive token requires a ", " separator. */ + l += count * 2; + } + /* Space for surrounding double quotes. */ + l += count * 2; + + b = (char *)malloc(l); + if (b == NULL) + return (1); + b[0] = '\0'; + + /* + * Now that we have space, format the string. + */ + i = 0; + do { + d = (const char *)data + i; + l = strlen(d) + 1; + + sprintf(tmp, "\"%s\"%s", d, + (i + l) < len ? ", " : ""); + strcat(b, tmp); + + i += l; + + } while (i < len); + *buf = b; + + return (0); +} + +static int +fdt_data_cell(const void *data, int len, char **buf) +{ + char tmp[80], *b; + const uint32_t *c; + int count, i, l; + + /* Number of cells */ + count = len / 4; + + /* + * Calculate the length for the string and allocate memory. + */ + + /* Each byte translates to 2 output characters */ + l = len * 2; + if (count > 1) { + /* Each consecutive cell requires a " " separator. */ + l += (count - 1) * 1; + } + /* Each cell will have a "0x" prefix */ + l += count * 2; + /* Space for surrounding <> and terminator */ + l += 3; + + b = (char *)malloc(l); + if (b == NULL) + return (1); + + b[0] = '\0'; + strcat(b, "<"); + + for (i = 0; i < len; i += 4) { + c = (const uint32_t *)((const uint8_t *)data + i); + sprintf(tmp, "0x%08x%s", fdt32_to_cpu(*c), + i < (len - 4) ? " " : ""); + strcat(b, tmp); + } + strcat(b, ">"); + *buf = b; + + return (0); +} + +static int +fdt_data_bytes(const void *data, int len, char **buf) +{ + char tmp[80], *b; + const char *d; + int i, l; + + /* + * Calculate the length for the string and allocate memory. + */ + + /* Each byte translates to 2 output characters */ + l = len * 2; + if (len > 1) + /* Each consecutive byte requires a " " separator. */ + l += (len - 1) * 1; + /* Each byte will have a "0x" prefix */ + l += len * 2; + /* Space for surrounding [] and terminator. */ + l += 3; + + b = (char *)malloc(l); + if (b == NULL) + return (1); + + b[0] = '\0'; + strcat(b, "["); + + for (i = 0, d = data; i < len; i++) { + sprintf(tmp, "0x%02x%s", d[i], i < len - 1 ? " " : ""); + strcat(b, tmp); + } + strcat(b, "]"); + *buf = b; + + return (0); +} + +static int +fdt_data_fmt(const void *data, int len, char **buf) +{ + int count; + + if (len == 0) { + *buf = NULL; + return (1); + } + + if (fdt_isprint(data, len, &count)) + return (fdt_data_str(data, len, count, buf)); + + else if ((len % 4) == 0) + return (fdt_data_cell(data, len, buf)); + + else + return (fdt_data_bytes(data, len, buf)); +} + +static int +fdt_prop(int offset) +{ + char *line, *buf; + const struct fdt_property *prop; + const char *name; + const void *data; + int len, rv; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Tue May 25 15:32:08 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3B5901065686; Tue, 25 May 2010 15:32:08 +0000 (UTC) (envelope-from raj@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2A8F18FC31; Tue, 25 May 2010 15:32:08 +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 o4PFW8O0063089; Tue, 25 May 2010 15:32:08 GMT (envelope-from raj@svn.freebsd.org) Received: (from raj@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4PFW89L063087; Tue, 25 May 2010 15:32:08 GMT (envelope-from raj@svn.freebsd.org) Message-Id: <201005251532.o4PFW89L063087@svn.freebsd.org> From: Rafal Jaworowski Date: Tue, 25 May 2010 15:32:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208539 - head/sys/boot X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 15:32:08 -0000 Author: raj Date: Tue May 25 15:32:07 2010 New Revision: 208539 URL: http://svn.freebsd.org/changeset/base/208539 Log: Bring a missing FDT piece (omitted in the previous commit). Modified: head/sys/boot/Makefile Modified: head/sys/boot/Makefile ============================================================================== --- head/sys/boot/Makefile Tue May 25 15:21:39 2010 (r208538) +++ head/sys/boot/Makefile Tue May 25 15:32:07 2010 (r208539) @@ -26,6 +26,10 @@ SUBDIR+= uboot SUBDIR+= zfs .endif +.if ${MK_FDT} != "no" +SUBDIR+= fdt +.endif + # Pick the machine-dependent subdir based on the target architecture. ADIR= ${MACHINE:S/amd64/i386/:S/sun4v/sparc64/} .if exists(${.CURDIR}/${ADIR}/.) From owner-svn-src-all@FreeBSD.ORG Tue May 25 15:51:37 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 346F71065672; Tue, 25 May 2010 15:51: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 091A58FC12; Tue, 25 May 2010 15:51: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 o4PFpaFe067465; Tue, 25 May 2010 15:51:36 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4PFpa3W067461; Tue, 25 May 2010 15:51:36 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201005251551.o4PFpa3W067461@svn.freebsd.org> From: Jung-uk Kim Date: Tue, 25 May 2010 15:51:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208540 - stable/7/tools/build/options X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 15:51:37 -0000 Author: jkim Date: Tue May 25 15:51:36 2010 New Revision: 208540 URL: http://svn.freebsd.org/changeset/base/208540 Log: MFC: r183305, r183306 Add mission options. Added: stable/7/tools/build/options/WITHOUT_BSNMP - copied unchanged from r183306, head/tools/build/options/WITHOUT_BSNMP stable/7/tools/build/options/WITHOUT_FLOPPY - copied unchanged from r183306, head/tools/build/options/WITHOUT_FLOPPY stable/7/tools/build/options/WITHOUT_NETGRAPH_SUPPORT - copied unchanged from r183305, head/tools/build/options/WITHOUT_NETGRAPH_SUPPORT stable/7/tools/build/options/WITHOUT_WIRELESS_SUPPORT - copied unchanged from r183305, head/tools/build/options/WITHOUT_WIRELESS_SUPPORT Modified: Directory Properties: stable/7/tools/build/options/ (props changed) Copied: stable/7/tools/build/options/WITHOUT_BSNMP (from r183306, head/tools/build/options/WITHOUT_BSNMP) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/7/tools/build/options/WITHOUT_BSNMP Tue May 25 15:51:36 2010 (r208540, copy of r183306, head/tools/build/options/WITHOUT_BSNMP) @@ -0,0 +1,4 @@ +.\" $FreeBSD$ +Set to not build or install +.Xr bsnmpd 1 +and related libraries and data files. Copied: stable/7/tools/build/options/WITHOUT_FLOPPY (from r183306, head/tools/build/options/WITHOUT_FLOPPY) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/7/tools/build/options/WITHOUT_FLOPPY Tue May 25 15:51:36 2010 (r208540, copy of r183306, head/tools/build/options/WITHOUT_FLOPPY) @@ -0,0 +1,3 @@ +.\" $FreeBSD$ +Set to not build or install programs +for operating floppy disk driver. Copied: stable/7/tools/build/options/WITHOUT_NETGRAPH_SUPPORT (from r183305, head/tools/build/options/WITHOUT_NETGRAPH_SUPPORT) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/7/tools/build/options/WITHOUT_NETGRAPH_SUPPORT Tue May 25 15:51:36 2010 (r208540, copy of r183305, head/tools/build/options/WITHOUT_NETGRAPH_SUPPORT) @@ -0,0 +1,2 @@ +.\" $FreeBSD$ +Set to build libraries, programs, and kernel modules without netgraph support. Copied: stable/7/tools/build/options/WITHOUT_WIRELESS_SUPPORT (from r183305, head/tools/build/options/WITHOUT_WIRELESS_SUPPORT) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/7/tools/build/options/WITHOUT_WIRELESS_SUPPORT Tue May 25 15:51:36 2010 (r208540, copy of r183305, head/tools/build/options/WITHOUT_WIRELESS_SUPPORT) @@ -0,0 +1,3 @@ +.\" $FreeBSD$ +Set to build libraries, programs, and kernel modules without +802.11 wireless support. From owner-svn-src-all@FreeBSD.ORG Tue May 25 15:58:31 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9F82F106564A; Tue, 25 May 2010 15:58: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 8BE278FC15; Tue, 25 May 2010 15:58: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 o4PFwVc5068995; Tue, 25 May 2010 15:58:31 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4PFwVX6068993; Tue, 25 May 2010 15:58:31 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201005251558.o4PFwVX6068993@svn.freebsd.org> From: Jung-uk Kim Date: Tue, 25 May 2010 15:58:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208541 - stable/7/share/man/man5 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 15:58:31 -0000 Author: jkim Date: Tue May 25 15:58:31 2010 New Revision: 208541 URL: http://svn.freebsd.org/changeset/base/208541 Log: Regen for r208540. Modified: stable/7/share/man/man5/src.conf.5 Modified: stable/7/share/man/man5/src.conf.5 ============================================================================== --- stable/7/share/man/man5/src.conf.5 Tue May 25 15:51:36 2010 (r208540) +++ stable/7/share/man/man5/src.conf.5 Tue May 25 15:58:31 2010 (r208541) @@ -1,7 +1,7 @@ .\" DO NOT EDIT-- this file is automatically generated. -.\" from FreeBSD: src/tools/build/options/makeman,v 1.6.2.2 2008/01/28 08:42:15 dougb Exp +.\" from FreeBSD: stable/7/tools/build/options/makeman 175743 2008-01-28 08:42:15Z dougb .\" $FreeBSD$ -.Dd January 30, 2008 +.Dd May 25, 2010 .Dt SRC.CONF 5 .Os .Sh NAME @@ -77,30 +77,52 @@ it to be honoured by The following list provides a name and short description for variables that can be used for source builds. .Bl -tag -width indent +.It Va WITHOUT_ACCT +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_ACCT 187106 2009-01-12 17:19:17Z sam +Set to not build process accounting tools such as +.Xr ac 8 +and +.Xr accton 8 . .It Va WITHOUT_ACPI -.\" from FreeBSD: src/tools/build/options/WITHOUT_ACPI,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_ACPI 156932 2006-03-21 07:50:50Z ru Set to not build .Xr acpiconf 8 , .Xr acpidump 8 and related programs. +.It Va WITHOUT_AMD +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_AMD 187106 2009-01-12 17:19:17Z sam +Set to not build +.Xr amd 8 , +and related programs. +.It Va WITHOUT_APM +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_APM 187106 2009-01-12 17:19:17Z sam +Set to not build +.Xr apm 8 , +.Xr apmd 8 +and related programs. .It Va WITHOUT_ASSERT_DEBUG -.\" from FreeBSD: src/tools/build/options/WITHOUT_ASSERT_DEBUG,v 1.1 2006/09/11 13:55:27 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_ASSERT_DEBUG 162215 2006-09-11 13:55:27Z ru Set to compile programs and libraries without the .Xr assert 3 checks. +.It Va WITHOUT_AT +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_AT 187106 2009-01-12 17:19:17Z sam +Set to not build +.Xr at 1 +and related utilities. .It Va WITHOUT_ATM -.\" from FreeBSD: src/tools/build/options/WITHOUT_ATM,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_ATM 156932 2006-03-21 07:50:50Z ru Set to not build programs and libraries related to ATM networking. .It Va WITHOUT_AUDIT -.\" from FreeBSD: src/tools/build/options/WITHOUT_AUDIT,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_AUDIT 156932 2006-03-21 07:50:50Z ru Set to not build audit support into system programs. .It Va WITHOUT_AUTHPF -.\" from FreeBSD: src/tools/build/options/WITHOUT_AUTHPF,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_AUTHPF 156932 2006-03-21 07:50:50Z ru Set to not build .Xr authpf 8 . .It Va WITHOUT_BIND -.\" from FreeBSD: src/tools/build/options/WITHOUT_BIND,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_BIND 156932 2006-03-21 07:50:50Z ru Setting this variable will prevent any part of BIND from being built. When set, it also enforces the following options: .Pp @@ -119,24 +141,24 @@ When set, it also enforces the following .Va WITHOUT_BIND_UTILS .El .It Va WITHOUT_BIND_DNSSEC -.\" from FreeBSD: src/tools/build/options/WITHOUT_BIND_DNSSEC,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_BIND_DNSSEC 156932 2006-03-21 07:50:50Z ru Set to avoid building or installing the DNSSEC related binaries, .Xr dnssec-keygen 8 and .Xr dnssec-signzone 8 . .It Va WITHOUT_BIND_ETC -.\" from FreeBSD: src/tools/build/options/WITHOUT_BIND_ETC,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_BIND_ETC 156932 2006-03-21 07:50:50Z ru Set to avoid installing the default files to .Pa /var/named/etc/namedb . .It Va WITH_BIND_LIBS -.\" from FreeBSD: src/tools/build/options/WITH_BIND_LIBS,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITH_BIND_LIBS 156932 2006-03-21 07:50:50Z ru Set to install BIND libraries and include files. .It Va WITHOUT_BIND_LIBS_LWRES -.\" from FreeBSD: src/tools/build/options/WITHOUT_BIND_LIBS_LWRES,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_BIND_LIBS_LWRES 156932 2006-03-21 07:50:50Z ru Set to avoid installing the lightweight resolver library in .Pa /usr/lib . .It Va WITHOUT_BIND_MTREE -.\" from FreeBSD: src/tools/build/options/WITHOUT_BIND_MTREE,v 1.3 2006/04/13 10:37:29 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_BIND_MTREE 157717 2006-04-13 10:37:29Z ru Set to avoid running .Xr mtree 8 to create the chroot directory structure under @@ -151,7 +173,7 @@ When set, it also enforces the following .Va WITHOUT_BIND_ETC .El .It Va WITHOUT_BIND_NAMED -.\" from FreeBSD: src/tools/build/options/WITHOUT_BIND_NAMED,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_BIND_NAMED 156932 2006-03-21 07:50:50Z ru Set to avoid building or installing .Xr named 8 , .Xr named.reload 8 , @@ -161,7 +183,7 @@ Set to avoid building or installing and .Xr rndc-confgen 8 . .It Va WITHOUT_BIND_UTILS -.\" from FreeBSD: src/tools/build/options/WITHOUT_BIND_UTILS,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_BIND_UTILS 156932 2006-03-21 07:50:50Z ru Set to avoid building or installing the BIND userland utilities, .Xr dig 1 , .Xr host 1 , @@ -169,13 +191,18 @@ Set to avoid building or installing the and .Xr nsupdate 8 . .It Va WITHOUT_BLUETOOTH -.\" from FreeBSD: src/tools/build/options/WITHOUT_BLUETOOTH,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_BLUETOOTH 156932 2006-03-21 07:50:50Z ru Set to not build Bluetooth related kernel modules, programs and libraries. .It Va WITHOUT_BOOT -.\" from FreeBSD: src/tools/build/options/WITHOUT_BOOT,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_BOOT 156932 2006-03-21 07:50:50Z ru Set to not build the boot blocks and loader. +.It Va WITHOUT_BSNMP +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_BSNMP 208540 2010-05-25 15:51:36Z jkim +Set to not build or install +.Xr bsnmpd 1 +and related libraries and data files. .It Va WITHOUT_BZIP2 -.\" from FreeBSD: src/tools/build/options/WITHOUT_BZIP2,v 1.1.2.1 2008/01/30 15:03:37 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_BZIP2 175825 2008-01-30 15:03:37Z ru Set to not build contributed bzip2 software as a part of the base system. .Bf -symbolic The option has no effect yet. @@ -187,14 +214,14 @@ When set, it also enforces the following .Va WITHOUT_BZIP2_SUPPORT .El .It Va WITHOUT_BZIP2_SUPPORT -.\" from FreeBSD: src/tools/build/options/WITHOUT_BZIP2_SUPPORT,v 1.1 2007/01/26 10:19:08 delphij Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_BZIP2_SUPPORT 166255 2007-01-26 10:19:08Z delphij Set to build some programs without optional bzip2 support. .It Va WITHOUT_CALENDAR -.\" from FreeBSD: src/tools/build/options/WITHOUT_CALENDAR,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_CALENDAR 156932 2006-03-21 07:50:50Z ru Set to not build .Xr calendar 1 . .It Va WITHOUT_CDDL -.\" from FreeBSD: src/tools/build/options/WITHOUT_CDDL,v 1.1 2006/11/01 09:02:11 jb Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_CDDL 163861 2006-11-01 09:02:11Z jb Set to not build code licensed under Sun's CDDL. When set, it also enforces the following options: .Pp @@ -203,11 +230,11 @@ When set, it also enforces the following .Va WITHOUT_ZFS .El .It Va WITHOUT_CPP -.\" from FreeBSD: src/tools/build/options/WITHOUT_CPP,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_CPP 156932 2006-03-21 07:50:50Z ru Set to not build .Xr cpp 1 . .It Va WITHOUT_CRYPT -.\" from FreeBSD: src/tools/build/options/WITHOUT_CRYPT,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_CRYPT 156932 2006-03-21 07:50:50Z ru Set to not build any crypto code. When set, it also enforces the following options: .Pp @@ -225,50 +252,63 @@ When set, it also enforces the following .It .Va WITHOUT_OPENSSL .El +.It Va WITHOUT_CTM +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_CTM 187106 2009-01-12 17:19:17Z sam +Set to not build +.Xr ctm 1 +and related utilities. .It Va WITHOUT_CVS -.\" from FreeBSD: src/tools/build/options/WITHOUT_CVS,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_CVS 156932 2006-03-21 07:50:50Z ru Set to not build CVS. .It Va WITHOUT_CXX -.\" from FreeBSD: src/tools/build/options/WITHOUT_CXX,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_CXX 156932 2006-03-21 07:50:50Z ru Set to not build .Xr g++ 1 and related libraries. .It Va WITHOUT_DICT -.\" from FreeBSD: src/tools/build/options/WITHOUT_DICT,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_DICT 156932 2006-03-21 07:50:50Z ru Set to not build the Webster dictionary files. .It Va WITHOUT_DYNAMICROOT -.\" from FreeBSD: src/tools/build/options/WITHOUT_DYNAMICROOT,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_DYNAMICROOT 156932 2006-03-21 07:50:50Z ru Set this if you do not want to link .Pa /bin and .Pa /sbin dynamically. .It Va WITHOUT_EXAMPLES -.\" from FreeBSD: src/tools/build/options/WITHOUT_EXAMPLES,v 1.2 2006/03/21 09:06:24 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_EXAMPLES 156938 2006-03-21 09:06:24Z ru Set to avoid installing examples to .Pa /usr/share/examples/ . +.It Va WITHOUT_FLOPPY +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_FLOPPY 208540 2010-05-25 15:51:36Z jkim +Set to not build or install programs +for operating floppy disk driver. .It Va WITHOUT_FORTH -.\" from FreeBSD: src/tools/build/options/WITHOUT_FORTH,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_FORTH 156932 2006-03-21 07:50:50Z ru Set to build bootloaders without Forth support. .It Va WITHOUT_FP_LIBC -.\" from FreeBSD: src/tools/build/options/WITHOUT_FP_LIBC,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_FP_LIBC 156932 2006-03-21 07:50:50Z ru Set to build .Nm libc without floating-point support. +.It Va WITHOUT_FREEBSD_UPDATE +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_FREEBSD_UPDATE 187106 2009-01-12 17:19:17Z sam +Set to not build +.Xr freebsd-update 8 . .It Va WITHOUT_GAMES -.\" from FreeBSD: src/tools/build/options/WITHOUT_GAMES,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_GAMES 156932 2006-03-21 07:50:50Z ru Set to not build games. .It Va WITHOUT_GCOV -.\" from FreeBSD: src/tools/build/options/WITHOUT_GCOV,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_GCOV 156932 2006-03-21 07:50:50Z ru Set to not build the .Xr gcov 1 tool. .It Va WITHOUT_GDB -.\" from FreeBSD: src/tools/build/options/WITHOUT_GDB,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_GDB 156932 2006-03-21 07:50:50Z ru Set to not build .Xr gdb 1 . .It Va WITHOUT_GNU -.\" from FreeBSD: src/tools/build/options/WITHOUT_GNU,v 1.2.2.1 2008/01/30 15:03:37 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_GNU 175825 2008-01-30 15:03:37Z ru Set to not build contributed GNU software as a part of the base system. This option can be useful if the system built must not contain any code covered by the GNU Public License due to legal reasons. @@ -282,36 +322,36 @@ When set, it also enforces the following .Va WITHOUT_GNU_SUPPORT .El .It Va WITHOUT_GNU_SUPPORT -.\" from FreeBSD: src/tools/build/options/WITHOUT_GNU_SUPPORT,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_GNU_SUPPORT 156932 2006-03-21 07:50:50Z ru Set to build some programs without optional GNU support. .It Va WITHOUT_GPIB -.\" from FreeBSD: src/tools/build/options/WITHOUT_GPIB,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_GPIB 156932 2006-03-21 07:50:50Z ru Set to not build GPIB bus support. .It Va WITHOUT_GROFF -.\" from FreeBSD: src/tools/build/options/WITHOUT_GROFF,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_GROFF 156932 2006-03-21 07:50:50Z ru Set to not build .Xr groff 1 . .It Va WITHOUT_GSSAPI -.\" from FreeBSD: src/tools/build/options/WITHOUT_GSSAPI,v 1.1.2.1 2008/01/28 08:42:15 dougb Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_GSSAPI 175743 2008-01-28 08:42:15Z dougb Set to not build libgssapi. .It Va WITH_HESIOD -.\" from FreeBSD: src/tools/build/options/WITH_HESIOD,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITH_HESIOD 156932 2006-03-21 07:50:50Z ru Set to build Hesiod support. .It Va WITHOUT_HTML -.\" from FreeBSD: src/tools/build/options/WITHOUT_HTML,v 1.1 2006/03/21 07:50:49 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_HTML 156932 2006-03-21 07:50:50Z ru Set to not build HTML docs. .It Va WITHOUT_I4B -.\" from FreeBSD: src/tools/build/options/WITHOUT_I4B,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_I4B 156932 2006-03-21 07:50:50Z ru Set to not build isdn4bsd package. .It Va WITH_IDEA -.\" from FreeBSD: src/tools/build/options/WITH_IDEA,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITH_IDEA 156932 2006-03-21 07:50:50Z ru Set to build the IDEA encryption code. This code is patented in the USA and many European countries. It is .Em "YOUR RESPONSIBILITY" to determine if you can legally use IDEA. .It Va WITHOUT_INET6 -.\" from FreeBSD: src/tools/build/options/WITHOUT_INET6,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_INET6 156932 2006-03-21 07:50:50Z ru Set to not build programs and libraries related to IPv6 networking. When set, it also enforces the following options: @@ -321,24 +361,27 @@ When set, it also enforces the following .Va WITHOUT_INET6_SUPPORT .El .It Va WITHOUT_INET6_SUPPORT -.\" from FreeBSD: src/tools/build/options/WITHOUT_INET6_SUPPORT,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_INET6_SUPPORT 156932 2006-03-21 07:50:50Z ru Set to build libraries, programs, and kernel modules without IPv6 support. .It Va WITHOUT_INFO -.\" from FreeBSD: src/tools/build/options/WITHOUT_INFO,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_INFO 156932 2006-03-21 07:50:50Z ru Set to not make or install .Xr info 5 files. .It Va WITHOUT_INSTALLLIB -.\" from FreeBSD: src/tools/build/options/WITHOUT_INSTALLLIB,v 1.1.2.1 2008/01/30 15:05:41 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_INSTALLLIB 175826 2008-01-30 15:05:41Z ru Set this if you do not want to install optional libraries. For example when creating a .Xr nanobsd 8 image. .It Va WITHOUT_IPFILTER -.\" from FreeBSD: src/tools/build/options/WITHOUT_IPFILTER,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_IPFILTER 156932 2006-03-21 07:50:50Z ru Set to not build IP Filter package. +.It Va WITHOUT_IPFW +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_IPFW 187106 2009-01-12 17:19:17Z sam +Set to not build IPFW tools. .It Va WITHOUT_IPX -.\" from FreeBSD: src/tools/build/options/WITHOUT_IPX,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_IPX 156932 2006-03-21 07:50:50Z ru Set to not build programs and libraries related to IPX networking. When set, it also enforces the following options: .Pp @@ -349,10 +392,14 @@ When set, it also enforces the following .Va WITHOUT_NCP .El .It Va WITHOUT_IPX_SUPPORT -.\" from FreeBSD: src/tools/build/options/WITHOUT_IPX_SUPPORT,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_IPX_SUPPORT 156932 2006-03-21 07:50:50Z ru Set to build some programs without IPX support. +.It Va WITHOUT_JAIL +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_JAIL 187106 2009-01-12 17:19:17Z sam +Set to not build tools for the support of jails; e.g. +.Xr jail 8 . .It Va WITHOUT_KERBEROS -.\" from FreeBSD: src/tools/build/options/WITHOUT_KERBEROS,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_KERBEROS 156932 2006-03-21 07:50:50Z ru Set this if you do not want to build Kerberos 5 (KTH Heimdal). When set, it also enforces the following options: .Pp @@ -365,7 +412,7 @@ When set, it also enforces the following .Va WITHOUT_KERBEROS_SUPPORT .El .It Va WITHOUT_KERBEROS_SUPPORT -.\" from FreeBSD: src/tools/build/options/WITHOUT_KERBEROS_SUPPORT,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_KERBEROS_SUPPORT 156932 2006-03-21 07:50:50Z ru Set to build some programs without Kerberos support, like .Xr cvs 1 , .Xr ssh 1 , @@ -374,7 +421,7 @@ Set to build some programs without Kerbe and .Xr telnetd 8 . .It Va WITHOUT_KVM -.\" from FreeBSD: src/tools/build/options/WITHOUT_KVM,v 1.1.2.1 2008/01/30 15:03:37 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_KVM 175825 2008-01-30 15:03:37Z ru Set to not build the .Nm libkvm library as a part of the base system. @@ -388,23 +435,29 @@ When set, it also enforces the following .Va WITHOUT_KVM_SUPPORT .El .It Va WITHOUT_KVM_SUPPORT -.\" from FreeBSD: src/tools/build/options/WITHOUT_KVM_SUPPORT,v 1.1 2007/06/13 02:08:04 sepotvin Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_KVM_SUPPORT 170644 2007-06-13 02:08:04Z sepotvin Set to build some programs without optional .Nm libkvm support. +.It Va WITHOUT_LEGACY_CONSOLE +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_LEGACY_CONSOLE 187106 2009-01-12 17:19:17Z sam +Set to not build programs that support a legacy PC console; e.g. +.Xr kbdcontrol 8 +and +.Xr vidcontrol 8 . .It Va WITHOUT_LIB32 -.\" from FreeBSD: src/tools/build/options/WITHOUT_LIB32,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_LIB32 156932 2006-03-21 07:50:50Z ru On amd64, set to not build 32-bit library set and a .Nm ld-elf32.so.1 runtime linker. .It Va WITHOUT_LIBKSE -.\" from FreeBSD: src/tools/build/options/WITHOUT_LIBKSE,v 1.2 2007/10/09 17:22:00 obrien Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_LIBKSE 172495 2007-10-09 17:22:00Z obrien Set to not build the .Nm libkse (M:N threading) library. .It Va WITHOUT_LIBPTHREAD -.\" from FreeBSD: src/tools/build/options/WITHOUT_LIBPTHREAD,v 1.3 2007/10/09 17:53:33 obrien Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_LIBPTHREAD 172498 2007-10-09 17:53:33Z obrien Set to not build either of the .Nm libpthread providing libraries @@ -435,39 +488,77 @@ When set, it also enforces the following .Va WITHOUT_LIBTHR .El .It Va WITHOUT_LIBTHR -.\" from FreeBSD: src/tools/build/options/WITHOUT_LIBTHR,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_LIBTHR 156932 2006-03-21 07:50:50Z ru Set to not build the .Nm libthr (1:1 threading) library. .It Va WITHOUT_LOCALES -.\" from FreeBSD: src/tools/build/options/WITHOUT_LOCALES,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_LOCALES 156932 2006-03-21 07:50:50Z ru Set to not build localization files; see .Xr locale 1 . +.It Va WITHOUT_LOCATE +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_LOCATE 187106 2009-01-12 17:19:17Z sam +Set to not build +.Xr locate 1 +and related programs. .It Va WITHOUT_LPR -.\" from FreeBSD: src/tools/build/options/WITHOUT_LPR,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_LPR 156932 2006-03-21 07:50:50Z ru Set to not build .Xr lpr 1 and related programs. +.It Va WITHOUT_MAIL +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_MAIL 187106 2009-01-12 17:19:17Z sam +Set to not build any mail support (MUA or MTA). +When set, it also enforces the following options: +.Pp +.Bl -item -compact +.It +.Va WITHOUT_MAILWRAPPER +.It +.Va WITHOUT_SENDMAIL +.El .It Va WITHOUT_MAILWRAPPER -.\" from FreeBSD: src/tools/build/options/WITHOUT_MAILWRAPPER,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_MAILWRAPPER 156932 2006-03-21 07:50:50Z ru Set to not build the .Xr mailwrapper 8 MTA selector. +.It Va WITHOUT_MAKE +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_MAKE 187106 2009-01-12 17:19:17Z sam +Set to not install +.Xr make 1 +and related support files. .It Va WITHOUT_MAN -.\" from FreeBSD: src/tools/build/options/WITHOUT_MAN,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_MAN 156932 2006-03-21 07:50:50Z ru Set to not build manual pages. .It Va WITHOUT_NCP -.\" from FreeBSD: src/tools/build/options/WITHOUT_NCP,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_NCP 156932 2006-03-21 07:50:50Z ru Set to not build programs, libraries, and kernel modules related to NetWare Core protocol. +.It Va WITHOUT_NDIS +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_NDIS 187106 2009-01-12 17:19:17Z sam +Set to not build programs and libraries +related to NDIS emulation support. .It Va WITHOUT_NETCAT -.\" from FreeBSD: src/tools/build/options/WITHOUT_NETCAT,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_NETCAT 156932 2006-03-21 07:50:50Z ru Set to not build .Xr nc 1 utility. +.It Va WITHOUT_NETGRAPH +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_NETGRAPH 187106 2009-01-12 17:19:17Z sam +Set to not build applications to support +.Xr netgraph 4 . +When set, it also enforces the following options: +.Pp +.Bl -item -compact +.It +.Va WITHOUT_NETGRAPH_SUPPORT +.El +.It Va WITHOUT_NETGRAPH_SUPPORT +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_NETGRAPH_SUPPORT 208540 2010-05-25 15:51:36Z jkim +Set to build libraries, programs, and kernel modules without netgraph support. .It Va WITHOUT_NIS -.\" from FreeBSD: src/tools/build/options/WITHOUT_NIS,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_NIS 156932 2006-03-21 07:50:50Z ru Set to not build .Xr NIS 8 support and related programs. @@ -477,28 +568,33 @@ and remove .Sq nis entries. .It Va WITHOUT_NLS -.\" from FreeBSD: src/tools/build/options/WITHOUT_NLS,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_NLS 156932 2006-03-21 07:50:50Z ru Set to not build NLS catalogs. .It Va WITHOUT_NLS_CATALOGS -.\" from FreeBSD: src/tools/build/options/WITHOUT_NLS_CATALOGS,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_NLS_CATALOGS 156932 2006-03-21 07:50:50Z ru Set to not build NLS catalog support for .Xr csh 1 . .It Va WITHOUT_NS_CACHING -.\" from FreeBSD: src/tools/build/options/WITHOUT_NS_CACHING,v 1.1.2.1 2007/10/26 08:14:08 bushman Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_NS_CACHING 173005 2007-10-26 08:14:08Z bushman Set to disable name caching in the .Pa nsswitch subsystem. The generic caching daemon, .Xr nscd 8 , will not be built either if this option is set. +.It Va WITHOUT_NTP +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_NTP 187106 2009-01-12 17:19:17Z sam +Set to not build +.Xr ntpd 8 +and related programs. .It Va WITHOUT_OBJC -.\" from FreeBSD: src/tools/build/options/WITHOUT_OBJC,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_OBJC 156932 2006-03-21 07:50:50Z ru Set to not build Objective C support. .It Va WITHOUT_OPENSSH -.\" from FreeBSD: src/tools/build/options/WITHOUT_OPENSSH,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_OPENSSH 156932 2006-03-21 07:50:50Z ru Set to not build OpenSSH. .It Va WITHOUT_OPENSSL -.\" from FreeBSD: src/tools/build/options/WITHOUT_OPENSSL,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_OPENSSL 156932 2006-03-21 07:50:50Z ru Set to not build OpenSSL. When set, it also enforces the following options: .Pp @@ -515,7 +611,7 @@ When set, it also enforces the following .Va WITHOUT_OPENSSH .El .It Va WITHOUT_PAM -.\" from FreeBSD: src/tools/build/options/WITHOUT_PAM,v 1.2.2.1 2008/01/30 15:03:37 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_PAM 175825 2008-01-30 15:03:37Z ru Set to not build PAM library and modules. .Bf -symbolic This option is deprecated and does nothing. @@ -527,13 +623,13 @@ When set, it also enforces the following .Va WITHOUT_PAM_SUPPORT .El .It Va WITHOUT_PAM_SUPPORT -.\" from FreeBSD: src/tools/build/options/WITHOUT_PAM_SUPPORT,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_PAM_SUPPORT 156932 2006-03-21 07:50:50Z ru Set to build some programs without PAM support, particularly .Xr ftpd 8 and .Xr ppp 8 . .It Va WITHOUT_PF -.\" from FreeBSD: src/tools/build/options/WITHOUT_PF,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_PF 156932 2006-03-21 07:50:50Z ru Set to not build PF firewall package. When set, it also enforces the following options: .Pp @@ -541,11 +637,36 @@ When set, it also enforces the following .It .Va WITHOUT_AUTHPF .El +.It Va WITHOUT_PKGTOOLS +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_PKGTOOLS 187106 2009-01-12 17:19:17Z sam +Set to not build +.Xr pkg_add 8 +and related programs. +.It Va WITHOUT_PMC +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_PMC 187106 2009-01-12 17:19:17Z sam +Set to not build +.Xr pmccontrol 8 +and related programs. +.It Va WITHOUT_PORTSNAP +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_PORTSNAP 187106 2009-01-12 17:19:17Z sam +Set to not build or install +.Xr portsnap 8 +and related files. +.It Va WITHOUT_PPP +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_PPP 187106 2009-01-12 17:19:17Z sam +Set to not build +.Xr ppp 8 +and related programs. .It Va WITHOUT_PROFILE -.\" from FreeBSD: src/tools/build/options/WITHOUT_PROFILE,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_PROFILE 156932 2006-03-21 07:50:50Z ru Set to avoid compiling profiled libraries. +.It Va WITHOUT_QUOTAS +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_QUOTAS 187106 2009-01-12 17:19:17Z sam +Set to not build +.Xr quota 8 +and related programs. .It Va WITHOUT_RCMDS -.\" from FreeBSD: src/tools/build/options/WITHOUT_RCMDS,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_RCMDS 156932 2006-03-21 07:50:50Z ru Disable building of the .Bx r-commands. @@ -554,48 +675,78 @@ This includes .Xr rsh 1 , etc. .It Va WITHOUT_RCS -.\" from FreeBSD: src/tools/build/options/WITHOUT_RCS,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_RCS 156932 2006-03-21 07:50:50Z ru Set to not build .Xr rcs 1 and related utilities. .It Va WITHOUT_RESCUE -.\" from FreeBSD: src/tools/build/options/WITHOUT_RESCUE,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_RESCUE 156932 2006-03-21 07:50:50Z ru Set to not build .Xr rescue 8 . +.It Va WITHOUT_ROUTED +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_ROUTED 187106 2009-01-12 17:19:17Z sam +Set to not build +.Xr routed 8 +utility. .It Va WITHOUT_SENDMAIL -.\" from FreeBSD: src/tools/build/options/WITHOUT_SENDMAIL,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_SENDMAIL 156932 2006-03-21 07:50:50Z ru Set to not build .Xr sendmail 8 and related programs. .It Va WITHOUT_SETUID_LOGIN -.\" from FreeBSD: src/tools/build/options/WITHOUT_SETUID_LOGIN,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_SETUID_LOGIN 156932 2006-03-21 07:50:50Z ru Set this to disable the installation of .Xr login 1 as a set-user-ID root program. .It Va WITHOUT_SHAREDOCS -.\" from FreeBSD: src/tools/build/options/WITHOUT_SHAREDOCS,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_SHAREDOCS 156932 2006-03-21 07:50:50Z ru Set to not build the .Bx 4.4 legacy docs. +.It Va WITHOUT_SLIP +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_SLIP 187106 2009-01-12 17:19:17Z sam +Set to not build +.Xr sliplogin 8 +and related programs. .It Va WITHOUT_SSP -.\" from FreeBSD: src/tools/build/options/WITHOUT_SSP,v 1.1 2007/05/19 04:42:58 kan Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_SSP 169724 2007-05-19 04:42:59Z kan Set to not build propolice stack smashing protection library. .It Va WITHOUT_SYMVER -.\" from FreeBSD: src/tools/build/options/WITHOUT_SYMVER,v 1.1 2007/05/17 05:03:24 deischen Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_SYMVER 169649 2007-05-17 05:03:24Z deischen Set to disable symbol versioning when building shared libraries. .It Va WITHOUT_SYSCONS -.\" from FreeBSD: src/tools/build/options/WITHOUT_SYSCONS,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_SYSCONS 156932 2006-03-21 07:50:50Z ru Set to not build .Xr syscons 4 support files such as keyboard maps, fonts, and screen output maps. +.It Va WITHOUT_SYSINSTALL +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_SYSINSTALL 187106 2009-01-12 17:19:17Z sam +Set to not build +.Xr sysinstall 8 +and related programs. .It Va WITHOUT_TCSH -.\" from FreeBSD: src/tools/build/options/WITHOUT_TCSH,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_TCSH 156932 2006-03-21 07:50:50Z ru Set to not build and install .Pa /bin/csh (which is .Xr tcsh 1 ) . +.It Va WITHOUT_TELNET +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_TELNET 187106 2009-01-12 17:19:17Z sam +Set to not build +.Xr telnet 8 +and related programs. +.It Va WITHOUT_TEXTPROC +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_TEXTPROC 187106 2009-01-12 17:19:17Z sam +Set to not build +programs used for text processing. +When set, it also enforces the following options: +.Pp +.Bl -item -compact +.It +.Va WITHOUT_GROFF +.El .It Va WITHOUT_TOOLCHAIN -.\" from FreeBSD: src/tools/build/options/WITHOUT_TOOLCHAIN,v 1.2.2.1 2008/01/30 15:03:37 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_TOOLCHAIN 175825 2008-01-30 15:03:37Z ru Set to not install programs used for program development, compilers, debuggers etc. @@ -609,20 +760,36 @@ When set, it also enforces the following .Va WITHOUT_GDB .El .It Va WITHOUT_USB -.\" from FreeBSD: src/tools/build/options/WITHOUT_USB,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_USB 156932 2006-03-21 07:50:50Z ru Set to not build USB-related programs and libraries. +.It Va WITHOUT_WIRELESS +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_WIRELESS 187106 2009-01-12 17:19:17Z sam +Set to not build programs used for 802.11 wireless networks; especially +.Xr wpa_supplicant 8 +and +.Xr hostapd 8 . +When set, it also enforces the following options: +.Pp +.Bl -item -compact +.It +.Va WITHOUT_WIRELESS_SUPPORT +.El +.It Va WITHOUT_WIRELESS_SUPPORT +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_WIRELESS_SUPPORT 208540 2010-05-25 15:51:36Z jkim +Set to build libraries, programs, and kernel modules without +802.11 wireless support. .It Va WITHOUT_WPA_SUPPLICANT_EAPOL -.\" from FreeBSD: src/tools/build/options/WITHOUT_WPA_SUPPLICANT_EAPOL,v 1.1 2006/03/21 07:50:50 ru Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_WPA_SUPPLICANT_EAPOL 156932 2006-03-21 07:50:50Z ru Build .Xr wpa_supplicant 8 without support for the IEEE 802.1X protocol and without support for EAP-PEAP, EAP-TLS, EAP-LEAP, and EAP-TTLS protocols (usable only via 802.1X). .It Va WITHOUT_ZFS -.\" from FreeBSD: src/tools/build/options/WITHOUT_ZFS,v 1.1 2007/04/06 02:13:30 pjd Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_ZFS 168409 2007-04-06 02:13:30Z pjd Set to not build ZFS file system. .It Va WITHOUT_ZONEINFO -.\" from FreeBSD: src/tools/build/options/WITHOUT_ZONEINFO,v 1.1 2007/08/27 20:01:08 remko Exp +.\" from FreeBSD: stable/7/tools/build/options/WITHOUT_ZONEINFO 171994 2007-08-27 20:01:08Z remko Set to not build the timezone database .El .Sh FILES From owner-svn-src-all@FreeBSD.ORG Tue May 25 16:05:08 2010 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from [127.0.0.1] (unknown [IPv6:2001:4f8:fff6::28]) by hub.freebsd.org (Postfix) with ESMTP id 69667106566C; Tue, 25 May 2010 16:05:07 +0000 (UTC) (envelope-from jkim@FreeBSD.org) From: Jung-uk Kim To: src-committers@FreeBSD.org Date: Tue, 25 May 2010 12:04:58 -0400 User-Agent: KMail/1.6.2 References: <201005251551.o4PFpa3W067461@svn.freebsd.org> In-Reply-To: <201005251551.o4PFpa3W067461@svn.freebsd.org> MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201005251205.00496.jkim@FreeBSD.org> Cc: svn-src-stable@FreeBSD.org, svn-src-all@FreeBSD.org, svn-src-stable-7@FreeBSD.org Subject: Re: svn commit: r208540 - stable/7/tools/build/options X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 16:05:08 -0000 On Tuesday 25 May 2010 11:51 am, Jung-uk Kim wrote: > Author: jkim > Date: Tue May 25 15:51:36 2010 > New Revision: 208540 > URL: http://svn.freebsd.org/changeset/base/208540 > > Log: > MFC: r183305, r183306 > > Add mission options. ^^^^^^^ missing Oops, sorry for the typo. It doesn't look too bad, though. ;-) Jung-uk Kim From owner-svn-src-all@FreeBSD.ORG Tue May 25 16:21:53 2010 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: by hub.freebsd.org (Postfix, from userid 1033) id 984701065673; Tue, 25 May 2010 16:21:53 +0000 (UTC) Date: Tue, 25 May 2010 16:21:53 +0000 From: Alexey Dokuchaev To: Jung-uk Kim Message-ID: <20100525162153.GA40988@FreeBSD.org> References: <201005251551.o4PFpa3W067461@svn.freebsd.org> <201005251205.00496.jkim@FreeBSD.org> Mime-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline In-Reply-To: <201005251205.00496.jkim@FreeBSD.org> User-Agent: Mutt/1.4.2.1i Cc: svn-src-stable@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, svn-src-stable-7@FreeBSD.org Subject: Re: svn commit: r208540 - stable/7/tools/build/options X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 16:21:53 -0000 On Tue, May 25, 2010 at 12:04:58PM -0400, Jung-uk Kim wrote: > On Tuesday 25 May 2010 11:51 am, Jung-uk Kim wrote: > > Author: jkim > > Date: Tue May 25 15:51:36 2010 > > New Revision: 208540 > > URL: http://svn.freebsd.org/changeset/base/208540 > > > > Log: > > MFC: r183305, r183306 > > > > Add mission options. > ^^^^^^^ > missing > > Oops, sorry for the typo. It doesn't look too bad, though. ;-) Hahaha, totally! :-) ./danfe From owner-svn-src-all@FreeBSD.ORG Tue May 25 16:31:17 2010 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9E533106566C; Tue, 25 May 2010 16:31:17 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from harmony.bsdimp.com (bsdimp.com [199.45.160.85]) by mx1.freebsd.org (Postfix) with ESMTP id 4198A8FC17; Tue, 25 May 2010 16:31:17 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by harmony.bsdimp.com (8.14.3/8.14.1) with ESMTP id o4PGPITS024954; Tue, 25 May 2010 10:25:18 -0600 (MDT) (envelope-from imp@bsdimp.com) Date: Tue, 25 May 2010 10:25:22 -0600 (MDT) Message-Id: <20100525.102522.782174629775191929.imp@bsdimp.com> To: raj@FreeBSD.org From: "M. Warner Losh" In-Reply-To: <201005251512.o4PFCLwl058548@svn.freebsd.org> References: <201005251512.o4PFCLwl058548@svn.freebsd.org> X-Mailer: Mew version 6.3 on Emacs 22.3 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r208537 - in head: share/mk tools/build/options X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 16:31:17 -0000 In message: <201005251512.o4PFCLwl058548@svn.freebsd.org> Rafal Jaworowski writes: : +# Enable FDT by default for selected platforms. : +.if defined(TARGET_ARCH) && \ : + (${TARGET_ARCH} == "arm" || ${TARGET_ARCH} == "powerpc") : +# XXX this is temporarily disabled until all FDT support code is in place. : +#_fdt= FDT : +_no_fdt= FDT : +.else : +_no_fdt= FDT : +.endif The tests here should be: .if ${MACHINE_ARCH} == "arm" || ${MACHINE_ARCH} == "powerpc" Never test against TARGET_* in our Makefile system (except that binutils, gcc and gdb all use this for piecewise compile)... Warner From owner-svn-src-all@FreeBSD.ORG Tue May 25 16:46:29 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9640C1065729; Tue, 25 May 2010 16:46:29 +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 8556D8FC0A; Tue, 25 May 2010 16:46: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 o4PGkTfU079641; Tue, 25 May 2010 16:46:29 GMT (envelope-from mjacob@svn.freebsd.org) Received: (from mjacob@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4PGkT6F079639; Tue, 25 May 2010 16:46:29 GMT (envelope-from mjacob@svn.freebsd.org) Message-Id: <201005251646.o4PGkT6F079639@svn.freebsd.org> From: Matt Jacob Date: Tue, 25 May 2010 16:46:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208542 - head/sys/dev/isp X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 16:46:29 -0000 Author: mjacob Date: Tue May 25 16:46:29 2010 New Revision: 208542 URL: http://svn.freebsd.org/changeset/base/208542 Log: Treat PRLI the same as PLOGI and make a database entry for it (target mode). Obtained from: Ken Merry MFC after: One Month Modified: head/sys/dev/isp/isp_freebsd.c Modified: head/sys/dev/isp/isp_freebsd.c ============================================================================== --- head/sys/dev/isp/isp_freebsd.c Tue May 25 15:58:31 2010 (r208541) +++ head/sys/dev/isp/isp_freebsd.c Tue May 25 16:46:29 2010 (r208542) @@ -2609,7 +2609,14 @@ isp_handle_platform_notify_24xx(ispsoftc msg = "PRLO"; break; case PLOGI: - msg = "PLOGI"; + case PRLI: + /* + * Treat PRLI the same as PLOGI and make a database entry for it. + */ + if (inot->in_status_subcode == PLOGI) + msg = "PLOGI"; + else + msg = "PRLI"; if (ISP_FW_NEWER_THAN(isp, 4, 0, 25)) { ptr = (uint8_t *)inot; /* point to unswizzled entry! */ wwn = (((uint64_t) ptr[IN24XX_PLOGI_WWPN_OFF]) << 56) | @@ -2625,8 +2632,6 @@ isp_handle_platform_notify_24xx(ispsoftc } isp_add_wwn_entry(isp, chan, wwn, nphdl, portid); break; - case PRLI: - msg = "PRLI"; break; case PDISC: msg = "PDISC"; From owner-svn-src-all@FreeBSD.ORG Tue May 25 16:50:35 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A7FE9106566C; Tue, 25 May 2010 16:50:35 +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 9726F8FC15; Tue, 25 May 2010 16:50:35 +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 o4PGoZXs080571; Tue, 25 May 2010 16:50:35 GMT (envelope-from mjacob@svn.freebsd.org) Received: (from mjacob@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4PGoZ5J080569; Tue, 25 May 2010 16:50:35 GMT (envelope-from mjacob@svn.freebsd.org) Message-Id: <201005251650.o4PGoZ5J080569@svn.freebsd.org> From: Matt Jacob Date: Tue, 25 May 2010 16:50:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208543 - head/sys/dev/isp X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 16:50:35 -0000 Author: mjacob Date: Tue May 25 16:50:35 2010 New Revision: 208543 URL: http://svn.freebsd.org/changeset/base/208543 Log: Remove extra break left by hand editing. X-MFC: 208542 MFC after: One Month Modified: head/sys/dev/isp/isp_freebsd.c Modified: head/sys/dev/isp/isp_freebsd.c ============================================================================== --- head/sys/dev/isp/isp_freebsd.c Tue May 25 16:46:29 2010 (r208542) +++ head/sys/dev/isp/isp_freebsd.c Tue May 25 16:50:35 2010 (r208543) @@ -2632,7 +2632,6 @@ isp_handle_platform_notify_24xx(ispsoftc } isp_add_wwn_entry(isp, chan, wwn, nphdl, portid); break; - break; case PDISC: msg = "PDISC"; break; From owner-svn-src-all@FreeBSD.ORG Tue May 25 17:43:23 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A466A1065673; Tue, 25 May 2010 17:43:23 +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 922F18FC16; Tue, 25 May 2010 17:43:23 +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 o4PHhNWk092077; Tue, 25 May 2010 17:43:23 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4PHhNnj092075; Tue, 25 May 2010 17:43:23 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201005251743.o4PHhNnj092075@svn.freebsd.org> From: Xin LI Date: Tue, 25 May 2010 17:43:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208544 - head/release/doc/en_US.ISO8859-1/relnotes X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 17:43:23 -0000 Author: delphij Date: Tue May 25 17:43:23 2010 New Revision: 208544 URL: http://svn.freebsd.org/changeset/base/208544 Log: Document bc/dc and nc updates. Modified: head/release/doc/en_US.ISO8859-1/relnotes/article.sgml Modified: head/release/doc/en_US.ISO8859-1/relnotes/article.sgml ============================================================================== --- head/release/doc/en_US.ISO8859-1/relnotes/article.sgml Tue May 25 16:50:35 2010 (r208543) +++ head/release/doc/en_US.ISO8859-1/relnotes/article.sgml Tue May 25 17:43:23 2010 (r208544) @@ -30,6 +30,7 @@ 2007 2008 2009 + 2010 The &os; Documentation Project @@ -326,6 +327,9 @@ based on libarchive, have replaced the GNU Binutils versions of these utilities. + BSD-licensed version of &man.bc.1; and &man.dc.1; has + replaced their GNU counterparts. + &man.chflags.1; now supports a flag for verbose output and a flag to ignore errors with the same semantics as (for example) @@ -373,6 +377,9 @@ &man.nc.1; now supports a switch to disable the use of TCP options. + &man.nc.1;'s switch has been deprecated. + It will be removed in future release. + The &man.ping6.8; utility now returns 2 when the packet transmission was successful but no responses were received (this is the same behavior as &man.ping.8;). From owner-svn-src-all@FreeBSD.ORG Tue May 25 17:48:18 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3D5DB1065670; Tue, 25 May 2010 17:48:18 +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 2BC908FC1A; Tue, 25 May 2010 17:48:18 +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 o4PHmI5q093254; Tue, 25 May 2010 17:48:18 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4PHmI5T093246; Tue, 25 May 2010 17:48:18 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201005251748.o4PHmI5T093246@svn.freebsd.org> From: Xin LI Date: Tue, 25 May 2010 17:48:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208545 - in head/release: amd64 i386 ia64 pc98 powerpc sparc64 sun4v X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 17:48:18 -0000 Author: delphij Date: Tue May 25 17:48:17 2010 New Revision: 208545 URL: http://svn.freebsd.org/changeset/base/208545 Log: libarchive now needs libcrypto and liblzma. Modified: head/release/amd64/boot_crunch.conf head/release/i386/boot_crunch.conf head/release/ia64/boot_crunch.conf head/release/pc98/boot_crunch.conf head/release/powerpc/boot_crunch.conf head/release/sparc64/boot_crunch.conf head/release/sun4v/boot_crunch.conf Modified: head/release/amd64/boot_crunch.conf ============================================================================== --- head/release/amd64/boot_crunch.conf Tue May 25 17:43:23 2010 (r208544) +++ head/release/amd64/boot_crunch.conf Tue May 25 17:48:17 2010 (r208545) @@ -39,6 +39,6 @@ progs ppp progs sysinstall progs usbconfig -libs -ll -ledit -lutil -lmd -lcrypt -lftpio -lz -lnetgraph +libs -ll -ledit -lutil -lmd -lcrypt -lcrypto -lftpio -lz -lnetgraph libs -ldialog -lncurses -ldisk -lcam -lsbuf -lufs -ldevinfo -libs -lbsdxml -larchive -lbz2 -lusb -ljail +libs -lbsdxml -larchive -lbz2 -llzma -lusb -ljail Modified: head/release/i386/boot_crunch.conf ============================================================================== --- head/release/i386/boot_crunch.conf Tue May 25 17:43:23 2010 (r208544) +++ head/release/i386/boot_crunch.conf Tue May 25 17:48:17 2010 (r208545) @@ -39,6 +39,6 @@ progs ppp progs sysinstall progs usbconfig -libs -ll -ledit -lutil -lmd -lcrypt -lftpio -lz -lnetgraph +libs -ll -ledit -lutil -lmd -lcrypt -lcrypto -lftpio -lz -lnetgraph libs -ldialog -lncurses -ldisk -lcam -lsbuf -lufs -ldevinfo -libs -lbsdxml -larchive -lbz2 -lusb -ljail +libs -lbsdxml -larchive -lbz2 -llzma -lusb -ljail Modified: head/release/ia64/boot_crunch.conf ============================================================================== --- head/release/ia64/boot_crunch.conf Tue May 25 17:43:23 2010 (r208544) +++ head/release/ia64/boot_crunch.conf Tue May 25 17:48:17 2010 (r208545) @@ -44,6 +44,6 @@ progs ppp progs sysinstall progs usbconfig -libs -ll -ledit -lutil -lmd -lcrypt -lftpio -lz -lnetgraph +libs -ll -ledit -lutil -lmd -lcrypt -lcrypto -lftpio -lz -lnetgraph libs -ldialog -lncurses -ldisk -lcam -lkiconv -lsbuf -lufs -ldevinfo -libs -lgeom -lbsdxml -larchive -lbz2 -lusb -ljail +libs -lgeom -lbsdxml -larchive -lbz2 -llzma -lusb -ljail Modified: head/release/pc98/boot_crunch.conf ============================================================================== --- head/release/pc98/boot_crunch.conf Tue May 25 17:43:23 2010 (r208544) +++ head/release/pc98/boot_crunch.conf Tue May 25 17:48:17 2010 (r208545) @@ -38,6 +38,6 @@ progs arp progs ppp progs sysinstall -libs -ll -ledit -lutil -lmd -lcrypt -lftpio -lz -lnetgraph +libs -ll -ledit -lutil -lmd -lcrypt -lcrypto -lftpio -lz -lnetgraph libs -ldialog -lncurses -ldisk -lcam -lsbuf -lufs -lbsdxml -libs -larchive -lbz2 -ljail +libs -larchive -lbz2 -llzma -ljail Modified: head/release/powerpc/boot_crunch.conf ============================================================================== --- head/release/powerpc/boot_crunch.conf Tue May 25 17:43:23 2010 (r208544) +++ head/release/powerpc/boot_crunch.conf Tue May 25 17:48:17 2010 (r208545) @@ -44,6 +44,6 @@ progs ppp progs sysinstall progs usbconfig -libs -ll -ledit -lutil -lmd -lcrypt -lftpio -lz -lnetgraph +libs -ll -ledit -lutil -lmd -lcrypt -lcrypto -lftpio -lz -lnetgraph libs -ldialog -lncurses -ldisk -lcam -lkiconv -lsbuf -lufs -libs -lgeom -lbsdxml -larchive -lbz2 -lusb -ljail +libs -lgeom -lbsdxml -larchive -lbz2 -llzma -lusb -ljail Modified: head/release/sparc64/boot_crunch.conf ============================================================================== --- head/release/sparc64/boot_crunch.conf Tue May 25 17:43:23 2010 (r208544) +++ head/release/sparc64/boot_crunch.conf Tue May 25 17:48:17 2010 (r208545) @@ -39,6 +39,6 @@ progs ppp progs sysinstall progs usbconfig -libs -ll -ledit -lutil -lmd -lcrypt -lftpio -lz -lnetgraph +libs -ll -ledit -lutil -lmd -lcrypt -lcrypto -lftpio -lz -lnetgraph libs -ldialog -lncurses -ldisk -lcam -lsbuf -lufs -lbsdxml -libs -larchive -lbz2 -lusb -ljail +libs -larchive -lbz2 -llzma -lusb -ljail Modified: head/release/sun4v/boot_crunch.conf ============================================================================== --- head/release/sun4v/boot_crunch.conf Tue May 25 17:43:23 2010 (r208544) +++ head/release/sun4v/boot_crunch.conf Tue May 25 17:48:17 2010 (r208545) @@ -39,6 +39,6 @@ progs ppp progs sysinstall progs usbconfig -libs -ll -ledit -lutil -lmd -lcrypt -lftpio -lz -lnetgraph +libs -ll -ledit -lutil -lmd -lcrypt -lcrypto -lftpio -lz -lnetgraph libs -ldialog -lncurses -ldisk -lcam -lsbuf -lufs -lbsdxml -libs -larchive -lbz2 -lusb -ljail +libs -larchive -lbz2 -llzma -lusb -ljail From owner-svn-src-all@FreeBSD.ORG Tue May 25 18:10:43 2010 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from [127.0.0.1] (unknown [IPv6:2001:4f8:fff6::28]) by hub.freebsd.org (Postfix) with ESMTP id 1AB76106566C; Tue, 25 May 2010 18:10:43 +0000 (UTC) (envelope-from jkim@FreeBSD.org) From: Jung-uk Kim To: src-committers@FreeBSD.org Date: Tue, 25 May 2010 14:10:33 -0400 User-Agent: KMail/1.6.2 References: <201005251748.o4PHmI5T093246@svn.freebsd.org> In-Reply-To: <201005251748.o4PHmI5T093246@svn.freebsd.org> MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201005251410.35630.jkim@FreeBSD.org> Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, Xin LI Subject: Re: svn commit: r208545 - in head/release: amd64 i386 ia64 pc98 powerpc sparc64 sun4v X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 18:10:43 -0000 On Tuesday 25 May 2010 01:48 pm, Xin LI wrote: > Author: delphij > Date: Tue May 25 17:48:17 2010 > New Revision: 208545 > URL: http://svn.freebsd.org/changeset/base/208545 > > Log: > libarchive now needs libcrypto and liblzma. > > Modified: > head/release/amd64/boot_crunch.conf > head/release/i386/boot_crunch.conf > head/release/ia64/boot_crunch.conf > head/release/pc98/boot_crunch.conf > head/release/powerpc/boot_crunch.conf > head/release/sparc64/boot_crunch.conf > head/release/sun4v/boot_crunch.conf misc/146904? Jung-uk Kim From owner-svn-src-all@FreeBSD.ORG Tue May 25 18:34:38 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F2FFA106566C; Tue, 25 May 2010 18:34:37 +0000 (UTC) (envelope-from yanefbsd@gmail.com) Received: from mail-qy0-f181.google.com (mail-qy0-f181.google.com [209.85.221.181]) by mx1.freebsd.org (Postfix) with ESMTP id 512C18FC0C; Tue, 25 May 2010 18:34:37 +0000 (UTC) Received: by qyk11 with SMTP id 11so8107662qyk.13 for ; Tue, 25 May 2010 11:34:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=yqY5Z0CtCUEr+38sTNc4SlO3pz9T0RlNBSkmdJtE5JA=; b=Wm068W+W4ULwV+YVtlgRiQdU+SDF7dYppuKO96wcK/6XcZPPvQgmutyX6OLz/UnHM2 lxTDKN77awfej1HDI0y378uEu7BcU5zLqFzkXELBasBhHeLEj0xG3iRYtXw8BCQjHiUp fNQml/lizAyP8GFzv+RIwiPizhX612nMRBimI= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=UiLQK0SLORTkXvg10wKVLYlFNXYSCD25Z7pf2Kcj+n6qpJ8xMl4Ngp+2wKACYOCfzI H2NCHOPea5d05J20ZaX4n5C7Ol16feVXLlWo0FRrOuxD5SWG7EFmsvAzsozpsdBfiiOr VkcQPOMRJOjQSsB9daizpgKFppBO2AZviR2iY= MIME-Version: 1.0 Received: by 10.224.79.79 with SMTP id o15mr4288214qak.365.1274812476356; Tue, 25 May 2010 11:34:36 -0700 (PDT) Received: by 10.229.190.83 with HTTP; Tue, 25 May 2010 11:34:36 -0700 (PDT) In-Reply-To: <201005251410.35630.jkim@FreeBSD.org> References: <201005251748.o4PHmI5T093246@svn.freebsd.org> <201005251410.35630.jkim@FreeBSD.org> Date: Tue, 25 May 2010 11:34:36 -0700 Message-ID: From: Garrett Cooper To: Jung-uk Kim Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Xin LI Subject: Re: svn commit: r208545 - in head/release: amd64 i386 ia64 pc98 powerpc sparc64 sun4v X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 18:34:38 -0000 On Tue, May 25, 2010 at 11:10 AM, Jung-uk Kim wrote: > On Tuesday 25 May 2010 01:48 pm, Xin LI wrote: >> Author: delphij >> Date: Tue May 25 17:48:17 2010 >> New Revision: 208545 >> URL: http://svn.freebsd.org/changeset/base/208545 >> >> Log: >> =A0 libarchive now needs libcrypto and liblzma. >> >> Modified: >> =A0 head/release/amd64/boot_crunch.conf >> =A0 head/release/i386/boot_crunch.conf >> =A0 head/release/ia64/boot_crunch.conf >> =A0 head/release/pc98/boot_crunch.conf >> =A0 head/release/powerpc/boot_crunch.conf >> =A0 head/release/sparc64/boot_crunch.conf >> =A0 head/release/sun4v/boot_crunch.conf > > misc/146904? joerg brought up an interesting item on #bsddev: <@joerg> seeing Xin Li's last commit: does libmd contain SHA256 and SHA512? lzma doesn't use SHA512, but it does use SHA256. So does it actually need libcrypto now that libmd is included, or was it a bad analysis by your's truly? Thanks, -Garrett From owner-svn-src-all@FreeBSD.ORG Tue May 25 18:35:10 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CC877106568D; Tue, 25 May 2010 18:35:10 +0000 (UTC) (envelope-from marius@alchemy.franken.de) Received: from alchemy.franken.de (alchemy.franken.de [194.94.249.214]) by mx1.freebsd.org (Postfix) with ESMTP id 45D108FC0A; Tue, 25 May 2010 18:35:10 +0000 (UTC) Received: from alchemy.franken.de (localhost [127.0.0.1]) by alchemy.franken.de (8.14.3/8.14.3/ALCHEMY.FRANKEN.DE) with ESMTP id o4PIZ80B049865; Tue, 25 May 2010 20:35:09 +0200 (CEST) (envelope-from marius@alchemy.franken.de) Received: (from marius@localhost) by alchemy.franken.de (8.14.3/8.14.3/Submit) id o4PIZ8j4049864; Tue, 25 May 2010 20:35:08 +0200 (CEST) (envelope-from marius) Date: Tue, 25 May 2010 20:35:08 +0200 From: Marius Strobl To: Xin LI Message-ID: <20100525183508.GD49967@alchemy.franken.de> References: <201005251748.o4PHmI5T093246@svn.freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201005251748.o4PHmI5T093246@svn.freebsd.org> User-Agent: Mutt/1.4.2.3i Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r208545 - in head/release: amd64 i386 ia64 pc98 powerpc sparc64 sun4v X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 18:35:10 -0000 On Tue, May 25, 2010 at 05:48:18PM +0000, Xin LI wrote: > Author: delphij > Date: Tue May 25 17:48:17 2010 > New Revision: 208545 > URL: http://svn.freebsd.org/changeset/base/208545 > > Log: > libarchive now needs libcrypto and liblzma. > > Modified: > head/release/amd64/boot_crunch.conf > head/release/i386/boot_crunch.conf > head/release/ia64/boot_crunch.conf > head/release/pc98/boot_crunch.conf > head/release/powerpc/boot_crunch.conf > head/release/sparc64/boot_crunch.conf > head/release/sun4v/boot_crunch.conf > > Modified: head/release/amd64/boot_crunch.conf > ============================================================================== > --- head/release/amd64/boot_crunch.conf Tue May 25 17:43:23 2010 (r208544) > +++ head/release/amd64/boot_crunch.conf Tue May 25 17:48:17 2010 (r208545) > @@ -39,6 +39,6 @@ progs ppp > progs sysinstall > progs usbconfig > > -libs -ll -ledit -lutil -lmd -lcrypt -lftpio -lz -lnetgraph > +libs -ll -ledit -lutil -lmd -lcrypt -lcrypto -lftpio -lz -lnetgraph > libs -ldialog -lncurses -ldisk -lcam -lsbuf -lufs -ldevinfo > -libs -lbsdxml -larchive -lbz2 -lusb -ljail > +libs -lbsdxml -larchive -lbz2 -llzma -lusb -ljail > Hrm, wasn't the idea to keep libcrypto and crypto in general out of the install image (see the RELEASE_CRUNCH bits in various Makefiles) in order to be able use them regardless of crypto export/import restrictions? Marius From owner-svn-src-all@FreeBSD.ORG Tue May 25 19:25:37 2010 Return-Path: Delivered-To: svn-src-all@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 45B901065676; Tue, 25 May 2010 19:25:37 +0000 (UTC) (envelope-from delphij@delphij.net) Received: from tarsier.geekcn.org (tarsier.geekcn.org [IPv6:2001:470:a803::1]) by mx1.freebsd.org (Postfix) with ESMTP id 399FD8FC17; Tue, 25 May 2010 19:25:36 +0000 (UTC) Received: from mail.geekcn.org (tarsier.geekcn.org [211.166.10.233]) by tarsier.geekcn.org (Postfix) with ESMTP id 0F419A678C0; Wed, 26 May 2010 03:25:34 +0800 (CST) X-Virus-Scanned: amavisd-new at geekcn.org Received: from tarsier.geekcn.org ([211.166.10.233]) by mail.geekcn.org (mail.geekcn.org [211.166.10.233]) (amavisd-new, port 10024) with LMTP id FMxVb8pLuIBF; Wed, 26 May 2010 03:25:27 +0800 (CST) Received: from delta.delphij.net (drawbridge.ixsystems.com [206.40.55.65]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by tarsier.geekcn.org (Postfix) with ESMTPSA id B7E4BA6789F; Wed, 26 May 2010 03:25:23 +0800 (CST) DomainKey-Signature: a=rsa-sha1; s=default; d=delphij.net; c=nofws; q=dns; h=message-id:date:from:reply-to:organization:user-agent: mime-version:to:cc:subject:references:in-reply-to: x-enigmail-version:openpgp:content-type:content-transfer-encoding; b=kg7rowLfBZX2yKQIeMJZID/nkMDR+pu56adNRJgunTJ7ibr2RpPqr2bSI42T0y5uf dyQKeuLYIzwG68HHBIFjA== Message-ID: <4BFC241E.5080001@delphij.net> Date: Tue, 25 May 2010 12:25:18 -0700 From: Xin LI Organization: The Geek China Organization User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.1.9) Gecko/20100408 Thunderbird/3.0.4 ThunderBrowse/3.2.8.1 MIME-Version: 1.0 To: Marius Strobl References: <201005251748.o4PHmI5T093246@svn.freebsd.org> <20100525183508.GD49967@alchemy.franken.de> In-Reply-To: <20100525183508.GD49967@alchemy.franken.de> X-Enigmail-Version: 1.0.1 OpenPGP: id=3FCA37C1; url=http://www.delphij.net/delphij.asc Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: svn-src-head@FreeBSD.ORG, svn-src-all@FreeBSD.ORG, src-committers@FreeBSD.ORG, Xin LI Subject: Re: svn commit: r208545 - in head/release: amd64 i386 ia64 pc98 powerpc sparc64 sun4v X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: d@delphij.net List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 19:25:37 -0000 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 On 2010/05/25 11:35, Marius Strobl wrote: > On Tue, May 25, 2010 at 05:48:18PM +0000, Xin LI wrote: >> Author: delphij >> Date: Tue May 25 17:48:17 2010 >> New Revision: 208545 >> URL: http://svn.freebsd.org/changeset/base/208545 >> >> Log: >> libarchive now needs libcrypto and liblzma. >> >> Modified: >> head/release/amd64/boot_crunch.conf >> head/release/i386/boot_crunch.conf >> head/release/ia64/boot_crunch.conf >> head/release/pc98/boot_crunch.conf >> head/release/powerpc/boot_crunch.conf >> head/release/sparc64/boot_crunch.conf >> head/release/sun4v/boot_crunch.conf >> >> Modified: head/release/amd64/boot_crunch.conf >> ============================================================================== >> --- head/release/amd64/boot_crunch.conf Tue May 25 17:43:23 2010 (r208544) >> +++ head/release/amd64/boot_crunch.conf Tue May 25 17:48:17 2010 (r208545) >> @@ -39,6 +39,6 @@ progs ppp >> progs sysinstall >> progs usbconfig >> >> -libs -ll -ledit -lutil -lmd -lcrypt -lftpio -lz -lnetgraph >> +libs -ll -ledit -lutil -lmd -lcrypt -lcrypto -lftpio -lz -lnetgraph >> libs -ldialog -lncurses -ldisk -lcam -lsbuf -lufs -ldevinfo >> -libs -lbsdxml -larchive -lbz2 -lusb -ljail >> +libs -lbsdxml -larchive -lbz2 -llzma -lusb -ljail >> > > Hrm, wasn't the idea to keep libcrypto and crypto in general > out of the install image (see the RELEASE_CRUNCH bits in various > Makefiles) in order to be able use them regardless of crypto > export/import restrictions? Ah... I'm not sure about the crypto export/import restrictions :-/ However, in 2004, there was a discussion [1] about making crypto integrated part of the base system (the 'crypto' distribution was removed in Aug 2004). Could someone familiar with US laws chime in this? [1] http://docs.freebsd.org/cgi/mid.cgi?6.1.0.6.1.20040427094029.03d3d218 Cheers, - -- Xin LI http://www.delphij.net/ FreeBSD - The Power to Serve! Live free or die -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.14 (FreeBSD) iQEcBAEBCAAGBQJL/CQeAAoJEATO+BI/yjfBe9AH/jrTPHw84gWwPHMb25tHM4BC PIr4DP3CB8nzr3DDaJXMF172eoctDO7+C4xMr0OjU/rfq+xVtwEZ5Pig8ZN7Yg5Z NfCxQpKc0v7wZe5ljQwx7mhovZKKPK1c+Jj/P5X1Jg90n5KbPHL64nzEASojfTR1 mREIiRwG2DzDIOLRC2wYD+JJPFJFLurRUDhjqbeDNxUYKnDq8dUFFx0Hb/ibQ66C Tdb2mdZGOTgqCrmG3/ibS3m+/Xl9JUWWV7VZhPbf5aCiinbPiajVlkYnv7cNv2ZB OtY+7JxjRJB9X9ebwH7CaiGdjDfQAcdbnR7g0sUgT9iNPwHux2qXIkEMToNQkiw= =uMvC -----END PGP SIGNATURE----- From owner-svn-src-all@FreeBSD.ORG Tue May 25 20:06:30 2010 Return-Path: Delivered-To: svn-src-all@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4A8F81065676; Tue, 25 May 2010 20:06:30 +0000 (UTC) (envelope-from delphij@delphij.net) Received: from tarsier.geekcn.org (tarsier.geekcn.org [IPv6:2001:470:a803::1]) by mx1.freebsd.org (Postfix) with ESMTP id AB6998FC1A; Tue, 25 May 2010 20:06:29 +0000 (UTC) Received: from mail.geekcn.org (tarsier.geekcn.org [211.166.10.233]) by tarsier.geekcn.org (Postfix) with ESMTP id 6A856A6791A; Wed, 26 May 2010 04:06:28 +0800 (CST) X-Virus-Scanned: amavisd-new at geekcn.org Received: from tarsier.geekcn.org ([211.166.10.233]) by mail.geekcn.org (mail.geekcn.org [211.166.10.233]) (amavisd-new, port 10024) with LMTP id linYtuuiQpHs; Wed, 26 May 2010 04:06:23 +0800 (CST) Received: from delta.delphij.net (drawbridge.ixsystems.com [206.40.55.65]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by tarsier.geekcn.org (Postfix) with ESMTPSA id B8558A678E9; Wed, 26 May 2010 04:06:20 +0800 (CST) DomainKey-Signature: a=rsa-sha1; s=default; d=delphij.net; c=nofws; q=dns; h=message-id:date:from:reply-to:organization:user-agent: mime-version:to:cc:subject:references:in-reply-to: x-enigmail-version:openpgp:content-type:content-transfer-encoding; b=fmlokI6UZzaTiSzLxB0i8sl1h3IzDm6nIQYEHt0GQWmA88jx5bFI/AqSJg7AQvOtH Y5JqozMe8QMPRpmh0o7qA== Message-ID: <4BFC2DB9.4090509@delphij.net> Date: Tue, 25 May 2010 13:06:17 -0700 From: Xin LI Organization: The Geek China Organization User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.1.9) Gecko/20100408 Thunderbird/3.0.4 ThunderBrowse/3.2.8.1 MIME-Version: 1.0 To: Garrett Cooper References: <201005251748.o4PHmI5T093246@svn.freebsd.org> <201005251410.35630.jkim@FreeBSD.org> In-Reply-To: X-Enigmail-Version: 1.0.1 OpenPGP: id=3FCA37C1; url=http://www.delphij.net/delphij.asc Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: svn-src-head@FreeBSD.ORG, svn-src-all@FreeBSD.ORG, src-committers@FreeBSD.ORG, Xin LI , Jung-uk Kim Subject: Re: svn commit: r208545 - in head/release: amd64 i386 ia64 pc98 powerpc sparc64 sun4v X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: d@delphij.net List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 20:06:30 -0000 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 On 2010/05/25 11:34, Garrett Cooper wrote: > On Tue, May 25, 2010 at 11:10 AM, Jung-uk Kim wrote: >> On Tuesday 25 May 2010 01:48 pm, Xin LI wrote: >>> Author: delphij >>> Date: Tue May 25 17:48:17 2010 >>> New Revision: 208545 >>> URL: http://svn.freebsd.org/changeset/base/208545 >>> >>> Log: >>> libarchive now needs libcrypto and liblzma. >>> >>> Modified: >>> head/release/amd64/boot_crunch.conf >>> head/release/i386/boot_crunch.conf >>> head/release/ia64/boot_crunch.conf >>> head/release/pc98/boot_crunch.conf >>> head/release/powerpc/boot_crunch.conf >>> head/release/sparc64/boot_crunch.conf >>> head/release/sun4v/boot_crunch.conf >> >> misc/146904? > > joerg brought up an interesting item on #bsddev: > > <@joerg> seeing Xin Li's last commit: does libmd contain SHA256 and SHA512? > > lzma doesn't use SHA512, but it does use SHA256. > > So does it actually need libcrypto now that libmd is included, or was > it a bad analysis by your's truly? No, it's not about lzma but because libarchive's mtree support. For some reason our config_freebsd.h designates the OpenSSL symbols rather than libmd implementation of MD5, etc., which are used in libarchive's mtree. I'm not going to touch libarchive yet since I'm not familiar with the code enough to under the consequences if we switch over to libmd's implementation. Cheers, - -- Xin LI http://www.delphij.net/ FreeBSD - The Power to Serve! Live free or die -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.14 (FreeBSD) iQEcBAEBCAAGBQJL/C25AAoJEATO+BI/yjfBShAH/0gc/KjjVZCMgM+7LHYt9PYN W3fEqGPA2D78rM9ypWG24Je2jno6belyXAmN9ljgEQwYYwk5LWaxL53hLFFl5oMb I8sQrGQoQME2fPIh/9vX2Uooud448iqnWCLiB3uiFgQV4Kq/P0F26AZdR1o5jayk kdPYsPDI5tgpVk1EsudS8iAdTdCFZJpRGJ1ZDeJEg5zgYjIEsMvVuxydaU9OB6/8 dbD4OuVNo+o6LidXUim2aWzEZ5s+bWLSzWN+XVKjJhTxqbVOvF+I79j6VbD4BOYn 2jQFnW1uVlQA9tzONRw8KvN1TzZiC/o4UGX3S5ZLiSY43wBDilvYKa5BfoinYLc= =KTmH -----END PGP SIGNATURE----- From owner-svn-src-all@FreeBSD.ORG Tue May 25 20:16:37 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Tue May 25 20:19:31 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Tue May 25 20:19:45 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 806141065670; Tue, 25 May 2010 20:19:45 +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 701868FC29; Tue, 25 May 2010 20:19: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 o4PKJjZC027108; Tue, 25 May 2010 20:19:45 GMT (envelope-from mjacob@svn.freebsd.org) Received: (from mjacob@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4PKJjne027106; Tue, 25 May 2010 20:19:45 GMT (envelope-from mjacob@svn.freebsd.org) Message-Id: <201005252019.o4PKJjne027106@svn.freebsd.org> From: Matt Jacob Date: Tue, 25 May 2010 20:19:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208548 - head/sys/dev/isp X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 20:19:45 -0000 Author: mjacob Date: Tue May 25 20:19:45 2010 New Revision: 208548 URL: http://svn.freebsd.org/changeset/base/208548 Log: Don't leak CCBs for every ABORT. Submitted by: Ken Merry MFC after: One week Modified: head/sys/dev/isp/isp_freebsd.c Modified: head/sys/dev/isp/isp_freebsd.c ============================================================================== --- head/sys/dev/isp/isp_freebsd.c Tue May 25 20:19:31 2010 (r208547) +++ head/sys/dev/isp/isp_freebsd.c Tue May 25 20:19:45 2010 (r208548) @@ -4421,7 +4421,10 @@ isp_action(struct cam_sim *sim, union cc ccb->ccb_h.status = CAM_REQ_INVALID; break; } - xpt_done(ccb); + /* + * This is not a queued CCB, so the caller expects it to be + * complete when control is returned. + */ break; } #define IS_CURRENT_SETTINGS(c) (c->type == CTS_TYPE_CURRENT_SETTINGS) From owner-svn-src-all@FreeBSD.ORG Tue May 25 20:21:48 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Tue May 25 20:32:31 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7911A106566C; Tue, 25 May 2010 20:32: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 641198FC15; Tue, 25 May 2010 20:32: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 o4PKWVYU030110; Tue, 25 May 2010 20:32:31 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4PKWV34030102; Tue, 25 May 2010 20:32:31 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201005252032.o4PKWV34030102@svn.freebsd.org> From: Jung-uk Kim Date: Tue, 25 May 2010 20:32:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208550 - in stable/7: etc etc/periodic/weekly gnu/usr.bin gnu/usr.bin/groff/tmac share/man share/mk usr.bin usr.sbin usr.sbin/makefs usr.sbin/makefs/ffs usr.sbin/mfiutil X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 20:32:31 -0000 Author: jkim Date: Tue May 25 20:32:30 2010 New Revision: 208550 URL: http://svn.freebsd.org/changeset/base/208550 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. Modified: stable/7/etc/Makefile stable/7/etc/periodic/weekly/Makefile stable/7/gnu/usr.bin/Makefile stable/7/share/man/Makefile stable/7/share/mk/bsd.own.mk stable/7/usr.bin/Makefile stable/7/usr.sbin/Makefile (contents, props changed) Directory Properties: stable/7/etc/ (props changed) stable/7/gnu/usr.bin/ (props changed) stable/7/gnu/usr.bin/cc/ (props changed) stable/7/gnu/usr.bin/cpio/ (props changed) stable/7/gnu/usr.bin/cvs/ (props changed) stable/7/gnu/usr.bin/gdb/ (props changed) stable/7/gnu/usr.bin/gdb/kgdb/ (props changed) stable/7/gnu/usr.bin/grep/ (props changed) stable/7/gnu/usr.bin/groff/ (props changed) stable/7/gnu/usr.bin/groff/tmac/mdoc.local (props changed) stable/7/gnu/usr.bin/man/ (props changed) stable/7/gnu/usr.bin/sort/ (props changed) stable/7/share/man/ (props changed) stable/7/share/man/man1/ (props changed) stable/7/share/man/man3/ (props changed) stable/7/share/man/man4/ (props changed) stable/7/share/man/man5/ (props changed) stable/7/share/man/man7/ (props changed) stable/7/share/man/man8/ (props changed) stable/7/share/man/man9/ (props changed) stable/7/share/mk/ (props changed) stable/7/usr.bin/ (props changed) stable/7/usr.bin/basename/ (props changed) stable/7/usr.bin/bluetooth/rfcomm_sppd/ (props changed) stable/7/usr.bin/calendar/ (props changed) stable/7/usr.bin/catman/ (props changed) stable/7/usr.bin/cksum/ (props changed) stable/7/usr.bin/comm/ (props changed) stable/7/usr.bin/cpuset/ (props changed) stable/7/usr.bin/csup/ (props changed) stable/7/usr.bin/dirname/ (props changed) stable/7/usr.bin/du/ (props changed) stable/7/usr.bin/fetch/ (props changed) stable/7/usr.bin/file/ (props changed) stable/7/usr.bin/find/ (props changed) stable/7/usr.bin/finger/ (props changed) stable/7/usr.bin/fstat/ (props changed) stable/7/usr.bin/gcore/ (props changed) stable/7/usr.bin/gprof/ (props changed) stable/7/usr.bin/gzip/ (props changed) stable/7/usr.bin/hexdump/ (props changed) stable/7/usr.bin/id/ (props changed) stable/7/usr.bin/indent/ (props changed) stable/7/usr.bin/ipcrm/ (props changed) stable/7/usr.bin/ipcs/ (props changed) stable/7/usr.bin/jot/ (props changed) stable/7/usr.bin/kdump/ (props changed) stable/7/usr.bin/ktrace/ (props changed) stable/7/usr.bin/ldd/ (props changed) stable/7/usr.bin/less/ (props changed) stable/7/usr.bin/locate/ (props changed) stable/7/usr.bin/lockf/ (props changed) stable/7/usr.bin/logger/ (props changed) stable/7/usr.bin/make/ (props changed) stable/7/usr.bin/ncal/ (props changed) stable/7/usr.bin/netstat/ (props changed) stable/7/usr.bin/newgrp/ (props changed) stable/7/usr.bin/nsupdate/ (props changed) stable/7/usr.bin/pkill/ (props changed) stable/7/usr.bin/procstat/ (props changed) stable/7/usr.bin/quota/ (props changed) stable/7/usr.bin/rpcgen/ (props changed) stable/7/usr.bin/sed/ (props changed) stable/7/usr.bin/shar/ (props changed) stable/7/usr.bin/sockstat/ (props changed) stable/7/usr.bin/stat/ (props changed) stable/7/usr.bin/su/ (props changed) stable/7/usr.bin/systat/ (props changed) stable/7/usr.bin/tail/ (props changed) stable/7/usr.bin/tar/ (props changed) stable/7/usr.bin/tftp/ (props changed) stable/7/usr.bin/tip/ (props changed) stable/7/usr.bin/top/ (props changed) stable/7/usr.bin/truncate/ (props changed) stable/7/usr.bin/truss/ (props changed) stable/7/usr.bin/unifdef/ (props changed) stable/7/usr.bin/units/ (props changed) stable/7/usr.bin/vmstat/ (props changed) stable/7/usr.bin/w/ (props changed) stable/7/usr.bin/wc/ (props changed) stable/7/usr.bin/whereis/ (props changed) stable/7/usr.bin/whois/ (props changed) stable/7/usr.bin/window/ (props changed) stable/7/usr.bin/xargs/ (props changed) stable/7/usr.bin/ypcat/ (props changed) stable/7/usr.bin/ypmatch/ (props changed) stable/7/usr.bin/ypwhich/ (props changed) stable/7/usr.sbin/ (props changed) stable/7/usr.sbin/acpi/ (props changed) stable/7/usr.sbin/adduser/ (props changed) stable/7/usr.sbin/arp/ (props changed) stable/7/usr.sbin/bluetooth/ (props changed) stable/7/usr.sbin/bluetooth/btpand/ (props changed) stable/7/usr.sbin/bluetooth/hcsecd/ (props changed) stable/7/usr.sbin/bluetooth/hcseriald/ (props changed) stable/7/usr.sbin/bluetooth/rfcomm_pppd/ (props changed) stable/7/usr.sbin/bluetooth/sdpd/ (props changed) stable/7/usr.sbin/bsnmpd/modules/snmp_pf/ (props changed) stable/7/usr.sbin/burncd/ (props changed) stable/7/usr.sbin/cdcontrol/ (props changed) stable/7/usr.sbin/chown/ (props changed) stable/7/usr.sbin/chroot/ (props changed) stable/7/usr.sbin/config/ (props changed) stable/7/usr.sbin/cpucontrol/ (props changed) stable/7/usr.sbin/crashinfo/ (props changed) stable/7/usr.sbin/cron/ (props changed) stable/7/usr.sbin/cron/cron/ (props changed) stable/7/usr.sbin/crunch/ (props changed) stable/7/usr.sbin/cxgbtool/ (props changed) stable/7/usr.sbin/eeprom/ (props changed) stable/7/usr.sbin/extattr/ (props changed) stable/7/usr.sbin/faithd/ (props changed) stable/7/usr.sbin/fdcontrol/ (props changed) stable/7/usr.sbin/fdformat/ (props changed) stable/7/usr.sbin/fdread/ (props changed) stable/7/usr.sbin/fdwrite/ (props changed) stable/7/usr.sbin/freebsd-update/ (props changed) stable/7/usr.sbin/fwcontrol/ (props changed) stable/7/usr.sbin/gstat/ (props changed) stable/7/usr.sbin/iostat/ (props changed) stable/7/usr.sbin/jail/ (props changed) stable/7/usr.sbin/jexec/ (props changed) stable/7/usr.sbin/jls/ (props changed) stable/7/usr.sbin/lpr/ (props changed) stable/7/usr.sbin/mailwrapper/ (props changed) stable/7/usr.sbin/makefs/ (props changed) stable/7/usr.sbin/makefs/ffs/ffs_bswap.c (props changed) stable/7/usr.sbin/makefs/ffs/ffs_subr.c (props changed) stable/7/usr.sbin/makefs/ffs/ufs_bswap.h (props changed) stable/7/usr.sbin/makefs/getid.c (props changed) stable/7/usr.sbin/mergemaster/ (props changed) stable/7/usr.sbin/mfiutil/ (props changed) stable/7/usr.sbin/mfiutil/mfiutil.8 (props changed) stable/7/usr.sbin/mountd/ (props changed) stable/7/usr.sbin/mptutil/ (props changed) stable/7/usr.sbin/mtree/ (props changed) stable/7/usr.sbin/ndiscvt/ (props changed) stable/7/usr.sbin/newsyslog/ (props changed) stable/7/usr.sbin/nscd/ (props changed) stable/7/usr.sbin/ntp/ (props changed) stable/7/usr.sbin/pciconf/ (props changed) stable/7/usr.sbin/pkg_install/ (props changed) stable/7/usr.sbin/pmcstat/ (props changed) stable/7/usr.sbin/portsnap/ (props changed) stable/7/usr.sbin/powerd/ (props changed) stable/7/usr.sbin/ppp/ (props changed) stable/7/usr.sbin/pstat/ (props changed) stable/7/usr.sbin/pw/ (props changed) stable/7/usr.sbin/pwd_mkdb/ (props changed) stable/7/usr.sbin/rpc.lockd/ (props changed) stable/7/usr.sbin/rpc.statd/ (props changed) stable/7/usr.sbin/rpc.yppasswdd/ (props changed) stable/7/usr.sbin/rtsold/ (props changed) stable/7/usr.sbin/sade/ (props changed) stable/7/usr.sbin/service/ (props changed) stable/7/usr.sbin/setfib/ (props changed) stable/7/usr.sbin/sysinstall/ (props changed) stable/7/usr.sbin/syslogd/ (props changed) stable/7/usr.sbin/traceroute/ (props changed) stable/7/usr.sbin/traceroute6/ (props changed) stable/7/usr.sbin/tzsetup/ (props changed) stable/7/usr.sbin/wpa/wpa_supplicant/ (props changed) stable/7/usr.sbin/ypserv/ (props changed) stable/7/usr.sbin/zic/ (props changed) Modified: stable/7/etc/Makefile ============================================================================== --- stable/7/etc/Makefile Tue May 25 20:21:46 2010 (r208549) +++ stable/7/etc/Makefile Tue May 25 20:32:30 2010 (r208550) @@ -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/7/etc/periodic/weekly/Makefile ============================================================================== --- stable/7/etc/periodic/weekly/Makefile Tue May 25 20:21:46 2010 (r208549) +++ stable/7/etc/periodic/weekly/Makefile Tue May 25 20:32:30 2010 (r208550) @@ -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/7/gnu/usr.bin/Makefile ============================================================================== --- stable/7/gnu/usr.bin/Makefile Tue May 25 20:21:46 2010 (r208549) +++ stable/7/gnu/usr.bin/Makefile Tue May 25 20:32:30 2010 (r208550) @@ -38,7 +38,7 @@ _cvs= cvs _texinfo= texinfo .endif -.if ${MK_MAN} != "no" +.if ${MK_MAN_UTILS} != "no" _man= man .endif Modified: stable/7/share/man/Makefile ============================================================================== --- stable/7/share/man/Makefile Tue May 25 20:21:46 2010 (r208549) +++ stable/7/share/man/Makefile Tue May 25 20:32:30 2010 (r208550) @@ -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/7/share/mk/bsd.own.mk ============================================================================== --- stable/7/share/mk/bsd.own.mk Tue May 25 20:21:46 2010 (r208549) +++ stable/7/share/mk/bsd.own.mk Tue May 25 20:32:30 2010 (r208550) @@ -520,7 +520,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/7/usr.bin/Makefile ============================================================================== --- stable/7/usr.bin/Makefile Tue May 25 20:21:46 2010 (r208549) +++ stable/7/usr.bin/Makefile Tue May 25 20:32:30 2010 (r208550) @@ -115,7 +115,7 @@ SUBDIR= alias \ m4 \ ${_mail} \ ${_make} \ - makewhatis \ + ${_makewhatis} \ mesg \ minigzip \ mkdep \ @@ -245,7 +245,7 @@ _at= at _atm= atm .endif -.if ${MK_MAN} != "no" +.if ${MK_MAN_UTILS} != "no" _catman= catman .endif @@ -293,6 +293,10 @@ _msgs= msgs _make= make .endif +.if ${MK_MAN_UTILS} != "no" +_makewhatis= makewhatis +.endif + .if ${MK_NETCAT} != "no" _nc= nc .endif Modified: stable/7/usr.sbin/Makefile ============================================================================== --- stable/7/usr.sbin/Makefile Tue May 25 20:21:46 2010 (r208549) +++ stable/7/usr.sbin/Makefile Tue May 25 20:32:30 2010 (r208550) @@ -88,7 +88,7 @@ SUBDIR= ${_ac} \ mailwrapper \ makefs \ ${_makemap} \ - manctl \ + ${_manctl} \ memcontrol \ mergemaster \ mfiutil \ @@ -312,6 +312,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-all@FreeBSD.ORG Tue May 25 20:33:49 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 79E69106566B; Tue, 25 May 2010 20:33:49 +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 692E48FC0C; Tue, 25 May 2010 20:33:49 +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 o4PKXnf4030472; Tue, 25 May 2010 20:33:49 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4PKXn19030471; Tue, 25 May 2010 20:33:49 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201005252033.o4PKXn19030471@svn.freebsd.org> From: Jung-uk Kim Date: Tue, 25 May 2010 20:33:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208551 - stable/7/tools/build/options X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 20:33:49 -0000 Author: jkim Date: Tue May 25 20:33:49 2010 New Revision: 208551 URL: http://svn.freebsd.org/changeset/base/208551 Log: MFC: r208322 Add an option file for WITHOUT_MAN_UTILS to regenerate src.conf(5). Added: stable/7/tools/build/options/WITHOUT_MAN_UTILS - copied unchanged from r208322, head/tools/build/options/WITHOUT_MAN_UTILS Modified: Directory Properties: stable/7/tools/build/options/ (props changed) Copied: stable/7/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/7/tools/build/options/WITHOUT_MAN_UTILS Tue May 25 20:33:49 2010 (r208551, 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-all@FreeBSD.ORG Tue May 25 20:35:39 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8EB151065676; Tue, 25 May 2010 20:35:39 +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 7BABE8FC17; Tue, 25 May 2010 20:35: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 o4PKZde2030905; Tue, 25 May 2010 20:35:39 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4PKZdp4030903; Tue, 25 May 2010 20:35:39 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201005252035.o4PKZdp4030903@svn.freebsd.org> From: Jung-uk Kim Date: Tue, 25 May 2010 20:35:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208552 - stable/7/share/man/man5 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 20:35:39 -0000 Author: jkim Date: Tue May 25 20:35:39 2010 New Revision: 208552 URL: http://svn.freebsd.org/changeset/base/208552 Log: Regen for r208551. Modified: stable/7/share/man/man5/src.conf.5 Modified: stable/7/share/man/man5/src.conf.5 ============================================================================== --- stable/7/share/man/man5/src.conf.5 Tue May 25 20:33:49 2010 (r208551) +++ stable/7/share/man/man5/src.conf.5 Tue May 25 20:35:39 2010 (r208552) @@ -531,6 +531,24 @@ and related support files. .It Va WITHOUT_MAN .\" from FreeBSD: stable/7/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/7/tools/build/options/WITHOUT_MAN_UTILS 208551 2010-05-25 20:33:49Z 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/7/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-all@FreeBSD.ORG Tue May 25 20:42:36 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 428C31065676; Tue, 25 May 2010 20:42:36 +0000 (UTC) (envelope-from qingli@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3192F8FC08; Tue, 25 May 2010 20:42: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 o4PKgab9032471; Tue, 25 May 2010 20:42:36 GMT (envelope-from qingli@svn.freebsd.org) Received: (from qingli@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4PKgZdd032462; Tue, 25 May 2010 20:42:35 GMT (envelope-from qingli@svn.freebsd.org) Message-Id: <201005252042.o4PKgZdd032462@svn.freebsd.org> From: Qing Li Date: Tue, 25 May 2010 20:42:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208553 - in head/sys: net netinet X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 20:42:36 -0000 Author: qingli Date: Tue May 25 20:42:35 2010 New Revision: 208553 URL: http://svn.freebsd.org/changeset/base/208553 Log: This patch fixes the problem where proxy ARP entries cannot be added over the if_ng interface. MFC after: 3 days Modified: head/sys/net/if.c head/sys/net/if_var.h head/sys/net/route.c head/sys/net/rtsock.c head/sys/netinet/in.c head/sys/netinet/in_pcb.c head/sys/netinet/ip_options.c head/sys/netinet/ip_output.c Modified: head/sys/net/if.c ============================================================================== --- head/sys/net/if.c Tue May 25 20:35:39 2010 (r208552) +++ head/sys/net/if.c Tue May 25 20:42:35 2010 (r208553) @@ -1607,7 +1607,7 @@ done: * is most specific found. */ struct ifaddr * -ifa_ifwithnet(struct sockaddr *addr) +ifa_ifwithnet(struct sockaddr *addr, int ignore_ptp) { struct ifnet *ifp; struct ifaddr *ifa; @@ -1639,7 +1639,8 @@ ifa_ifwithnet(struct sockaddr *addr) if (ifa->ifa_addr->sa_family != af) next: continue; - if (af == AF_INET && ifp->if_flags & IFF_POINTOPOINT) { + if (af == AF_INET && + ifp->if_flags & IFF_POINTOPOINT && !ignore_ptp) { /* * This is a bit broken as it doesn't * take into account that the remote end may Modified: head/sys/net/if_var.h ============================================================================== --- head/sys/net/if_var.h Tue May 25 20:35:39 2010 (r208552) +++ head/sys/net/if_var.h Tue May 25 20:42:35 2010 (r208553) @@ -873,7 +873,7 @@ struct ifaddr *ifa_ifwithaddr(struct soc int ifa_ifwithaddr_check(struct sockaddr *); struct ifaddr *ifa_ifwithbroadaddr(struct sockaddr *); struct ifaddr *ifa_ifwithdstaddr(struct sockaddr *); -struct ifaddr *ifa_ifwithnet(struct sockaddr *); +struct ifaddr *ifa_ifwithnet(struct sockaddr *, int); struct ifaddr *ifa_ifwithroute(int, struct sockaddr *, struct sockaddr *); struct ifaddr *ifa_ifwithroute_fib(int, struct sockaddr *, struct sockaddr *, u_int); Modified: head/sys/net/route.c ============================================================================== --- head/sys/net/route.c Tue May 25 20:35:39 2010 (r208552) +++ head/sys/net/route.c Tue May 25 20:42:35 2010 (r208553) @@ -519,7 +519,7 @@ rtredirect_fib(struct sockaddr *dst, } /* verify the gateway is directly reachable */ - if ((ifa = ifa_ifwithnet(gateway)) == NULL) { + if ((ifa = ifa_ifwithnet(gateway, 0)) == NULL) { error = ENETUNREACH; goto out; } @@ -686,7 +686,7 @@ ifa_ifwithroute_fib(int flags, struct so ifa = ifa_ifwithdstaddr(gateway); } if (ifa == NULL) - ifa = ifa_ifwithnet(gateway); + ifa = ifa_ifwithnet(gateway, 0); if (ifa == NULL) { struct rtentry *rt = rtalloc1_fib(gateway, 0, RTF_RNH_LOCKED, fibnum); if (rt == NULL) @@ -797,7 +797,7 @@ rt_getifa_fib(struct rt_addrinfo *info, */ if (info->rti_ifp == NULL && ifpaddr != NULL && ifpaddr->sa_family == AF_LINK && - (ifa = ifa_ifwithnet(ifpaddr)) != NULL) { + (ifa = ifa_ifwithnet(ifpaddr, 0)) != NULL) { info->rti_ifp = ifa->ifa_ifp; ifa_free(ifa); } Modified: head/sys/net/rtsock.c ============================================================================== --- head/sys/net/rtsock.c Tue May 25 20:35:39 2010 (r208552) +++ head/sys/net/rtsock.c Tue May 25 20:42:35 2010 (r208553) @@ -55,6 +55,7 @@ #include #include #include +#include #include #include #include @@ -673,12 +674,22 @@ route_output(struct mbuf *m, struct sock * another search to retrieve the prefix route of * the local end point of the PPP link. */ - if ((rtm->rtm_flags & RTF_ANNOUNCE) && - (rt->rt_ifp->if_flags & IFF_POINTOPOINT)) { + if (rtm->rtm_flags & RTF_ANNOUNCE) { struct sockaddr laddr; - rt_maskedcopy(rt->rt_ifa->ifa_addr, - &laddr, - rt->rt_ifa->ifa_netmask); + + if (rt->rt_ifp != NULL && + rt->rt_ifp->if_type == IFT_PROPVIRTUAL) { + struct ifaddr *ifa; + + ifa = ifa_ifwithnet(info.rti_info[RTAX_DST], 1); + if (ifa != NULL) + rt_maskedcopy(ifa->ifa_addr, + &laddr, + ifa->ifa_netmask); + } else + rt_maskedcopy(rt->rt_ifa->ifa_addr, + &laddr, + rt->rt_ifa->ifa_netmask); /* * refactor rt and no lock operation necessary */ Modified: head/sys/netinet/in.c ============================================================================== --- head/sys/netinet/in.c Tue May 25 20:35:39 2010 (r208552) +++ head/sys/netinet/in.c Tue May 25 20:42:35 2010 (r208553) @@ -1379,8 +1379,9 @@ in_lltable_rtcheck(struct ifnet *ifp, u_ /* XXX rtalloc1 should take a const param */ rt = rtalloc1(__DECONST(struct sockaddr *, l3addr), 0, 0); - if (rt == NULL || (rt->rt_flags & RTF_GATEWAY) || - ((rt->rt_ifp != ifp) && !(flags & LLE_PUB))) { + if (rt == NULL || (!(flags & LLE_PUB) && + ((rt->rt_flags & RTF_GATEWAY) || + (rt->rt_ifp != ifp)))) { #ifdef DIAGNOSTIC log(LOG_INFO, "IPv4 address: \"%s\" is not on the network\n", inet_ntoa(((const struct sockaddr_in *)l3addr)->sin_addr)); Modified: head/sys/netinet/in_pcb.c ============================================================================== --- head/sys/netinet/in_pcb.c Tue May 25 20:35:39 2010 (r208552) +++ head/sys/netinet/in_pcb.c Tue May 25 20:42:35 2010 (r208553) @@ -631,7 +631,7 @@ in_pcbladdr(struct inpcb *inp, struct in ia = ifatoia(ifa_ifwithdstaddr((struct sockaddr *)sin)); if (ia == NULL) - ia = ifatoia(ifa_ifwithnet((struct sockaddr *)sin)); + ia = ifatoia(ifa_ifwithnet((struct sockaddr *)sin, 0)); if (ia == NULL) { error = ENETUNREACH; goto done; @@ -748,7 +748,7 @@ in_pcbladdr(struct inpcb *inp, struct in ia = ifatoia(ifa_ifwithdstaddr(sintosa(&sain))); if (ia == NULL) - ia = ifatoia(ifa_ifwithnet(sintosa(&sain))); + ia = ifatoia(ifa_ifwithnet(sintosa(&sain), 0)); if (ia == NULL) ia = ifatoia(ifa_ifwithaddr(sintosa(&sain))); Modified: head/sys/netinet/ip_options.c ============================================================================== --- head/sys/netinet/ip_options.c Tue May 25 20:35:39 2010 (r208552) +++ head/sys/netinet/ip_options.c Tue May 25 20:42:35 2010 (r208553) @@ -228,7 +228,7 @@ dropit: #define INA struct in_ifaddr * #define SA struct sockaddr * if ((ia = (INA)ifa_ifwithdstaddr((SA)&ipaddr)) == NULL) - ia = (INA)ifa_ifwithnet((SA)&ipaddr); + ia = (INA)ifa_ifwithnet((SA)&ipaddr, 0); } else /* XXX MRT 0 for routing */ ia = ip_rtaddr(ipaddr.sin_addr, M_GETFIB(m)); Modified: head/sys/netinet/ip_output.c ============================================================================== --- head/sys/netinet/ip_output.c Tue May 25 20:35:39 2010 (r208552) +++ head/sys/netinet/ip_output.c Tue May 25 20:42:35 2010 (r208553) @@ -244,7 +244,7 @@ again: isbroadcast = 1; } else if (flags & IP_ROUTETOIF) { if ((ia = ifatoia(ifa_ifwithdstaddr(sintosa(dst)))) == NULL && - (ia = ifatoia(ifa_ifwithnet(sintosa(dst)))) == NULL) { + (ia = ifatoia(ifa_ifwithnet(sintosa(dst), 0))) == NULL) { IPSTAT_INC(ips_noroute); error = ENETUNREACH; goto bad; From owner-svn-src-all@FreeBSD.ORG Tue May 25 21:20:56 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6AD4A1065672; Tue, 25 May 2010 21:20:56 +0000 (UTC) (envelope-from glebius@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 578EB8FC19; Tue, 25 May 2010 21:20: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 o4PLKuPt040998; Tue, 25 May 2010 21:20:56 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4PLKuda040990; Tue, 25 May 2010 21:20:56 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201005252120.o4PLKuda040990@svn.freebsd.org> From: Gleb Smirnoff Date: Tue, 25 May 2010 21:20:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208554 - in head: share/man/man4 sys/conf sys/dev/usb sys/dev/usb/input sys/modules/usb/uep X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 21:20:56 -0000 Author: glebius Date: Tue May 25 21:20:56 2010 New Revision: 208554 URL: http://svn.freebsd.org/changeset/base/208554 Log: Add uep(4), driver for USB onscreen touch panel from eGalax. The driver is stub. It just creates device entry and feeds reassembled packets from hardware into it. If in future we would port wsmouse(4) from NetBSD, or make sysmouse(4) to support absolute motion events, then the driver can be extended to act as system mouse. Meanwhile, it just presents a /dev/uep0, that can be utilized by X driver, that I am going to commit to ports tree soon. The name for the driver is chosen to be the same as in NetBSD, however, due to different USB stacks this driver isn't a port. Added: head/share/man/man4/uep.4 (contents, props changed) head/sys/dev/usb/input/uep.c (contents, props changed) head/sys/modules/usb/uep/ head/sys/modules/usb/uep/Makefile (contents, props changed) Modified: head/share/man/man4/Makefile head/sys/conf/NOTES head/sys/conf/files head/sys/dev/usb/usbdevs Modified: head/share/man/man4/Makefile ============================================================================== --- head/share/man/man4/Makefile Tue May 25 20:42:35 2010 (r208553) +++ head/share/man/man4/Makefile Tue May 25 21:20:56 2010 (r208554) @@ -435,6 +435,7 @@ MAN= aac.4 \ udav.4 \ udbp.4 \ udp.4 \ + uep.4 \ ufm.4 \ ufoma.4 \ uftdi.4 \ Added: head/share/man/man4/uep.4 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/share/man/man4/uep.4 Tue May 25 21:20:56 2010 (r208554) @@ -0,0 +1,79 @@ +.\" Copyright (c) 2010 Gleb Smirnoff +.\" 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 AUTHOR 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 AUTHOR 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$ +.\" +.Dd May 25, 2010 +.Dt UEP 4 +.Os +.Sh NAME +.Nm uep +.Nd eGalax touchscreen driver +.Sh SYNOPSIS +To compile this driver into the kernel, place the following lines into +your kernel configuration file: +.Bd -ragged -offset indent +.Cd "device uep" +.Cd "device usb" +.Ed +.Pp +Alternatively, to load the driver as a +module at boot time, place the following line in +.Xr loader.conf 5 : +.Bd -literal -offset indent +uep_load="YES" +.Ed +.Sh DESCRIPTION +The +.Nm +driver provides support for the eGalax onscreen touch panels. +.Pp +The driver is stub. +It just probes and attaches to USB device, creates device entry +and feeds reassambled packets from the hardware to it. +.Pp +To get mouse working in +.Xr X 7 , +one needs to install +.Pa ports/x11-drivers/xf86-input-egalax . +.Sh BUGS +.Nm +can't act like +.Xr sysmouse 4 , +since the latter does not support absolute motion events. +.Sh FILES +.Nm +creates a blocking pseudo\-device file, +.Pa /dev/uep0 . +.Sh SEE ALSO +.Xr usb 4 , +.Xr loader.conf 5 , +.Xr xorg.conf 5 Pq Pa ports/x11/xorg , +.Xr egalax 4 Pq Pa ports/x11-drivers/xf86-input-egalax . +.Sh AUTHORS +.An -nosplit +The +.Nm +driver was written by +.An Gleb Smirnoff Aq glebius@FreeBSD.org Modified: head/sys/conf/NOTES ============================================================================== --- head/sys/conf/NOTES Tue May 25 20:42:35 2010 (r208553) +++ head/sys/conf/NOTES Tue May 25 21:20:56 2010 (r208554) @@ -2627,6 +2627,8 @@ device umct device umodem # USB mouse device ums +# eGalax USB touch screen +device uep # Diamond Rio 500 MP3 player device urio # Modified: head/sys/conf/files ============================================================================== --- head/sys/conf/files Tue May 25 20:42:35 2010 (r208553) +++ head/sys/conf/files Tue May 25 21:20:56 2010 (r208554) @@ -1781,6 +1781,7 @@ dev/usb/misc/udbp.c optional udbp # USB input drivers # dev/usb/input/atp.c optional atp +dev/usb/input/uep.c optional uep dev/usb/input/uhid.c optional uhid dev/usb/input/ukbd.c optional ukbd dev/usb/input/ums.c optional ums Added: head/sys/dev/usb/input/uep.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/dev/usb/input/uep.c Tue May 25 21:20:56 2010 (r208554) @@ -0,0 +1,441 @@ +/*- + * Copyright 2010, Gleb Smirnoff + * 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 AUTHOR 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 AUTHOR 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$ + */ + +/* + * http://home.eeti.com.tw/web20/drivers/Software%20Programming%20Guide_v2.0.pdf + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include "usbdevs.h" + +#include +#include +#include + +#define USB_DEBUG_VAR uep_debug +#include + +#ifdef USB_DEBUG +static int uep_debug = 0; + +SYSCTL_NODE(_hw_usb, OID_AUTO, uep, CTLFLAG_RW, 0, "USB uep"); +SYSCTL_INT(_hw_usb_uep, OID_AUTO, debug, CTLFLAG_RW, + &uep_debug, 0, "Debug level"); +#endif + +#define UEP_MAX_X 2047 +#define UEP_MAX_Y 2047 + +#define UEP_DOWN 0x01 +#define UEP_PACKET_LEN_MAX 16 +#define UEP_PACKET_LEN_REPORT 5 +#define UEP_PACKET_LEN_REPORT2 6 +#define UEP_PACKET_DIAG 0x0a +#define UEP_PACKET_REPORT_MASK 0xe0 +#define UEP_PACKET_REPORT 0x80 +#define UEP_PACKET_REPORT_PRESSURE 0xc0 +#define UEP_PACKET_REPORT_PLAYER 0xa0 +#define UEP_PACKET_LEN_MASK + +#define UEP_FIFO_BUF_SIZE 8 /* bytes */ +#define UEP_FIFO_QUEUE_MAXLEN 50 /* units */ + +enum { + UEP_INTR_DT, + UEP_N_TRANSFER, +}; + +struct uep_softc { + struct mtx mtx; + + struct usb_xfer *xfer[UEP_N_TRANSFER]; + struct usb_fifo_sc fifo; + + u_int pollrate; + u_int state; +#define UEP_ENABLED 0x01 + + /* Reassembling buffer. */ + u_char buf[UEP_PACKET_LEN_MAX]; + uint8_t buf_len; +}; + +static usb_callback_t uep_intr_callback; + +static device_probe_t uep_probe; +static device_attach_t uep_attach; +static device_detach_t uep_detach; + +static usb_fifo_cmd_t uep_start_read; +static usb_fifo_cmd_t uep_stop_read; +static usb_fifo_open_t uep_open; +static usb_fifo_close_t uep_close; + +static void uep_put_queue(struct uep_softc *, u_char *); + +static struct usb_fifo_methods uep_fifo_methods = { + .f_open = &uep_open, + .f_close = &uep_close, + .f_start_read = &uep_start_read, + .f_stop_read = &uep_stop_read, + .basename[0] = "uep", +}; + +static int +get_pkt_len(u_char *buf) +{ + if (buf[0] == UEP_PACKET_DIAG) { + int len; + + len = buf[1] + 2; + if (len > UEP_PACKET_LEN_MAX) { + DPRINTF("bad packet len %u\n", len); + return (UEP_PACKET_LEN_MAX); + } + + return (len); + } + + switch (buf[0] & UEP_PACKET_REPORT_MASK) { + case UEP_PACKET_REPORT: + return (UEP_PACKET_LEN_REPORT); + case UEP_PACKET_REPORT_PRESSURE: + case UEP_PACKET_REPORT_PLAYER: + case UEP_PACKET_REPORT_PRESSURE | UEP_PACKET_REPORT_PLAYER: + return (UEP_PACKET_LEN_REPORT2); + default: + DPRINTF("bad packet len 0\n"); + return (0); + } +} + +static void +uep_process_pkt(struct uep_softc *sc, u_char *buf) +{ + int32_t x, y; + + if ((buf[0] & 0xFE) != 0x80) { + DPRINTF("bad input packet format 0x%.2x\n", buf[0]); + return; + } + + /* + * Packet format is 5 bytes: + * + * 1000000T + * 0000AAAA + * 0AAAAAAA + * 0000BBBB + * 0BBBBBBB + * + * T: 1=touched 0=not touched + * A: bits of axis A position, MSB to LSB + * B: bits of axis B position, MSB to LSB + * + * For the unit I have, which is CTF1020-S from CarTFT.com, + * A = X and B = Y. But in NetBSD uep(4) it is other way round :) + * + * The controller sends a stream of T=1 events while the + * panel is touched, followed by a single T=0 event. + * + */ + + x = (buf[1] << 7) | buf[2]; + y = (buf[3] << 7) | buf[4]; + + DPRINTFN(2, "x %u y %u\n", x, y); + + uep_put_queue(sc, buf); +} + +static void +uep_intr_callback(struct usb_xfer *xfer, usb_error_t error) +{ + struct uep_softc *sc = usbd_xfer_softc(xfer); + int len; + + usbd_xfer_status(xfer, &len, NULL, NULL, NULL); + + switch (USB_GET_STATE(xfer)) { + case USB_ST_TRANSFERRED: + { + struct usb_page_cache *pc; + u_char buf[17], *p; + int pkt_len; + + if (len > sizeof(buf)) { + DPRINTF("bad input length %d\n", len); + goto tr_setup; + } + + pc = usbd_xfer_get_frame(xfer, 0); + usbd_copy_out(pc, 0, buf, len); + + /* + * The below code mimics Linux a lot. I don't know + * why NetBSD reads complete packets, but we need + * to reassamble 'em like Linux does (tries?). + */ + if (sc->buf_len > 0) { + int res; + + if (sc->buf_len == 1) + sc->buf[1] = buf[0]; + + if ((pkt_len = get_pkt_len(sc->buf)) == 0) + goto tr_setup; + + res = pkt_len - sc->buf_len; + memcpy(sc->buf + sc->buf_len, buf, res); + uep_process_pkt(sc, sc->buf); + sc->buf_len = 0; + + p = buf + res; + len -= res; + } else + p = buf; + + if (len == 1) { + sc->buf[0] = buf[0]; + sc->buf_len = 1; + + goto tr_setup; + } + + while (len > 0) { + if ((pkt_len = get_pkt_len(p)) == 0) + goto tr_setup; + + /* full packet: process */ + if (pkt_len <= len) { + uep_process_pkt(sc, p); + } else { + /* incomplete packet: save in buffer */ + memcpy(sc->buf, p, len); + sc->buf_len = len; + } + p += pkt_len; + len -= pkt_len; + } + } + case USB_ST_SETUP: + tr_setup: + /* check if we can put more data into the FIFO */ + if (usb_fifo_put_bytes_max(sc->fifo.fp[USB_FIFO_RX]) != 0) { + usbd_xfer_set_frame_len(xfer, 0, + usbd_xfer_max_len(xfer)); + usbd_transfer_submit(xfer); + } + break; + + default: + if (error != USB_ERR_CANCELLED) { + /* try clear stall first */ + usbd_xfer_set_stall(xfer); + goto tr_setup; + } + break; + } +} + +static const struct usb_config uep_config[UEP_N_TRANSFER] = { + [UEP_INTR_DT] = { + .type = UE_INTERRUPT, + .endpoint = UE_ADDR_ANY, + .direction = UE_DIR_IN, + .flags = {.pipe_bof = 1,.short_xfer_ok = 1,}, + .bufsize = 0, /* use wMaxPacketSize */ + .callback = &uep_intr_callback, + }, +}; + +static int +uep_probe(device_t dev) +{ + struct usb_attach_arg *uaa = device_get_ivars(dev); + + if (uaa->usb_mode != USB_MODE_HOST) + return (ENXIO); + + if ((uaa->info.idVendor == USB_VENDOR_EGALAX) && + ((uaa->info.idProduct == USB_PRODUCT_EGALAX_TPANEL) || + (uaa->info.idProduct == USB_PRODUCT_EGALAX_TPANEL2))) + return (BUS_PROBE_SPECIFIC); + + if ((uaa->info.idVendor == USB_VENDOR_EGALAX2) && + (uaa->info.idProduct == USB_PRODUCT_EGALAX2_TPANEL)) + return (BUS_PROBE_SPECIFIC); + + return (ENXIO); +} + +static int +uep_attach(device_t dev) +{ + struct usb_attach_arg *uaa = device_get_ivars(dev); + struct uep_softc *sc = device_get_softc(dev); + int error; + + device_set_usb_desc(dev); + + mtx_init(&sc->mtx, "uep lock", NULL, MTX_DEF); + + error = usbd_transfer_setup(uaa->device, &uaa->info.bIfaceIndex, + sc->xfer, uep_config, UEP_N_TRANSFER, sc, &sc->mtx); + + if (error) { + DPRINTF("usbd_transfer_setup error=%s\n", usbd_errstr(error)); + goto detach; + } + + error = usb_fifo_attach(uaa->device, sc, &sc->mtx, &uep_fifo_methods, + &sc->fifo, device_get_unit(dev), 0 - 1, uaa->info.bIfaceIndex, + UID_ROOT, GID_OPERATOR, 0644); + + if (error) { + DPRINTF("usb_fifo_attach error=%s\n", usbd_errstr(error)); + goto detach; + } + + sc->buf_len = 0; + + return (0); + +detach: + uep_detach(dev); + + return (ENOMEM); /* XXX */ +} + +static int +uep_detach(device_t dev) +{ + struct uep_softc *sc = device_get_softc(dev); + + usb_fifo_detach(&sc->fifo); + + usbd_transfer_unsetup(sc->xfer, UEP_N_TRANSFER); + + mtx_destroy(&sc->mtx); + + return (0); +} + +static void +uep_start_read(struct usb_fifo *fifo) +{ + struct uep_softc *sc = usb_fifo_softc(fifo); + u_int rate; + + if ((rate = sc->pollrate) > 1000) + rate = 1000; + + if (rate > 0 && sc->xfer[UEP_INTR_DT] != NULL) { + usbd_transfer_stop(sc->xfer[UEP_INTR_DT]); + usbd_xfer_set_interval(sc->xfer[UEP_INTR_DT], 1000 / rate); + sc->pollrate = 0; + } + + usbd_transfer_start(sc->xfer[UEP_INTR_DT]); +} + +static void +uep_stop_read(struct usb_fifo *fifo) +{ + struct uep_softc *sc = usb_fifo_softc(fifo); + + usbd_transfer_stop(sc->xfer[UEP_INTR_DT]); +} + +static void +uep_put_queue(struct uep_softc *sc, u_char *buf) +{ + usb_fifo_put_data_linear(sc->fifo.fp[USB_FIFO_RX], buf, + UEP_PACKET_LEN_REPORT, 1); +} + +static int +uep_open(struct usb_fifo *fifo, int fflags) +{ + if (fflags & FREAD) { + struct uep_softc *sc = usb_fifo_softc(fifo); + + if (sc->state & UEP_ENABLED) + return (EBUSY); + if (usb_fifo_alloc_buffer(fifo, UEP_FIFO_BUF_SIZE, + UEP_FIFO_QUEUE_MAXLEN)) + return (ENOMEM); + + sc->state |= UEP_ENABLED; + } + + return (0); +} + +static void +uep_close(struct usb_fifo *fifo, int fflags) +{ + if (fflags & FREAD) { + struct uep_softc *sc = usb_fifo_softc(fifo); + + sc->state &= ~(UEP_ENABLED); + usb_fifo_free_buffer(fifo); + } +} + +static devclass_t uep_devclass; + +static device_method_t uep_methods[] = { + DEVMETHOD(device_probe, uep_probe), + DEVMETHOD(device_attach, uep_attach), + DEVMETHOD(device_detach, uep_detach), + { 0, 0 }, +}; + +static driver_t uep_driver = { + .name = "uep", + .methods = uep_methods, + .size = sizeof(struct uep_softc), +}; + +DRIVER_MODULE(uep, uhub, uep_driver, uep_devclass, NULL, NULL); +MODULE_DEPEND(uep, usb, 1, 1, 1); Modified: head/sys/dev/usb/usbdevs ============================================================================== --- head/sys/dev/usb/usbdevs Tue May 25 20:42:35 2010 (r208553) +++ head/sys/dev/usb/usbdevs Tue May 25 21:20:56 2010 (r208554) @@ -1378,6 +1378,11 @@ product EDIMAX RT2870_1 0x7711 RT2870 product EDIMAX EW7717 0x7717 EW-7717 product EDIMAX EW7718 0x7718 EW-7718 +/* eGalax Products */ +product EGALAX TPANEL 0x0001 Touch Panel +product EGALAX TPANEL2 0x0002 Touch Panel +product EGALAX2 TPANEL 0x0001 Touch Panel + /* Eicon Networks */ product EICON DIVA852 0x4905 Diva 852 ISDN TA Added: head/sys/modules/usb/uep/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/modules/usb/uep/Makefile Tue May 25 21:20:56 2010 (r208554) @@ -0,0 +1,11 @@ +# $FreeBSD$ + +S= ${.CURDIR}/../../.. + +.PATH: $S/dev/usb/input + +KMOD= uep +SRCS= opt_bus.h opt_usb.h device_if.h bus_if.h usb_if.h vnode_if.h usbdevs.h \ + uep.c + +.include From owner-svn-src-all@FreeBSD.ORG Tue May 25 21:32:38 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 41A4C1065676; Tue, 25 May 2010 21:32:38 +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 311E18FC2C; Tue, 25 May 2010 21:32: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 o4PLWcdM043576; Tue, 25 May 2010 21:32:38 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4PLWcB3043574; Tue, 25 May 2010 21:32:38 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201005252132.o4PLWcB3043574@svn.freebsd.org> From: John Baldwin Date: Tue, 25 May 2010 21:32:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208555 - head/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 21:32:38 -0000 Author: jhb Date: Tue May 25 21:32:37 2010 New Revision: 208555 URL: http://svn.freebsd.org/changeset/base/208555 Log: Ignore the 'addr' argument passed to PT_STEP (it is required to be '1' for PT_STEP which means "ignore") and PT_DETACH. PR: kern/146167 MFC after: 1 week Modified: head/sys/kern/sys_process.c Modified: head/sys/kern/sys_process.c ============================================================================== --- head/sys/kern/sys_process.c Tue May 25 21:20:56 2010 (r208554) +++ head/sys/kern/sys_process.c Tue May 25 21:32:37 2010 (r208555) @@ -899,24 +899,29 @@ kern_ptrace(struct thread *td, int req, if (error) goto out; break; + case PT_CONTINUE: case PT_TO_SCE: - p->p_stops |= S_PT_SCE; - break; case PT_TO_SCX: - p->p_stops |= S_PT_SCX; - break; case PT_SYSCALL: - p->p_stops |= S_PT_SCE | S_PT_SCX; - break; - } - - if (addr != (void *)1) { - error = ptrace_set_pc(td2, (u_long)(uintfptr_t)addr); - if (error) + if (addr != (void *)1) { + error = ptrace_set_pc(td2, + (u_long)(uintfptr_t)addr); + if (error) + goto out; + } + switch (req) { + case PT_TO_SCE: + p->p_stops |= S_PT_SCE; break; - } - - if (req == PT_DETACH) { + case PT_TO_SCX: + p->p_stops |= S_PT_SCX; + break; + case PT_SYSCALL: + p->p_stops |= S_PT_SCE | S_PT_SCX; + break; + } + break; + case PT_DETACH: /* reset process parent */ if (p->p_oppid != p->p_pptr->p_pid) { struct proc *pp; @@ -941,6 +946,7 @@ kern_ptrace(struct thread *td, int req, /* should we send SIGCHLD? */ /* childproc_continued(p); */ + break; } sendsig: From owner-svn-src-all@FreeBSD.ORG Tue May 25 21:39:30 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D2A71106566C; Tue, 25 May 2010 21:39:30 +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 C24258FC1D; Tue, 25 May 2010 21:39: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 o4PLdUm7045083; Tue, 25 May 2010 21:39:30 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4PLdURa045081; Tue, 25 May 2010 21:39:30 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201005252139.o4PLdURa045081@svn.freebsd.org> From: John Baldwin Date: Tue, 25 May 2010 21:39:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208556 - head/sys/i386/i386 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 21:39:31 -0000 Author: jhb Date: Tue May 25 21:39:30 2010 New Revision: 208556 URL: http://svn.freebsd.org/changeset/base/208556 Log: Only enable CMCI on i386 if 'device apic' is enabled in the kernel since it requires the local APIC to work. Modified: head/sys/i386/i386/mca.c Modified: head/sys/i386/i386/mca.c ============================================================================== --- head/sys/i386/i386/mca.c Tue May 25 21:32:37 2010 (r208555) +++ head/sys/i386/i386/mca.c Tue May 25 21:39:30 2010 (r208556) @@ -32,6 +32,8 @@ #include __FBSDID("$FreeBSD$"); +#include "opt_apic.h" + #include #include #include @@ -59,6 +61,7 @@ enum scan_mode { CMCI, }; +#ifdef DEV_APIC /* * State maintained for each monitored MCx bank to control the * corrected machine check interrupt threshold. @@ -67,6 +70,7 @@ struct cmc_state { int max_threshold; int last_intr; }; +#endif struct mca_internal { struct mca_record rec; @@ -99,9 +103,12 @@ static struct callout mca_timer; static int mca_ticks = 3600; /* Check hourly by default. */ static struct task mca_task; static struct mtx mca_lock; + +#ifdef DEV_APIC static struct cmc_state **cmc_state; /* Indexed by cpuid, bank */ static int cmc_banks; static int cmc_throttle = 60; /* Time in seconds to throttle CMCI. */ +#endif static int sysctl_positive_int(SYSCTL_HANDLER_ARGS) @@ -423,6 +430,7 @@ mca_record_entry(const struct mca_record mtx_unlock_spin(&mca_lock); } +#ifdef DEV_APIC /* * Update the interrupt threshold for a CMCI. The strategy is to use * a low trigger that interrupts as soon as the first event occurs. @@ -494,6 +502,7 @@ cmci_update(enum scan_mode mode, int ban wrmsr(MSR_MC_CTL2(bank), limit); } } +#endif /* * This scans all the machine check banks of the current CPU to see if @@ -521,12 +530,14 @@ mca_scan(enum scan_mode mode) ucmask |= MC_STATUS_OVER; mcg_cap = rdmsr(MSR_MCG_CAP); for (i = 0; i < (mcg_cap & MCG_CAP_COUNT); i++) { +#ifdef DEV_APIC /* * For a CMCI, only check banks this CPU is * responsible for. */ if (mode == CMCI && !(PCPU_GET(cmci_mask) & 1 << i)) continue; +#endif valid = mca_check_status(i, &rec); if (valid) { @@ -538,12 +549,14 @@ mca_scan(enum scan_mode mode) mca_record_entry(&rec); } +#ifdef DEV_APIC /* * If this is a bank this CPU monitors via CMCI, * update the threshold. */ if (PCPU_GET(cmci_mask) & (1 << i)) cmci_update(mode, i, valid, &rec); +#endif } return (mode == MCE ? recoverable : count); } @@ -621,6 +634,7 @@ mca_startup(void *dummy) } SYSINIT(mca_startup, SI_SUB_SMP, SI_ORDER_ANY, mca_startup, NULL); +#ifdef DEV_APIC static void cmci_setup(uint64_t mcg_cap) { @@ -637,6 +651,7 @@ cmci_setup(uint64_t mcg_cap) &cmc_throttle, 0, sysctl_positive_int, "I", "Interval in seconds to throttle corrected MC interrupts"); } +#endif static void mca_setup(uint64_t mcg_cap) @@ -657,10 +672,13 @@ mca_setup(uint64_t mcg_cap) SYSCTL_ADD_PROC(NULL, SYSCTL_STATIC_CHILDREN(_hw_mca), OID_AUTO, "force_scan", CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, NULL, 0, sysctl_mca_scan, "I", "Force an immediate scan for machine checks"); +#ifdef DEV_APIC if (mcg_cap & MCG_CAP_CMCI_P) cmci_setup(mcg_cap); +#endif } +#ifdef DEV_APIC /* * See if we should monitor CMCI for this bank. If CMCI_EN is already * set in MC_CTL2, then another CPU is responsible for this bank, so @@ -707,6 +725,7 @@ cmci_monitor(int i) /* Mark this bank as monitored. */ PCPU_SET(cmci_mask, PCPU_GET(cmci_mask) | 1 << i); } +#endif /* Must be executed on each CPU. */ void @@ -775,15 +794,19 @@ mca_init(void) if (!skip) wrmsr(MSR_MC_CTL(i), ctl); +#ifdef DEV_APIC if (mcg_cap & MCG_CAP_CMCI_P) cmci_monitor(i); +#endif /* Clear all errors. */ wrmsr(MSR_MC_STATUS(i), 0); } +#ifdef DEV_APIC if (PCPU_GET(cmci_mask) != 0) lapic_enable_cmc(); +#endif } load_cr4(rcr4() | CR4_MCE); @@ -817,6 +840,7 @@ mca_intr(void) return (recoverable); } +#ifdef DEV_APIC /* Called for a CMCI (correctable machine check interrupt). */ void cmc_intr(void) @@ -844,3 +868,4 @@ cmc_intr(void) mtx_unlock_spin(&mca_lock); } } +#endif From owner-svn-src-all@FreeBSD.ORG Tue May 25 22:04:51 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2DD69106564A; Tue, 25 May 2010 22:04:51 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id CA4008FC12; Tue, 25 May 2010 22:04:50 +0000 (UTC) Received: from fledge.watson.org (fledge.watson.org [65.122.17.41]) by cyrus.watson.org (Postfix) with ESMTPS id 659EF46B89; Tue, 25 May 2010 18:04:50 -0400 (EDT) Date: Tue, 25 May 2010 23:04:50 +0100 (BST) From: Robert Watson X-X-Sender: robert@fledge.watson.org To: Qing Li In-Reply-To: <201005252042.o4PKgZdd032462@svn.freebsd.org> Message-ID: References: <201005252042.o4PKgZdd032462@svn.freebsd.org> User-Agent: Alpine 2.00 (BSF 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r208553 - in head/sys: net netinet X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 22:04:51 -0000 On Tue, 25 May 2010, Qing Li wrote: > Author: qingli > Date: Tue May 25 20:42:35 2010 > New Revision: 208553 > URL: http://svn.freebsd.org/changeset/base/208553 > > Log: > This patch fixes the problem where proxy ARP entries cannot be added > over the if_ng interface. Hi Qing-- It may be worth checking network-related kernel modules in the ports tree to make sure none reference this symbol (i.e., the virtualbox network device parts). If they do, you may need to add a new symbol in the MFC so that existing modules continue to function, and existing kernel module code continues to compile. If not, shouldn't be an issue (none of the base system modules seem to use it, but we may care about external modules that do in -STABLE). Robert > > MFC after: 3 days > > Modified: > head/sys/net/if.c > head/sys/net/if_var.h > head/sys/net/route.c > head/sys/net/rtsock.c > head/sys/netinet/in.c > head/sys/netinet/in_pcb.c > head/sys/netinet/ip_options.c > head/sys/netinet/ip_output.c > > Modified: head/sys/net/if.c > ============================================================================== > --- head/sys/net/if.c Tue May 25 20:35:39 2010 (r208552) > +++ head/sys/net/if.c Tue May 25 20:42:35 2010 (r208553) > @@ -1607,7 +1607,7 @@ done: > * is most specific found. > */ > struct ifaddr * > -ifa_ifwithnet(struct sockaddr *addr) > +ifa_ifwithnet(struct sockaddr *addr, int ignore_ptp) > { > struct ifnet *ifp; > struct ifaddr *ifa; > @@ -1639,7 +1639,8 @@ ifa_ifwithnet(struct sockaddr *addr) > > if (ifa->ifa_addr->sa_family != af) > next: continue; > - if (af == AF_INET && ifp->if_flags & IFF_POINTOPOINT) { > + if (af == AF_INET && > + ifp->if_flags & IFF_POINTOPOINT && !ignore_ptp) { > /* > * This is a bit broken as it doesn't > * take into account that the remote end may > > Modified: head/sys/net/if_var.h > ============================================================================== > --- head/sys/net/if_var.h Tue May 25 20:35:39 2010 (r208552) > +++ head/sys/net/if_var.h Tue May 25 20:42:35 2010 (r208553) > @@ -873,7 +873,7 @@ struct ifaddr *ifa_ifwithaddr(struct soc > int ifa_ifwithaddr_check(struct sockaddr *); > struct ifaddr *ifa_ifwithbroadaddr(struct sockaddr *); > struct ifaddr *ifa_ifwithdstaddr(struct sockaddr *); > -struct ifaddr *ifa_ifwithnet(struct sockaddr *); > +struct ifaddr *ifa_ifwithnet(struct sockaddr *, int); > struct ifaddr *ifa_ifwithroute(int, struct sockaddr *, struct sockaddr *); > struct ifaddr *ifa_ifwithroute_fib(int, struct sockaddr *, struct sockaddr *, u_int); > > > Modified: head/sys/net/route.c > ============================================================================== > --- head/sys/net/route.c Tue May 25 20:35:39 2010 (r208552) > +++ head/sys/net/route.c Tue May 25 20:42:35 2010 (r208553) > @@ -519,7 +519,7 @@ rtredirect_fib(struct sockaddr *dst, > } > > /* verify the gateway is directly reachable */ > - if ((ifa = ifa_ifwithnet(gateway)) == NULL) { > + if ((ifa = ifa_ifwithnet(gateway, 0)) == NULL) { > error = ENETUNREACH; > goto out; > } > @@ -686,7 +686,7 @@ ifa_ifwithroute_fib(int flags, struct so > ifa = ifa_ifwithdstaddr(gateway); > } > if (ifa == NULL) > - ifa = ifa_ifwithnet(gateway); > + ifa = ifa_ifwithnet(gateway, 0); > if (ifa == NULL) { > struct rtentry *rt = rtalloc1_fib(gateway, 0, RTF_RNH_LOCKED, fibnum); > if (rt == NULL) > @@ -797,7 +797,7 @@ rt_getifa_fib(struct rt_addrinfo *info, > */ > if (info->rti_ifp == NULL && ifpaddr != NULL && > ifpaddr->sa_family == AF_LINK && > - (ifa = ifa_ifwithnet(ifpaddr)) != NULL) { > + (ifa = ifa_ifwithnet(ifpaddr, 0)) != NULL) { > info->rti_ifp = ifa->ifa_ifp; > ifa_free(ifa); > } > > Modified: head/sys/net/rtsock.c > ============================================================================== > --- head/sys/net/rtsock.c Tue May 25 20:35:39 2010 (r208552) > +++ head/sys/net/rtsock.c Tue May 25 20:42:35 2010 (r208553) > @@ -55,6 +55,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -673,12 +674,22 @@ route_output(struct mbuf *m, struct sock > * another search to retrieve the prefix route of > * the local end point of the PPP link. > */ > - if ((rtm->rtm_flags & RTF_ANNOUNCE) && > - (rt->rt_ifp->if_flags & IFF_POINTOPOINT)) { > + if (rtm->rtm_flags & RTF_ANNOUNCE) { > struct sockaddr laddr; > - rt_maskedcopy(rt->rt_ifa->ifa_addr, > - &laddr, > - rt->rt_ifa->ifa_netmask); > + > + if (rt->rt_ifp != NULL && > + rt->rt_ifp->if_type == IFT_PROPVIRTUAL) { > + struct ifaddr *ifa; > + > + ifa = ifa_ifwithnet(info.rti_info[RTAX_DST], 1); > + if (ifa != NULL) > + rt_maskedcopy(ifa->ifa_addr, > + &laddr, > + ifa->ifa_netmask); > + } else > + rt_maskedcopy(rt->rt_ifa->ifa_addr, > + &laddr, > + rt->rt_ifa->ifa_netmask); > /* > * refactor rt and no lock operation necessary > */ > > Modified: head/sys/netinet/in.c > ============================================================================== > --- head/sys/netinet/in.c Tue May 25 20:35:39 2010 (r208552) > +++ head/sys/netinet/in.c Tue May 25 20:42:35 2010 (r208553) > @@ -1379,8 +1379,9 @@ in_lltable_rtcheck(struct ifnet *ifp, u_ > > /* XXX rtalloc1 should take a const param */ > rt = rtalloc1(__DECONST(struct sockaddr *, l3addr), 0, 0); > - if (rt == NULL || (rt->rt_flags & RTF_GATEWAY) || > - ((rt->rt_ifp != ifp) && !(flags & LLE_PUB))) { > + if (rt == NULL || (!(flags & LLE_PUB) && > + ((rt->rt_flags & RTF_GATEWAY) || > + (rt->rt_ifp != ifp)))) { > #ifdef DIAGNOSTIC > log(LOG_INFO, "IPv4 address: \"%s\" is not on the network\n", > inet_ntoa(((const struct sockaddr_in *)l3addr)->sin_addr)); > > Modified: head/sys/netinet/in_pcb.c > ============================================================================== > --- head/sys/netinet/in_pcb.c Tue May 25 20:35:39 2010 (r208552) > +++ head/sys/netinet/in_pcb.c Tue May 25 20:42:35 2010 (r208553) > @@ -631,7 +631,7 @@ in_pcbladdr(struct inpcb *inp, struct in > > ia = ifatoia(ifa_ifwithdstaddr((struct sockaddr *)sin)); > if (ia == NULL) > - ia = ifatoia(ifa_ifwithnet((struct sockaddr *)sin)); > + ia = ifatoia(ifa_ifwithnet((struct sockaddr *)sin, 0)); > if (ia == NULL) { > error = ENETUNREACH; > goto done; > @@ -748,7 +748,7 @@ in_pcbladdr(struct inpcb *inp, struct in > > ia = ifatoia(ifa_ifwithdstaddr(sintosa(&sain))); > if (ia == NULL) > - ia = ifatoia(ifa_ifwithnet(sintosa(&sain))); > + ia = ifatoia(ifa_ifwithnet(sintosa(&sain), 0)); > if (ia == NULL) > ia = ifatoia(ifa_ifwithaddr(sintosa(&sain))); > > > Modified: head/sys/netinet/ip_options.c > ============================================================================== > --- head/sys/netinet/ip_options.c Tue May 25 20:35:39 2010 (r208552) > +++ head/sys/netinet/ip_options.c Tue May 25 20:42:35 2010 (r208553) > @@ -228,7 +228,7 @@ dropit: > #define INA struct in_ifaddr * > #define SA struct sockaddr * > if ((ia = (INA)ifa_ifwithdstaddr((SA)&ipaddr)) == NULL) > - ia = (INA)ifa_ifwithnet((SA)&ipaddr); > + ia = (INA)ifa_ifwithnet((SA)&ipaddr, 0); > } else > /* XXX MRT 0 for routing */ > ia = ip_rtaddr(ipaddr.sin_addr, M_GETFIB(m)); > > Modified: head/sys/netinet/ip_output.c > ============================================================================== > --- head/sys/netinet/ip_output.c Tue May 25 20:35:39 2010 (r208552) > +++ head/sys/netinet/ip_output.c Tue May 25 20:42:35 2010 (r208553) > @@ -244,7 +244,7 @@ again: > isbroadcast = 1; > } else if (flags & IP_ROUTETOIF) { > if ((ia = ifatoia(ifa_ifwithdstaddr(sintosa(dst)))) == NULL && > - (ia = ifatoia(ifa_ifwithnet(sintosa(dst)))) == NULL) { > + (ia = ifatoia(ifa_ifwithnet(sintosa(dst), 0))) == NULL) { > IPSTAT_INC(ips_noroute); > error = ENETUNREACH; > goto bad; > From owner-svn-src-all@FreeBSD.ORG Tue May 25 22:19:51 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CE21D1065675; Tue, 25 May 2010 22:19:51 +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 BD4EA8FC18; Tue, 25 May 2010 22:19: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 o4PMJpqG053910; Tue, 25 May 2010 22:19:51 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4PMJpg9053908; Tue, 25 May 2010 22:19:51 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201005252219.o4PMJpg9053908@svn.freebsd.org> From: Xin LI Date: Tue, 25 May 2010 22:19:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208557 - head/release/doc/en_US.ISO8859-1/relnotes X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 25 May 2010 22:19:51 -0000 Author: delphij Date: Tue May 25 22:19:51 2010 New Revision: 208557 URL: http://svn.freebsd.org/changeset/base/208557 Log: Grammar nits. Submitted by: b. f. Modified: head/release/doc/en_US.ISO8859-1/relnotes/article.sgml Modified: head/release/doc/en_US.ISO8859-1/relnotes/article.sgml ============================================================================== --- head/release/doc/en_US.ISO8859-1/relnotes/article.sgml Tue May 25 21:39:30 2010 (r208556) +++ head/release/doc/en_US.ISO8859-1/relnotes/article.sgml Tue May 25 22:19:51 2010 (r208557) @@ -327,7 +327,7 @@ based on libarchive, have replaced the GNU Binutils versions of these utilities. - BSD-licensed version of &man.bc.1; and &man.dc.1; has + BSD-licensed versions of &man.bc.1; and &man.dc.1; have replaced their GNU counterparts. &man.chflags.1; now supports a flag for @@ -378,7 +378,7 @@ disable the use of TCP options. &man.nc.1;'s switch has been deprecated. - It will be removed in future release. + It will be removed in a future release. The &man.ping6.8; utility now returns 2 when the packet transmission was successful but no responses From owner-svn-src-all@FreeBSD.ORG Wed May 26 09:23:51 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AF8E2106564A; Wed, 26 May 2010 09:23:51 +0000 (UTC) (envelope-from raj@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9ECD48FC18; Wed, 26 May 2010 09:23: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 o4Q9Npom000148; Wed, 26 May 2010 09:23:51 GMT (envelope-from raj@svn.freebsd.org) Received: (from raj@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4Q9NpGg000146; Wed, 26 May 2010 09:23:51 GMT (envelope-from raj@svn.freebsd.org) Message-Id: <201005260923.o4Q9NpGg000146@svn.freebsd.org> From: Rafal Jaworowski Date: Wed, 26 May 2010 09:23:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208559 - head/share/mk X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 09:23:51 -0000 Author: raj Date: Wed May 26 09:23:51 2010 New Revision: 208559 URL: http://svn.freebsd.org/changeset/base/208559 Log: Use MACHINE_ARCH instead of TARGET_ARCH. Pointed out by: imp Modified: head/share/mk/bsd.own.mk Modified: head/share/mk/bsd.own.mk ============================================================================== --- head/share/mk/bsd.own.mk Wed May 26 04:14:29 2010 (r208558) +++ head/share/mk/bsd.own.mk Wed May 26 09:23:51 2010 (r208559) @@ -279,8 +279,7 @@ WITH_IDEA= .endif # Enable FDT by default for selected platforms. -.if defined(TARGET_ARCH) && \ - (${TARGET_ARCH} == "arm" || ${TARGET_ARCH} == "powerpc") +.if ${MACHINE_ARCH} == "arm" || ${MACHINE_ARCH} == "powerpc" # XXX this is temporarily disabled until all FDT support code is in place. #_fdt= FDT _no_fdt= FDT From owner-svn-src-all@FreeBSD.ORG Wed May 26 09:34:02 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 604FF106564A; Wed, 26 May 2010 09:34:02 +0000 (UTC) (envelope-from raj@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4E8A78FC08; Wed, 26 May 2010 09:34: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 o4Q9Y2Rf002411; Wed, 26 May 2010 09:34:02 GMT (envelope-from raj@svn.freebsd.org) Received: (from raj@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4Q9Y2ub002408; Wed, 26 May 2010 09:34:02 GMT (envelope-from raj@svn.freebsd.org) Message-Id: <201005260934.o4Q9Y2ub002408@svn.freebsd.org> From: Rafal Jaworowski Date: Wed, 26 May 2010 09:34:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208560 - head/sys/boot/fdt/dts X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 09:34:02 -0000 Author: raj Date: Wed May 26 09:34:02 2010 New Revision: 208560 URL: http://svn.freebsd.org/changeset/base/208560 Log: Import device tree source (DTS) files for PowerPC MPC8555CDS and MPC8572DS development systems. Special thanks to Phil Brownfield for help with BSD-style relicensing of these files. Obtained from: Freescale Added: head/sys/boot/fdt/dts/ head/sys/boot/fdt/dts/mpc8555cds.dts (contents, props changed) head/sys/boot/fdt/dts/mpc8572ds.dts (contents, props changed) Added: head/sys/boot/fdt/dts/mpc8555cds.dts ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/boot/fdt/dts/mpc8555cds.dts Wed May 26 09:34:02 2010 (r208560) @@ -0,0 +1,442 @@ +/* + * MPC8555 CDS Device Tree Source + * + * Copyright 2006, 2008 Freescale Semiconductor Inc. All rights reserved + * + * Neither the name of Freescale Semiconductor, Inc nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * Freescale hereby publishes it under the following licenses: + * + * BSD License + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 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 COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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. + * + * GNU General Public License, version 2 + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + * You may select the license of your choice. + *------------------------------------------------------------------ + * + * $FreeBSD$ + */ + +/dts-v1/; + +/ { + model = "MPC8555CDS"; + compatible = "MPC8555CDS", "MPC85xxCDS"; + #address-cells = <1>; + #size-cells = <1>; + + aliases { + ethernet0 = &enet0; + ethernet1 = &enet1; + serial0 = &serial0; + serial1 = &serial1; + pci0 = &pci0; + pci1 = &pci1; + }; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + PowerPC,8555@0 { + device_type = "cpu"; + reg = <0x0>; + d-cache-line-size = <32>; // 32 bytes + i-cache-line-size = <32>; // 32 bytes + d-cache-size = <0x8000>; // L1, 32K + i-cache-size = <0x8000>; // L1, 32K + timebase-frequency = <0>; // 33 MHz, from uboot + bus-frequency = <0>; // 166 MHz + clock-frequency = <0>; // 825 MHz, from uboot + next-level-cache = <&L2>; + }; + }; + + memory { + device_type = "memory"; + reg = <0x0 0x8000000>; // 128M at 0x0 + }; + + localbus@e0005000 { + #address-cells = <2>; + #size-cells = <1>; + compatible = "fsl,lbc", "fsl,elbc"; + reg = <0xe0005000 0x1000>; + interrupts = <19 2>; + interrupt-parent = <&mpic>; + + ranges = <0x0 0x0 0xff800000 0x00800000 + 0x1 0x0 0xff000000 0x00800000 + 0x2 0x0 0xf8000000 0x00008000>; + + nor@0,0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "cfi-flash"; + reg = <0x0 0x0 0x00800000>; + bank-width = <2>; + device-width = <1>; + }; + + nor@1,0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "cfi-flash"; + reg = <0x1 0x0 0x00800000>; + bank-width = <2>; + device-width = <1>; + }; + + rtc@2,0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "dallas,ds1553"; + reg = <0x2 0x0 0x00008000>; + bank-width = <1>; + device-width = <1>; + }; + }; + + soc8555@e0000000 { + #address-cells = <1>; + #size-cells = <1>; + device_type = "soc"; + compatible = "simple-bus"; + ranges = <0x0 0xe0000000 0x100000>; + bus-frequency = <0>; + + ecm-law@0 { + compatible = "fsl,ecm-law"; + reg = <0x0 0x1000>; + fsl,num-laws = <8>; + }; + + ecm@1000 { + compatible = "fsl,mpc8555-ecm", "fsl,ecm"; + reg = <0x1000 0x1000>; + interrupts = <17 2>; + interrupt-parent = <&mpic>; + }; + + memory-controller@2000 { + compatible = "fsl,8555-memory-controller"; + reg = <0x2000 0x1000>; + interrupt-parent = <&mpic>; + interrupts = <18 2>; + }; + + L2: l2-cache-controller@20000 { + compatible = "fsl,8555-l2-cache-controller"; + reg = <0x20000 0x1000>; + cache-line-size = <32>; // 32 bytes + cache-size = <0x40000>; // L2, 256K + interrupt-parent = <&mpic>; + interrupts = <16 2>; + }; + + i2c@3000 { + #address-cells = <1>; + #size-cells = <0>; + cell-index = <0>; + compatible = "fsl-i2c"; + reg = <0x3000 0x100>; + interrupts = <43 2>; + interrupt-parent = <&mpic>; + dfsrr; + }; + + dma@21300 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "fsl,mpc8555-dma", "fsl,eloplus-dma"; + reg = <0x21300 0x4>; + ranges = <0x0 0x21100 0x200>; + cell-index = <0>; + dma-channel@0 { + compatible = "fsl,mpc8555-dma-channel", + "fsl,eloplus-dma-channel"; + reg = <0x0 0x80>; + cell-index = <0>; + interrupt-parent = <&mpic>; + interrupts = <20 2>; + }; + dma-channel@80 { + compatible = "fsl,mpc8555-dma-channel", + "fsl,eloplus-dma-channel"; + reg = <0x80 0x80>; + cell-index = <1>; + interrupt-parent = <&mpic>; + interrupts = <21 2>; + }; + dma-channel@100 { + compatible = "fsl,mpc8555-dma-channel", + "fsl,eloplus-dma-channel"; + reg = <0x100 0x80>; + cell-index = <2>; + interrupt-parent = <&mpic>; + interrupts = <22 2>; + }; + dma-channel@180 { + compatible = "fsl,mpc8555-dma-channel", + "fsl,eloplus-dma-channel"; + reg = <0x180 0x80>; + cell-index = <3>; + interrupt-parent = <&mpic>; + interrupts = <23 2>; + }; + }; + + enet0: ethernet@24000 { + #address-cells = <1>; + #size-cells = <1>; + cell-index = <0>; + device_type = "network"; + model = "TSEC"; + compatible = "gianfar"; + reg = <0x24000 0x1000>; + ranges = <0x0 0x24000 0x1000>; + local-mac-address = [ 00 00 00 00 00 00 ]; + interrupts = <29 2 30 2 34 2>; + interrupt-parent = <&mpic>; + tbi-handle = <&tbi0>; + phy-handle = <&phy0>; + + mdio@520 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "fsl,gianfar-mdio"; + reg = <0x520 0x20>; + + phy0: ethernet-phy@0 { + interrupt-parent = <&mpic>; + interrupts = <5 1>; + reg = <0x0>; + device_type = "ethernet-phy"; + }; + phy1: ethernet-phy@1 { + interrupt-parent = <&mpic>; + interrupts = <5 1>; + reg = <0x1>; + device_type = "ethernet-phy"; + }; + tbi0: tbi-phy@11 { + reg = <0x11>; + device_type = "tbi-phy"; + }; + }; + }; + + enet1: ethernet@25000 { + #address-cells = <1>; + #size-cells = <1>; + cell-index = <1>; + device_type = "network"; + model = "TSEC"; + compatible = "gianfar"; + reg = <0x25000 0x1000>; + ranges = <0x0 0x25000 0x1000>; + local-mac-address = [ 00 00 00 00 00 00 ]; + interrupts = <35 2 36 2 40 2>; + interrupt-parent = <&mpic>; + tbi-handle = <&tbi1>; + phy-handle = <&phy1>; + + mdio@520 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "fsl,gianfar-tbi"; + reg = <0x520 0x20>; + + tbi1: tbi-phy@11 { + reg = <0x11>; + device_type = "tbi-phy"; + }; + }; + }; + + serial0: serial@4500 { + cell-index = <0>; + device_type = "serial"; + compatible = "ns16550"; + reg = <0x4500 0x100>; // reg base, size + clock-frequency = <0>; // should we fill in in uboot? + interrupts = <42 2>; + interrupt-parent = <&mpic>; + }; + + serial1: serial@4600 { + cell-index = <1>; + device_type = "serial"; + compatible = "ns16550"; + reg = <0x4600 0x100>; // reg base, size + clock-frequency = <0>; // should we fill in in uboot? + interrupts = <42 2>; + interrupt-parent = <&mpic>; + }; + + crypto@30000 { + compatible = "fsl,sec2.0"; + reg = <0x30000 0x10000>; + interrupts = <45 2>; + interrupt-parent = <&mpic>; + fsl,num-channels = <4>; + fsl,channel-fifo-len = <24>; + fsl,exec-units-mask = <0x7e>; + fsl,descriptor-types-mask = <0x01010ebf>; + }; + + mpic: pic@40000 { + interrupt-controller; + #address-cells = <0>; + #interrupt-cells = <2>; + reg = <0x40000 0x40000>; + compatible = "chrp,open-pic"; + device_type = "open-pic"; + }; + + cpm@80000 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "fsl,mpc8555-cpm", "fsl,cpm2"; + reg = <0x80000 0x20000>; + interrupts = <46 2>; + }; + }; + + pci0: pci@e0008000 { + interrupt-map-mask = <0x1f800 0x0 0x0 0x7>; + interrupt-map = < + + /* IDSEL 0x10 */ + 0x8000 0x0 0x0 0x1 &mpic 0x0 0x1 + 0x8000 0x0 0x0 0x2 &mpic 0x1 0x1 + 0x8000 0x0 0x0 0x3 &mpic 0x2 0x1 + 0x8000 0x0 0x0 0x4 &mpic 0x3 0x1 + + /* IDSEL 0x11 */ + 0x8800 0x0 0x0 0x1 &mpic 0x0 0x1 + 0x8800 0x0 0x0 0x2 &mpic 0x1 0x1 + 0x8800 0x0 0x0 0x3 &mpic 0x2 0x1 + 0x8800 0x0 0x0 0x4 &mpic 0x3 0x1 + + /* IDSEL 0x12 (Slot 1) */ + 0x9000 0x0 0x0 0x1 &mpic 0x0 0x1 + 0x9000 0x0 0x0 0x2 &mpic 0x1 0x1 + 0x9000 0x0 0x0 0x3 &mpic 0x2 0x1 + 0x9000 0x0 0x0 0x4 &mpic 0x3 0x1 + + /* IDSEL 0x13 (Slot 2) */ + 0x9800 0x0 0x0 0x1 &mpic 0x1 0x1 + 0x9800 0x0 0x0 0x2 &mpic 0x2 0x1 + 0x9800 0x0 0x0 0x3 &mpic 0x3 0x1 + 0x9800 0x0 0x0 0x4 &mpic 0x0 0x1 + + /* IDSEL 0x14 (Slot 3) */ + 0xa000 0x0 0x0 0x1 &mpic 0x2 0x1 + 0xa000 0x0 0x0 0x2 &mpic 0x3 0x1 + 0xa000 0x0 0x0 0x3 &mpic 0x0 0x1 + 0xa000 0x0 0x0 0x4 &mpic 0x1 0x1 + + /* IDSEL 0x15 (Slot 4) */ + 0xa800 0x0 0x0 0x1 &mpic 0x3 0x1 + 0xa800 0x0 0x0 0x2 &mpic 0x0 0x1 + 0xa800 0x0 0x0 0x3 &mpic 0x1 0x1 + 0xa800 0x0 0x0 0x4 &mpic 0x2 0x1 + + /* Bus 1 (Tundra Bridge) */ + /* IDSEL 0x12 (ISA bridge) */ + 0x19000 0x0 0x0 0x1 &mpic 0x0 0x1 + 0x19000 0x0 0x0 0x2 &mpic 0x1 0x1 + 0x19000 0x0 0x0 0x3 &mpic 0x2 0x1 + 0x19000 0x0 0x0 0x4 &mpic 0x3 0x1>; + interrupt-parent = <&mpic>; + interrupts = <24 2>; + bus-range = <0 0>; + ranges = <0x2000000 0x0 0x80000000 0x80000000 0x0 0x10000000 + 0x1000000 0x0 0x0 0xfee00000 0x0 0x00010000>; + clock-frequency = <66666666>; + #interrupt-cells = <1>; + #size-cells = <2>; + #address-cells = <3>; + reg = <0xe0008000 0x1000>; + compatible = "fsl,mpc8540-pci"; + device_type = "pci"; + + i8259@19000 { + interrupt-controller; + device_type = "interrupt-controller"; + reg = <0x19000 0x0 0x0 0x0 0x1>; + #address-cells = <0>; + #interrupt-cells = <2>; + compatible = "chrp,iic"; + interrupts = <1>; + interrupt-parent = <&pci0>; + }; + }; + + pci1: pci@e0009000 { + interrupt-map-mask = <0xf800 0x0 0x0 0x7>; + interrupt-map = < + + /* IDSEL 0x15 */ + 0xa800 0x0 0x0 0x1 &mpic 0xb 0x1 + 0xa800 0x0 0x0 0x2 &mpic 0xb 0x1 + 0xa800 0x0 0x0 0x3 &mpic 0xb 0x1 + 0xa800 0x0 0x0 0x4 &mpic 0xb 0x1>; + interrupt-parent = <&mpic>; + interrupts = <25 2>; + bus-range = <0 0>; + ranges = <0x2000000 0x0 0x90000000 0x90000000 0x0 0x10000000 + 0x1000000 0x0 0x0 0xfee10000 0x0 0x00010000>; + clock-frequency = <66666666>; + #interrupt-cells = <1>; + #size-cells = <2>; + #address-cells = <3>; + reg = <0xe0009000 0x1000>; + compatible = "fsl,mpc8540-pci"; + device_type = "pci"; + }; +}; Added: head/sys/boot/fdt/dts/mpc8572ds.dts ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/boot/fdt/dts/mpc8572ds.dts Wed May 26 09:34:02 2010 (r208560) @@ -0,0 +1,895 @@ +/* + * MPC8572 DS Device Tree Source + * + * Copyright 2007-2009 Freescale Semiconductor Inc. All rights reserved + * + * Neither the name of Freescale Semiconductor, Inc nor the names of + * its contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * Freescale hereby publishes it under the following licenses: + * + * BSD License + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 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 COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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. + * + * GNU General Public License, version 2 + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301, USA. + * + * You may select the license of your choice. + *------------------------------------------------------------------ + * + * $FreeBSD$ + */ + +/dts-v1/; +/ { + model = "fsl,MPC8572DS"; + compatible = "fsl,MPC8572DS"; + #address-cells = <2>; + #size-cells = <2>; + + aliases { + ethernet0 = &enet0; + ethernet1 = &enet1; + ethernet2 = &enet2; + ethernet3 = &enet3; + serial0 = &serial0; + serial1 = &serial1; + pci0 = &pci0; + pci1 = &pci1; + pci2 = &pci2; + }; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + PowerPC,8572@0 { + device_type = "cpu"; + reg = <0x0>; + d-cache-line-size = <32>; // 32 bytes + i-cache-line-size = <32>; // 32 bytes + d-cache-size = <0x8000>; // L1, 32K + i-cache-size = <0x8000>; // L1, 32K + timebase-frequency = <0>; + bus-frequency = <0>; + clock-frequency = <0>; + next-level-cache = <&L2>; + }; + + PowerPC,8572@1 { + device_type = "cpu"; + reg = <0x1>; + d-cache-line-size = <32>; // 32 bytes + i-cache-line-size = <32>; // 32 bytes + d-cache-size = <0x8000>; // L1, 32K + i-cache-size = <0x8000>; // L1, 32K + timebase-frequency = <0>; + bus-frequency = <0>; + clock-frequency = <0>; + next-level-cache = <&L2>; + }; + }; + + memory { + device_type = "memory"; + }; + + localbus@ffe05000 { + #address-cells = <2>; + #size-cells = <1>; + compatible = "fsl,mpc8572-elbc", "fsl,elbc", "simple-bus"; + reg = <0 0xffe05000 0 0x1000>; + interrupts = <19 2>; + interrupt-parent = <&mpic>; + + ranges = <0x0 0x0 0x0 0xe8000000 0x08000000>; + + nor@0,0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "cfi-flash"; + reg = <0x0 0x0 0x8000000>; + bank-width = <2>; + device-width = <1>; + + partition@0 { + reg = <0x0 0x03000000>; + label = "ramdisk-nor"; + read-only; + }; + + partition@3000000 { + reg = <0x03000000 0x00e00000>; + label = "diagnostic-nor"; + read-only; + }; + + partition@3e00000 { + reg = <0x03e00000 0x00200000>; + label = "dink-nor"; + read-only; + }; + + partition@4000000 { + reg = <0x04000000 0x00400000>; + label = "kernel-nor"; + read-only; + }; + + partition@4400000 { + reg = <0x04400000 0x03b00000>; + label = "jffs2-nor"; + }; + + partition@7f00000 { + reg = <0x07f00000 0x00080000>; + label = "dtb-nor"; + read-only; + }; + + partition@7f80000 { + reg = <0x07f80000 0x00080000>; + label = "u-boot-nor"; + read-only; + }; + }; + + nand@2,0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "fsl,mpc8572-fcm-nand", + "fsl,elbc-fcm-nand"; + reg = <0x2 0x0 0x40000>; + + partition@0 { + reg = <0x0 0x02000000>; + label = "u-boot-nand"; + read-only; + }; + + partition@2000000 { + reg = <0x02000000 0x10000000>; + label = "jffs2-nand"; + }; + + partition@12000000 { + reg = <0x12000000 0x08000000>; + label = "ramdisk-nand"; + read-only; + }; + + partition@1a000000 { + reg = <0x1a000000 0x04000000>; + label = "kernel-nand"; + }; + + partition@1e000000 { + reg = <0x1e000000 0x01000000>; + label = "dtb-nand"; + read-only; + }; + + partition@1f000000 { + reg = <0x1f000000 0x21000000>; + label = "reserved-nand"; + }; + }; + + nand@4,0 { + compatible = "fsl,mpc8572-fcm-nand", + "fsl,elbc-fcm-nand"; + reg = <0x4 0x0 0x40000>; + }; + + nand@5,0 { + compatible = "fsl,mpc8572-fcm-nand", + "fsl,elbc-fcm-nand"; + reg = <0x5 0x0 0x40000>; + }; + + nand@6,0 { + compatible = "fsl,mpc8572-fcm-nand", + "fsl,elbc-fcm-nand"; + reg = <0x6 0x0 0x40000>; + }; + }; + + soc8572@ffe00000 { + #address-cells = <1>; + #size-cells = <1>; + device_type = "soc"; + compatible = "simple-bus"; + ranges = <0x0 0 0xffe00000 0x100000>; + bus-frequency = <0>; // Filled out by uboot. + + ecm-law@0 { + compatible = "fsl,ecm-law"; + reg = <0x0 0x1000>; + fsl,num-laws = <12>; + }; + + ecm@1000 { + compatible = "fsl,mpc8572-ecm", "fsl,ecm"; + reg = <0x1000 0x1000>; + interrupts = <17 2>; + interrupt-parent = <&mpic>; + }; + + memory-controller@2000 { + compatible = "fsl,mpc8572-memory-controller"; + reg = <0x2000 0x1000>; + interrupt-parent = <&mpic>; + interrupts = <18 2>; + }; + + memory-controller@6000 { + compatible = "fsl,mpc8572-memory-controller"; + reg = <0x6000 0x1000>; + interrupt-parent = <&mpic>; + interrupts = <18 2>; + }; + + L2: l2-cache-controller@20000 { + compatible = "fsl,mpc8572-l2-cache-controller"; + reg = <0x20000 0x1000>; + cache-line-size = <32>; // 32 bytes + cache-size = <0x100000>; // L2, 1M + interrupt-parent = <&mpic>; + interrupts = <16 2>; + }; + + i2c@3000 { + #address-cells = <1>; + #size-cells = <0>; + cell-index = <0>; + compatible = "fsl-i2c"; + reg = <0x3000 0x100>; + interrupts = <43 2>; + interrupt-parent = <&mpic>; + dfsrr; + }; + + i2c@3100 { + #address-cells = <1>; + #size-cells = <0>; + cell-index = <1>; + compatible = "fsl-i2c"; + reg = <0x3100 0x100>; + interrupts = <43 2>; + interrupt-parent = <&mpic>; + dfsrr; + }; + + dma@c300 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "fsl,mpc8572-dma", "fsl,eloplus-dma"; + reg = <0xc300 0x4>; + ranges = <0x0 0xc100 0x200>; + cell-index = <1>; + dma-channel@0 { + compatible = "fsl,mpc8572-dma-channel", + "fsl,eloplus-dma-channel"; + reg = <0x0 0x80>; + cell-index = <0>; + interrupt-parent = <&mpic>; + interrupts = <76 2>; + }; + dma-channel@80 { + compatible = "fsl,mpc8572-dma-channel", + "fsl,eloplus-dma-channel"; + reg = <0x80 0x80>; + cell-index = <1>; + interrupt-parent = <&mpic>; + interrupts = <77 2>; + }; + dma-channel@100 { + compatible = "fsl,mpc8572-dma-channel", + "fsl,eloplus-dma-channel"; + reg = <0x100 0x80>; + cell-index = <2>; + interrupt-parent = <&mpic>; + interrupts = <78 2>; + }; + dma-channel@180 { + compatible = "fsl,mpc8572-dma-channel", + "fsl,eloplus-dma-channel"; + reg = <0x180 0x80>; + cell-index = <3>; + interrupt-parent = <&mpic>; + interrupts = <79 2>; + }; + }; + + dma@21300 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "fsl,mpc8572-dma", "fsl,eloplus-dma"; + reg = <0x21300 0x4>; + ranges = <0x0 0x21100 0x200>; + cell-index = <0>; + dma-channel@0 { + compatible = "fsl,mpc8572-dma-channel", + "fsl,eloplus-dma-channel"; + reg = <0x0 0x80>; + cell-index = <0>; + interrupt-parent = <&mpic>; + interrupts = <20 2>; + }; + dma-channel@80 { + compatible = "fsl,mpc8572-dma-channel", + "fsl,eloplus-dma-channel"; + reg = <0x80 0x80>; + cell-index = <1>; + interrupt-parent = <&mpic>; + interrupts = <21 2>; + }; + dma-channel@100 { + compatible = "fsl,mpc8572-dma-channel", + "fsl,eloplus-dma-channel"; + reg = <0x100 0x80>; + cell-index = <2>; + interrupt-parent = <&mpic>; + interrupts = <22 2>; + }; + dma-channel@180 { + compatible = "fsl,mpc8572-dma-channel", + "fsl,eloplus-dma-channel"; + reg = <0x180 0x80>; + cell-index = <3>; + interrupt-parent = <&mpic>; + interrupts = <23 2>; + }; + }; + + ptp_timer: ptimer@24e00 { + compatible = "fsl,gianfar-ptp-timer"; + reg = <0x24e00 0xb0>; + }; + + enet0: ethernet@24000 { + #address-cells = <1>; + #size-cells = <1>; + cell-index = <0>; + device_type = "network"; + model = "eTSEC"; + compatible = "gianfar"; + reg = <0x24000 0x1000>; + ranges = <0x0 0x24000 0x1000>; + local-mac-address = [ 00 00 00 00 00 00 ]; + interrupts = <29 2 30 2 34 2>; + interrupt-parent = <&mpic>; + tbi-handle = <&tbi0>; + phy-handle = <&phy0>; + ptimer-handle = < &ptp_timer >; + phy-connection-type = "rgmii-id"; + + mdio@520 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "fsl,gianfar-mdio"; + reg = <0x520 0x20>; + + phy0: ethernet-phy@0 { + interrupt-parent = <&mpic>; + interrupts = <10 1>; + reg = <0x0>; + }; + phy1: ethernet-phy@1 { + interrupt-parent = <&mpic>; + interrupts = <10 1>; + reg = <0x1>; + }; + phy2: ethernet-phy@2 { + interrupt-parent = <&mpic>; + interrupts = <10 1>; + reg = <0x2>; + }; + phy3: ethernet-phy@3 { + interrupt-parent = <&mpic>; + interrupts = <10 1>; + reg = <0x3>; + }; + + tbi0: tbi-phy@11 { + reg = <0x11>; + device_type = "tbi-phy"; + }; + }; + }; + + enet1: ethernet@25000 { + #address-cells = <1>; + #size-cells = <1>; + cell-index = <1>; + device_type = "network"; + model = "eTSEC"; + compatible = "gianfar"; + reg = <0x25000 0x1000>; + ranges = <0x0 0x25000 0x1000>; + local-mac-address = [ 00 00 00 00 00 00 ]; + interrupts = <35 2 36 2 40 2>; + interrupt-parent = <&mpic>; + tbi-handle = <&tbi1>; + phy-handle = <&phy1>; + ptimer-handle = < &ptp_timer >; + phy-connection-type = "rgmii-id"; + + mdio@520 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "fsl,gianfar-tbi"; + reg = <0x520 0x20>; + + tbi1: tbi-phy@11 { + reg = <0x11>; + device_type = "tbi-phy"; + }; + }; + }; + + enet2: ethernet@26000 { + #address-cells = <1>; + #size-cells = <1>; + cell-index = <2>; + device_type = "network"; + model = "eTSEC"; + compatible = "gianfar"; + reg = <0x26000 0x1000>; + ranges = <0x0 0x26000 0x1000>; + local-mac-address = [ 00 00 00 00 00 00 ]; + interrupts = <31 2 32 2 33 2>; + interrupt-parent = <&mpic>; + tbi-handle = <&tbi2>; + phy-handle = <&phy2>; + ptimer-handle = < &ptp_timer >; + phy-connection-type = "rgmii-id"; + + mdio@520 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "fsl,gianfar-tbi"; + reg = <0x520 0x20>; + + tbi2: tbi-phy@11 { + reg = <0x11>; + device_type = "tbi-phy"; + }; + }; + }; + + enet3: ethernet@27000 { + #address-cells = <1>; + #size-cells = <1>; + cell-index = <3>; + device_type = "network"; + model = "eTSEC"; + compatible = "gianfar"; + reg = <0x27000 0x1000>; + ranges = <0x0 0x27000 0x1000>; + local-mac-address = [ 00 00 00 00 00 00 ]; + interrupts = <37 2 38 2 39 2>; + interrupt-parent = <&mpic>; + tbi-handle = <&tbi3>; + phy-handle = <&phy3>; + phy-connection-type = "rgmii-id"; + + mdio@520 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "fsl,gianfar-tbi"; + reg = <0x520 0x20>; + + tbi3: tbi-phy@11 { + reg = <0x11>; + device_type = "tbi-phy"; + }; + }; + }; + + serial0: serial@4500 { + cell-index = <0>; + device_type = "serial"; + compatible = "ns16550"; + reg = <0x4500 0x100>; + clock-frequency = <0>; + interrupts = <42 2>; + interrupt-parent = <&mpic>; + }; + + serial1: serial@4600 { + cell-index = <1>; + device_type = "serial"; + compatible = "ns16550"; + reg = <0x4600 0x100>; + clock-frequency = <0>; + interrupts = <42 2>; + interrupt-parent = <&mpic>; + }; + + global-utilities@e0000 { //global utilities block + compatible = "fsl,mpc8572-guts"; + reg = <0xe0000 0x1000>; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Wed May 26 09:50:10 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 41C41106564A; Wed, 26 May 2010 09:50:10 +0000 (UTC) (envelope-from raj@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 2FB468FC0C; Wed, 26 May 2010 09:50: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 o4Q9oA9N006026; Wed, 26 May 2010 09:50:10 GMT (envelope-from raj@svn.freebsd.org) Received: (from raj@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4Q9oAZx006019; Wed, 26 May 2010 09:50:10 GMT (envelope-from raj@svn.freebsd.org) Message-Id: <201005260950.o4Q9oAZx006019@svn.freebsd.org> From: Rafal Jaworowski Date: Wed, 26 May 2010 09:50:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208561 - head/sys/boot/fdt/dts X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 09:50:10 -0000 Author: raj Date: Wed May 26 09:50:09 2010 New Revision: 208561 URL: http://svn.freebsd.org/changeset/base/208561 Log: Initial device tree source (DTS) files for Marvell ARM systems: o DB-88F5182 o DB-88F5281 o DB-88F6281 o DB-78100 o SheevaPlug This also includes device tree bindings definitions for some newly introduced nodes (mpp, gpio). Reviewed by: imp Sponsored by: The FreeBSD Foundation Added: head/sys/boot/fdt/dts/bindings-gpio.txt (contents, props changed) head/sys/boot/fdt/dts/bindings-mpp.txt (contents, props changed) head/sys/boot/fdt/dts/db78100.dts (contents, props changed) head/sys/boot/fdt/dts/db88f5182.dts (contents, props changed) head/sys/boot/fdt/dts/db88f5281.dts (contents, props changed) head/sys/boot/fdt/dts/db88f6281.dts (contents, props changed) head/sys/boot/fdt/dts/sheevaplug.dts (contents, props changed) Added: head/sys/boot/fdt/dts/bindings-gpio.txt ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/boot/fdt/dts/bindings-gpio.txt Wed May 26 09:50:09 2010 (r208561) @@ -0,0 +1,101 @@ +$FreeBSD$ + +GPIO configuration. +=================== + +1. Properties for GPIO Controllers + +1.1 #gpio-cells + +Property: #gpio-cells + +Value type: + +Description: The #gpio-cells property defines the number of cells required + to encode a gpio specifier. + + +1.2 gpio-controller + +Property: gpio-controller + +Value type: + +Description: The presence of a gpio-controller property defines a node as a + GPIO controller node. + + +1.3 pin-count + +Property: pin-count + +Value type: + +Description: The pin-count property defines the number of GPIO pins. + + +1.4 Example + + GPIO: gpio@10100 { + #gpio-cells = <3>; + compatible = "mrvl,gpio"; + reg = <0x10100 0x20>; + gpio-controller; + interrupts = <6 7 8 9>; + interrupt-parent = <&PIC>; + pin-count = <50> + }; + +2. Properties for GPIO consumer nodes. + +2.1 gpios + +Property: gpios + +Value type: encoded as arbitrary number of GPIO + specifiers. + +Description: The gpios property of a device node defines the GPIO or GPIOs + that are used by the device. The value of the gpios property + consists of an arbitrary number of GPIO specifiers. + + The first cell of the GPIO specifier is phandle of the node's + parent GPIO controller and remaining cells are defined by the + binding describing the GPIO parent, typically include + information like pin number, direction and various flags. + +Example: + gpios = <&GPIO 0 1 0 /* GPIO[0]: IN, NONE */ + &GPIO 1 2 0>; /* GPIO[1]: OUT, NONE */ + + +3. "mrvl,gpio" controller GPIO specifier + + + + +pin: 0-MAX GPIO pin number. + +dir: + 1 IN Input direction. + 2 OUT Output direction. + +flags: + 0x0000---- IN_NONE + 0x0001---- IN_POL_LOW Polarity low (inverted input value. + 0x0002---- IN_IRQ_EDGE Interrupt, edge triggered. + 0x0004---- IN_IRQ_LEVEL Interrupt, level triggered. + + 0x----0000 OUT_NONE + 0x----0001 OUT_BLINK Blink on the pin. + 0x----0002 OUT_OPEN_DRAIN Open drain output line. + 0x----0004 OUT_OPEN_SRC Open source output line. + + +Example: + gpios = <&GPIO 0 1 0x00000000 /* GPIO[0]: IN */ + &GPIO 1 2 0x00000000 /* GPIO[1]: OUT */ + &GPIO 2 1 0x00020000 /* GPIO[2]: IN, IRQ (edge) */ + &GPIO 3 1 0x00040000 /* GPIO[3]: IN, IRQ (level) */ + ... + &GPIO 10 2 0x00000001>; /* GPIO[10]: OUT, blink */ Added: head/sys/boot/fdt/dts/bindings-mpp.txt ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/boot/fdt/dts/bindings-mpp.txt Wed May 26 09:50:09 2010 (r208561) @@ -0,0 +1,50 @@ +$FreeBSD$ + +* Multi purpose pin (MPP) configuration. + +Required properties: + +- pin-map : array of pin configurations. Each pin is defined by 2 cells, + respectively: . Pins not specified in the pin-map property + are assumed to have default value of = 0, which means GPIO. + + - pin : pin number. + + - function : function ID of the pin according to the assignment tables in + User Manual. Each pin can have many possible functions depending on the + MPP unit incarnation. + +- pin-count: number of the physical MPP connections on the SOC (depending on + the model it can be 24-50, or possibly else in future devices). + +Example: + + mpp@10000 { + #pin-cells = <2>; + compatible = "mrvl,mpp"; + reg = <0x10000 0x34>; + pin-count= <50>; + pin-map = < + 0 1 /* MPP[0]: NF_IO[2] */ + 1 1 /* MPP[1]: NF_IO[3] */ + 2 1 /* MPP[2]: NF_IO[4] */ + 3 1 /* MPP[3]: NF_IO[5] */ + 4 1 /* MPP[4]: NF_IO[6] */ + 5 1 /* MPP[5]: NF_IO[7] */ + 6 1 /* MPP[6]: SYSRST_OUTn */ + 7 2 /* MPP[7]: SPI_SCn */ + 8 1 /* MPP[8]: TW_SDA */ + 9 1 /* MPP[9]: TW_SCK */ + 10 3 /* MPP[10]: UA0_TXD */ + 11 3 /* MPP[11]: UA0_RXD */ + 12 1 /* MPP[12]: SD_CLK */ + 13 1 /* MPP[13]: SD_CMD */ + 14 1 /* MPP[14]: SD_D[0] */ + 15 1 /* MPP[15]: SD_D[1] */ + 16 1 /* MPP[16]: SD_D[2] */ + 17 1 /* MPP[17]: SD_D[3] */ + 18 1 /* MPP[18]: NF_IO[0] */ + 19 1 /* MPP[19]: NF_IO[1] */ + 20 5 /* MPP[20]: SATA1_AC */ + 21 5 >; /* MPP[21]: SATA0_AC */ + }; Added: head/sys/boot/fdt/dts/db78100.dts ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/boot/fdt/dts/db78100.dts Wed May 26 09:50:09 2010 (r208561) @@ -0,0 +1,315 @@ +/* + * Copyright (c) 2010 The FreeBSD Foundation + * All rights reserved. + * + * This software was developed by Semihalf under sponsorship from + * the FreeBSD Foundation. + * + * 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 AUTHOR 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 AUTHOR 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. + * + * Marvell DB-78100 Device Tree Source. + * + * $FreeBSD$ + */ + +/dts-v1/; + +/ { + model = "mrvl,DB-78100"; + compatible = "DB-78100-BP", "DB-78100-BP-A"; + #address-cells = <1>; + #size-cells = <1>; + + aliases { + ethernet0 = &enet0; + serial0 = &serial0; + serial1 = &serial1; + mpp = &MPP; + }; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu@0 { + device_type = "cpu"; + compatible = "ARM,88FR571"; + reg = <0x0>; + d-cache-line-size = <32>; // 32 bytes + i-cache-line-size = <32>; // 32 bytes + d-cache-size = <0x4000>; // L1, 16K + i-cache-size = <0x4000>; // L1, 16K + timebase-frequency = <0>; + bus-frequency = <0>; + clock-frequency = <0>; + }; + }; + + memory { + device_type = "memory"; + reg = <0x0 0x20000000>; // 512M at 0x0 + }; + + localbus@f1000000 { + #address-cells = <2>; + #size-cells = <1>; + compatible = "mrvl,lbc"; + win-count = <14>; + + /* This reflects CPU decode windows setup. */ + ranges = <0x0 0x0f 0xf9300000 0x00100000 + 0x1 0x1e 0xfa000000 0x00100000 + 0x2 0x1d 0xfa100000 0x02000000 + 0x3 0x1b 0xfc100000 0x00000400>; + + nor@0,0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "cfi-flash"; + reg = <0x0 0x0 0x00100000>; + bank-width = <2>; + device-width = <1>; + }; + + led@1,0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "led"; + reg = <0x1 0x0 0x00100000>; + }; + + nor@2,0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "cfi-flash"; + reg = <0x2 0x0 0x02000000>; + bank-width = <2>; + device-width = <1>; + }; + + nand@3,0 { + #address-cells = <1>; + #size-cells = <1>; + reg = <0x3 0x0 0x00100000>; + bank-width = <2>; + device-width = <1>; + }; + }; + + soc78100@f1000000 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "simple-bus"; + ranges = <0x0 0xf1000000 0x00100000>; + bus-frequency = <0>; + + PIC: pic@20200 { + interrupt-controller; + #address-cells = <0>; + #interrupt-cells = <1>; + reg = <0x20200 0x3c>; + compatible = "mrvl,pic"; + }; + + timer@20300 { + compatible = "mrvl,timer"; + reg = <0x20300 0x30>; + interrupts = <8>; + interrupt-parent = <&PIC>; + mrvl,has-wdt; + }; + + MPP: mpp@10000 { + #pin-cells = <2>; + compatible = "mrvl,mpp"; + reg = <0x10000 0x34>; + pin-count = <50>; + pin-map = < + 0 2 /* MPP[0]: GE1_TXCLK */ + 1 2 /* MPP[1]: GE1_TXCTL */ + 2 2 /* MPP[2]: GE1_RXCTL */ + 3 2 /* MPP[3]: GE1_RXCLK */ + 4 2 /* MPP[4]: GE1_TXD[0] */ + 5 2 /* MPP[5]: GE1_TXD[1] */ + 6 2 /* MPP[6]: GE1_TXD[2] */ + 7 2 /* MPP[7]: GE1_TXD[3] */ + 8 2 /* MPP[8]: GE1_RXD[0] */ + 9 2 /* MPP[9]: GE1_RXD[1] */ + 10 2 /* MPP[10]: GE1_RXD[2] */ + 11 2 /* MPP[11]: GE1_RXD[3] */ + 13 3 /* MPP[13]: SYSRST_OUTn */ + 14 3 /* MPP[14]: SATA1_ACTn */ + 15 3 /* MPP[15]: SATA0_ACTn */ + 16 4 /* MPP[16]: UA2_TXD */ + 17 4 /* MPP[17]: UA2_RXD */ + 18 3 /* MPP[18]: */ + 19 3 /* MPP[19]: */ + 20 3 /* MPP[20]: */ + 21 3 /* MPP[21]: */ + 22 4 /* MPP[22]: UA3_TXD */ + 23 4 >; /* MPP[21]: UA3_RXD */ + }; + + GPIO: gpio@10100 { + #gpio-cells = <3>; + compatible = "mrvl,gpio"; + reg = <0x10100 0x20>; + gpio-controller; + interrupts = <56 57 58 59>; + interrupt-parent = <&PIC>; + }; + + rtc@10300 { + compatible = "mrvl,rtc"; + reg = <0x10300 0x08>; + }; + + twsi@11000 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "mrvl,twsi"; + reg = <0x11000 0x20>; + interrupts = <2>; + interrupt-parent = <&PIC>; + }; + + twsi@11100 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "mrvl,twsi"; + reg = <0x11100 0x20>; + interrupts = <3>; + interrupt-parent = <&PIC>; + }; + + enet0: ethernet@72000 { + #address-cells = <1>; + #size-cells = <1>; + model = "V2"; + compatible = "mrvl,ge"; + reg = <0x72000 0x2000>; + ranges = <0x0 0x72000 0x2000>; + local-mac-address = [ 00 00 00 00 00 00 ]; + interrupts = <41 42 43 40 70>; + interrupt-parent = <&PIC>; + phy-handle = <&phy0>; + + mdio@0 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "mrvl,mdio"; + + phy0: ethernet-phy@0 { + reg = <0x8>; + }; + }; + }; + + enet1: ethernet@76000 { + #address-cells = <1>; + #size-cells = <1>; + model = "V2"; + compatible = "mrvl,ge"; + reg = <0x76000 0x2000>; + ranges = <0x0 0x76000 0x2000>; + local-mac-address = [ 00 00 00 00 00 00 ]; + interrupts = <45 46 47 44 70>; + interrupt-parent = <&PIC>; + phy-handle = <&phy0>; + + mdio@0 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "mrvl,mdio"; + + phy0: ethernet-phy@0 { + reg = <0x9>; + }; + }; + }; + + serial0: serial@12000 { + compatible = "ns16550"; + reg = <0x12000 0x20>; + reg-shift = <2>; + clock-frequency = <0>; + interrupts = <12>; + interrupt-parent = <&PIC>; + }; + + serial1: serial@12100 { + compatible = "ns16550"; + reg = <0x12100 0x20>; + reg-shift = <2>; + clock-frequency = <0>; + interrupts = <13>; + interrupt-parent = <&PIC>; + }; + + usb@50000 { + compatible = "mrvl,usb-ehci", "usb-ehci"; + reg = <0x50000 0x1000>; + interrupts = <72 16>; + interrupt-parent = <&PIC>; + }; + + usb@51000 { + compatible = "mrvl,usb-ehci", "usb-ehci"; + reg = <0x51000 0x1000>; + interrupts = <72 17>; + interrupt-parent = <&PIC>; + }; + + usb@52000 { + compatible = "mrvl,usb-ehci", "usb-ehci"; + reg = <0x52000 0x1000>; + interrupts = <72 18>; + interrupt-parent = <&PIC>; + }; + + xor@60000 { + compatible = "mrvl,xor"; + reg = <0x60000 0x1000>; + interrupts = <22 23>; + interrupt-parent = <&PIC>; + }; + + crypto@90000 { + compatible = "mrvl,cesa"; + reg = <0x90000 0x10000>; + interrupts = <19>; + interrupt-parent = <&PIC>; + }; + + sata@a0000 { + compatible = "mrvl,sata"; + reg = <0xa0000 0x6000>; + interrupts = <26>; + interrupt-parent = <&PIC>; + }; + }; + + sram@fd000000 { + compatible = "mrvl,cesa-sram"; + reg = <0xfd000000 0x00100000>; + }; +}; Added: head/sys/boot/fdt/dts/db88f5182.dts ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/boot/fdt/dts/db88f5182.dts Wed May 26 09:50:09 2010 (r208561) @@ -0,0 +1,223 @@ +/* + * Copyright (c) 2010 The FreeBSD Foundation + * All rights reserved. + * + * This software was developed by Semihalf under sponsorship from + * the FreeBSD Foundation. + * + * 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 AUTHOR 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 AUTHOR 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. + * + * Marvell DB-88F5182 Device Tree Source. + * + * $FreeBSD$ + */ + +/dts-v1/; + +/ { + model = "mrvl,DB-88F5182"; + compatible = "DB-88F5182-BP", "DB-88F5182-BP-A"; + #address-cells = <1>; + #size-cells = <1>; + + aliases { + ethernet0 = &enet0; + serial0 = &serial0; + serial1 = &serial1; + mpp = &MPP; + }; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu@0 { + device_type = "cpu"; + compatible = "ARM,88FR531"; + reg = <0x0>; + d-cache-line-size = <32>; // 32 bytes + i-cache-line-size = <32>; // 32 bytes + d-cache-size = <0x8000>; // L1, 32K + i-cache-size = <0x8000>; // L1, 32K + timebase-frequency = <0>; + bus-frequency = <0>; + clock-frequency = <0>; + }; + }; + + memory { + device_type = "memory"; + reg = <0x0 0x08000000>; // 128M at 0x0 + }; + + localbus@f1000000 { + #address-cells = <2>; + #size-cells = <1>; + compatible = "mrvl,lbc"; + + /* This reflects CPU decode windows setup. */ + ranges = <0x0 0x0f 0xf9300000 0x00100000 + 0x1 0x1e 0xfa000000 0x00100000 + 0x2 0x1d 0xfa100000 0x02000000>; + + nor@0,0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "cfi-flash"; + reg = <0x0 0x0 0x00100000>; + bank-width = <2>; + device-width = <1>; + }; + + led@1,0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "led"; + reg = <0x1 0x0 0x00100000>; + }; + + nor@2,0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "cfi-flash"; + reg = <0x2 0x0 0x02000000>; + bank-width = <2>; + device-width = <1>; + }; + }; + + soc88f5182@f1000000 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "simple-bus"; + ranges = <0x0 0xf1000000 0x00100000>; + bus-frequency = <0>; + + PIC: pic@20200 { + interrupt-controller; + #address-cells = <0>; + #interrupt-cells = <1>; + reg = <0x20200 0x3c>; + compatible = "mrvl,pic"; + }; + + timer@20300 { + compatible = "mrvl,timer"; + reg = <0x20300 0x30>; + interrupts = <0>; + interrupt-parent = <&PIC>; + mrvl,has-wdt; + }; + + MPP: mpp@10000 { + #pin-cells = <2>; + compatible = "mrvl,mpp"; + reg = <0x10000 0x54>; + pin-count = <20>; + pin-map = < + 0 3 /* MPP[0]: GPIO[0] */ + 2 2 /* MPP[2]: PCI_REQn[3] */ + 3 2 /* MPP[3]: PCI_GNTn[3] */ + 4 2 /* MPP[4]: PCI_REQn[4] */ + 5 2 /* MPP[5]: PCI_GNTn[4] */ + 6 5 /* MPP[6]: SATA0_ACT */ + 7 5 /* MPP[7]: SATA1_ACT */ + 12 5 /* MPP[12]: SATA0_PRESENT */ + 13 5 /* MPP[13]: SATA1_PRESENT */ + 14 4 /* MPP[14]: NAND Flash REn[2] */ + 15 4 /* MPP[15]: NAND Flash WEn[2] */ + 16 0 /* MPP[16]: UA1_RXD */ + 17 0 /* MPP[17]: UA1_TXD */ + 18 0 /* MPP[18]: UA1_CTS */ + 19 0 >; /* MPP[19]: UA1_RTS */ + }; + + GPIO: gpio@10100 { + #gpio-cells = <3>; + compatible = "mrvl,gpio"; + reg = <0x10100 0x20>; + gpio-controller; + interrupts = <6 7 8 9>; + interrupt-parent = <&PIC>; + }; + + twsi@11000 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "mrvl,twsi"; + reg = <0x11000 0x20>; + interrupts = <43>; + interrupt-parent = <&PIC>; + }; + + enet0: ethernet@72000 { + #address-cells = <1>; + #size-cells = <1>; + model = "V1"; + compatible = "mrvl,ge"; + reg = <0x72000 0x2000>; + ranges = <0x0 0x72000 0x2000>; + local-mac-address = [ 00 00 00 00 00 00 ]; + interrupts = <18 19 20 21 22>; + interrupt-parent = <&PIC>; + }; + + serial0: serial@12000 { + compatible = "ns16550"; + reg = <0x12000 0x20>; + reg-shift = <2>; + clock-frequency = <0>; + interrupts = <3>; + interrupt-parent = <&PIC>; + }; + + serial1: serial@12100 { + compatible = "ns16550"; + reg = <0x12100 0x20>; + reg-shift = <2>; + clock-frequency = <0>; + interrupts = <4>; + interrupt-parent = <&PIC>; + }; + + usb@50000 { + compatible = "mrvl,usb-ehci", "usb-ehci"; + reg = <0x50000 0x1000>; + interrupts = <17 16>; + interrupt-parent = <&PIC>; + }; + + idma@60000 { + compatible = "mrvl,idma"; + reg = <0x60000 0x1000>; + interrupts = <24 25 26 27 23>; + interrupt-parent = <&PIC>; + }; + + sata@80000 { + compatible = "mrvl,sata"; + reg = <0x80000 0x6000>; + interrupts = <29>; + interrupt-parent = <&PIC>; + }; + }; +}; Added: head/sys/boot/fdt/dts/db88f5281.dts ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/boot/fdt/dts/db88f5281.dts Wed May 26 09:50:09 2010 (r208561) @@ -0,0 +1,227 @@ +/* + * Copyright (c) 2010 The FreeBSD Foundation + * All rights reserved. + * + * This software was developed by Semihalf under sponsorship from + * the FreeBSD Foundation. + * + * 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 AUTHOR 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 AUTHOR 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. + * + * Marvell DB-88F5281 Device Tree Source. + * + * $FreeBSD$ + */ + +/dts-v1/; + +/ { + model = "mrvl,DB-88F5281"; + compatible = "DB-88F5281-BP", "DB-88F5281-BP-A"; + #address-cells = <1>; + #size-cells = <1>; + + aliases { + ethernet0 = &enet0; + serial0 = &serial0; + serial1 = &serial1; + mpp = &MPP; + }; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu@0 { + device_type = "cpu"; + compatible = "ARM,88FR531"; + reg = <0x0>; + d-cache-line-size = <32>; // 32 bytes + i-cache-line-size = <32>; // 32 bytes + d-cache-size = <0x8000>; // L1, 32K + i-cache-size = <0x8000>; // L1, 32K + timebase-frequency = <0>; + bus-frequency = <0>; + clock-frequency = <0>; + }; + }; + + memory { + device_type = "memory"; + reg = <0x0 0x08000000>; // 128M at 0x0 + }; + + localbus@f1000000 { + #address-cells = <2>; + #size-cells = <1>; + compatible = "mrvl,lbc"; + + /* This reflects CPU decode windows setup. */ + ranges = <0x0 0x0f 0xf9300000 0x00100000 + 0x1 0x1e 0xfa000000 0x00100000 + 0x2 0x1d 0xfa100000 0x02000000>; + + nor@0,0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "cfi-flash"; + reg = <0x0 0x0 0x00100000>; + bank-width = <2>; + device-width = <1>; + }; + + led@1,0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "led"; + reg = <0x1 0x0 0x00100000>; + }; + + nor@2,0 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "cfi-flash"; + reg = <0x2 0x0 0x02000000>; + bank-width = <2>; + device-width = <1>; + }; + }; + + soc88f5281@f1000000 { + #address-cells = <1>; + #size-cells = <1>; + compatible = "simple-bus"; + ranges = <0x0 0xf1000000 0x00100000>; + bus-frequency = <0>; + + PIC: pic@20200 { + interrupt-controller; + #address-cells = <0>; + #interrupt-cells = <1>; + reg = <0x20200 0x3c>; + compatible = "mrvl,pic"; + }; + + timer@20300 { + compatible = "mrvl,timer"; + reg = <0x20300 0x30>; + interrupts = <0>; + interrupt-parent = <&PIC>; + mrvl,has-wdt; + }; + + MPP: mpp@10000 { + #pin-cells = <2>; + compatible = "mrvl,mpp"; + reg = <0x10000 0x54>; + pin-count = <20>; + pin-map = < + 0 3 /* MPP[0]: GPIO[0] */ + 2 2 /* MPP[2]: PCI_REQn[3] */ + 3 2 /* MPP[3]: PCI_GNTn[3] */ + 4 2 /* MPP[4]: PCI_REQn[4] */ + 5 2 /* MPP[5]: PCI_GNTn[4] */ + 6 3 /* MPP[6]: */ + 7 3 /* MPP[7]: */ + 8 3 /* MPP[8]: */ + 9 3 /* MPP[9]: */ + 14 4 /* MPP[14]: NAND Flash REn[2] */ + 15 4 /* MPP[15]: NAND Flash WEn[2] */ + 16 0 /* MPP[16]: UA1_RXD */ + 17 0 /* MPP[17]: UA1_TXD */ + 18 0 /* MPP[18]: UA1_CTS */ + 19 0 >; /* MPP[19]: UA1_RTS */ + }; + + GPIO: gpio@10100 { + #gpio-cells = <3>; + compatible = "mrvl,gpio"; + reg = <0x10100 0x20>; + gpio-controller; + interrupts = <6 7 8 9>; + interrupt-parent = <&PIC>; + }; + + twsi@11000 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "mrvl,twsi"; + reg = <0x11000 0x20>; + interrupts = <43>; + interrupt-parent = <&PIC>; + }; + + enet0: ethernet@72000 { + #address-cells = <1>; + #size-cells = <1>; + model = "V1"; + compatible = "mrvl,ge"; + reg = <0x72000 0x2000>; + ranges = <0x0 0x72000 0x2000>; + local-mac-address = [ 00 00 00 00 00 00 ]; + interrupts = <18 19 20 21 22>; + interrupt-parent = <&PIC>; + phy-handle = <&phy0>; + + mdio@0 { + #address-cells = <1>; + #size-cells = <0>; + compatible = "mrvl,mdio"; + + phy0: ethernet-phy@0 { + reg = <0x8>; + }; + }; + }; + + serial0: serial@12000 { + compatible = "ns16550"; + reg = <0x12000 0x20>; + reg-shift = <2>; + clock-frequency = <0>; + interrupts = <3>; + interrupt-parent = <&PIC>; + }; + + serial1: serial@12100 { + compatible = "ns16550"; + reg = <0x12100 0x20>; + reg-shift = <2>; + clock-frequency = <0>; + interrupts = <4>; + interrupt-parent = <&PIC>; + }; + + usb@50000 { + compatible = "mrvl,usb-ehci", "usb-ehci"; + reg = <0x50000 0x1000>; + interrupts = <17 16>; + interrupt-parent = <&PIC>; + }; + + idma@60000 { + compatible = "mrvl,idma"; + reg = <0x60000 0x1000>; + interrupts = <24 25 26 27 23>; + interrupt-parent = <&PIC>; + }; + }; +}; Added: head/sys/boot/fdt/dts/db88f6281.dts ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/boot/fdt/dts/db88f6281.dts Wed May 26 09:50:09 2010 (r208561) @@ -0,0 +1,306 @@ +/* + * Copyright (c) 2009-2010 The FreeBSD Foundation + * All rights reserved. + * + * This software was developed by Semihalf under sponsorship from + * the FreeBSD Foundation. + * + * 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 AUTHOR 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 AUTHOR 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. + * + * Marvell DB-88F6281 Device Tree Source. + * + * $FreeBSD$ + */ + +/dts-v1/; + +/ { + model = "mrvl,DB-88F6281"; + compatible = "DB-88F6281-BP", "DB-88F6281-BP-A"; + #address-cells = <1>; + #size-cells = <1>; + + aliases { + ethernet0 = &enet0; + mpp = &MPP; + pci0 = &pci0; + serial0 = &serial0; + serial1 = &serial1; + soc = &SOC; + sram = &SRAM; + }; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu@0 { + device_type = "cpu"; + compatible = "ARM,88FR131"; + reg = <0x0>; + d-cache-line-size = <32>; // 32 bytes + i-cache-line-size = <32>; // 32 bytes + d-cache-size = <0x4000>; // L1, 16K + i-cache-size = <0x4000>; // L1, 16K + timebase-frequency = <0>; + bus-frequency = <0>; + clock-frequency = <0>; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Wed May 26 10:46:03 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 619B3106566C; Wed, 26 May 2010 10:46:03 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4F2C78FC08; Wed, 26 May 2010 10:46:03 +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 o4QAk3qX018427; Wed, 26 May 2010 10:46:03 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4QAk3Ch018424; Wed, 26 May 2010 10:46:03 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201005261046.o4QAk3Ch018424@svn.freebsd.org> From: Robert Watson Date: Wed, 26 May 2010 10:46:03 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208562 - head/tools/regression/sockets/unix_close_race X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 10:46:03 -0000 Author: rwatson Date: Wed May 26 10:46:03 2010 New Revision: 208562 URL: http://svn.freebsd.org/changeset/base/208562 Log: Add unix_close_race, a regresion test to catch ENOTCONN being returned improperly from one of two instances of close(2) being called simultaneously on both ends of a connected UNIX domain socket. The test tool is slightly tweaked to improve failure modes, and while often does trigger the problem, doesn't do so consistently due to the nature of the race. PR: kern/144061 Submitted by: Mikolaj Golub MFC after: 3 days Added: head/tools/regression/sockets/unix_close_race/ head/tools/regression/sockets/unix_close_race/Makefile (contents, props changed) head/tools/regression/sockets/unix_close_race/unix_close_race.c (contents, props changed) Added: head/tools/regression/sockets/unix_close_race/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/regression/sockets/unix_close_race/Makefile Wed May 26 10:46:03 2010 (r208562) @@ -0,0 +1,7 @@ +# $FreeBSD$ + +PROG= unix_close_race +NO_MAN= +WARNS?= 3 + +.include Added: head/tools/regression/sockets/unix_close_race/unix_close_race.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/regression/sockets/unix_close_race/unix_close_race.c Wed May 26 10:46:03 2010 (r208562) @@ -0,0 +1,132 @@ +/*- + * Copyright (c) 2010 Mikolaj Golub + * 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 AUTHOR 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 AUTHOR 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$ + */ + +/* + * This regression test attempts to trigger a race that occurs when both + * endpoints of a connected UNIX domain socket are closed at once. The two + * close paths may run concurrently leading to a call to sodisconnect() on an + * already-closed socket in kernel. Before it was fixed, this might lead to + * ENOTCONN being returned improperly from close(). + * + * This race is fairly timing-dependent, so it effectively requires SMP, and + * may not even trigger then. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define UNIXSTR_PATH "/tmp/mytest.socket" +#define USLEEP 100 +#define LOOPS 100000 + +int +main(int argc, char **argv) +{ + struct sockaddr_un servaddr; + int listenfd, connfd, pid; + u_int counter, ncpus; + size_t len; + + len = sizeof(ncpus); + if (sysctlbyname("kern.smp.cpus", &ncpus, &len, NULL, 0) < 0) + err(1, "kern.smp.cpus"); + if (len != sizeof(ncpus)) + errx(1, "kern.smp.cpus: invalid length"); + if (ncpus < 2) + warnx("SMP not present, test may be unable to trigger race"); + + /* + * Create a UNIX domain socket that the parent will repeatedly + * accept() from, and that the child will repeatedly connect() to. + */ + if ((listenfd = socket(AF_LOCAL, SOCK_STREAM, 0)) < 0) + err(1, "parent: socket error"); + (void)unlink(UNIXSTR_PATH); + bzero(&servaddr, sizeof(servaddr)); + servaddr.sun_family = AF_LOCAL; + strcpy(servaddr.sun_path, UNIXSTR_PATH); + if (bind(listenfd, (struct sockaddr *) &servaddr, + sizeof(servaddr)) < 0) + err(1, "parent: bind error"); + if (listen(listenfd, 1024) < 0) + err(1, "parent: listen error"); + + pid = fork(); + if (pid == -1) + err(1, "fork()"); + if (pid != 0) { + /* + * In the parent, repeatedly connect and disconnect from the + * socket, attempting to induce the race. + */ + close(listenfd); + sleep(1); + bzero(&servaddr, sizeof(servaddr)); + servaddr.sun_family = AF_LOCAL; + strcpy(servaddr.sun_path, UNIXSTR_PATH); + for (counter = 0; counter < LOOPS; counter++) { + if ((connfd = socket(AF_LOCAL, SOCK_STREAM, 0)) < 0) + err(1, "child: socket error"); + if (connect(connfd, (struct sockaddr *)&servaddr, + sizeof(servaddr)) < 0) + err(1, "child: connect error"); + if (close(connfd) < 0) + err(1, "child: close error"); + usleep(USLEEP); + } + (void)kill(pid, SIGTERM); + } else { + /* + * In the child, loop accepting and closing. We may pick up + * the race here so report errors from close(). + */ + for ( ; ; ) { + if ((connfd = accept(listenfd, + (struct sockaddr *)NULL, NULL)) < 0) + err(1, "parent: accept error"); + if (close(connfd) < 0) + err(1, "parent: close error"); + } + } + printf("OK\n"); + exit(0); +} From owner-svn-src-all@FreeBSD.ORG Wed May 26 11:31:57 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AB496106566C; Wed, 26 May 2010 11:31:57 +0000 (UTC) (envelope-from nyan@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9A1108FC12; Wed, 26 May 2010 11:31: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 o4QBVvtR032220; Wed, 26 May 2010 11:31:57 GMT (envelope-from nyan@svn.freebsd.org) Received: (from nyan@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4QBVv7O032218; Wed, 26 May 2010 11:31:57 GMT (envelope-from nyan@svn.freebsd.org) Message-Id: <201005261131.o4QBVv7O032218@svn.freebsd.org> From: Takahashi Yoshihiro Date: Wed, 26 May 2010 11:31:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208563 - head/sys/pc98/cbus X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 11:31:57 -0000 Author: nyan Date: Wed May 26 11:31:57 2010 New Revision: 208563 URL: http://svn.freebsd.org/changeset/base/208563 Log: Reduce diffs against syscons_isa.c. No functional changes. Modified: head/sys/pc98/cbus/syscons_cbus.c Modified: head/sys/pc98/cbus/syscons_cbus.c ============================================================================== --- head/sys/pc98/cbus/syscons_cbus.c Wed May 26 10:46:03 2010 (r208562) +++ head/sys/pc98/cbus/syscons_cbus.c Wed May 26 11:31:57 2010 (r208563) @@ -22,10 +22,11 @@ * 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 +__FBSDID("$FreeBSD$"); + #include "opt_syscons.h" #include @@ -47,7 +48,7 @@ static devclass_t sc_devclass; -static sc_softc_t main_softc; +static sc_softc_t main_softc; #ifdef SC_NO_SUSPEND_VTYSWITCH static int sc_no_suspend_vtswitch = 1; #else @@ -55,31 +56,34 @@ static int sc_no_suspend_vtswitch = 0; #endif static int sc_cur_scr; -TUNABLE_INT("hw.syscons.sc_no_suspend_vtswitch", (int *)&sc_no_suspend_vtswitch); +TUNABLE_INT("hw.syscons.sc_no_suspend_vtswitch", &sc_no_suspend_vtswitch); SYSCTL_DECL(_hw_syscons); SYSCTL_INT(_hw_syscons, OID_AUTO, sc_no_suspend_vtswitch, CTLFLAG_RW, - &sc_no_suspend_vtswitch, 0, "Disable VT switch before suspend."); + &sc_no_suspend_vtswitch, 0, "Disable VT switch before suspend."); static void -scidentify (driver_t *driver, device_t parent) +scidentify(driver_t *driver, device_t parent) { + BUS_ADD_CHILD(parent, ISA_ORDER_SPECULATIVE, "sc", 0); } static int scprobe(device_t dev) { + /* No pnp support */ if (isa_get_vendorid(dev)) return (ENXIO); device_set_desc(dev, "System console"); - return sc_probe_unit(device_get_unit(dev), device_get_flags(dev)); + return (sc_probe_unit(device_get_unit(dev), device_get_flags(dev))); } static int scattach(device_t dev) { + return sc_attach_unit(device_get_unit(dev), device_get_flags(dev)); } @@ -127,7 +131,8 @@ scresume(device_t dev) int sc_max_unit(void) { - return devclass_get_maxunit(sc_devclass); + + return (devclass_get_maxunit(sc_devclass)); } sc_softc_t @@ -136,52 +141,52 @@ sc_softc_t sc_softc_t *sc; if (unit < 0) - return NULL; - if (flags & SC_KERNEL_CONSOLE) { + return (NULL); + if ((flags & SC_KERNEL_CONSOLE) != 0) { /* FIXME: clear if it is wired to another unit! */ sc = &main_softc; } else { - sc = (sc_softc_t *)device_get_softc(devclass_get_device(sc_devclass, unit)); + sc = device_get_softc(devclass_get_device(sc_devclass, unit)); if (sc == NULL) - return NULL; + return (NULL); } sc->unit = unit; - if (!(sc->flags & SC_INIT_DONE)) { + if ((sc->flags & SC_INIT_DONE) == 0) { sc->keyboard = -1; sc->adapter = -1; sc->mouse_char = SC_MOUSE_CHAR; } - return sc; + return (sc); } sc_softc_t *sc_find_softc(struct video_adapter *adp, struct keyboard *kbd) { sc_softc_t *sc; - int units; int i; + int units; sc = &main_softc; - if (((adp == NULL) || (adp == sc->adp)) - && ((kbd == NULL) || (kbd == sc->kbd))) - return sc; + if ((adp == NULL || adp == sc->adp) && + (kbd == NULL || kbd == sc->kbd)) + return (sc); units = devclass_get_maxunit(sc_devclass); for (i = 0; i < units; ++i) { - sc = (sc_softc_t *)device_get_softc(devclass_get_device(sc_devclass, i)); + sc = device_get_softc(devclass_get_device(sc_devclass, i)); if (sc == NULL) continue; - if (((adp == NULL) || (adp == sc->adp)) - && ((kbd == NULL) || (kbd == sc->kbd))) - return sc; + if ((adp == NULL || adp == sc->adp) && + (kbd == NULL || kbd == sc->kbd)) + return (sc); } - return NULL; + return (NULL); } int sc_get_cons_priority(int *unit, int *flags) { const char *at; - int u, f; + int f, u; *unit = -1; for (u = 0; u < 16; u++) { @@ -207,7 +212,7 @@ sc_get_cons_priority(int *unit, int *fla *unit = 0; *flags = 0; } - return CN_INTERNAL; + return (CN_INTERNAL); } void @@ -225,12 +230,12 @@ sc_tone(int herz) if (herz) { if (timer_spkr_acquire()) - return EBUSY; + return (EBUSY); timer_spkr_setfreq(herz); - } else { + } else timer_spkr_release(); - } - return 0; + + return (0); } static device_method_t sc_methods[] = { From owner-svn-src-all@FreeBSD.ORG Wed May 26 15:29:54 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 00B16106566B; Wed, 26 May 2010 15:29:54 +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 E3A648FC0C; Wed, 26 May 2010 15:29: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 o4QFTrJM084438; Wed, 26 May 2010 15:29:53 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4QFTrIA084436; Wed, 26 May 2010 15:29:53 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201005261529.o4QFTrIA084436@svn.freebsd.org> From: Jung-uk Kim Date: Wed, 26 May 2010 15:29:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208564 - head/sys/isa X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 15:29:54 -0000 Author: jkim Date: Wed May 26 15:29:53 2010 New Revision: 208564 URL: http://svn.freebsd.org/changeset/base/208564 Log: Let the first device suspend and the last device resume syscons(4). Modified: head/sys/isa/syscons_isa.c Modified: head/sys/isa/syscons_isa.c ============================================================================== --- head/sys/isa/syscons_isa.c Wed May 26 11:31:57 2010 (r208563) +++ head/sys/isa/syscons_isa.c Wed May 26 15:29:53 2010 (r208564) @@ -116,10 +116,10 @@ scsuspend(device_t dev) sc = &main_softc; - if (sc->cur_scp == NULL || sc->suspend_in_progress) + if (sc->cur_scp == NULL) return (0); - if (!sc_no_suspend_vtswitch) { + if (sc->suspend_in_progress == 0 && !sc_no_suspend_vtswitch) { sc_cur_scr = sc->cur_scp->index; do { sc_switch_scr(sc, 0); @@ -128,8 +128,7 @@ scsuspend(device_t dev) pause("scsuspend", hz); } while (retry--); } - - sc->suspend_in_progress = TRUE; + sc->suspend_in_progress++; return (0); } @@ -141,12 +140,8 @@ scresume(device_t dev) sc = &main_softc; - if (!sc->suspend_in_progress) - return (0); - - sc->suspend_in_progress = FALSE; - - if (!sc_no_suspend_vtswitch) + sc->suspend_in_progress--; + if (sc->suspend_in_progress == 0 && !sc_no_suspend_vtswitch) sc_switch_scr(sc, sc_cur_scr); return (0); From owner-svn-src-all@FreeBSD.ORG Wed May 26 15:36:30 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 24354106566B; Wed, 26 May 2010 15:36:30 +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 131148FC1E; Wed, 26 May 2010 15:36: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 o4QFaTXs085921; Wed, 26 May 2010 15:36:29 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4QFaTkR085919; Wed, 26 May 2010 15:36:29 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201005261536.o4QFaTkR085919@svn.freebsd.org> From: Konstantin Belousov Date: Wed, 26 May 2010 15:36:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208565 - head/sys/modules X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 15:36:30 -0000 Author: kib Date: Wed May 26 15:36:29 2010 New Revision: 208565 URL: http://svn.freebsd.org/changeset/base/208565 Log: Remove a check that should be always true. Discussed with: pjd MFC after: 1 week Modified: head/sys/modules/Makefile Modified: head/sys/modules/Makefile ============================================================================== --- head/sys/modules/Makefile Wed May 26 15:29:53 2010 (r208564) +++ head/sys/modules/Makefile Wed May 26 15:36:29 2010 (r208565) @@ -476,10 +476,8 @@ _nxge= nxge _wpi= wpi _wpifw= wpifw .if ${MK_CRYPT} != "no" || defined(ALL_MODULES) -.if exists(${.CURDIR}/../crypto/via) _padlock= padlock .endif -.endif _s3= s3 _twa= twa _vesa= vesa @@ -555,10 +553,8 @@ _nxge= nxge _opensolaris= opensolaris .endif .if ${MK_CRYPT} != "no" || defined(ALL_MODULES) -.if exists(${.CURDIR}/../crypto/via) _padlock= padlock .endif -.endif _pccard= pccard _rdma= rdma _s3= s3 From owner-svn-src-all@FreeBSD.ORG Wed May 26 15:39:43 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EB9F91065676; Wed, 26 May 2010 15:39:43 +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 DA64C8FC16; Wed, 26 May 2010 15:39: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 o4QFdhxi086664; Wed, 26 May 2010 15:39:43 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4QFdhRk086661; Wed, 26 May 2010 15:39:43 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201005261539.o4QFdhRk086661@svn.freebsd.org> From: Konstantin Belousov Date: Wed, 26 May 2010 15:39:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208566 - in head/sys: kern sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 15:39:44 -0000 Author: kib Date: Wed May 26 15:39:43 2010 New Revision: 208566 URL: http://svn.freebsd.org/changeset/base/208566 Log: Allow to use syscallname(9) outside subr_trap.c. MFC after: 1 month Modified: head/sys/kern/subr_trap.c head/sys/sys/sysent.h Modified: head/sys/kern/subr_trap.c ============================================================================== --- head/sys/kern/subr_trap.c Wed May 26 15:36:29 2010 (r208565) +++ head/sys/kern/subr_trap.c Wed May 26 15:39:43 2010 (r208566) @@ -260,8 +260,7 @@ ast(struct trapframe *framep) } #ifdef HAVE_SYSCALL_ARGS_DEF -static const char *syscallname(struct proc *p, u_int code) __unused; -static const char * +const char * syscallname(struct proc *p, u_int code) { static const char unknown[] = "unknown"; Modified: head/sys/sys/sysent.h ============================================================================== --- head/sys/sys/sysent.h Wed May 26 15:36:29 2010 (r208565) +++ head/sys/sys/sysent.h Wed May 26 15:39:43 2010 (r208566) @@ -202,6 +202,9 @@ int syscall_module_handler(struct module int syscall_helper_register(struct syscall_helper_data *sd); int syscall_helper_unregister(struct syscall_helper_data *sd); +struct proc; +const char *syscallname(struct proc *p, u_int code); + /* Special purpose system call functions. */ struct nosys_args; From owner-svn-src-all@FreeBSD.ORG Wed May 26 16:37:55 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3DA85106566C; Wed, 26 May 2010 16:37:55 +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 2CA238FC16; Wed, 26 May 2010 16:37: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 o4QGbsTF099491; Wed, 26 May 2010 16:37:54 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4QGbstv099489; Wed, 26 May 2010 16:37:54 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201005261637.o4QGbstv099489@svn.freebsd.org> From: Jung-uk Kim Date: Wed, 26 May 2010 16:37:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208567 - head/sys/isa X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 16:37:55 -0000 Author: jkim Date: Wed May 26 16:37:54 2010 New Revision: 208567 URL: http://svn.freebsd.org/changeset/base/208567 Log: Do not attempt to switch to the same VTs between suspend and resume. Modified: head/sys/isa/syscons_isa.c Modified: head/sys/isa/syscons_isa.c ============================================================================== --- head/sys/isa/syscons_isa.c Wed May 26 15:39:43 2010 (r208566) +++ head/sys/isa/syscons_isa.c Wed May 26 16:37:54 2010 (r208567) @@ -119,14 +119,15 @@ scsuspend(device_t dev) if (sc->cur_scp == NULL) return (0); - if (sc->suspend_in_progress == 0 && !sc_no_suspend_vtswitch) { + if (sc->suspend_in_progress == 0) { sc_cur_scr = sc->cur_scp->index; - do { - sc_switch_scr(sc, 0); - if (!sc->switch_in_progress) - break; - pause("scsuspend", hz); - } while (retry--); + if (!sc_no_suspend_vtswitch && sc_cur_scr != 0) + do { + sc_switch_scr(sc, 0); + if (!sc->switch_in_progress) + break; + pause("scsuspend", hz); + } while (retry--); } sc->suspend_in_progress++; @@ -141,8 +142,9 @@ scresume(device_t dev) sc = &main_softc; sc->suspend_in_progress--; - if (sc->suspend_in_progress == 0 && !sc_no_suspend_vtswitch) - sc_switch_scr(sc, sc_cur_scr); + if (sc->suspend_in_progress == 0) + if (!sc_no_suspend_vtswitch && sc_cur_scr != 0) + sc_switch_scr(sc, sc_cur_scr); return (0); } From owner-svn-src-all@FreeBSD.ORG Wed May 26 17:05:54 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Wed May 26 17:07:39 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Wed May 26 17:11:01 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Wed May 26 17:18:34 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Wed May 26 17:30:14 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Wed May 26 17:30:19 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9175C1065670; Wed, 26 May 2010 17:30:19 +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 7A6348FC08; Wed, 26 May 2010 17:30:19 +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 o4QHUJ2T011338; Wed, 26 May 2010 17:30:19 GMT (envelope-from marius@svn.freebsd.org) Received: (from marius@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4QHUJs8011336; Wed, 26 May 2010 17:30:19 GMT (envelope-from marius@svn.freebsd.org) Message-Id: <201005261730.o4QHUJs8011336@svn.freebsd.org> From: Marius Strobl Date: Wed, 26 May 2010 17:30:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208573 - stable/7/sys/modules/ata/atadisk X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 17:30:19 -0000 Author: marius Date: Wed May 26 17:30:19 2010 New Revision: 208573 URL: http://svn.freebsd.org/changeset/base/208573 Log: MFC: r208468 At least on sparc64 this module requires ata_machdep.c. Modified: stable/7/sys/modules/ata/atadisk/Makefile Directory Properties: stable/7/sys/ (props changed) stable/7/sys/cddl/contrib/opensolaris/ (props changed) stable/7/sys/contrib/dev/acpica/ (props changed) stable/7/sys/contrib/pf/ (props changed) Modified: stable/7/sys/modules/ata/atadisk/Makefile ============================================================================== --- stable/7/sys/modules/ata/atadisk/Makefile Wed May 26 17:30:14 2010 (r208572) +++ stable/7/sys/modules/ata/atadisk/Makefile Wed May 26 17:30:19 2010 (r208573) @@ -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 From owner-svn-src-all@FreeBSD.ORG Wed May 26 18:00:45 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 24B6A1065673; Wed, 26 May 2010 18:00: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 10FFE8FC22; Wed, 26 May 2010 18:00: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 o4QI0jc2018146; Wed, 26 May 2010 18:00:45 GMT (envelope-from alc@svn.freebsd.org) Received: (from alc@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4QI0iho018130; Wed, 26 May 2010 18:00:44 GMT (envelope-from alc@svn.freebsd.org) Message-Id: <201005261800.o4QI0iho018130@svn.freebsd.org> From: Alan Cox Date: Wed, 26 May 2010 18:00:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208574 - in head/sys: amd64/amd64 arm/arm i386/i386 i386/xen ia64/ia64 mips/mips powerpc/aim powerpc/booke sparc64/sparc64 sun4v/sun4v vm X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 18:00:45 -0000 Author: alc Date: Wed May 26 18:00:44 2010 New Revision: 208574 URL: http://svn.freebsd.org/changeset/base/208574 Log: Push down page queues lock acquisition in pmap_enter_object() and pmap_is_referenced(). Eliminate the corresponding page queues lock acquisitions from vm_map_pmap_enter() and mincore(), respectively. In mincore(), this allows some additional cases to complete without ever acquiring the page queues lock. Assert that the page is managed in pmap_is_referenced(). On powerpc/aim, push down the page queues lock acquisition from moea*_is_modified() and moea*_is_referenced() into moea*_query_bit(). Again, this will allow some additional cases to complete without ever acquiring the page queues lock. Reorder a few statements in vm_page_dontneed() so that a race can't lead to an old reference persisting. This scenario is described in detail by a comment. Correct a spelling error in vm_page_dontneed(). Assert that the object is locked in vm_page_clear_dirty(), and restrict the page queues lock assertion to just those cases in which the page is currently writeable. Add object locking to vnode_pager_generic_putpages(). This was the one and only place where vm_page_clear_dirty() was being called without the object being locked. Eliminate an unnecessary vm_page_lock() around vnode_pager_setsize()'s call to vm_page_clear_dirty(). Change vnode_pager_generic_putpages() to the modern-style of function definition. Also, change the name of one of the parameters to follow virtual memory system naming conventions. Reviewed by: kib Modified: head/sys/amd64/amd64/pmap.c head/sys/arm/arm/pmap.c head/sys/i386/i386/pmap.c head/sys/i386/xen/pmap.c head/sys/ia64/ia64/pmap.c head/sys/mips/mips/pmap.c head/sys/powerpc/aim/mmu_oea.c head/sys/powerpc/aim/mmu_oea64.c head/sys/powerpc/booke/pmap.c head/sys/sparc64/sparc64/pmap.c head/sys/sun4v/sun4v/pmap.c head/sys/vm/vm_map.c head/sys/vm/vm_mmap.c head/sys/vm/vm_page.c head/sys/vm/vnode_pager.c Modified: head/sys/amd64/amd64/pmap.c ============================================================================== --- head/sys/amd64/amd64/pmap.c Wed May 26 17:30:19 2010 (r208573) +++ head/sys/amd64/amd64/pmap.c Wed May 26 18:00:44 2010 (r208574) @@ -3389,6 +3389,7 @@ pmap_enter_object(pmap_t pmap, vm_offset psize = atop(end - start); mpte = NULL; m = m_start; + vm_page_lock_queues(); PMAP_LOCK(pmap); while (m != NULL && (diff = m->pindex - m_start->pindex) < psize) { va = start + ptoa(diff); @@ -3402,6 +3403,7 @@ pmap_enter_object(pmap_t pmap, vm_offset mpte); m = TAILQ_NEXT(m, listq); } + vm_page_unlock_queues(); PMAP_UNLOCK(pmap); } @@ -4209,12 +4211,15 @@ pmap_is_prefaultable(pmap_t pmap, vm_off boolean_t pmap_is_referenced(vm_page_t m) { + boolean_t rv; - if (m->flags & PG_FICTITIOUS) - return (FALSE); - if (pmap_is_referenced_pvh(&m->md)) - return (TRUE); - return (pmap_is_referenced_pvh(pa_to_pvh(VM_PAGE_TO_PHYS(m)))); + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_is_referenced: page %p is not managed", m)); + vm_page_lock_queues(); + rv = pmap_is_referenced_pvh(&m->md) || + pmap_is_referenced_pvh(pa_to_pvh(VM_PAGE_TO_PHYS(m))); + vm_page_unlock_queues(); + return (rv); } /* Modified: head/sys/arm/arm/pmap.c ============================================================================== --- head/sys/arm/arm/pmap.c Wed May 26 17:30:19 2010 (r208573) +++ head/sys/arm/arm/pmap.c Wed May 26 18:00:44 2010 (r208574) @@ -3589,12 +3589,14 @@ pmap_enter_object(pmap_t pmap, vm_offset psize = atop(end - start); m = m_start; + vm_page_lock_queues(); PMAP_LOCK(pmap); while (m != NULL && (diff = m->pindex - m_start->pindex) < psize) { pmap_enter_locked(pmap, start + ptoa(diff), m, prot & (VM_PROT_READ | VM_PROT_EXECUTE), FALSE, M_NOWAIT); m = TAILQ_NEXT(m, listq); } + vm_page_unlock_queues(); PMAP_UNLOCK(pmap); } @@ -4521,8 +4523,9 @@ boolean_t pmap_is_referenced(vm_page_t m) { - return ((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0 && - (m->md.pvh_attrs & PVF_REF) != 0); + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_is_referenced: page %p is not managed", m)); + return ((m->md.pvh_attrs & PVF_REF) != 0); } /* Modified: head/sys/i386/i386/pmap.c ============================================================================== --- head/sys/i386/i386/pmap.c Wed May 26 17:30:19 2010 (r208573) +++ head/sys/i386/i386/pmap.c Wed May 26 18:00:44 2010 (r208574) @@ -3519,6 +3519,7 @@ pmap_enter_object(pmap_t pmap, vm_offset psize = atop(end - start); mpte = NULL; m = m_start; + vm_page_lock_queues(); PMAP_LOCK(pmap); while (m != NULL && (diff = m->pindex - m_start->pindex) < psize) { va = start + ptoa(diff); @@ -3532,6 +3533,7 @@ pmap_enter_object(pmap_t pmap, vm_offset mpte); m = TAILQ_NEXT(m, listq); } + vm_page_unlock_queues(); PMAP_UNLOCK(pmap); } @@ -4377,12 +4379,15 @@ pmap_is_prefaultable(pmap_t pmap, vm_off boolean_t pmap_is_referenced(vm_page_t m) { + boolean_t rv; - if (m->flags & PG_FICTITIOUS) - return (FALSE); - if (pmap_is_referenced_pvh(&m->md)) - return (TRUE); - return (pmap_is_referenced_pvh(pa_to_pvh(VM_PAGE_TO_PHYS(m)))); + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_is_referenced: page %p is not managed", m)); + vm_page_lock_queues(); + rv = pmap_is_referenced_pvh(&m->md) || + pmap_is_referenced_pvh(pa_to_pvh(VM_PAGE_TO_PHYS(m))); + vm_page_unlock_queues(); + return (rv); } /* Modified: head/sys/i386/xen/pmap.c ============================================================================== --- head/sys/i386/xen/pmap.c Wed May 26 17:30:19 2010 (r208573) +++ head/sys/i386/xen/pmap.c Wed May 26 18:00:44 2010 (r208574) @@ -2901,6 +2901,7 @@ pmap_enter_object(pmap_t pmap, vm_offset mpte = NULL; m = m_start; + vm_page_lock_queues(); PMAP_LOCK(pmap); while (m != NULL && (diff = m->pindex - m_start->pindex) < psize) { mpte = pmap_enter_quick_locked(&mclp, &count, pmap, start + ptoa(diff), m, @@ -2917,7 +2918,7 @@ pmap_enter_object(pmap_t pmap, vm_offset error = HYPERVISOR_multicall(mcl, count); KASSERT(error == 0, ("bad multicall %d", error)); } - + vm_page_unlock_queues(); PMAP_UNLOCK(pmap); } @@ -3734,11 +3735,11 @@ pmap_is_referenced(vm_page_t m) pmap_t pmap; boolean_t rv; + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_is_referenced: page %p is not managed", m)); rv = FALSE; - if (m->flags & PG_FICTITIOUS) - return (rv); + vm_page_lock_queues(); sched_pin(); - mtx_assert(&vm_page_queue_mtx, MA_OWNED); TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { pmap = PV_PMAP(pv); PMAP_LOCK(pmap); @@ -3751,6 +3752,7 @@ pmap_is_referenced(vm_page_t m) if (*PMAP1) PT_SET_MA(PADDR1, 0); sched_unpin(); + vm_page_unlock_queues(); return (rv); } Modified: head/sys/ia64/ia64/pmap.c ============================================================================== --- head/sys/ia64/ia64/pmap.c Wed May 26 17:30:19 2010 (r208573) +++ head/sys/ia64/ia64/pmap.c Wed May 26 18:00:44 2010 (r208574) @@ -1625,12 +1625,14 @@ pmap_enter_object(pmap_t pmap, vm_offset VM_OBJECT_LOCK_ASSERT(m_start->object, MA_OWNED); psize = atop(end - start); m = m_start; + vm_page_lock_queues(); PMAP_LOCK(pmap); oldpmap = pmap_switch(pmap); while (m != NULL && (diff = m->pindex - m_start->pindex) < psize) { pmap_enter_quick_locked(pmap, start + ptoa(diff), m, prot); m = TAILQ_NEXT(m, listq); } + vm_page_unlock_queues(); pmap_switch(oldpmap); PMAP_UNLOCK(pmap); } @@ -2041,9 +2043,10 @@ pmap_is_referenced(vm_page_t m) pv_entry_t pv; boolean_t rv; + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_is_referenced: page %p is not managed", m)); rv = FALSE; - if (m->flags & PG_FICTITIOUS) - return (rv); + vm_page_lock_queues(); TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { PMAP_LOCK(pv->pv_pmap); oldpmap = pmap_switch(pv->pv_pmap); @@ -2055,6 +2058,7 @@ pmap_is_referenced(vm_page_t m) if (rv) break; } + vm_page_unlock_queues(); return (rv); } Modified: head/sys/mips/mips/pmap.c ============================================================================== --- head/sys/mips/mips/pmap.c Wed May 26 17:30:19 2010 (r208573) +++ head/sys/mips/mips/pmap.c Wed May 26 18:00:44 2010 (r208574) @@ -2130,12 +2130,14 @@ pmap_enter_object(pmap_t pmap, vm_offset psize = atop(end - start); mpte = NULL; m = m_start; + vm_page_lock_queues(); PMAP_LOCK(pmap); while (m != NULL && (diff = m->pindex - m_start->pindex) < psize) { mpte = pmap_enter_quick_locked(pmap, start + ptoa(diff), m, prot, mpte); m = TAILQ_NEXT(m, listq); } + vm_page_unlock_queues(); PMAP_UNLOCK(pmap); } @@ -2671,8 +2673,9 @@ boolean_t pmap_is_referenced(vm_page_t m) { - return ((m->flags & PG_FICTITIOUS) == 0 && - (m->md.pv_flags & PV_TABLE_REF) != 0); + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_is_referenced: page %p is not managed", m)); + return ((m->md.pv_flags & PV_TABLE_REF) != 0); } /* Modified: head/sys/powerpc/aim/mmu_oea.c ============================================================================== --- head/sys/powerpc/aim/mmu_oea.c Wed May 26 17:30:19 2010 (r208573) +++ head/sys/powerpc/aim/mmu_oea.c Wed May 26 18:00:44 2010 (r208574) @@ -1197,12 +1197,14 @@ moea_enter_object(mmu_t mmu, pmap_t pm, psize = atop(end - start); m = m_start; + vm_page_lock_queues(); PMAP_LOCK(pm); while (m != NULL && (diff = m->pindex - m_start->pindex) < psize) { moea_enter_locked(pm, start + ptoa(diff), m, prot & (VM_PROT_READ | VM_PROT_EXECUTE), FALSE); m = TAILQ_NEXT(m, listq); } + vm_page_unlock_queues(); PMAP_UNLOCK(pm); } @@ -1282,15 +1284,14 @@ boolean_t moea_is_referenced(mmu_t mmu, vm_page_t m) { - if ((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) != 0) - return (FALSE); + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("moea_is_referenced: page %p is not managed", m)); return (moea_query_bit(m, PTE_REF)); } boolean_t moea_is_modified(mmu_t mmu, vm_page_t m) { - boolean_t rv; KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, ("moea_is_modified: page %p is not managed", m)); @@ -1304,10 +1305,7 @@ moea_is_modified(mmu_t mmu, vm_page_t m) if ((m->oflags & VPO_BUSY) == 0 && (m->flags & PG_WRITEABLE) == 0) return (FALSE); - vm_page_lock_queues(); - rv = moea_query_bit(m, PTE_CHG); - vm_page_unlock_queues(); - return (rv); + return (moea_query_bit(m, PTE_CHG)); } void @@ -2268,6 +2266,7 @@ moea_query_bit(vm_page_t m, int ptebit) if (moea_attr_fetch(m) & ptebit) return (TRUE); + vm_page_lock_queues(); LIST_FOREACH(pvo, vm_page_to_pvoh(m), pvo_vlink) { MOEA_PVO_CHECK(pvo); /* sanity check */ @@ -2278,6 +2277,7 @@ moea_query_bit(vm_page_t m, int ptebit) if (pvo->pvo_pte.pte.pte_lo & ptebit) { moea_attr_save(m, ptebit); MOEA_PVO_CHECK(pvo); /* sanity check */ + vm_page_unlock_queues(); return (TRUE); } } @@ -2303,11 +2303,13 @@ moea_query_bit(vm_page_t m, int ptebit) if (pvo->pvo_pte.pte.pte_lo & ptebit) { moea_attr_save(m, ptebit); MOEA_PVO_CHECK(pvo); /* sanity check */ + vm_page_unlock_queues(); return (TRUE); } } } + vm_page_unlock_queues(); return (FALSE); } Modified: head/sys/powerpc/aim/mmu_oea64.c ============================================================================== --- head/sys/powerpc/aim/mmu_oea64.c Wed May 26 17:30:19 2010 (r208573) +++ head/sys/powerpc/aim/mmu_oea64.c Wed May 26 18:00:44 2010 (r208574) @@ -1330,12 +1330,14 @@ moea64_enter_object(mmu_t mmu, pmap_t pm psize = atop(end - start); m = m_start; + vm_page_lock_queues(); PMAP_LOCK(pm); while (m != NULL && (diff = m->pindex - m_start->pindex) < psize) { moea64_enter_locked(pm, start + ptoa(diff), m, prot & (VM_PROT_READ | VM_PROT_EXECUTE), FALSE); m = TAILQ_NEXT(m, listq); } + vm_page_unlock_queues(); PMAP_UNLOCK(pm); } @@ -1477,15 +1479,14 @@ boolean_t moea64_is_referenced(mmu_t mmu, vm_page_t m) { - if ((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) != 0) - return (FALSE); + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("moea64_is_referenced: page %p is not managed", m)); return (moea64_query_bit(m, PTE_REF)); } boolean_t moea64_is_modified(mmu_t mmu, vm_page_t m) { - boolean_t rv; KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, ("moea64_is_modified: page %p is not managed", m)); @@ -1499,10 +1500,7 @@ moea64_is_modified(mmu_t mmu, vm_page_t if ((m->oflags & VPO_BUSY) == 0 && (m->flags & PG_WRITEABLE) == 0) return (FALSE); - vm_page_lock_queues(); - rv = moea64_query_bit(m, LPTE_CHG); - vm_page_unlock_queues(); - return (rv); + return (moea64_query_bit(m, LPTE_CHG)); } void @@ -2394,7 +2392,7 @@ moea64_query_bit(vm_page_t m, u_int64_t if (moea64_attr_fetch(m) & ptebit) return (TRUE); - mtx_assert(&vm_page_queue_mtx, MA_OWNED); + vm_page_lock_queues(); LIST_FOREACH(pvo, vm_page_to_pvoh(m), pvo_vlink) { MOEA_PVO_CHECK(pvo); /* sanity check */ @@ -2406,6 +2404,7 @@ moea64_query_bit(vm_page_t m, u_int64_t if (pvo->pvo_pte.lpte.pte_lo & ptebit) { moea64_attr_save(m, ptebit); MOEA_PVO_CHECK(pvo); /* sanity check */ + vm_page_unlock_queues(); return (TRUE); } } @@ -2433,12 +2432,14 @@ moea64_query_bit(vm_page_t m, u_int64_t moea64_attr_save(m, ptebit); MOEA_PVO_CHECK(pvo); /* sanity check */ + vm_page_unlock_queues(); return (TRUE); } } UNLOCK_TABLE(); } + vm_page_unlock_queues(); return (FALSE); } Modified: head/sys/powerpc/booke/pmap.c ============================================================================== --- head/sys/powerpc/booke/pmap.c Wed May 26 17:30:19 2010 (r208573) +++ head/sys/powerpc/booke/pmap.c Wed May 26 18:00:44 2010 (r208574) @@ -1711,12 +1711,14 @@ mmu_booke_enter_object(mmu_t mmu, pmap_t psize = atop(end - start); m = m_start; + vm_page_lock_queues(); PMAP_LOCK(pmap); while (m != NULL && (diff = m->pindex - m_start->pindex) < psize) { mmu_booke_enter_locked(mmu, pmap, start + ptoa(diff), m, prot & (VM_PROT_READ | VM_PROT_EXECUTE), FALSE); m = TAILQ_NEXT(m, listq); } + vm_page_unlock_queues(); PMAP_UNLOCK(pmap); } @@ -2209,19 +2211,22 @@ mmu_booke_is_referenced(mmu_t mmu, vm_pa pv_entry_t pv; boolean_t rv; - mtx_assert(&vm_page_queue_mtx, MA_OWNED); + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("mmu_booke_is_referenced: page %p is not managed", m)); rv = FALSE; - if ((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) != 0) - return (rv); + vm_page_lock_queues(); TAILQ_FOREACH(pv, &m->md.pv_list, pv_link) { PMAP_LOCK(pv->pv_pmap); if ((pte = pte_find(mmu, pv->pv_pmap, pv->pv_va)) != NULL && - PTE_ISVALID(pte)) - rv = PTE_ISREFERENCED(pte) ? TRUE : FALSE; + PTE_ISVALID(pte)) { + if (PTE_ISREFERENCED(pte)) + rv = TRUE; + } PMAP_UNLOCK(pv->pv_pmap); if (rv) break; } + vm_page_unlock_queues(); return (rv); } Modified: head/sys/sparc64/sparc64/pmap.c ============================================================================== --- head/sys/sparc64/sparc64/pmap.c Wed May 26 17:30:19 2010 (r208573) +++ head/sys/sparc64/sparc64/pmap.c Wed May 26 18:00:44 2010 (r208574) @@ -1492,12 +1492,14 @@ pmap_enter_object(pmap_t pm, vm_offset_t psize = atop(end - start); m = m_start; + vm_page_lock_queues(); PMAP_LOCK(pm); while (m != NULL && (diff = m->pindex - m_start->pindex) < psize) { pmap_enter_locked(pm, start + ptoa(diff), m, prot & (VM_PROT_READ | VM_PROT_EXECUTE), FALSE); m = TAILQ_NEXT(m, listq); } + vm_page_unlock_queues(); PMAP_UNLOCK(pm); } @@ -1947,17 +1949,22 @@ boolean_t pmap_is_referenced(vm_page_t m) { struct tte *tp; + boolean_t rv; - mtx_assert(&vm_page_queue_mtx, MA_OWNED); - if ((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) != 0) - return (FALSE); + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_is_referenced: page %p is not managed", m)); + rv = FALSE; + vm_page_lock_queues(); TAILQ_FOREACH(tp, &m->md.tte_list, tte_link) { if ((tp->tte_data & TD_PV) == 0) continue; - if ((tp->tte_data & TD_REF) != 0) - return (TRUE); + if ((tp->tte_data & TD_REF) != 0) { + rv = TRUE; + break; + } } - return (FALSE); + vm_page_unlock_queues(); + return (rv); } void Modified: head/sys/sun4v/sun4v/pmap.c ============================================================================== --- head/sys/sun4v/sun4v/pmap.c Wed May 26 17:30:19 2010 (r208573) +++ head/sys/sun4v/sun4v/pmap.c Wed May 26 18:00:44 2010 (r208574) @@ -1221,11 +1221,13 @@ pmap_enter_object(pmap_t pmap, vm_offset VM_OBJECT_LOCK_ASSERT(m_start->object, MA_OWNED); psize = atop(end - start); m = m_start; + vm_page_lock_queues(); PMAP_LOCK(pmap); while (m != NULL && (diff = m->pindex - m_start->pindex) < psize) { pmap_enter_quick_locked(pmap, start + ptoa(diff), m, prot); m = TAILQ_NEXT(m, listq); } + vm_page_unlock_queues(); PMAP_UNLOCK(pmap); } @@ -1642,8 +1644,14 @@ pmap_is_prefaultable(pmap_t pmap, vm_off boolean_t pmap_is_referenced(vm_page_t m) { + boolean_t rv; - return (tte_get_phys_bit(m, VTD_REF)); + KASSERT((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0, + ("pmap_is_referenced: page %p is not managed", m)); + vm_page_lock_queues(); + rv = tte_get_phys_bit(m, VTD_REF); + vm_page_unlock_queues(); + return (rv); } /* Modified: head/sys/vm/vm_map.c ============================================================================== --- head/sys/vm/vm_map.c Wed May 26 17:30:19 2010 (r208573) +++ head/sys/vm/vm_map.c Wed May 26 18:00:44 2010 (r208574) @@ -1726,7 +1726,6 @@ vm_map_pmap_enter(vm_map_t map, vm_offse vm_offset_t start; vm_page_t p, p_start; vm_pindex_t psize, tmpidx; - boolean_t are_queues_locked; if ((prot & (VM_PROT_READ | VM_PROT_EXECUTE)) == 0 || object == NULL) return; @@ -1748,7 +1747,6 @@ vm_map_pmap_enter(vm_map_t map, vm_offse psize = object->size - pindex; } - are_queues_locked = FALSE; start = 0; p_start = NULL; @@ -1782,25 +1780,14 @@ vm_map_pmap_enter(vm_map_t map, vm_offse p_start = p; } } else if (p_start != NULL) { - if (!are_queues_locked) { - are_queues_locked = TRUE; - vm_page_lock_queues(); - } pmap_enter_object(map->pmap, start, addr + ptoa(tmpidx), p_start, prot); p_start = NULL; } } - if (p_start != NULL) { - if (!are_queues_locked) { - are_queues_locked = TRUE; - vm_page_lock_queues(); - } + if (p_start != NULL) pmap_enter_object(map->pmap, start, addr + ptoa(psize), p_start, prot); - } - if (are_queues_locked) - vm_page_unlock_queues(); unlock_return: VM_OBJECT_UNLOCK(object); } Modified: head/sys/vm/vm_mmap.c ============================================================================== --- head/sys/vm/vm_mmap.c Wed May 26 17:30:19 2010 (r208573) +++ head/sys/vm/vm_mmap.c Wed May 26 18:00:44 2010 (r208574) @@ -912,11 +912,18 @@ RestartScan: vm_page_dirty(m); if (m->dirty != 0) mincoreinfo |= MINCORE_MODIFIED_OTHER; - vm_page_lock_queues(); + /* + * The first test for PG_REFERENCED is an + * optimization. The second test is + * required because a concurrent pmap + * operation could clear the last reference + * and set PG_REFERENCED before the call to + * pmap_is_referenced(). + */ if ((m->flags & PG_REFERENCED) != 0 || - pmap_is_referenced(m)) + pmap_is_referenced(m) || + (m->flags & PG_REFERENCED) != 0) mincoreinfo |= MINCORE_REFERENCED_OTHER; - vm_page_unlock_queues(); } if (object != NULL) VM_OBJECT_UNLOCK(object); Modified: head/sys/vm/vm_page.c ============================================================================== --- head/sys/vm/vm_page.c Wed May 26 17:30:19 2010 (r208573) +++ head/sys/vm/vm_page.c Wed May 26 18:00:44 2010 (r208574) @@ -1894,7 +1894,7 @@ vm_page_dontneed(vm_page_t m) PCPU_INC(dnweight); /* - * occassionally leave the page alone + * Occasionally leave the page alone. */ if ((dnw & 0x01F0) == 0 || VM_PAGE_INQUEUE2(m, PQ_INACTIVE)) { @@ -1906,11 +1906,18 @@ vm_page_dontneed(vm_page_t m) /* * Clear any references to the page. Otherwise, the page daemon will * immediately reactivate the page. + * + * Perform the pmap_clear_reference() first. Otherwise, a concurrent + * pmap operation, such as pmap_remove(), could clear a reference in + * the pmap and set PG_REFERENCED on the page before the + * pmap_clear_reference() had completed. Consequently, the page would + * appear referenced based upon an old reference that occurred before + * this function ran. */ + pmap_clear_reference(m); vm_page_lock_queues(); vm_page_flag_clear(m, PG_REFERENCED); vm_page_unlock_queues(); - pmap_clear_reference(m); if (m->dirty == 0 && pmap_is_modified(m)) vm_page_dirty(m); @@ -2142,7 +2149,9 @@ void vm_page_clear_dirty(vm_page_t m, int base, int size) { - mtx_assert(&vm_page_queue_mtx, MA_OWNED); + VM_OBJECT_LOCK_ASSERT(m->object, MA_OWNED); + if ((m->flags & PG_WRITEABLE) != 0) + mtx_assert(&vm_page_queue_mtx, MA_OWNED); m->dirty &= ~vm_page_bits(base, size); } Modified: head/sys/vm/vnode_pager.c ============================================================================== --- head/sys/vm/vnode_pager.c Wed May 26 17:30:19 2010 (r208573) +++ head/sys/vm/vnode_pager.c Wed May 26 18:00:44 2010 (r208574) @@ -429,11 +429,9 @@ vnode_pager_setsize(vp, nsize) * bits. This would prevent bogus_page * replacement from working properly. */ - vm_page_lock(m); vm_page_lock_queues(); vm_page_clear_dirty(m, base, PAGE_SIZE - base); vm_page_unlock_queues(); - vm_page_unlock(m); } else if ((nsize & PAGE_MASK) && __predict_false(object->cache != NULL)) { vm_page_cache_free(object, OFF_TO_IDX(nsize), @@ -1071,15 +1069,12 @@ vnode_pager_putpages(object, m, count, s * then delayed. */ int -vnode_pager_generic_putpages(vp, m, bytecount, flags, rtvals) - struct vnode *vp; - vm_page_t *m; - int bytecount; - int flags; - int *rtvals; +vnode_pager_generic_putpages(struct vnode *vp, vm_page_t *ma, int bytecount, + int flags, int *rtvals) { int i; vm_object_t object; + vm_page_t m; int count; int maxsize, ncount; @@ -1098,9 +1093,9 @@ vnode_pager_generic_putpages(vp, m, byte for (i = 0; i < count; i++) rtvals[i] = VM_PAGER_AGAIN; - if ((int64_t)m[0]->pindex < 0) { + if ((int64_t)ma[0]->pindex < 0) { printf("vnode_pager_putpages: attempt to write meta-data!!! -- 0x%lx(%lx)\n", - (long)m[0]->pindex, (u_long)m[0]->dirty); + (long)ma[0]->pindex, (u_long)ma[0]->dirty); rtvals[0] = VM_PAGER_BAD; return VM_PAGER_BAD; } @@ -1108,7 +1103,7 @@ vnode_pager_generic_putpages(vp, m, byte maxsize = count * PAGE_SIZE; ncount = count; - poffset = IDX_TO_OFF(m[0]->pindex); + poffset = IDX_TO_OFF(ma[0]->pindex); /* * If the page-aligned write is larger then the actual file we @@ -1122,6 +1117,7 @@ vnode_pager_generic_putpages(vp, m, byte * We do not under any circumstances truncate the valid bits, as * this will screw up bogus page replacement. */ + VM_OBJECT_LOCK(object); if (maxsize + poffset > object->un_pager.vnp.vnp_size) { if (object->un_pager.vnp.vnp_size > poffset) { int pgoff; @@ -1129,12 +1125,19 @@ vnode_pager_generic_putpages(vp, m, byte maxsize = object->un_pager.vnp.vnp_size - poffset; ncount = btoc(maxsize); if ((pgoff = (int)maxsize & PAGE_MASK) != 0) { - vm_page_lock(m[ncount - 1]); - vm_page_lock_queues(); - vm_page_clear_dirty(m[ncount - 1], pgoff, - PAGE_SIZE - pgoff); - vm_page_unlock_queues(); - vm_page_unlock(m[ncount - 1]); + /* + * If the object is locked and the following + * conditions hold, then the page's dirty + * field cannot be concurrently changed by a + * pmap operation. + */ + m = ma[ncount - 1]; + KASSERT(m->busy > 0, + ("vnode_pager_generic_putpages: page %p is not busy", m)); + KASSERT((m->flags & PG_WRITEABLE) == 0, + ("vnode_pager_generic_putpages: page %p is not read-only", m)); + vm_page_clear_dirty(m, pgoff, PAGE_SIZE - + pgoff); } } else { maxsize = 0; @@ -1146,6 +1149,7 @@ vnode_pager_generic_putpages(vp, m, byte } } } + VM_OBJECT_UNLOCK(object); /* * pageouts are already clustered, use IO_ASYNC t o force a bawrite() @@ -1182,7 +1186,7 @@ vnode_pager_generic_putpages(vp, m, byte if (auio.uio_resid) { if (ppscheck || ppsratecheck(&lastfail, &curfail, 1)) printf("vnode_pager_putpages: residual I/O %zd at %lu\n", - auio.uio_resid, (u_long)m[0]->pindex); + auio.uio_resid, (u_long)ma[0]->pindex); } for (i = 0; i < ncount; i++) { rtvals[i] = VM_PAGER_OK; From owner-svn-src-all@FreeBSD.ORG Wed May 26 18:28:42 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7104B106564A; Wed, 26 May 2010 18:28:42 +0000 (UTC) (envelope-from rfarmer@predatorlabs.net) Received: from mail-gw0-f54.google.com (mail-gw0-f54.google.com [74.125.83.54]) by mx1.freebsd.org (Postfix) with ESMTP id B8B438FC0C; Wed, 26 May 2010 18:28:41 +0000 (UTC) Received: by gwj21 with SMTP id 21so676911gwj.13 for ; Wed, 26 May 2010 11:28:40 -0700 (PDT) MIME-Version: 1.0 Received: by 10.150.61.2 with SMTP id j2mr67830yba.360.1274898518059; Wed, 26 May 2010 11:28:38 -0700 (PDT) Received: by 10.150.137.17 with HTTP; Wed, 26 May 2010 11:28:37 -0700 (PDT) X-Originating-IP: [128.95.133.153] In-Reply-To: <201005251748.o4PHmI5T093246@svn.freebsd.org> References: <201005251748.o4PHmI5T093246@svn.freebsd.org> Date: Wed, 26 May 2010 11:28:37 -0700 Message-ID: From: Rob Farmer To: Xin LI Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r208545 - in head/release: amd64 i386 ia64 pc98 powerpc sparc64 sun4v X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 18:28:42 -0000 On Tue, May 25, 2010 at 10:48 AM, Xin LI wrote: > Author: delphij > Date: Tue May 25 17:48:17 2010 > New Revision: 208545 > URL: http://svn.freebsd.org/changeset/base/208545 > > Log: > =A0libarchive now needs libcrypto and liblzma. > > Modified: > =A0head/release/amd64/boot_crunch.conf > =A0head/release/i386/boot_crunch.conf > =A0head/release/ia64/boot_crunch.conf > =A0head/release/pc98/boot_crunch.conf > =A0head/release/powerpc/boot_crunch.conf > =A0head/release/sparc64/boot_crunch.conf > =A0head/release/sun4v/boot_crunch.conf > > Modified: head/release/amd64/boot_crunch.conf > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- head/release/amd64/boot_crunch.conf Tue May 25 17:43:23 2010 =A0 =A0 = =A0 =A0(r208544) > +++ head/release/amd64/boot_crunch.conf Tue May 25 17:48:17 2010 =A0 =A0 = =A0 =A0(r208545) > @@ -39,6 +39,6 @@ progs ppp > =A0progs sysinstall > =A0progs usbconfig > > -libs -ll -ledit -lutil -lmd -lcrypt -lftpio -lz -lnetgraph > +libs -ll -ledit -lutil -lmd -lcrypt -lcrypto -lftpio -lz -lnetgraph > =A0libs -ldialog -lncurses -ldisk -lcam -lsbuf -lufs -ldevinfo > -libs -lbsdxml -larchive -lbz2 -lusb -ljail > +libs -lbsdxml -larchive -lbz2 -llzma -lusb -ljail > Does the order of the libs entries matter? Because I just tried on i386 after this commit and I still get errors related to the sha1, md5, etc. functions but it worked fine with -llzma -lcrypto at the end of the last line. --=20 Rob Farmer From owner-svn-src-all@FreeBSD.ORG Wed May 26 18:47:34 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 70E8D1065670; Wed, 26 May 2010 18:47:34 +0000 (UTC) (envelope-from yanefbsd@gmail.com) Received: from mail-vw0-f54.google.com (mail-vw0-f54.google.com [209.85.212.54]) by mx1.freebsd.org (Postfix) with ESMTP id CE92E8FC28; Wed, 26 May 2010 18:47:33 +0000 (UTC) Received: by vws18 with SMTP id 18so3698524vws.13 for ; Wed, 26 May 2010 11:47:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=2LTuebAI2l84JdqBbJhvkWAC0iHnzHHxL6qrWTEM6Ts=; b=ddZHW1uaFaMNYyNUcFTg7I1x9wOby5F1p4S0hY/sAgExZ9WDUI0Fp/tT+CfX5Cnpst GDYeVmnkgFpD9gy1CtEWchSPs5AIbA/WpvvNqURdy0ETrLgL3liM3k+zn9uwQ0uOVeC4 ZzXnMFBbveamFcoIfTr6ktudICdpCxdhNBPGk= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=lUVaSevtgvEW6TetPfAnktzL2Zj3e6ubzt02d7658WzNiNLt/yzdAkSLNJmg5/iNgJ 2h5owt3zmOlb833W9diuvRM/9XXPQvN7pKyMqDt/mNSjtZhqMESwcZSM418XVIH5Vuwl XoK81u397IJeuxoe1m/4m92mNbFhhwzn7yf90= MIME-Version: 1.0 Received: by 10.229.187.147 with SMTP id cw19mr2005732qcb.45.1274899653066; Wed, 26 May 2010 11:47:33 -0700 (PDT) Received: by 10.229.190.83 with HTTP; Wed, 26 May 2010 11:47:32 -0700 (PDT) In-Reply-To: References: <201005251748.o4PHmI5T093246@svn.freebsd.org> Date: Wed, 26 May 2010 11:47:32 -0700 Message-ID: From: Garrett Cooper To: Rob Farmer Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Xin LI Subject: Re: svn commit: r208545 - in head/release: amd64 i386 ia64 pc98 powerpc sparc64 sun4v X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 18:47:34 -0000 On Wed, May 26, 2010 at 11:28 AM, Rob Farmer wro= te: > On Tue, May 25, 2010 at 10:48 AM, Xin LI wrote: >> Author: delphij >> Date: Tue May 25 17:48:17 2010 >> New Revision: 208545 >> URL: http://svn.freebsd.org/changeset/base/208545 >> >> Log: >> =A0libarchive now needs libcrypto and liblzma. >> >> Modified: >> =A0head/release/amd64/boot_crunch.conf >> =A0head/release/i386/boot_crunch.conf >> =A0head/release/ia64/boot_crunch.conf >> =A0head/release/pc98/boot_crunch.conf >> =A0head/release/powerpc/boot_crunch.conf >> =A0head/release/sparc64/boot_crunch.conf >> =A0head/release/sun4v/boot_crunch.conf >> >> Modified: head/release/amd64/boot_crunch.conf >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D >> --- head/release/amd64/boot_crunch.conf Tue May 25 17:43:23 2010 =A0 =A0= =A0 =A0(r208544) >> +++ head/release/amd64/boot_crunch.conf Tue May 25 17:48:17 2010 =A0 =A0= =A0 =A0(r208545) >> @@ -39,6 +39,6 @@ progs ppp >> =A0progs sysinstall >> =A0progs usbconfig >> >> -libs -ll -ledit -lutil -lmd -lcrypt -lftpio -lz -lnetgraph >> +libs -ll -ledit -lutil -lmd -lcrypt -lcrypto -lftpio -lz -lnetgraph >> =A0libs -ldialog -lncurses -ldisk -lcam -lsbuf -lufs -ldevinfo >> -libs -lbsdxml -larchive -lbz2 -lusb -ljail >> +libs -lbsdxml -larchive -lbz2 -llzma -lusb -ljail >> > > Does the order of the libs entries matter? Because I just tried on > i386 after this commit and I still get errors related to the sha1, > md5, etc. functions but it worked fine with -llzma -lcrypto at the end > of the last line. In theory it shouldn't because the linker should be smart enough to evaluate the dependencies and link everything properly, but our copy of binutils isn't intelligent enough to determine the appropriate order from what I've seen. Thanks, -Garrett From owner-svn-src-all@FreeBSD.ORG Wed May 26 18:55:41 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4F5D91065675; Wed, 26 May 2010 18:55:41 +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 3DE5A8FC1A; Wed, 26 May 2010 18:55:41 +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 o4QItfVA030331; Wed, 26 May 2010 18:55:41 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4QItfTv030323; Wed, 26 May 2010 18:55:41 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201005261855.o4QItfTv030323@svn.freebsd.org> From: Xin LI Date: Wed, 26 May 2010 18:55:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208577 - in head/release: amd64 i386 ia64 pc98 powerpc sparc64 sun4v X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 18:55:41 -0000 Author: delphij Date: Wed May 26 18:55:40 2010 New Revision: 208577 URL: http://svn.freebsd.org/changeset/base/208577 Log: Reorder to have -lcrypto after -larchive. Our linker doesn't seem to like the current ordering :( Modified: head/release/amd64/boot_crunch.conf head/release/i386/boot_crunch.conf head/release/ia64/boot_crunch.conf head/release/pc98/boot_crunch.conf head/release/powerpc/boot_crunch.conf head/release/sparc64/boot_crunch.conf head/release/sun4v/boot_crunch.conf Modified: head/release/amd64/boot_crunch.conf ============================================================================== --- head/release/amd64/boot_crunch.conf Wed May 26 18:50:16 2010 (r208576) +++ head/release/amd64/boot_crunch.conf Wed May 26 18:55:40 2010 (r208577) @@ -39,6 +39,6 @@ progs ppp progs sysinstall progs usbconfig -libs -ll -ledit -lutil -lmd -lcrypt -lcrypto -lftpio -lz -lnetgraph +libs -ll -ledit -lutil -lmd -lcrypt -lftpio -lz -lnetgraph libs -ldialog -lncurses -ldisk -lcam -lsbuf -lufs -ldevinfo -libs -lbsdxml -larchive -lbz2 -llzma -lusb -ljail +libs -lbsdxml -larchive -lcrypto -lbz2 -llzma -lusb -ljail Modified: head/release/i386/boot_crunch.conf ============================================================================== --- head/release/i386/boot_crunch.conf Wed May 26 18:50:16 2010 (r208576) +++ head/release/i386/boot_crunch.conf Wed May 26 18:55:40 2010 (r208577) @@ -39,6 +39,6 @@ progs ppp progs sysinstall progs usbconfig -libs -ll -ledit -lutil -lmd -lcrypt -lcrypto -lftpio -lz -lnetgraph +libs -ll -ledit -lutil -lmd -lcrypt -lftpio -lz -lnetgraph libs -ldialog -lncurses -ldisk -lcam -lsbuf -lufs -ldevinfo -libs -lbsdxml -larchive -lbz2 -llzma -lusb -ljail +libs -lbsdxml -larchive -lcrypto -lbz2 -llzma -lusb -ljail Modified: head/release/ia64/boot_crunch.conf ============================================================================== --- head/release/ia64/boot_crunch.conf Wed May 26 18:50:16 2010 (r208576) +++ head/release/ia64/boot_crunch.conf Wed May 26 18:55:40 2010 (r208577) @@ -44,6 +44,6 @@ progs ppp progs sysinstall progs usbconfig -libs -ll -ledit -lutil -lmd -lcrypt -lcrypto -lftpio -lz -lnetgraph +libs -ll -ledit -lutil -lmd -lcrypt -lftpio -lz -lnetgraph libs -ldialog -lncurses -ldisk -lcam -lkiconv -lsbuf -lufs -ldevinfo -libs -lgeom -lbsdxml -larchive -lbz2 -llzma -lusb -ljail +libs -lgeom -lbsdxml -larchive -lcrypto -lbz2 -llzma -lusb -ljail Modified: head/release/pc98/boot_crunch.conf ============================================================================== --- head/release/pc98/boot_crunch.conf Wed May 26 18:50:16 2010 (r208576) +++ head/release/pc98/boot_crunch.conf Wed May 26 18:55:40 2010 (r208577) @@ -38,6 +38,6 @@ progs arp progs ppp progs sysinstall -libs -ll -ledit -lutil -lmd -lcrypt -lcrypto -lftpio -lz -lnetgraph +libs -ll -ledit -lutil -lmd -lcrypt -lftpio -lz -lnetgraph libs -ldialog -lncurses -ldisk -lcam -lsbuf -lufs -lbsdxml -libs -larchive -lbz2 -llzma -ljail +libs -larchive -lcrypto -lbz2 -llzma -ljail Modified: head/release/powerpc/boot_crunch.conf ============================================================================== --- head/release/powerpc/boot_crunch.conf Wed May 26 18:50:16 2010 (r208576) +++ head/release/powerpc/boot_crunch.conf Wed May 26 18:55:40 2010 (r208577) @@ -44,6 +44,6 @@ progs ppp progs sysinstall progs usbconfig -libs -ll -ledit -lutil -lmd -lcrypt -lcrypto -lftpio -lz -lnetgraph +libs -ll -ledit -lutil -lmd -lcrypt -lftpio -lz -lnetgraph libs -ldialog -lncurses -ldisk -lcam -lkiconv -lsbuf -lufs -libs -lgeom -lbsdxml -larchive -lbz2 -llzma -lusb -ljail +libs -lgeom -lbsdxml -larchive -lcrypto -lbz2 -llzma -lusb -ljail Modified: head/release/sparc64/boot_crunch.conf ============================================================================== --- head/release/sparc64/boot_crunch.conf Wed May 26 18:50:16 2010 (r208576) +++ head/release/sparc64/boot_crunch.conf Wed May 26 18:55:40 2010 (r208577) @@ -39,6 +39,6 @@ progs ppp progs sysinstall progs usbconfig -libs -ll -ledit -lutil -lmd -lcrypt -lcrypto -lftpio -lz -lnetgraph +libs -ll -ledit -lutil -lmd -lcrypt -lftpio -lz -lnetgraph libs -ldialog -lncurses -ldisk -lcam -lsbuf -lufs -lbsdxml -libs -larchive -lbz2 -llzma -lusb -ljail +libs -larchive -lcrypto -lbz2 -llzma -lusb -ljail Modified: head/release/sun4v/boot_crunch.conf ============================================================================== --- head/release/sun4v/boot_crunch.conf Wed May 26 18:50:16 2010 (r208576) +++ head/release/sun4v/boot_crunch.conf Wed May 26 18:55:40 2010 (r208577) @@ -39,6 +39,6 @@ progs ppp progs sysinstall progs usbconfig -libs -ll -ledit -lutil -lmd -lcrypt -lcrypto -lftpio -lz -lnetgraph +libs -ll -ledit -lutil -lmd -lcrypt -lftpio -lz -lnetgraph libs -ldialog -lncurses -ldisk -lcam -lsbuf -lufs -lbsdxml -libs -larchive -lbz2 -llzma -lusb -ljail +libs -larchive -lcrypto -lbz2 -llzma -lusb -ljail From owner-svn-src-all@FreeBSD.ORG Wed May 26 18:56:06 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Wed May 26 18:59:29 2010 Return-Path: Delivered-To: svn-src-all@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 392581065673; Wed, 26 May 2010 18:59:29 +0000 (UTC) (envelope-from delphij@delphij.net) Received: from tarsier.geekcn.org (tarsier.geekcn.org [IPv6:2001:470:a803::1]) by mx1.freebsd.org (Postfix) with ESMTP id 6DEF38FC20; Wed, 26 May 2010 18:59:27 +0000 (UTC) Received: from mail.geekcn.org (tarsier.geekcn.org [211.166.10.233]) by tarsier.geekcn.org (Postfix) with ESMTP id EFFCDA59909; Thu, 27 May 2010 02:59:25 +0800 (CST) X-Virus-Scanned: amavisd-new at geekcn.org Received: from tarsier.geekcn.org ([211.166.10.233]) by mail.geekcn.org (mail.geekcn.org [211.166.10.233]) (amavisd-new, port 10024) with LMTP id nE3ew7P38mMQ; Thu, 27 May 2010 02:59:19 +0800 (CST) Received: from delta.delphij.net (drawbridge.ixsystems.com [206.40.55.65]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by tarsier.geekcn.org (Postfix) with ESMTPSA id 03614A5982B; Thu, 27 May 2010 02:59:16 +0800 (CST) DomainKey-Signature: a=rsa-sha1; s=default; d=delphij.net; c=nofws; q=dns; h=message-id:date:from:reply-to:organization:user-agent: mime-version:to:cc:subject:references:in-reply-to: x-enigmail-version:openpgp:content-type:content-transfer-encoding; b=cOJ6pmloMUyx9FfOStDf3MgVoZJADRCM6m82i483W3MjOQSpqk80e4J8K/WmjdBc6 jgt5mZfSQMfWidUfrme2w== Message-ID: <4BFD6F80.8030700@delphij.net> Date: Wed, 26 May 2010 11:59:12 -0700 From: Xin LI Organization: The Geek China Organization User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.1.9) Gecko/20100408 Thunderbird/3.0.4 ThunderBrowse/3.2.8.1 MIME-Version: 1.0 To: Garrett Cooper References: <201005251748.o4PHmI5T093246@svn.freebsd.org> In-Reply-To: X-Enigmail-Version: 1.0.1 OpenPGP: id=3FCA37C1; url=http://www.delphij.net/delphij.asc Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: svn-src-head@FreeBSD.ORG, svn-src-all@FreeBSD.ORG, Rob Farmer , Xin LI , src-committers@FreeBSD.ORG Subject: Re: svn commit: r208545 - in head/release: amd64 i386 ia64 pc98 powerpc sparc64 sun4v X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: d@delphij.net List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 18:59:29 -0000 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 On 2010/05/26 11:47, Garrett Cooper wrote: > On Wed, May 26, 2010 at 11:28 AM, Rob Farmer wrote: >> On Tue, May 25, 2010 at 10:48 AM, Xin LI wrote: >>> Author: delphij >>> Date: Tue May 25 17:48:17 2010 >>> New Revision: 208545 >>> URL: http://svn.freebsd.org/changeset/base/208545 >>> >>> Log: >>> libarchive now needs libcrypto and liblzma. >>> >>> Modified: >>> head/release/amd64/boot_crunch.conf >>> head/release/i386/boot_crunch.conf >>> head/release/ia64/boot_crunch.conf >>> head/release/pc98/boot_crunch.conf >>> head/release/powerpc/boot_crunch.conf >>> head/release/sparc64/boot_crunch.conf >>> head/release/sun4v/boot_crunch.conf >>> >>> Modified: head/release/amd64/boot_crunch.conf >>> ============================================================================== >>> --- head/release/amd64/boot_crunch.conf Tue May 25 17:43:23 2010 (r208544) >>> +++ head/release/amd64/boot_crunch.conf Tue May 25 17:48:17 2010 (r208545) >>> @@ -39,6 +39,6 @@ progs ppp >>> progs sysinstall >>> progs usbconfig >>> >>> -libs -ll -ledit -lutil -lmd -lcrypt -lftpio -lz -lnetgraph >>> +libs -ll -ledit -lutil -lmd -lcrypt -lcrypto -lftpio -lz -lnetgraph >>> libs -ldialog -lncurses -ldisk -lcam -lsbuf -lufs -ldevinfo >>> -libs -lbsdxml -larchive -lbz2 -lusb -ljail >>> +libs -lbsdxml -larchive -lbz2 -llzma -lusb -ljail >>> >> >> Does the order of the libs entries matter? Because I just tried on >> i386 after this commit and I still get errors related to the sha1, >> md5, etc. functions but it worked fine with -llzma -lcrypto at the end >> of the last line. > > In theory it shouldn't because the linker should be smart enough > to evaluate the dependencies and link everything properly, but our > copy of binutils isn't intelligent enough to determine the appropriate > order from what I've seen. Bad last minute change from me, I overlooked this :-/ Will a newer GNU ld solve this issue? Cheers, - -- Xin LI http://www.delphij.net/ FreeBSD - The Power to Serve! Live free or die -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.14 (FreeBSD) iQEcBAEBCAAGBQJL/W+AAAoJEATO+BI/yjfBdYIH/jrMjcdVUba/5R/Y4TbFq15i kVWRcSj+6R/iqxZ62pKPOKfYim2pJToRVPT+Hx+cTYri3jm25L4U0SQOfWViWU6D 2qQ1BLWwkNTd97hLcdSBePf4pKPq1o49W33zqyE3VAAkvOl5r+HZ9V16xhZ9GnmB VfweQSYb6Nm0YD2H3fSvYpLoNzKW13POxer6sqvmhnEZcU78CCSeQVSYhdf3M7eM ulya3Jsxd1Rn9aReFQR8D14+fMq0xfs2q7DGX1HmVHn1hxC/dWhfGZ7Yv36mbPr8 MwVHoeEjVhnRgUE78o9/XQ3vJyvhOSCQCy+a2IZoFIbqTotaymi0EMmif51zudE= =nD1V -----END PGP SIGNATURE----- From owner-svn-src-all@FreeBSD.ORG Wed May 26 19:01:31 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6AC4A1065670; Wed, 26 May 2010 19:01:31 +0000 (UTC) (envelope-from yanefbsd@gmail.com) Received: from mail-qy0-f181.google.com (mail-qy0-f181.google.com [209.85.221.181]) by mx1.freebsd.org (Postfix) with ESMTP id 9F3A38FC21; Wed, 26 May 2010 19:01:30 +0000 (UTC) Received: by qyk11 with SMTP id 11so10009680qyk.13 for ; Wed, 26 May 2010 12:01:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=ysimRpVH8gDQTEY1PWc3uAayKawObek0r4xw/HzlvC0=; b=Is5obf/OuqP0Z/9zTdO/E6gryeWQoAr2tGbfxiSUEGtOKmWdfWcAKed6xO57wSnEKk sOQcwNULLZUlkb88DHaC6hjA+lGYNEGNYY90vgEjdm8ho8kwNTXu+ormG3Y24wSHAhj0 gXjgjdij17zn4YyC+icNmZOv8qaSj0XVvlNGo= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=ENbj15EYLv32I/su+MUSO4bQYZ83/+jaFIidD6tDedbIZMOXCKkuSV3D0D+7DIwdLA g+c4WFktJo6bYrvA7/mXPWRujv7y9V4wDOiC6Ftl2++XhiKmTZtCfrAgPPrdvszBELO1 oXOgjj99YbVF4yfHLSLF+prd/icUX3GcI7dyo= MIME-Version: 1.0 Received: by 10.224.36.92 with SMTP id s28mr5015337qad.293.1274900487651; Wed, 26 May 2010 12:01:27 -0700 (PDT) Received: by 10.229.190.83 with HTTP; Wed, 26 May 2010 12:01:27 -0700 (PDT) In-Reply-To: <4BFD6F80.8030700@delphij.net> References: <201005251748.o4PHmI5T093246@svn.freebsd.org> <4BFD6F80.8030700@delphij.net> Date: Wed, 26 May 2010 12:01:27 -0700 Message-ID: From: Garrett Cooper To: d@delphij.net Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, Rob Farmer , Xin LI , src-committers@freebsd.org Subject: Re: svn commit: r208545 - in head/release: amd64 i386 ia64 pc98 powerpc sparc64 sun4v X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 19:01:31 -0000 On Wed, May 26, 2010 at 11:59 AM, Xin LI wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA256 > > On 2010/05/26 11:47, Garrett Cooper wrote: >> On Wed, May 26, 2010 at 11:28 AM, Rob Farmer = wrote: >>> On Tue, May 25, 2010 at 10:48 AM, Xin LI wrote: >>>> Author: delphij >>>> Date: Tue May 25 17:48:17 2010 >>>> New Revision: 208545 >>>> URL: http://svn.freebsd.org/changeset/base/208545 >>>> >>>> Log: >>>> =A0libarchive now needs libcrypto and liblzma. >>>> >>>> Modified: >>>> =A0head/release/amd64/boot_crunch.conf >>>> =A0head/release/i386/boot_crunch.conf >>>> =A0head/release/ia64/boot_crunch.conf >>>> =A0head/release/pc98/boot_crunch.conf >>>> =A0head/release/powerpc/boot_crunch.conf >>>> =A0head/release/sparc64/boot_crunch.conf >>>> =A0head/release/sun4v/boot_crunch.conf >>>> >>>> Modified: head/release/amd64/boot_crunch.conf >>>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D >>>> --- head/release/amd64/boot_crunch.conf Tue May 25 17:43:23 2010 =A0 = =A0 =A0 =A0(r208544) >>>> +++ head/release/amd64/boot_crunch.conf Tue May 25 17:48:17 2010 =A0 = =A0 =A0 =A0(r208545) >>>> @@ -39,6 +39,6 @@ progs ppp >>>> =A0progs sysinstall >>>> =A0progs usbconfig >>>> >>>> -libs -ll -ledit -lutil -lmd -lcrypt -lftpio -lz -lnetgraph >>>> +libs -ll -ledit -lutil -lmd -lcrypt -lcrypto -lftpio -lz -lnetgraph >>>> =A0libs -ldialog -lncurses -ldisk -lcam -lsbuf -lufs -ldevinfo >>>> -libs -lbsdxml -larchive -lbz2 -lusb -ljail >>>> +libs -lbsdxml -larchive -lbz2 -llzma -lusb -ljail >>>> >>> >>> Does the order of the libs entries matter? Because I just tried on >>> i386 after this commit and I still get errors related to the sha1, >>> md5, etc. functions but it worked fine with -llzma -lcrypto at the end >>> of the last line. >> >> =A0 =A0 In theory it shouldn't because the linker should be smart enough >> to evaluate the dependencies and link everything properly, but our >> copy of binutils isn't intelligent enough to determine the appropriate >> order from what I've seen. > > Bad last minute change from me, I overlooked this :-/ > > Will a newer GNU ld solve this issue? Juli informed me (off-list) that GNU ld _does_ in fact do this, but only if you specify --start-group and --end-group in the linker arguments (which she claimed required more RAM). It might just be better to switch the linker library ordering as this would fix the issue cleanly and quickly. Thanks, -Garrett From owner-svn-src-all@FreeBSD.ORG Wed May 26 19:06:41 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 38DC8106566B; Wed, 26 May 2010 19:06:41 +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 26E1A8FC12; Wed, 26 May 2010 19:06:41 +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 o4QJ6f4b032946; Wed, 26 May 2010 19:06:41 GMT (envelope-from mjacob@svn.freebsd.org) Received: (from mjacob@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4QJ6f2Y032942; Wed, 26 May 2010 19:06:41 GMT (envelope-from mjacob@svn.freebsd.org) Message-Id: <201005261906.o4QJ6f2Y032942@svn.freebsd.org> From: Matt Jacob Date: Wed, 26 May 2010 19:06:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-7@freebsd.org X-SVN-Group: stable-7 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208579 - stable/7/sys/dev/isp X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 19:06:41 -0000 Author: mjacob Date: Wed May 26 19:06:40 2010 New Revision: 208579 URL: http://svn.freebsd.org/changeset/base/208579 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. Modified: stable/7/sys/dev/isp/isp_freebsd.c stable/7/sys/dev/isp/ispvar.h Directory Properties: stable/7/sys/ (props changed) stable/7/sys/cddl/contrib/opensolaris/ (props changed) stable/7/sys/contrib/dev/acpica/ (props changed) stable/7/sys/contrib/pf/ (props changed) Modified: stable/7/sys/dev/isp/isp_freebsd.c ============================================================================== --- stable/7/sys/dev/isp/isp_freebsd.c Wed May 26 18:56:06 2010 (r208578) +++ stable/7/sys/dev/isp/isp_freebsd.c Wed May 26 19:06:40 2010 (r208579) @@ -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/7/sys/dev/isp/ispvar.h ============================================================================== --- stable/7/sys/dev/isp/ispvar.h Wed May 26 18:56:06 2010 (r208578) +++ stable/7/sys/dev/isp/ispvar.h Wed May 26 19:06:40 2010 (r208579) @@ -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-all@FreeBSD.ORG Wed May 26 19:11:30 2010 Return-Path: Delivered-To: svn-src-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AF133106564A; Wed, 26 May 2010 19:11:30 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from harmony.bsdimp.com (bsdimp.com [199.45.160.85]) by mx1.freebsd.org (Postfix) with ESMTP id 4FD0C8FC13; Wed, 26 May 2010 19:11:30 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by harmony.bsdimp.com (8.14.3/8.14.1) with ESMTP id o4QJ4ksv044548; Wed, 26 May 2010 13:04:46 -0600 (MDT) (envelope-from imp@bsdimp.com) Date: Wed, 26 May 2010 13:04:48 -0600 (MDT) Message-Id: <20100526.130448.902529319782208138.imp@bsdimp.com> To: yanefbsd@gmail.com From: "M. Warner Losh" In-Reply-To: References: <201005251748.o4PHmI5T093246@svn.freebsd.org> X-Mailer: Mew version 6.3 on Emacs 22.3 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, rfarmer@predatorlabs.net, delphij@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r208545 - in head/release: amd64 i386 ia64 pc98 powerpc sparc64 sun4v X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 19:11:30 -0000 In message: Garrett Cooper writes: : On Wed, May 26, 2010 at 11:28 AM, Rob Farmer wrote: : > On Tue, May 25, 2010 at 10:48 AM, Xin LI wrot= e: : >> Author: delphij : >> Date: Tue May 25 17:48:17 2010 : >> New Revision: 208545 : >> URL: http://svn.freebsd.org/changeset/base/208545 : >> : >> Log: : >> =A0libarchive now needs libcrypto and liblzma. : >> : >> Modified: : >> =A0head/release/amd64/boot_crunch.conf : >> =A0head/release/i386/boot_crunch.conf : >> =A0head/release/ia64/boot_crunch.conf : >> =A0head/release/pc98/boot_crunch.conf : >> =A0head/release/powerpc/boot_crunch.conf : >> =A0head/release/sparc64/boot_crunch.conf : >> =A0head/release/sun4v/boot_crunch.conf : >> : >> Modified: head/release/amd64/boot_crunch.conf : >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D : >> --- head/release/amd64/boot_crunch.conf Tue May 25 17:43:23 2010 =A0= =A0 =A0 =A0(r208544) : >> +++ head/release/amd64/boot_crunch.conf Tue May 25 17:48:17 2010 =A0= =A0 =A0 =A0(r208545) : >> @@ -39,6 +39,6 @@ progs ppp : >> =A0progs sysinstall : >> =A0progs usbconfig : >> : >> -libs -ll -ledit -lutil -lmd -lcrypt -lftpio -lz -lnetgraph : >> +libs -ll -ledit -lutil -lmd -lcrypt -lcrypto -lftpio -lz -lnetgra= ph : >> =A0libs -ldialog -lncurses -ldisk -lcam -lsbuf -lufs -ldevinfo : >> -libs -lbsdxml -larchive -lbz2 -lusb -ljail : >> +libs -lbsdxml -larchive -lbz2 -llzma -lusb -ljail : >> : > : > Does the order of the libs entries matter? Because I just tried on : > i386 after this commit and I still get errors related to the sha1, : > md5, etc. functions but it worked fine with -llzma -lcrypto at the = end : > of the last line. : = : In theory it shouldn't because the linker should be smart enough : to evaluate the dependencies and link everything properly, but our : copy of binutils isn't intelligent enough to determine the appropriat= e : order from what I've seen. the linker has never been that smart. Unless you tell it to link in everything, which we don't do. Warner From owner-svn-src-all@FreeBSD.ORG Wed May 26 19:15:26 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E4C8910656C0 for ; Wed, 26 May 2010 19:15:26 +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 7ED918FC0C for ; Wed, 26 May 2010 19:15:26 +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 o4QJFGEc020310 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 26 May 2010 22:15:16 +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 o4QJF3YN098329; Wed, 26 May 2010 22:15:03 +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 o4QJF2UH098325; Wed, 26 May 2010 22:15:02 +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: Wed, 26 May 2010 22:15:02 +0300 From: Kostik Belousov To: d@delphij.net Message-ID: <20100526191502.GG83316@deviant.kiev.zoral.com.ua> References: <201005251748.o4PHmI5T093246@svn.freebsd.org> <4BFD6F80.8030700@delphij.net> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="Ra+QPBLzfvE2u76S" Content-Disposition: inline In-Reply-To: <4BFD6F80.8030700@delphij.net> 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: src-committers@freebsd.org, svn-src-all@freebsd.org, Rob Farmer , Xin LI , svn-src-head@freebsd.org, Garrett Cooper Subject: Re: svn commit: r208545 - in head/release: amd64 i386 ia64 pc98 powerpc sparc64 sun4v X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 19:15:27 -0000 --Ra+QPBLzfvE2u76S Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, May 26, 2010 at 11:59:12AM -0700, Xin LI wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA256 >=20 > On 2010/05/26 11:47, Garrett Cooper wrote: > > On Wed, May 26, 2010 at 11:28 AM, Rob Farmer = wrote: > >> On Tue, May 25, 2010 at 10:48 AM, Xin LI wrote: > >>> Author: delphij > >>> Date: Tue May 25 17:48:17 2010 > >>> New Revision: 208545 > >>> URL: http://svn.freebsd.org/changeset/base/208545 > >>> > >>> Log: > >>> libarchive now needs libcrypto and liblzma. > >>> > >>> Modified: > >>> head/release/amd64/boot_crunch.conf > >>> head/release/i386/boot_crunch.conf > >>> head/release/ia64/boot_crunch.conf > >>> head/release/pc98/boot_crunch.conf > >>> head/release/powerpc/boot_crunch.conf > >>> head/release/sparc64/boot_crunch.conf > >>> head/release/sun4v/boot_crunch.conf > >>> > >>> Modified: head/release/amd64/boot_crunch.conf > >>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D > >>> --- head/release/amd64/boot_crunch.conf Tue May 25 17:43:23 2010 = (r208544) > >>> +++ head/release/amd64/boot_crunch.conf Tue May 25 17:48:17 2010 = (r208545) > >>> @@ -39,6 +39,6 @@ progs ppp > >>> progs sysinstall > >>> progs usbconfig > >>> > >>> -libs -ll -ledit -lutil -lmd -lcrypt -lftpio -lz -lnetgraph > >>> +libs -ll -ledit -lutil -lmd -lcrypt -lcrypto -lftpio -lz -lnetgraph > >>> libs -ldialog -lncurses -ldisk -lcam -lsbuf -lufs -ldevinfo > >>> -libs -lbsdxml -larchive -lbz2 -lusb -ljail > >>> +libs -lbsdxml -larchive -lbz2 -llzma -lusb -ljail > >>> > >> > >> Does the order of the libs entries matter? Because I just tried on > >> i386 after this commit and I still get errors related to the sha1, > >> md5, etc. functions but it worked fine with -llzma -lcrypto at the end > >> of the last line. > >=20 > > In theory it shouldn't because the linker should be smart enough > > to evaluate the dependencies and link everything properly, but our > > copy of binutils isn't intelligent enough to determine the appropriate > > order from what I've seen. >=20 > Bad last minute change from me, I overlooked this :-/ >=20 > Will a newer GNU ld solve this issue? The behaviour is the standard for any unix linker I ever saw. Static libraries participate in symbol resolution only at the point they appear on the command line. Linker makes as many passes over the single library as needed to not have any unresolved symbols that can be resolved from the archive, then moves to the next. There are facilities that allow to change the behaviour, either by grouping the libraries, see --start-group switch, or by repeating the library several times at the proper place in the command line. Comments about "linker not being smart enough" are nonsense. --Ra+QPBLzfvE2u76S Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (FreeBSD) iEYEARECAAYFAkv9czYACgkQC3+MBN1Mb4jLewCg9mZYzA8zka9rsbRtRZLRHYyx ZogAoKD4XJiojcgJ6BEj5f/w82w0XfhB =YwEN -----END PGP SIGNATURE----- --Ra+QPBLzfvE2u76S-- From owner-svn-src-all@FreeBSD.ORG Wed May 26 19:26:28 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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-all@FreeBSD.ORG Wed May 26 22:38:45 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E0845106564A; Wed, 26 May 2010 22:38:45 +0000 (UTC) (envelope-from gonzo@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id CF7398FC15; Wed, 26 May 2010 22:38: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 o4QMcj83079436; Wed, 26 May 2010 22:38:45 GMT (envelope-from gonzo@svn.freebsd.org) Received: (from gonzo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4QMcjPe079434; Wed, 26 May 2010 22:38:45 GMT (envelope-from gonzo@svn.freebsd.org) Message-Id: <201005262238.o4QMcjPe079434@svn.freebsd.org> From: Oleksandr Tymoshenko Date: Wed, 26 May 2010 22:38:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208581 - head/sys/mips/mips X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 22:38:46 -0000 Author: gonzo Date: Wed May 26 22:38:45 2010 New Revision: 208581 URL: http://svn.freebsd.org/changeset/base/208581 Log: - Fix kseg0 address calculation - it doesn't always start at page boundary - Add cache ops to ensure memory validity before/after copy operation Modified: head/sys/mips/mips/uio_machdep.c Modified: head/sys/mips/mips/uio_machdep.c ============================================================================== --- head/sys/mips/mips/uio_machdep.c Wed May 26 19:26:28 2010 (r208580) +++ head/sys/mips/mips/uio_machdep.c Wed May 26 22:38:45 2010 (r208581) @@ -51,6 +51,8 @@ __FBSDID("$FreeBSD$"); #include #include +#include + /* * Implement uiomove(9) from physical memory using a combination * of the direct mapping and sf_bufs to reduce the creation and @@ -91,8 +93,14 @@ uiomove_fromphys(vm_page_t ma[], vm_offs m = ma[offset >> PAGE_SHIFT]; pa = VM_PAGE_TO_PHYS(m); if (pa < MIPS_KSEG0_LARGEST_PHYS) { - cp = (char *)MIPS_PHYS_TO_KSEG0(pa); sf = NULL; + cp = (char *)MIPS_PHYS_TO_KSEG0(pa) + page_offset; + /* + * flush all mappings to this page, KSEG0 address first + * in order to get it overwritten by correct data + */ + mips_dcache_wbinv_range((vm_offset_t)cp, cnt); + pmap_flush_pvcache(m); } else { sf = sf_buf_alloc(m, 0); cp = (char *)sf_buf_kva(sf) + page_offset; @@ -122,6 +130,8 @@ uiomove_fromphys(vm_page_t ma[], vm_offs } if (sf != NULL) sf_buf_free(sf); + else + mips_dcache_wbinv_range((vm_offset_t)cp, cnt); iov->iov_base = (char *)iov->iov_base + cnt; iov->iov_len -= cnt; uio->uio_resid -= cnt; From owner-svn-src-all@FreeBSD.ORG Wed May 26 22:49:42 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BB6E6106566B; Wed, 26 May 2010 22:49:42 +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 A910A8FC12; Wed, 26 May 2010 22:49: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 o4QMngUX081928; Wed, 26 May 2010 22:49:42 GMT (envelope-from mjacob@svn.freebsd.org) Received: (from mjacob@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4QMng4f081922; Wed, 26 May 2010 22:49:42 GMT (envelope-from mjacob@svn.freebsd.org) Message-Id: <201005262249.o4QMng4f081922@svn.freebsd.org> From: Matt Jacob Date: Wed, 26 May 2010 22:49:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208582 - in head/sys: cam cam/ata cam/scsi dev/isp X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 May 2010 22:49:42 -0000 Author: mjacob Date: Wed May 26 22:49:42 2010 New Revision: 208582 URL: http://svn.freebsd.org/changeset/base/208582 Log: Add a new primitive, XPT_SCAN_TGT, to cover the range between scanning a whole bus (XPT_SCAN_BUS) and a single lun on that bus (XPT_SCAN_LUN). It's less resource comsumptive than scanning a whole bus when the caller knows only one target has changes. Reviewed by: scsi@ Sponsored by: Panasas MFC after: 1 month Modified: head/sys/cam/ata/ata_xpt.c head/sys/cam/cam_ccb.h head/sys/cam/cam_xpt.c head/sys/cam/scsi/scsi_xpt.c head/sys/dev/isp/isp_freebsd.c Modified: head/sys/cam/ata/ata_xpt.c ============================================================================== --- head/sys/cam/ata/ata_xpt.c Wed May 26 22:38:45 2010 (r208581) +++ head/sys/cam/ata/ata_xpt.c Wed May 26 22:49:42 2010 (r208582) @@ -1185,6 +1185,7 @@ ata_scan_bus(struct cam_periph *periph, ("xpt_scan_bus\n")); switch (request_ccb->ccb_h.func_code) { case XPT_SCAN_BUS: + case XPT_SCAN_TGT: /* Find out the characteristics of the bus */ work_ccb = xpt_alloc_ccb_nowait(); if (work_ccb == NULL) { @@ -1526,6 +1527,7 @@ ata_action(union ccb *start_ccb) break; } case XPT_SCAN_BUS: + case XPT_SCAN_TGT: ata_scan_bus(start_ccb->ccb_h.path->periph, start_ccb); break; case XPT_SCAN_LUN: Modified: head/sys/cam/cam_ccb.h ============================================================================== --- head/sys/cam/cam_ccb.h Wed May 26 22:38:45 2010 (r208581) +++ head/sys/cam/cam_ccb.h Wed May 26 22:49:42 2010 (r208582) @@ -184,6 +184,11 @@ typedef enum { /* * Set SIM specific knob values. */ + + XPT_SCAN_TGT = 0x1E | XPT_FC_QUEUED | XPT_FC_USER_CCB + | XPT_FC_XPT_ONLY, + /* Scan Target */ + /* HBA engine commands 0x20->0x2F */ XPT_ENG_INQ = 0x20 | XPT_FC_XPT_ONLY, /* HBA engine feature inquiry */ Modified: head/sys/cam/cam_xpt.c ============================================================================== --- head/sys/cam/cam_xpt.c Wed May 26 22:38:45 2010 (r208581) +++ head/sys/cam/cam_xpt.c Wed May 26 22:49:42 2010 (r208582) @@ -446,23 +446,36 @@ xptioctl(struct cdev *dev, u_long cmd, c inccb = (union ccb *)addr; bus = xpt_find_bus(inccb->ccb_h.path_id); - if (bus == NULL) { - error = EINVAL; + if (bus == NULL) + return (EINVAL); + + switch (inccb->ccb_h.func_code) { + case XPT_SCAN_BUS: + case XPT_RESET_BUS: + if (inccb->ccb_h.target_id != CAM_TARGET_WILDCARD || + inccb->ccb_h.target_lun != CAM_LUN_WILDCARD) { + xpt_release_bus(bus); + return (EINVAL); + } + break; + case XPT_SCAN_TGT: + if (inccb->ccb_h.target_id == CAM_TARGET_WILDCARD || + inccb->ccb_h.target_lun != CAM_LUN_WILDCARD) { + xpt_release_bus(bus); + return (EINVAL); + } + break; + default: break; } switch(inccb->ccb_h.func_code) { case XPT_SCAN_BUS: case XPT_RESET_BUS: - if ((inccb->ccb_h.target_id != CAM_TARGET_WILDCARD) - || (inccb->ccb_h.target_lun != CAM_LUN_WILDCARD)) { - error = EINVAL; - break; - } - /* FALLTHROUGH */ case XPT_PATH_INQ: case XPT_ENG_INQ: case XPT_SCAN_LUN: + case XPT_SCAN_TGT: ccb = xpt_alloc_ccb(); @@ -839,11 +852,21 @@ xpt_rescan(union ccb *ccb) struct ccb_hdr *hdr; /* Prepare request */ - if (ccb->ccb_h.path->target->target_id == CAM_TARGET_WILDCARD || + if (ccb->ccb_h.path->target->target_id == CAM_TARGET_WILDCARD && ccb->ccb_h.path->device->lun_id == CAM_LUN_WILDCARD) ccb->ccb_h.func_code = XPT_SCAN_BUS; - else + else if (ccb->ccb_h.path->target->target_id != CAM_TARGET_WILDCARD && + ccb->ccb_h.path->device->lun_id == CAM_LUN_WILDCARD) + ccb->ccb_h.func_code = XPT_SCAN_TGT; + else if (ccb->ccb_h.path->target->target_id != CAM_TARGET_WILDCARD && + ccb->ccb_h.path->device->lun_id != CAM_LUN_WILDCARD) ccb->ccb_h.func_code = XPT_SCAN_LUN; + else { + xpt_print(ccb->ccb_h.path, "illegal scan path\n"); + xpt_free_path(ccb->ccb_h.path); + xpt_free_ccb(ccb); + return; + } ccb->ccb_h.ppriv_ptr1 = ccb->ccb_h.cbfcnp; ccb->ccb_h.cbfcnp = xpt_rescan_done; xpt_setup_ccb(&ccb->ccb_h, ccb->ccb_h.path, CAM_PRIORITY_XPT); Modified: head/sys/cam/scsi/scsi_xpt.c ============================================================================== --- head/sys/cam/scsi/scsi_xpt.c Wed May 26 22:38:45 2010 (r208581) +++ head/sys/cam/scsi/scsi_xpt.c Wed May 26 22:49:42 2010 (r208582) @@ -1494,12 +1494,13 @@ scsi_scan_bus(struct cam_periph *periph, ("scsi_scan_bus\n")); switch (request_ccb->ccb_h.func_code) { case XPT_SCAN_BUS: + case XPT_SCAN_TGT: { scsi_scan_bus_info *scan_info; union ccb *work_ccb, *reset_ccb; struct cam_path *path; u_int i; - u_int max_target; + u_int low_target, max_target; u_int initiator_id; /* Find out the characteristics of the bus */ @@ -1564,13 +1565,18 @@ scsi_scan_bus(struct cam_periph *periph, /* Cache on our stack so we can work asynchronously */ max_target = scan_info->cpi->max_target; + low_target = 0; initiator_id = scan_info->cpi->initiator_id; /* * We can scan all targets in parallel, or do it sequentially. */ - if (scan_info->cpi->hba_misc & PIM_SEQSCAN) { + + if (request_ccb->ccb_h.func_code == XPT_SCAN_TGT) { + max_target = low_target = request_ccb->ccb_h.target_id; + scan_info->counter = 0; + } else if (scan_info->cpi->hba_misc & PIM_SEQSCAN) { max_target = 0; scan_info->counter = 0; } else { @@ -1580,7 +1586,7 @@ scsi_scan_bus(struct cam_periph *periph, } } - for (i = 0; i <= max_target; i++) { + for (i = low_target; i <= max_target; i++) { cam_status status; if (i == initiator_id) continue; @@ -1695,7 +1701,9 @@ scsi_scan_bus(struct cam_periph *periph, hop_again: done = 0; - if (scan_info->cpi->hba_misc & PIM_SEQSCAN) { + if (scan_info->request_ccb->ccb_h.func_code == XPT_SCAN_TGT) { + done = 1; + } else if (scan_info->cpi->hba_misc & PIM_SEQSCAN) { scan_info->counter++; if (scan_info->counter == scan_info->cpi->initiator_id) { @@ -2016,6 +2024,7 @@ scsi_action(union ccb *start_ccb) break; } case XPT_SCAN_BUS: + case XPT_SCAN_TGT: scsi_scan_bus(start_ccb->ccb_h.path->periph, start_ccb); break; case XPT_SCAN_LUN: Modified: head/sys/dev/isp/isp_freebsd.c ============================================================================== --- head/sys/dev/isp/isp_freebsd.c Wed May 26 22:38:45 2010 (r208581) +++ head/sys/dev/isp/isp_freebsd.c Wed May 26 22:49:42 2010 (r208582) @@ -3893,19 +3893,14 @@ isp_make_here(ispsoftc_t *isp, int chan, } /* - * Allocate a CCB, create a wildcard path for this bus/target and schedule a rescan. + * Allocate a CCB, create a wildcard path for this target and schedule a rescan. */ ccb = xpt_alloc_ccb_nowait(); if (ccb == NULL) { isp_prt(isp, ISP_LOGWARN, "Chan %d unable to alloc CCB for rescan", chan); return; } - /* - * xpt_rescan only honors wildcard in the target field. - * Scan the whole bus instead of target, which will then - * force a scan of all luns. - */ - if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, cam_sim_path(fc->sim), CAM_TARGET_WILDCARD, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { + if (xpt_create_path(&ccb->ccb_h.path, xpt_periph, cam_sim_path(fc->sim), tgt, CAM_LUN_WILDCARD) != CAM_REQ_CMP) { isp_prt(isp, ISP_LOGWARN, "unable to create path for rescan"); xpt_free_ccb(ccb); return; From owner-svn-src-all@FreeBSD.ORG Thu May 27 01:27:25 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8CAB0106566C; Thu, 27 May 2010 01:27:25 +0000 (UTC) (envelope-from neel@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7B8098FC0C; Thu, 27 May 2010 01:27:25 +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 o4R1RP8f016560; Thu, 27 May 2010 01:27:25 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4R1RPaT016558; Thu, 27 May 2010 01:27:25 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201005270127.o4R1RPaT016558@svn.freebsd.org> From: Neel Natu Date: Thu, 27 May 2010 01:27:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208585 - head/sys/mips/mips X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 01:27:25 -0000 Author: neel Date: Thu May 27 01:27:25 2010 New Revision: 208585 URL: http://svn.freebsd.org/changeset/base/208585 Log: Simplify clock interrupt handling on mips by using the new KPI - timer1clock() and timer2clock(). Dynamically adjust the tick frequency depending on the value of 'hz'. Tested with hz values of 100, 1000 and 2000. Modified: head/sys/mips/mips/tick.c Modified: head/sys/mips/mips/tick.c ============================================================================== --- head/sys/mips/mips/tick.c Thu May 27 00:09:09 2010 (r208584) +++ head/sys/mips/mips/tick.c Thu May 27 01:27:25 2010 (r208585) @@ -58,19 +58,12 @@ struct timecounter *platform_timecounter static uint64_t cycles_per_tick; static uint64_t cycles_per_usec; -static uint64_t cycles_per_hz, cycles_per_stathz, cycles_per_profhz; static u_int32_t counter_upper = 0; static u_int32_t counter_lower_last = 0; -struct clk_ticks { - u_long hard_ticks; - u_long stat_ticks; - u_long prof_ticks; - uint32_t compare_ticks; -} __aligned(CACHE_LINE_SIZE); - -static struct clk_ticks pcpu_ticks[MAXCPU]; +static DPCPU_DEFINE(uint32_t, compare_ticks); +static DPCPU_DEFINE(uint32_t, lost_ticks); /* * Device methods @@ -150,22 +143,23 @@ mips_timer_init_params(uint64_t platform if (double_count != 0) counter_freq /= 2; - cycles_per_tick = counter_freq / 1000; - cycles_per_hz = counter_freq / hz; - cycles_per_stathz = counter_freq / stathz; - cycles_per_profhz = counter_freq / profhz; + if (hz >= 1500) + timer1hz = hz; + else if (hz >= 750) + timer1hz = hz * 2; + else + timer1hz = hz * 4; + + cycles_per_tick = counter_freq / timer1hz; cycles_per_usec = counter_freq / (1 * 1000 * 1000); counter_timecounter.tc_frequency = counter_freq; - printf("hz=%d cyl_per_tick:%jd cyl_per_usec:%jd freq:%jd " - "cyl_per_hz:%jd cyl_per_stathz:%jd cyl_per_profhz:%jd\n", + printf("hz=%d timer1hz:%d cyl_per_tick:%jd cyl_per_usec:%jd freq:%jd\n", hz, + timer1hz, cycles_per_tick, cycles_per_usec, - counter_freq, - cycles_per_hz, - cycles_per_stathz, - cycles_per_profhz); + counter_freq); set_cputicker(tick_ticker, counter_freq, 1); } @@ -243,58 +237,59 @@ DELAY(int n) } } -#if 0 /* TARGET_OCTEON */ -int64_t wheel_run = 0; - -void octeon_led_run_wheel(); - -#endif /* * Device section of file below */ static int clock_intr(void *arg) { - struct clk_ticks *cpu_ticks; struct trapframe *tf; - uint32_t count, compare, delta; - - cpu_ticks = &pcpu_ticks[PCPU_GET(cpuid)]; + uint32_t count, compare_last, compare_next, lost_ticks; /* * Set next clock edge. */ count = mips_rd_count(); - compare = cpu_ticks->compare_ticks; - cpu_ticks->compare_ticks = count + cycles_per_tick; - mips_wr_compare(cpu_ticks->compare_ticks); + compare_last = DPCPU_GET(compare_ticks); + compare_next = count + cycles_per_tick; + DPCPU_SET(compare_ticks, compare_next); + mips_wr_compare(compare_next); + critical_enter(); if (count < counter_lower_last) { counter_upper++; counter_lower_last = count; } + /* * Magic. Setting up with an arg of NULL means we get passed tf. */ tf = (struct trapframe *)arg; - delta = cycles_per_tick; - /* * Account for the "lost time" between when the timer interrupt fired * and when 'clock_intr' actually started executing. */ - delta += count - compare; + lost_ticks = DPCPU_GET(lost_ticks); + lost_ticks += count - compare_last; /* * If the COUNT and COMPARE registers are no longer in sync then make - * up some reasonable value for the 'delta'. + * up some reasonable value for the 'lost_ticks'. * * This could happen, for e.g., after we resume normal operations after * exiting the debugger. */ - if (delta > cycles_per_hz) - delta = cycles_per_hz; + if (lost_ticks > 2 * cycles_per_tick) + lost_ticks = cycles_per_tick; + + while (lost_ticks >= cycles_per_tick) { + timer1clock(TRAPF_USERMODE(tf), tf->pc); + timer2clock(TRAPF_USERMODE(tf), tf->pc); + lost_ticks -= cycles_per_tick; + } + DPCPU_SET(lost_ticks, lost_ticks); + #ifdef KDTRACE_HOOKS /* * If the DTrace hooks are configured and a callback function @@ -305,39 +300,9 @@ clock_intr(void *arg) if (cyclic_clock_func[cpu] != NULL) (*cyclic_clock_func[cpu])(tf); #endif - /* Fire hardclock at hz. */ - cpu_ticks->hard_ticks += delta; - if (cpu_ticks->hard_ticks >= cycles_per_hz) { - cpu_ticks->hard_ticks -= cycles_per_hz; - if (PCPU_GET(cpuid) == 0) - hardclock(TRAPF_USERMODE(tf), tf->pc); - else - hardclock_cpu(TRAPF_USERMODE(tf)); - } - - /* Fire statclock at stathz. */ - cpu_ticks->stat_ticks += delta; - if (cpu_ticks->stat_ticks >= cycles_per_stathz) { - cpu_ticks->stat_ticks -= cycles_per_stathz; - statclock(TRAPF_USERMODE(tf)); - } - - /* Fire profclock at profhz, but only when needed. */ - cpu_ticks->prof_ticks += delta; - if (cpu_ticks->prof_ticks >= cycles_per_profhz) { - cpu_ticks->prof_ticks -= cycles_per_profhz; - if (profprocs != 0) - profclock(TRAPF_USERMODE(tf), tf->pc); - } + timer1clock(TRAPF_USERMODE(tf), tf->pc); + timer2clock(TRAPF_USERMODE(tf), tf->pc); critical_exit(); -#if 0 /* TARGET_OCTEON */ - /* Run the FreeBSD display once every hz ticks */ - wheel_run += cycles_per_tick; - if (wheel_run >= cycles_per_usec * 1000000ULL) { - wheel_run = 0; - octeon_led_run_wheel(); - } -#endif return (FILTER_HANDLED); } From owner-svn-src-all@FreeBSD.ORG Thu May 27 03:15:05 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5EC4A1065673; Thu, 27 May 2010 03:15:05 +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 414AA8FC2E; Thu, 27 May 2010 03:15: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 o4R3F5xW041575; 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 o4R3F58T041571; Thu, 27 May 2010 03:15:05 GMT (envelope-from cperciva@svn.freebsd.org) Message-Id: <201005270315.o4R3F58T041571@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-7@freebsd.org X-SVN-Group: stable-7 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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 03:15:05 -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/7/contrib/opie/libopie/readrec.c stable/7/lib/libc/sys/mount.2 stable/7/sys/nfsclient/nfs_vfsops.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/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 Modified: stable/7/contrib/opie/libopie/readrec.c ============================================================================== --- stable/7/contrib/opie/libopie/readrec.c Thu May 27 01:27:25 2010 (r208585) +++ stable/7/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/7/lib/libc/sys/mount.2 ============================================================================== --- stable/7/lib/libc/sys/mount.2 Thu May 27 01:27:25 2010 (r208585) +++ stable/7/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/7/sys/nfsclient/nfs_vfsops.c ============================================================================== --- stable/7/sys/nfsclient/nfs_vfsops.c Thu May 27 01:27:25 2010 (r208585) +++ stable/7/sys/nfsclient/nfs_vfsops.c Thu May 27 03:15:04 2010 (r208586) @@ -1002,6 +1002,11 @@ nfs_mount(struct mount *mp, struct threa nfs_decode_args(mp, nmp, &args, NULL); goto out; } + if (args.fhsize < 0 || args.fhsize > NFSX_V3FHMAX) { + vfs_mount_error(mp, "Bad file handle"); + error = EINVAL; + goto out; + } /* * Make the nfs_ip_paranoia sysctl serve as the default connection From owner-svn-src-all@FreeBSD.ORG Thu May 27 03:15:05 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7E0161065677; Thu, 27 May 2010 03:15:05 +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 69DD48FC13; Thu, 27 May 2010 03:15: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 o4R3F50l041584; 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 o4R3F5WM041579; Thu, 27 May 2010 03:15:05 GMT (envelope-from cperciva@svn.freebsd.org) Message-Id: <201005270315.o4R3F5WM041579@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-head@freebsd.org X-SVN-Group: head 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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 03:15:05 -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: head/contrib/opie/libopie/readrec.c head/lib/libc/sys/mount.2 head/sys/nfsclient/nfs_vfsops.c head/usr.sbin/jail/jail.c Changes in other areas also in this revision: Modified: 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 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 Modified: head/contrib/opie/libopie/readrec.c ============================================================================== --- head/contrib/opie/libopie/readrec.c Thu May 27 01:27:25 2010 (r208585) +++ head/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: head/lib/libc/sys/mount.2 ============================================================================== --- head/lib/libc/sys/mount.2 Thu May 27 01:27:25 2010 (r208585) +++ head/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 @@ -374,3 +374,10 @@ system call first appeared in .Fx 5.0 . .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: head/sys/nfsclient/nfs_vfsops.c ============================================================================== --- head/sys/nfsclient/nfs_vfsops.c Thu May 27 01:27:25 2010 (r208585) +++ head/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: head/usr.sbin/jail/jail.c ============================================================================== --- head/usr.sbin/jail/jail.c Thu May 27 01:27:25 2010 (r208585) +++ head/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)) { From owner-svn-src-all@FreeBSD.ORG Thu May 27 03:15:05 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C5E1D106567F; Thu, 27 May 2010 03:15:05 +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 B0C628FC28; Thu, 27 May 2010 03:15: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 o4R3F5oV041611; 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 o4R3F5YA041588; Thu, 27 May 2010 03:15:05 GMT (envelope-from cperciva@svn.freebsd.org) Message-Id: <201005270315.o4R3F5YA041588@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-releng@freebsd.org X-SVN-Group: releng 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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 03:15:05 -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: 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 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 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 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 Modified: releng/6.4/UPDATING ============================================================================== --- releng/6.4/UPDATING Thu May 27 01:27:25 2010 (r208585) +++ releng/6.4/UPDATING Thu May 27 03:15:04 2010 (r208586) @@ -8,6 +8,9 @@ Items affecting the ports and packages s /usr/ports/UPDATING. Please read that file before running portupgrade. +20100526: p10 FreeBSD-SA-10:05.opie + Fix a one-NUL-byte buffer overflow in libopie. [10:05] + 20100106: p9 FreeBSD-SA-10:01.bind, FreeBSD-SA-10:02.ntpd Fix BIND named(8) cache poisoning with DNSSEC validation. [SA-10:01] Modified: releng/6.4/contrib/opie/libopie/readrec.c ============================================================================== --- releng/6.4/contrib/opie/libopie/readrec.c Thu May 27 01:27:25 2010 (r208585) +++ releng/6.4/contrib/opie/libopie/readrec.c Thu May 27 03:15:04 2010 (r208586) @@ -139,10 +139,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: releng/6.4/sys/conf/newvers.sh ============================================================================== --- releng/6.4/sys/conf/newvers.sh Thu May 27 01:27:25 2010 (r208585) +++ releng/6.4/sys/conf/newvers.sh Thu May 27 03:15:04 2010 (r208586) @@ -32,7 +32,7 @@ TYPE="FreeBSD" REVISION="6.4" -BRANCH="RELEASE-p9" +BRANCH="RELEASE-p10" if [ "X${BRANCH_OVERRIDE}" != "X" ]; then BRANCH=${BRANCH_OVERRIDE} fi Modified: releng/7.1/UPDATING ============================================================================== --- releng/7.1/UPDATING Thu May 27 01:27:25 2010 (r208585) +++ releng/7.1/UPDATING Thu May 27 03:15:04 2010 (r208586) @@ -8,6 +8,9 @@ Items affecting the ports and packages s /usr/ports/UPDATING. Please read that file before running portupgrade. +20100526: p12 FreeBSD-SA-10:05.opie + Fix a one-NUL-byte buffer overflow in libopie. [10:05] + 20100227: p11 FreeBSD-EN-10:02.sched_ule Fix a deadlock in the ULE scheduler. Modified: releng/7.1/contrib/opie/libopie/readrec.c ============================================================================== --- releng/7.1/contrib/opie/libopie/readrec.c Thu May 27 01:27:25 2010 (r208585) +++ releng/7.1/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: releng/7.1/sys/conf/newvers.sh ============================================================================== --- releng/7.1/sys/conf/newvers.sh Thu May 27 01:27:25 2010 (r208585) +++ releng/7.1/sys/conf/newvers.sh Thu May 27 03:15:04 2010 (r208586) @@ -32,7 +32,7 @@ TYPE="FreeBSD" REVISION="7.1" -BRANCH="RELEASE-p11" +BRANCH="RELEASE-p12" if [ "X${BRANCH_OVERRIDE}" != "X" ]; then BRANCH=${BRANCH_OVERRIDE} fi Modified: releng/7.2/UPDATING ============================================================================== --- releng/7.2/UPDATING Thu May 27 01:27:25 2010 (r208585) +++ releng/7.2/UPDATING Thu May 27 03:15:04 2010 (r208586) @@ -8,6 +8,11 @@ Items affecting the ports and packages s /usr/ports/UPDATING. Please read that file before running portupgrade. +20100526: p8 FreeBSD-SA-10:05.opie, FreeBSD-SA-10:06.nfsclient + Fix a one-NUL-byte buffer overflow in libopie. [10:05] + + Correctly sanity-check a buffer length in nfs mount. [10:06] + 20100227: p7 FreeBSD-EN-10:02.sched_ule Fix a deadlock in the ULE scheduler. Modified: releng/7.2/contrib/opie/libopie/readrec.c ============================================================================== --- releng/7.2/contrib/opie/libopie/readrec.c Thu May 27 01:27:25 2010 (r208585) +++ releng/7.2/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: releng/7.2/lib/libc/sys/mount.2 ============================================================================== --- releng/7.2/lib/libc/sys/mount.2 Thu May 27 01:27:25 2010 (r208585) +++ releng/7.2/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: releng/7.2/sys/conf/newvers.sh ============================================================================== --- releng/7.2/sys/conf/newvers.sh Thu May 27 01:27:25 2010 (r208585) +++ releng/7.2/sys/conf/newvers.sh Thu May 27 03:15:04 2010 (r208586) @@ -32,7 +32,7 @@ TYPE="FreeBSD" REVISION="7.2" -BRANCH="RELEASE-p7" +BRANCH="RELEASE-p8" if [ "X${BRANCH_OVERRIDE}" != "X" ]; then BRANCH=${BRANCH_OVERRIDE} fi Modified: releng/7.2/sys/nfsclient/nfs_vfsops.c ============================================================================== --- releng/7.2/sys/nfsclient/nfs_vfsops.c Thu May 27 01:27:25 2010 (r208585) +++ releng/7.2/sys/nfsclient/nfs_vfsops.c Thu May 27 03:15:04 2010 (r208586) @@ -1002,6 +1002,11 @@ nfs_mount(struct mount *mp, struct threa nfs_decode_args(mp, nmp, &args, NULL); goto out; } + if (args.fhsize < 0 || args.fhsize > NFSX_V3FHMAX) { + vfs_mount_error(mp, "Bad file handle"); + error = EINVAL; + goto out; + } /* * Make the nfs_ip_paranoia sysctl serve as the default connection Modified: releng/7.3/UPDATING ============================================================================== --- releng/7.3/UPDATING Thu May 27 01:27:25 2010 (r208585) +++ releng/7.3/UPDATING Thu May 27 03:15:04 2010 (r208586) @@ -8,6 +8,11 @@ Items affecting the ports and packages s /usr/ports/UPDATING. Please read that file before running portupgrade. +20100526: p1 FreeBSD-SA-10:05.opie, FreeBSD-SA-10:06.nfsclient + Fix a one-NUL-byte buffer overflow in libopie. [10:05] + + Correctly sanity-check a buffer length in nfs mount. [10:06] + 20100323: FreeBSD 7.3-RELEASE Modified: releng/7.3/contrib/opie/libopie/readrec.c ============================================================================== --- releng/7.3/contrib/opie/libopie/readrec.c Thu May 27 01:27:25 2010 (r208585) +++ releng/7.3/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: releng/7.3/lib/libc/sys/mount.2 ============================================================================== --- releng/7.3/lib/libc/sys/mount.2 Thu May 27 01:27:25 2010 (r208585) +++ releng/7.3/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: releng/7.3/sys/conf/newvers.sh ============================================================================== --- releng/7.3/sys/conf/newvers.sh Thu May 27 01:27:25 2010 (r208585) +++ releng/7.3/sys/conf/newvers.sh Thu May 27 03:15:04 2010 (r208586) @@ -32,7 +32,7 @@ TYPE="FreeBSD" REVISION="7.3" -BRANCH="RELEASE" +BRANCH="RELEASE-p1" if [ "X${BRANCH_OVERRIDE}" != "X" ]; then BRANCH=${BRANCH_OVERRIDE} fi Modified: releng/7.3/sys/nfsclient/nfs_vfsops.c ============================================================================== --- releng/7.3/sys/nfsclient/nfs_vfsops.c Thu May 27 01:27:25 2010 (r208585) +++ releng/7.3/sys/nfsclient/nfs_vfsops.c Thu May 27 03:15:04 2010 (r208586) @@ -1002,6 +1002,11 @@ nfs_mount(struct mount *mp, struct threa nfs_decode_args(mp, nmp, &args, NULL); goto out; } + if (args.fhsize < 0 || args.fhsize > NFSX_V3FHMAX) { + vfs_mount_error(mp, "Bad file handle"); + error = EINVAL; + goto out; + } /* * Make the nfs_ip_paranoia sysctl serve as the default connection Modified: releng/8.0/UPDATING ============================================================================== --- releng/8.0/UPDATING Thu May 27 01:27:25 2010 (r208585) +++ releng/8.0/UPDATING Thu May 27 03:15:04 2010 (r208586) @@ -15,6 +15,15 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 8. debugging tools present in HEAD were left in place because sun4v support still needs work to become production ready. +20100526: p3 FreeBSD-SA-10:04.jail, FreeBSD-SA-10:05.opie, + FreeBSD-SA-10:06.nfsclient + 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] + 20100106: p2 FreeBSD-SA-10:01.bind, FreeBSD-SA-10:02.ntpd, FreeBSD-SA-10:03.zfs, FreeBSD-EN-10:01.freebsd Fix BIND named(8) cache poisoning with DNSSEC validation. Modified: releng/8.0/contrib/opie/libopie/readrec.c ============================================================================== --- releng/8.0/contrib/opie/libopie/readrec.c Thu May 27 01:27:25 2010 (r208585) +++ releng/8.0/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: releng/8.0/lib/libc/sys/mount.2 ============================================================================== --- releng/8.0/lib/libc/sys/mount.2 Thu May 27 01:27:25 2010 (r208585) +++ releng/8.0/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: releng/8.0/sys/conf/newvers.sh ============================================================================== --- releng/8.0/sys/conf/newvers.sh Thu May 27 01:27:25 2010 (r208585) +++ releng/8.0/sys/conf/newvers.sh Thu May 27 03:15:04 2010 (r208586) @@ -32,7 +32,7 @@ TYPE="FreeBSD" REVISION="8.0" -BRANCH="RELEASE-p2" +BRANCH="RELEASE-p3" if [ "X${BRANCH_OVERRIDE}" != "X" ]; then BRANCH=${BRANCH_OVERRIDE} fi Modified: releng/8.0/sys/nfsclient/nfs_vfsops.c ============================================================================== --- releng/8.0/sys/nfsclient/nfs_vfsops.c Thu May 27 01:27:25 2010 (r208585) +++ releng/8.0/sys/nfsclient/nfs_vfsops.c Thu May 27 03:15:04 2010 (r208586) @@ -1054,6 +1054,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: releng/8.0/usr.sbin/jail/jail.c ============================================================================== --- releng/8.0/usr.sbin/jail/jail.c Thu May 27 01:27:25 2010 (r208585) +++ releng/8.0/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)) { From owner-svn-src-all@FreeBSD.ORG Thu May 27 03:15:06 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0B4CA106566B; 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 D1A508FC29; Thu, 27 May 2010 03:15: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 o4R3F5sm041617; 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 o4R3F5Kl041615; Thu, 27 May 2010 03:15:05 GMT (envelope-from cperciva@svn.freebsd.org) Message-Id: <201005270315.o4R3F5Kl041615@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-6@freebsd.org X-SVN-Group: stable-6 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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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/6/contrib/opie/libopie/readrec.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/7/contrib/opie/libopie/readrec.c stable/7/lib/libc/sys/mount.2 stable/7/sys/nfsclient/nfs_vfsops.c 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 Modified: stable/6/contrib/opie/libopie/readrec.c ============================================================================== --- stable/6/contrib/opie/libopie/readrec.c Thu May 27 01:27:25 2010 (r208585) +++ stable/6/contrib/opie/libopie/readrec.c Thu May 27 03:15:04 2010 (r208586) @@ -139,10 +139,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) From owner-svn-src-all@FreeBSD.ORG Thu May 27 03:15:06 2010 Return-Path: Delivered-To: svn-src-all@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-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" 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)) { From owner-svn-src-all@FreeBSD.ORG Thu May 27 03:20:24 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2FA901065678; Thu, 27 May 2010 03:20:24 +0000 (UTC) (envelope-from mavbsd@gmail.com) Received: from mail-fx0-f54.google.com (mail-fx0-f54.google.com [209.85.161.54]) by mx1.freebsd.org (Postfix) with ESMTP id 16D3B8FC13; Thu, 27 May 2010 03:20:22 +0000 (UTC) Received: by fxm20 with SMTP id 20so63619fxm.13 for ; Wed, 26 May 2010 20:20:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:sender:message-id:date:from :user-agent:mime-version:to:cc:subject:references:in-reply-to :x-enigmail-version:content-type:content-transfer-encoding; bh=v1e8Oz9vtO7vgqxSA0KfdQ6F5Wh7ZRHc/gSEW1HNgaA=; b=f00A1JeTflATK050KbpPl65JJPSQeqy/gyGo+t58VihiZ8q4LvE1i25LimpDp3i6Qo Y7wT1YE1l5sASA0Gb0Cvje663dDIB6DhD1xRpwZUIFA0j/20M8nnJyCP/Wlt4zu6ArOp 8oZ+ZsM2KZoBrzvq9jw2MJbrnt1qW2d8VVkYk= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:x-enigmail-version:content-type :content-transfer-encoding; b=lXfeJwfr+t9/tVyZkTSc/rrZGPvIwSzAyLFY9Mh6UO81L1BwMZ+Q3U4/SdUX6xe9cK HTrYTU4DpyW09opdvOlfZimXMDr/5Rn58ZrQpKc1jiIomHDrdEbDzsI74zLK+AaavoKQ RGDADXD/DPysgXzTzMrMryUh7EehtITFiCneU= Received: by 10.223.45.200 with SMTP id g8mr3374948faf.67.1274930422183; Wed, 26 May 2010 20:20:22 -0700 (PDT) Received: from mavbook.mavhome.dp.ua (pc.mavhome.dp.ua [212.86.226.226]) by mx.google.com with ESMTPS id u12sm3513892fah.4.2010.05.26.20.20.20 (version=SSLv3 cipher=RC4-MD5); Wed, 26 May 2010 20:20:21 -0700 (PDT) Sender: Alexander Motin Message-ID: <4BFDE4E3.4060300@FreeBSD.org> Date: Thu, 27 May 2010 06:20:03 +0300 From: Alexander Motin User-Agent: Thunderbird 2.0.0.24 (X11/20100402) MIME-Version: 1.0 To: Neel Natu References: <201005270127.o4R1RPaT016558@svn.freebsd.org> In-Reply-To: <201005270127.o4R1RPaT016558@svn.freebsd.org> X-Enigmail-Version: 0.96.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r208585 - head/sys/mips/mips X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 03:20:24 -0000 Neel Natu wrote: > Author: neel > Date: Thu May 27 01:27:25 2010 > New Revision: 208585 > URL: http://svn.freebsd.org/changeset/base/208585 > > Log: > Simplify clock interrupt handling on mips by using the new KPI - timer1clock() > and timer2clock(). > > Dynamically adjust the tick frequency depending on the value of 'hz'. Tested > with hz values of 100, 1000 and 2000. > > Modified: > head/sys/mips/mips/tick.c > - if (profprocs != 0) > - profclock(TRAPF_USERMODE(tf), tf->pc); > - } > + timer1clock(TRAPF_USERMODE(tf), tf->pc); > + timer2clock(TRAPF_USERMODE(tf), tf->pc); > critical_exit(); > -#if 0 /* TARGET_OCTEON */ You are not setting timer2hz, so timer2clock() will be emulated automatically. It should not be called explicitly, or statclock() will be called twice. Also, as soon as you run timer1 on frequency higher then hz - it is strange to see stathz = hz; profhz = hz; there. It is just useless. Better would be to do same as for x86: profhz = timer1hz; if (timer1hz < 128) stathz = timer1hz; else stathz = timer1hz / (timer1hz / 128); -- Alexander Motin From owner-svn-src-all@FreeBSD.ORG Thu May 27 05:44:38 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9CD9F1065674; Thu, 27 May 2010 05:44:38 +0000 (UTC) (envelope-from kientzle@freebsd.org) Received: from monday.kientzle.com (kientzle.com [66.166.149.50]) by mx1.freebsd.org (Postfix) with ESMTP id 698E68FC13; Thu, 27 May 2010 05:44:38 +0000 (UTC) Received: (from root@localhost) by monday.kientzle.com (8.14.3/8.14.3) id o4R5itMf021500; Thu, 27 May 2010 05:44:55 GMT (envelope-from kientzle@freebsd.org) Received: from horton.x.kientzle.com (fw2.kientzle.com [10.123.1.2]) by kientzle.com with SMTP id dv7v6nb3fwsgyf3fgsq66nfhme; Thu, 27 May 2010 05:44:54 +0000 (UTC) (envelope-from kientzle@freebsd.org) Message-ID: <4BFE06C3.6040704@freebsd.org> Date: Wed, 26 May 2010 22:44:35 -0700 From: Tim Kientzle User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.23) Gecko/20100314 SeaMonkey/1.1.18 MIME-Version: 1.0 To: Kostik Belousov References: <201005251748.o4PHmI5T093246@svn.freebsd.org> <4BFD6F80.8030700@delphij.net> <20100526191502.GG83316@deviant.kiev.zoral.com.ua> In-Reply-To: <20100526191502.GG83316@deviant.kiev.zoral.com.ua> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, Garrett Cooper , svn-src-all@freebsd.org, Rob Farmer , src-committers@freebsd.org Subject: Re: svn commit: r208545 - in head/release: amd64 i386 ia64 pc98 powerpc sparc64 sun4v X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 05:44:38 -0000 Kostik Belousov wrote: >> On 2010/05/26 11:47, Garrett Cooper wrote: >>> On Wed, May 26, 2010 at 11:28 AM, Rob Farmer wrote: >>>> Does the order of the libs entries matter? ... >>>> >>> In theory it shouldn't because the linker should be smart enough >>> to evaluate the dependencies and link everything properly, but our >>> copy of binutils isn't intelligent enough to determine the appropriate >>> order from what I've seen. > > Comments about "linker not being smart enough" are nonsense. In fact, library link ordering is quite critical in some places, since it allows you to override functions provided by later libraries. Many people use this to override the system malloc() (for debugging or code size purposes) by simply linking against another library before libc. I've also used this trick to override getpwnam() so as to avoid the 1/2 megabyte of libc networking code that gets pulled in by the standard implementation. Tim From owner-svn-src-all@FreeBSD.ORG Thu May 27 06:24:51 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A4619106567A; Thu, 27 May 2010 06:24:51 +0000 (UTC) (envelope-from neelnatu@gmail.com) Received: from mail-pz0-f183.google.com (mail-pz0-f183.google.com [209.85.222.183]) by mx1.freebsd.org (Postfix) with ESMTP id 1B4158FC28; Thu, 27 May 2010 06:24:51 +0000 (UTC) Received: by pzk13 with SMTP id 13so5422650pzk.13 for ; Wed, 26 May 2010 23:24:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=hLrrjWxwIZsdSlMDGWSe8VAyPGC40+D1GdfAqit8mdM=; b=l6kfV1ClV2CzLGbX63Nq3H6v9FW0hChYkZAxGcJF/K0NyKBljyKTZSqWFU2sTLKN6f SsOEsS4C7q/Dl5LMbVWnlxau7BSFf2EswUUTNlr8TneRO3KnQsFhJM4ihxvVZLtSRNsf PI7gBvXeSe35GCdqsguNU2Hd/yNhn6+ydu+sg= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=u+IKGo6DkOqblg+aj1IPiCrHLSKsUfhbUUJQzMqXzS/Xi8y7301MpDu3TR2Cb0IW1y MSHTOPvJ2SZV5p0YQUwrE4aD91pLFqdA7ReFdSiE0n8tJ8+OkakslJsPMwybxw/qDZKF 6otv1E66w1AnuPIUWsStNXB816BJhmeCV8Eq8= MIME-Version: 1.0 Received: by 10.142.201.17 with SMTP id y17mr6733307wff.283.1274941490751; Wed, 26 May 2010 23:24:50 -0700 (PDT) Received: by 10.142.172.9 with HTTP; Wed, 26 May 2010 23:24:50 -0700 (PDT) In-Reply-To: <4BFDE4E3.4060300@FreeBSD.org> References: <201005270127.o4R1RPaT016558@svn.freebsd.org> <4BFDE4E3.4060300@FreeBSD.org> Date: Wed, 26 May 2010 23:24:50 -0700 Message-ID: From: Neel Natu To: Alexander Motin Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Neel Natu Subject: Re: svn commit: r208585 - head/sys/mips/mips X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 06:24:51 -0000 Hi Alexander, On Wed, May 26, 2010 at 8:20 PM, Alexander Motin wrote: > Neel Natu wrote: >> Author: neel >> Date: Thu May 27 01:27:25 2010 >> New Revision: 208585 >> URL: http://svn.freebsd.org/changeset/base/208585 >> >> Log: >> =A0 Simplify clock interrupt handling on mips by using the new KPI - tim= er1clock() >> =A0 and timer2clock(). >> >> =A0 Dynamically adjust the tick frequency depending on the value of 'hz'= . Tested >> =A0 with hz values of 100, 1000 and 2000. >> >> Modified: >> =A0 head/sys/mips/mips/tick.c > >> - =A0 =A0 =A0 =A0 =A0 =A0 if (profprocs !=3D 0) >> - =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 profclock(TRAPF_USERMODE(tf), = tf->pc); >> - =A0 =A0 } >> + =A0 =A0 timer1clock(TRAPF_USERMODE(tf), tf->pc); >> + =A0 =A0 timer2clock(TRAPF_USERMODE(tf), tf->pc); >> =A0 =A0 =A0 critical_exit(); >> -#if 0 /* TARGET_OCTEON */ > > You are not setting timer2hz, so timer2clock() will be emulated > automatically. It should not be called explicitly, or statclock() will > be called twice. > I'll fix this. > Also, as soon as you run timer1 on frequency higher then hz - it is > strange to see > =A0 =A0 =A0 =A0stathz =3D hz; > =A0 =A0 =A0 =A0profhz =3D hz; > there. It is just useless. Better would be to do same as for x86: > =A0 =A0 =A0 =A0profhz =3D timer1hz; > =A0 =A0 =A0 =A0if (timer1hz < 128) > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0stathz =3D timer1hz; > =A0 =A0 =A0 =A0else > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0stathz =3D timer1hz / (timer1hz / 128); > I see your point with the profiling timer. I'll fix that to be like x86. However it is not immediately obvious why we prefer to run the statistics timer at (or very close to) 128Hz. Any pointers? best Neel > -- > Alexander Motin > From owner-svn-src-all@FreeBSD.ORG Thu May 27 06:57:16 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 916A31065679; Thu, 27 May 2010 06:57:16 +0000 (UTC) (envelope-from mavbsd@gmail.com) Received: from mail-fx0-f54.google.com (mail-fx0-f54.google.com [209.85.161.54]) by mx1.freebsd.org (Postfix) with ESMTP id 9253B8FC1B; Thu, 27 May 2010 06:57:15 +0000 (UTC) Received: by fxm20 with SMTP id 20so186936fxm.13 for ; Wed, 26 May 2010 23:57:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:sender:message-id:date:from :user-agent:mime-version:to:cc:subject:references:in-reply-to :x-enigmail-version:content-type:content-transfer-encoding; bh=Rpi5tFnTNs9YHTiaT07KYDNrx73kXxfDeokPdoHFOZw=; b=lJJu+wsZqOzFsd76AbIyOFSFBQncdATz7noDFEaJfX8a2a+Y7wHxpK7oBgAUPoY7GH OIqCHh4jAQCtZEySoVE0/6NANqis2SKeS2kVzo6DjidhaGfHUe8UwJKtimSRMl5NHUE0 +/ous8LKhNcoJ2nefB9TC5DBU67qHdZe6maNI= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=sender:message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:x-enigmail-version:content-type :content-transfer-encoding; b=hZEi1JIUN9gEEtzUFBVGelRdEgND0AaBuW9pNNT2jvh8tDesgx3n3iT5gWSFOQsuRq oI1KfIZlSlNZ8Z0Lrqt4IV1PkpcBfhcDaI6/W+lXnQDtJH8LGrDRhmIxydYhRDtEoHXM cQG+yJvOExTZPXqr1Mqip8lk5bjR/bXLQk6Oc= Received: by 10.223.77.86 with SMTP id f22mr8612974fak.49.1274943434244; Wed, 26 May 2010 23:57:14 -0700 (PDT) Received: from mavbook.mavhome.dp.ua (pc.mavhome.dp.ua [212.86.226.226]) by mx.google.com with ESMTPS id 2sm4234449faf.15.2010.05.26.23.57.12 (version=SSLv3 cipher=RC4-MD5); Wed, 26 May 2010 23:57:13 -0700 (PDT) Sender: Alexander Motin Message-ID: <4BFE17AE.2080709@FreeBSD.org> Date: Thu, 27 May 2010 09:56:46 +0300 From: Alexander Motin User-Agent: Thunderbird 2.0.0.23 (X11/20091212) MIME-Version: 1.0 To: Neel Natu References: <201005270127.o4R1RPaT016558@svn.freebsd.org> <4BFDE4E3.4060300@FreeBSD.org> In-Reply-To: X-Enigmail-Version: 0.96.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r208585 - head/sys/mips/mips X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 06:57:16 -0000 Neel Natu wrote: > However it is not immediately obvious why we prefer to run the > statistics timer at (or very close to) 128Hz. Any pointers? I haven't looked myself, but sources report that some legacy code depend on it: http://lists.freebsd.org/pipermail/freebsd-arch/2009-December/009731.html In any case it should not be equal to hz whenever possible. -- Alexander Motin From owner-svn-src-all@FreeBSD.ORG Thu May 27 08:10:12 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DF9241065670; Thu, 27 May 2010 08:10:12 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id CEED88FC12; Thu, 27 May 2010 08:10:12 +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 o4R8ACee006688; Thu, 27 May 2010 08:10:12 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4R8ACEX006685; Thu, 27 May 2010 08:10:12 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201005270810.o4R8ACEX006685@svn.freebsd.org> From: Attilio Rao Date: Thu, 27 May 2010 08:10:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208587 - in head/sys: kern sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 08:10:13 -0000 Author: attilio Date: Thu May 27 08:10:12 2010 New Revision: 208587 URL: http://svn.freebsd.org/changeset/base/208587 Log: Add the support for reporting the NOCOREDUMP flag from sysctl_kern_proc_vmmap(). Sponsored by: Sandvine Incorporated Reviewed by: kib, emaste MFC after: 1 week Modified: head/sys/kern/kern_proc.c head/sys/sys/user.h Modified: head/sys/kern/kern_proc.c ============================================================================== --- head/sys/kern/kern_proc.c Thu May 27 03:15:04 2010 (r208586) +++ head/sys/kern/kern_proc.c Thu May 27 08:10:12 2010 (r208587) @@ -1577,6 +1577,8 @@ sysctl_kern_proc_ovmmap(SYSCTL_HANDLER_A kve->kve_flags |= KVME_FLAG_COW; if (entry->eflags & MAP_ENTRY_NEEDS_COPY) kve->kve_flags |= KVME_FLAG_NEEDS_COPY; + if (entry->eflags & MAP_ENTRY_NOCOREDUMP) + kve->kve_flags |= KVME_FLAG_NOCOREDUMP; last_timestamp = map->timestamp; vm_map_unlock_read(map); @@ -1752,6 +1754,8 @@ sysctl_kern_proc_vmmap(SYSCTL_HANDLER_AR kve->kve_flags |= KVME_FLAG_COW; if (entry->eflags & MAP_ENTRY_NEEDS_COPY) kve->kve_flags |= KVME_FLAG_NEEDS_COPY; + if (entry->eflags & MAP_ENTRY_NOCOREDUMP) + kve->kve_flags |= KVME_FLAG_NOCOREDUMP; last_timestamp = map->timestamp; vm_map_unlock_read(map); Modified: head/sys/sys/user.h ============================================================================== --- head/sys/sys/user.h Thu May 27 03:15:04 2010 (r208586) +++ head/sys/sys/user.h Thu May 27 08:10:12 2010 (r208587) @@ -336,6 +336,7 @@ struct kinfo_file { #define KVME_FLAG_COW 0x00000001 #define KVME_FLAG_NEEDS_COPY 0x00000002 +#define KVME_FLAG_NOCOREDUMP 0x00000004 #if defined(__amd64__) #define KINFO_OVMENTRY_SIZE 1168 From owner-svn-src-all@FreeBSD.ORG Thu May 27 08:21:53 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6CF8E1065678; Thu, 27 May 2010 08:21:53 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 573C08FC28; Thu, 27 May 2010 08:21: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 o4R8LqoF009315; Thu, 27 May 2010 08:21:52 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4R8LqOr009312; Thu, 27 May 2010 08:21:52 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <201005270821.o4R8LqOr009312@svn.freebsd.org> From: Rui Paulo Date: Thu, 27 May 2010 08:21:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208588 - in head/share/doc/legal: . intel_iwn X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 08:21:53 -0000 Author: rpaulo Date: Thu May 27 08:21:52 2010 New Revision: 208588 URL: http://svn.freebsd.org/changeset/base/208588 Log: Install Intel iwn(4) firmware license. MFC after: 3 days Added: head/share/doc/legal/intel_iwn/ head/share/doc/legal/intel_iwn/Makefile (contents, props changed) Modified: head/share/doc/legal/Makefile Modified: head/share/doc/legal/Makefile ============================================================================== --- head/share/doc/legal/Makefile Thu May 27 08:10:12 2010 (r208587) +++ head/share/doc/legal/Makefile Thu May 27 08:21:52 2010 (r208588) @@ -2,6 +2,7 @@ SUBDIR= intel_ipw \ intel_iwi \ + intel_iwn \ intel_wpi .include Added: head/share/doc/legal/intel_iwn/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/share/doc/legal/intel_iwn/Makefile Thu May 27 08:21:52 2010 (r208588) @@ -0,0 +1,7 @@ +# $FreeBSD$ + +NO_OBJ= +FILES= ${.CURDIR}/../../../../sys/contrib/dev/iwn/LICENSE +FILESDIR= ${SHAREDIR}/doc/legal/intel_iwn + +.include From owner-svn-src-all@FreeBSD.ORG Thu May 27 10:05:40 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A16591065677; Thu, 27 May 2010 10:05:40 +0000 (UTC) (envelope-from jchandra@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9065F8FC1A; Thu, 27 May 2010 10:05: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 o4RA5ewY032271; Thu, 27 May 2010 10:05:40 GMT (envelope-from jchandra@svn.freebsd.org) Received: (from jchandra@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4RA5eVu032269; Thu, 27 May 2010 10:05:40 GMT (envelope-from jchandra@svn.freebsd.org) Message-Id: <201005271005.o4RA5eVu032269@svn.freebsd.org> From: "Jayachandran C." Date: Thu, 27 May 2010 10:05:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208589 - head/sys/mips/mips X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 10:05:40 -0000 Author: jchandra Date: Thu May 27 10:05:40 2010 New Revision: 208589 URL: http://svn.freebsd.org/changeset/base/208589 Log: Call VM_WAIT in pmap_ptpgzone_allocf() if M_WAITOK is set. Removed unused variable. Approved by: rrs (mentor) Modified: head/sys/mips/mips/pmap.c Modified: head/sys/mips/mips/pmap.c ============================================================================== --- head/sys/mips/mips/pmap.c Thu May 27 08:21:52 2010 (r208588) +++ head/sys/mips/mips/pmap.c Thu May 27 10:05:40 2010 (r208589) @@ -969,10 +969,15 @@ pmap_ptpgzone_allocf(uma_zone_t zone, in ("pmap_ptpgzone_allocf: invalid allocation size %d", bytes)); *flags = UMA_SLAB_PRIV; - m = vm_phys_alloc_contig(1, 0, MIPS_KSEG0_LARGEST_PHYS, - PAGE_SIZE, PAGE_SIZE); - if (m == NULL) - return (NULL); + for (;;) { + m = vm_phys_alloc_contig(1, 0, MIPS_KSEG0_LARGEST_PHYS, + PAGE_SIZE, PAGE_SIZE); + if (m != NULL) + break; + if ((wait & M_WAITOK) == 0) + return (NULL); + VM_WAIT; + } paddr = VM_PAGE_TO_PHYS(m); return ((void *)MIPS_PHYS_TO_KSEG0(paddr)); @@ -1039,8 +1044,10 @@ pmap_pinit(pmap_t pmap) * allocate the page directory page */ ptdpg = pmap_alloc_pte_page(pmap, NUSERPGTBLS, M_WAITOK, &ptdva); - pmap->pm_segtab = (pd_entry_t *)ptdva; + if (ptdpg == NULL) + return (0); + pmap->pm_segtab = (pd_entry_t *)ptdva; pmap->pm_active = 0; pmap->pm_ptphint = NULL; for (i = 0; i < MAXCPU; i++) { @@ -1062,13 +1069,11 @@ _pmap_allocpte(pmap_t pmap, unsigned pte { vm_offset_t pteva; vm_page_t m; - int req; KASSERT((flags & (M_NOWAIT | M_WAITOK)) == M_NOWAIT || (flags & (M_NOWAIT | M_WAITOK)) == M_WAITOK, ("_pmap_allocpte: flags is neither M_NOWAIT nor M_WAITOK")); - req = VM_ALLOC_WIRED | VM_ALLOC_ZERO | VM_ALLOC_NOOBJ; /* * Find or fabricate a new pagetable page */ From owner-svn-src-all@FreeBSD.ORG Thu May 27 11:39:23 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8A5DE1065676; Thu, 27 May 2010 11:39:23 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail08.syd.optusnet.com.au (mail08.syd.optusnet.com.au [211.29.132.189]) by mx1.freebsd.org (Postfix) with ESMTP id 1E5A38FC0C; Thu, 27 May 2010 11:39:22 +0000 (UTC) Received: from besplex.bde.org (c122-106-175-32.carlnfd1.nsw.optusnet.com.au [122.106.175.32]) by mail08.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id o4RBdICx009622 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 27 May 2010 21:39:19 +1000 Date: Thu, 27 May 2010 21:39:18 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Neel Natu In-Reply-To: Message-ID: <20100527200033.K1376@besplex.bde.org> References: <201005270127.o4R1RPaT016558@svn.freebsd.org> <4BFDE4E3.4060300@FreeBSD.org> MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="0-599122876-1274960358=:1376" Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, Alexander Motin , src-committers@freebsd.org, Neel Natu Subject: Re: svn commit: r208585 - head/sys/mips/mips X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 11:39:23 -0000 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --0-599122876-1274960358=:1376 Content-Type: TEXT/PLAIN; charset=X-UNKNOWN; format=flowed Content-Transfer-Encoding: QUOTED-PRINTABLE On Wed, 26 May 2010, Neel Natu wrote: > On Wed, May 26, 2010 at 8:20 PM, Alexander Motin wrote: >> Neel Natu wrote: >> Also, as soon as you run timer1 on frequency higher then hz - it is >> strange to see >> =A0 =A0 =A0 =A0stathz =3D hz; >> =A0 =A0 =A0 =A0profhz =3D hz; >> there. It is just useless. Better would be to do same as for x86: >> =A0 =A0 =A0 =A0profhz =3D timer1hz; >> =A0 =A0 =A0 =A0if (timer1hz < 128) >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0stathz =3D timer1hz; >> =A0 =A0 =A0 =A0else >> =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0stathz =3D timer1hz / (timer1hz / 128); >> This is almost unreadable due to \xa0. =09stathz =3D timer1hz / (timer1hz / 128); only works right if timer1hz is a multiple of 128, or at least a multiple of the final stathz.. Otherwise, there may be significant rounding error in the calculation, and if the final stathz is not an exact divisor of timer1hz it is impossible to generate stathz from timer1hz by dividing it. (This has always been broken for the lapic timer on amd64 and i386. stathz =3D 133 is only nearly a divisor of 1000 or 2000, and 128 is even further from being a divisor of any timer frequency that can generate hz 1000. The effects of this can be seen in systat(1) -v 1 output -- the reported lapic timer interrupt frequencies jump every ~(lapic_timer_hz / stathz) seconds when the divider compensates for the multiple not being exact. Another bug visible in systa= t -v and vmstat -i output on ref9-amd64 right now is that the lapic timer interrupt frequencies are all reported as 960. hz is reported to be 1000, but it is impossible to generate 1000 from 960. Another bug in the lapic timer code on amd64 and i386 is that it doesn't change the lapic timer frequency to generate a high enough profhz. profhz =3D 8192, which is generated by the RTC on amd64 and i386, was adequate in 1990, and it needs to be 100-1000 times larger now, but the lapic doesn't even generate that; it claims to generates 1024, and this is even more impossible to divide down from 960 than is 1000.) > I see your point with the profiling timer. I'll fix that to be like x86. > > However it is not immediately obvious why we prefer to run the > statistics timer at (or very close to) 128Hz. Any pointers? At least SCHED_4BSD requires stathz to be almost 128. More precisely, it requires a clock of frequency about 16 Hz and divides stathz internally by INVERSE_ESTCPU_WEIGHT =3D (8 * smp_cpus) to get this. It gets some extra resolution by accumulating ticks at stathz but has to divide the result by 8 before feeding it to the priority adjustment, else the adjustment would be too sensitive to recent activity, and/or would overflow (overflow is avoided by clamping to the limit, but this is bad too). Dividing by smp_ncpus is a hack to avoid the overflow at a cost of reducing sensitivity. The requirement for stathz to be almost 128 is pushed to the clock generator(s) to avoid having dividers (other than the simple/historical division by 8) in both the clock generator(s) and the scheduler(s). WHen using lapic timers, I normally use lapic_timer_hz =3D hz =3D stathz = =3D profhz =3D 100, and don't worry about the completely broken profhz or the scheduling problems from having stathz =3D hz. The scheduling problems are mostly caused by the hardware clocks behind stathz and hz being indentical. When they are identical, having stathz !=3D hz doesn't help much, at least without the changes that I suggested a few months ago (statclock() and hardclock() should never be called from the same hardware interrupt). There are 2 types of scheduling/statistics problems: - malicious applications may hide from scheduling/statistics interrupts by arranging that they don't run across the interrupts. This is easy to do while running for most of the time if hz is much larger than stathz (now the default :-(). - even non-malicious applications may hide from scheduling/statistics interrupts if the statclock and hardclock interrupts are too synchronous= =2E This is a problem with the lapic timer interrupts in practice. I think it takes almost perfect synchronization for there to be a problem in practice, and I can't see how the syncronization was perfect enough. For hz =3D 1000, lapic_timer_hz was 2000 and hardclock was called every second interrupt, while statclock was called every 2000/(stathz=3D133) = =3D 15th or 16th interrupt. Since 15 is not a multiple of 2, statclock was normally called for the same lapic timer interrupt only every second interrupt. This should be asynchronous enough. I don't know the detail= s of the current or previous implementation (where lapic_timer_hz is not 2000) but IIRC the dividers don't know anything about the synchronicity problem so they could easily make it worse. Bruce --0-599122876-1274960358=:1376-- From owner-svn-src-all@FreeBSD.ORG Thu May 27 12:11:21 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 993A71065675; Thu, 27 May 2010 12:11:21 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 880548FC20; Thu, 27 May 2010 12:11: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 o4RCBLZp067094; Thu, 27 May 2010 12:11:21 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4RCBLmU067092; Thu, 27 May 2010 12:11:21 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <201005271211.o4RCBLmU067092@svn.freebsd.org> From: Rui Paulo Date: Thu, 27 May 2010 12:11:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208590 - head/sys/modules/iwnfw X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 12:11:21 -0000 Author: rpaulo Date: Thu May 27 12:11:21 2010 New Revision: 208590 URL: http://svn.freebsd.org/changeset/base/208590 Log: Make the user ack the license before using this firmware. MFC after: 3 days Modified: head/sys/modules/iwnfw/Makefile.inc Modified: head/sys/modules/iwnfw/Makefile.inc ============================================================================== --- head/sys/modules/iwnfw/Makefile.inc Thu May 27 10:05:40 2010 (r208589) +++ head/sys/modules/iwnfw/Makefile.inc Thu May 27 12:11:21 2010 (r208590) @@ -9,5 +9,7 @@ CLEANFILES+= ${_FIRM} FIRMWS= ${_FIRM}:${KMOD} +FIRMWARE_LICENSE= intel_iwn + ${_FIRM}: ${.CURDIR}/../../../contrib/dev/iwn/${_FIRM}.uu uudecode -p $? > ${.TARGET} From owner-svn-src-all@FreeBSD.ORG Thu May 27 12:22:54 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 087A3106566B; Thu, 27 May 2010 12:22:54 +0000 (UTC) (envelope-from brde@optusnet.com.au) Received: from mail06.syd.optusnet.com.au (mail06.syd.optusnet.com.au [211.29.132.187]) by mx1.freebsd.org (Postfix) with ESMTP id 779CC8FC16; Thu, 27 May 2010 12:22:52 +0000 (UTC) Received: from besplex.bde.org (c122-106-175-32.carlnfd1.nsw.optusnet.com.au [122.106.175.32]) by mail06.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id o4RCMn42031555 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 27 May 2010 22:22:50 +1000 Date: Thu, 27 May 2010 22:22:49 +1000 (EST) From: Bruce Evans X-X-Sender: bde@besplex.bde.org To: Alexander Motin In-Reply-To: <4BFE17AE.2080709@FreeBSD.org> Message-ID: <20100527214304.C1620@besplex.bde.org> References: <201005270127.o4R1RPaT016558@svn.freebsd.org> <4BFDE4E3.4060300@FreeBSD.org> <4BFE17AE.2080709@FreeBSD.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Neel Natu Subject: Re: svn commit: r208585 - head/sys/mips/mips X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 12:22:54 -0000 On Thu, 27 May 2010, Alexander Motin wrote: > Neel Natu wrote: >> However it is not immediately obvious why we prefer to run the >> statistics timer at (or very close to) 128Hz. Any pointers? > > I haven't looked myself, but sources report that some legacy code depend > on it: > http://lists.freebsd.org/pipermail/freebsd-arch/2009-December/009731.html That's a good reference for newer scheduler problems. The following from cvs history is better for the 128: % RCS file: /home/ncvs/src/sys/kern/kern_synch.c,v History in sched_4bsd.c was broken by not repo-copying. % Working file: kern_synch.c % head: 1.249 % ... % ---------------------------- % revision 1.83 % date: 1999/11/28 12:12:13; author: bde; state: Exp; lines: +11 -13 % Scheduler fixes equivalent to the ones logged in the following NetBSD % commit to kern_synch.c: % % ---------------------------- % revision 1.55 % date: 1999/02/23 02:56:03; author: ross; state: Exp; lines: +39 -10 % Scheduler bug fixes and reorganization % * fix the ancient nice(1) bug, where nice +20 processes incorrectly % steal 10 - 20% of the CPU, (or even more depending on load average) % * provide a new schedclk() mechanism at a new clock at schedhz, so high % platform hz values don't cause nice +0 processes to look like they are % niced % * change the algorithm slightly, and reorganize the code a lot % * fix percent-CPU calculation bugs, and eliminate some no-op code % % === nice bug === Correctly divide the scheduler queues between niced and % compute-bound processes. The current nice weight of two (sort of, see 2 or 4 was the historical value. % `algorithm change' below) neatly divides the USRPRI queues in half; this % should have been used to clip p_estcpu, instead of UCHAR_MAX. Besides % being the wrong amount, clipping an unsigned char to UCHAR_MAX is a no-op, % and it was done after decay_cpu() which can only _reduce_ the value. It % has to be kept <= NICE_WEIGHT * PRIO_MAX - PPQ or processes can % scheduler-penalize themselves onto the same queue as nice +20 processes. % (Or even a higher one.) % % === New schedclk() mechansism === Some platforms should be cutting down % stathz before hitting the scheduler, since the scheduler algorithm only % works right in the vicinity of 64 Hz. Rather than prescale hz, then scale The historical value was probably 60. % back and forth by 4 every time p_estcpu is touched (each occurance an % abstraction violation), use p_estcpu without scaling and require schedhz % to be generated directly at the right frequency. Use a default stathz (well, % actually, profhz) / 4, so nothing changes unless a platform defines schedhz % and a new clock. Define these for alpha, where hz==1024, and nice was % totally broke. % % === Algorithm change === The nice value used to be added to the % exponentially-decayed scheduler history value p_estcpu, in _addition_ to % be incorporated directly (with greater wieght) into the priority calculation. % At first glance, it appears to be a pointless increase of 1/8 the nice Perhaps I am confused by where the above factor of 2 or 4 was, and the 8 came directly from this 1/8. Anyway, the final version attempts to fold the factors together if possible. % effect (pri = p_estcpu/4 + nice*2), but it's actually at least 3x that % because it will ramp up linearly but be decayed only exponentially, thus % converging to an additional .75 nice for a loadaverage of one. I killed % this, it makes the behavior hard to control, almost impossible to analyze, % and the effect (~~nothing at for the first second, then somewhat increased % niceness after three seconds or more, depending on load average) pointless. % % === Other bugs === hz -> profhz in the p_pctcpu = f(p_cpticks) calcuation. % Collect scheduler functionality. Try to put each abstraction in just one % place. % ---------------------------- % % The details are a little different in FreeBSD: % % === nice bug === Fixing this is the main point of this commit. We use % essentially the same clipping rule as NetBSD (our limit on p_estcpu % differs by a scale factor). However, clipping at all is fundamentally % bad. It gives free CPU the hoggiest hogs once they reach the limit, and % reaching the limit is normal for long-running hogs. This will be fixed % later. % % === New schedclk() mechanism === We don't use the NetBSD schedclk() % (now schedclock()) mechanism. We require (real)stathz to be about 128 % and scale by an extra factor of 2 compared with NetBSD's statclock(). Later another factor of to was added, giving a factor of 8. Later still, another factor of smp_ncpus was added. These factors reduce overflow/clamping. % We scale p_estcpu instead of scaling the clock. This is more accurate % and flexible. % % === Algorithm change === Same change. % % === Other bugs === The p_pctcpu bug was fixed long ago. We don't try as % hard to abstract functionality yet. % % Related changes: the new limit on p_estcpu must be exported to kern_exit.c % for clipping in wait1(). % % Agreed with by: dufault % ---------------------------- % > In any case it should not be equal to hz whenever possible. More precisely, stathz should not be a divisor of hz. I think that requirement is mostly a hack that helps with independent hardware clocks. If the clocks had identical frequencies, then they would be mostly out of sync, but occasionally they would get in sync, and then their identical frequencies would keep them in sync for a long time determined by how closely their frequencies are equal and stable. Using different frequencies significantly reduces the frequency of perfect synchronization -- after the clocks become in perfect sync, their next interrupts are at times separated by (1/hz - 1/stathz). These times are still too predictable, but the difference is far from 0. With a single higher frequency clock divided down into various sub-clocks, it can be arranged that the differences for the sub-clocks are even further from 0. The times of all the pseudo-interrupts for all the sub-clocks would be even more predictable, but I think this is not a problem iff stathz is much larger than hz. (hz much larger than stathz is a problem even with an independent aperiodic statclock. Then it is easy for a malicious program to observe statclock activity using timeouts at the much larger hardclock frequency, and possible to predict future statclock activity since "hz much larger than stathz" means that any randomness in statclock is not so large as to significantly change the average time until the next statclock interrupt.) Bruce From owner-svn-src-all@FreeBSD.ORG Thu May 27 12:54:43 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 120801065673; Thu, 27 May 2010 12:54:43 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 010058FC1B; Thu, 27 May 2010 12:54: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 o4RCsgRn076708; Thu, 27 May 2010 12:54:42 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4RCsgLk076706; Thu, 27 May 2010 12:54:42 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <201005271254.o4RCsgLk076706@svn.freebsd.org> From: Rui Paulo Date: Thu, 27 May 2010 12:54:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208591 - head/sys/modules/iwnfw X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 12:54:43 -0000 Author: rpaulo Date: Thu May 27 12:54:42 2010 New Revision: 208591 URL: http://svn.freebsd.org/changeset/base/208591 Log: Revert r208590. A license ack is not needed as per r186984. Modified: head/sys/modules/iwnfw/Makefile.inc Modified: head/sys/modules/iwnfw/Makefile.inc ============================================================================== --- head/sys/modules/iwnfw/Makefile.inc Thu May 27 12:11:21 2010 (r208590) +++ head/sys/modules/iwnfw/Makefile.inc Thu May 27 12:54:42 2010 (r208591) @@ -9,7 +9,10 @@ CLEANFILES+= ${_FIRM} FIRMWS= ${_FIRM}:${KMOD} -FIRMWARE_LICENSE= intel_iwn +# +# Note that a license ack is not needed for iwn. +# +#FIRMWARE_LICENSE= ${_FIRM}: ${.CURDIR}/../../../contrib/dev/iwn/${_FIRM}.uu uudecode -p $? > ${.TARGET} From owner-svn-src-all@FreeBSD.ORG Thu May 27 12:59:49 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 75FDA1065674; Thu, 27 May 2010 12:59:49 +0000 (UTC) (envelope-from uqs@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 653758FC21; Thu, 27 May 2010 12:59:49 +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 o4RCxnZr077881; Thu, 27 May 2010 12:59:49 GMT (envelope-from uqs@svn.freebsd.org) Received: (from uqs@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4RCxn2O077879; Thu, 27 May 2010 12:59:49 GMT (envelope-from uqs@svn.freebsd.org) Message-Id: <201005271259.o4RCxn2O077879@svn.freebsd.org> From: Ulrich Spoerlein Date: Thu, 27 May 2010 12:59:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208592 - head/usr.bin/mail X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 12:59:49 -0000 Author: uqs Date: Thu May 27 12:59:49 2010 New Revision: 208592 URL: http://svn.freebsd.org/changeset/base/208592 Log: mail(1) misses addresses when replying to all There's a parsing error for fields where addresses are not separated by space. This is often produced by MS Outlook, eg.: Cc: ,"Mr Foo" The following line now splits into the right tokens: Cc: f@b.com,z@y.de, ,, "foo" ,"bar" PR: bin/131861 Submitted by: Pete French Tested by: Pete French Reviewed by: mikeh MFC after: 2 weeks Modified: head/usr.bin/mail/util.c Modified: head/usr.bin/mail/util.c ============================================================================== --- head/usr.bin/mail/util.c Thu May 27 12:54:42 2010 (r208591) +++ head/usr.bin/mail/util.c Thu May 27 12:59:49 2010 (r208592) @@ -496,10 +496,11 @@ skin(name) *cp2++ = ' '; } *cp2++ = c; - if (c == ',' && *cp == ' ' && !gotlt) { + if (c == ',' && !gotlt && + (*cp == ' ' || *cp == '"' || *cp == '<')) { *cp2++ = ' '; - while (*++cp == ' ') - ; + while (*cp == ' ') + cp++; lastsp = 0; bufend = cp2; } From owner-svn-src-all@FreeBSD.ORG Thu May 27 13:56:20 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2D1E81065670; Thu, 27 May 2010 13:56:20 +0000 (UTC) (envelope-from uqs@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1C45D8FC19; Thu, 27 May 2010 13:56:20 +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 o4RDuJxX090285; Thu, 27 May 2010 13:56:19 GMT (envelope-from uqs@svn.freebsd.org) Received: (from uqs@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4RDuJ6n090281; Thu, 27 May 2010 13:56:19 GMT (envelope-from uqs@svn.freebsd.org) Message-Id: <201005271356.o4RDuJ6n090281@svn.freebsd.org> From: Ulrich Spoerlein Date: Thu, 27 May 2010 13:56:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208593 - in head/usr.sbin: fdcontrol i2c smbmsg X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 13:56:20 -0000 Author: uqs Date: Thu May 27 13:56:19 2010 New Revision: 208593 URL: http://svn.freebsd.org/changeset/base/208593 Log: mdoc: Remove leading garbage, empty lines and order preamble Modified: head/usr.sbin/fdcontrol/fdcontrol.8 head/usr.sbin/i2c/i2c.8 head/usr.sbin/smbmsg/smbmsg.8 Modified: head/usr.sbin/fdcontrol/fdcontrol.8 ============================================================================== --- head/usr.sbin/fdcontrol/fdcontrol.8 Thu May 27 12:59:49 2010 (r208592) +++ head/usr.sbin/fdcontrol/fdcontrol.8 Thu May 27 13:56:19 2010 (r208593) @@ -1,4 +1,3 @@ -'\" t .\" Copyright (C) 1994, 2001 by Joerg Wunsch, Dresden .\" All rights reserved. .\" @@ -27,8 +26,8 @@ .\" $FreeBSD$ .\" .Dd December 25, 2001 -.Os .Dt FDCONTROL 8 +.Os .Sh NAME .Nm fdcontrol .Nd display and modify floppy disk parameters Modified: head/usr.sbin/i2c/i2c.8 ============================================================================== --- head/usr.sbin/i2c/i2c.8 Thu May 27 12:59:49 2010 (r208592) +++ head/usr.sbin/i2c/i2c.8 Thu May 27 13:56:19 2010 (r208593) @@ -25,7 +25,6 @@ .\" .\" $FreeBSD$ .\" - .Dd January 23, 2009 .Dt I2C 8 .Os Modified: head/usr.sbin/smbmsg/smbmsg.8 ============================================================================== --- head/usr.sbin/smbmsg/smbmsg.8 Thu May 27 12:59:49 2010 (r208592) +++ head/usr.sbin/smbmsg/smbmsg.8 Thu May 27 13:56:19 2010 (r208593) @@ -1,4 +1,3 @@ -'\" t .\" Copyright (c) 2004 Joerg Wunsch .\" All rights reserved. .\" From owner-svn-src-all@FreeBSD.ORG Thu May 27 13:56:27 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A42A91065787; Thu, 27 May 2010 13:56:27 +0000 (UTC) (envelope-from uqs@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 790B98FC1B; Thu, 27 May 2010 13:56: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 o4RDuROQ090354; Thu, 27 May 2010 13:56:27 GMT (envelope-from uqs@svn.freebsd.org) Received: (from uqs@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4RDuRuK090349; Thu, 27 May 2010 13:56:27 GMT (envelope-from uqs@svn.freebsd.org) Message-Id: <201005271356.o4RDuRuK090349@svn.freebsd.org> From: Ulrich Spoerlein Date: Thu, 27 May 2010 13:56:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208594 - in head: lib/msun/man share/man/man9 usr.sbin/nfsd X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 13:56:27 -0000 Author: uqs Date: Thu May 27 13:56:27 2010 New Revision: 208594 URL: http://svn.freebsd.org/changeset/base/208594 Log: mdoc: Garbage collect unused/unneeded macros Modified: head/lib/msun/man/math.3 head/share/man/man9/atomic.9 head/usr.sbin/nfsd/nfsv4.4 head/usr.sbin/nfsd/stablerestart.5 Modified: head/lib/msun/man/math.3 ============================================================================== --- head/lib/msun/man/math.3 Thu May 27 13:56:19 2010 (r208593) +++ head/lib/msun/man/math.3 Thu May 27 13:56:27 2010 (r208594) @@ -31,9 +31,6 @@ .Dd December 16, 2007 .Dt MATH 3 .Os -.if n \{\ -.char \[sr] "sqrt -.\} .Sh NAME .Nm math .Nd "floating-point mathematical library" Modified: head/share/man/man9/atomic.9 ============================================================================== --- head/share/man/man9/atomic.9 Thu May 27 13:56:19 2010 (r208593) +++ head/share/man/man9/atomic.9 Thu May 27 13:56:27 2010 (r208594) @@ -62,7 +62,6 @@ .Fn atomic_subtract_[acq_|rel_] "volatile *p" " v" .Ft void .Fn atomic_store_rel_ "volatile *p" " v" -.rm LB RB La Ra .Sh DESCRIPTION Each of the atomic operations is guaranteed to be atomic in the presence of interrupts. Modified: head/usr.sbin/nfsd/nfsv4.4 ============================================================================== --- head/usr.sbin/nfsd/nfsv4.4 Thu May 27 13:56:19 2010 (r208593) +++ head/usr.sbin/nfsd/nfsv4.4 Thu May 27 13:56:27 2010 (r208594) @@ -34,7 +34,7 @@ The experimental NFS client and server provides support for the .Tn NFSv4 specification; see -.%T "Network File System (NFS) Version 4 Protocol \\*(tNRFC\\*(sP 3530" . +.%T "Network File System (NFS) Version 4 Protocol RFC 3530" . The protocol is somewhat similar to NFS Version 3, but differs in significant ways. It uses a single compound RPC that concatenates operations to-gether. Modified: head/usr.sbin/nfsd/stablerestart.5 ============================================================================== --- head/usr.sbin/nfsd/stablerestart.5 Thu May 27 13:56:19 2010 (r208593) +++ head/usr.sbin/nfsd/stablerestart.5 Thu May 27 13:56:27 2010 (r208594) @@ -42,7 +42,7 @@ file holds information that allows the server to restart without always returning the NFSERR_NOGRACE error, as described in the .Tn NFSv4 server specification; see -.%T "Network File System (NFS) Version 4 Protocol \\*(tNRFC\\*(sP 3530, Section 8.6.3" . +.%T "Network File System (NFS) Version 4 Protocol RFC 3530, Section 8.6.3" . .Pp The first record in the file, as defined by struct nfsf_rec in /usr/include/fs/nfs/nfsrvstate.h, holds the lease duration of the From owner-svn-src-all@FreeBSD.ORG Thu May 27 13:56:33 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BE088106583D; Thu, 27 May 2010 13:56:33 +0000 (UTC) (envelope-from uqs@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id AC6898FC18; Thu, 27 May 2010 13: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 o4RDuXjE090421; Thu, 27 May 2010 13:56:33 GMT (envelope-from uqs@svn.freebsd.org) Received: (from uqs@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4RDuXOL090419; Thu, 27 May 2010 13:56:33 GMT (envelope-from uqs@svn.freebsd.org) Message-Id: <201005271356.o4RDuXOL090419@svn.freebsd.org> From: Ulrich Spoerlein Date: Thu, 27 May 2010 13:56:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208595 - head/lib/libpmc X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 13:56:33 -0000 Author: uqs Date: Thu May 27 13:56:33 2010 New Revision: 208595 URL: http://svn.freebsd.org/changeset/base/208595 Log: mdoc: Use mdoc macro for the (R) symbol While here, also drop the unneeded quotes Modified: head/lib/libpmc/pmc.core.3 Modified: head/lib/libpmc/pmc.core.3 ============================================================================== --- head/lib/libpmc/pmc.core.3 Thu May 27 13:56:27 2010 (r208594) +++ head/lib/libpmc/pmc.core.3 Thu May 27 13:56:33 2010 (r208595) @@ -49,11 +49,11 @@ performance measurement architecture. .Pp These PMCs are documented in .Rs -.%B "IA-32 Intel(R) Architecture Software Developer's Manual" -.%T "Volume 3: System Programming Guide" -.%N "Order Number 253669-027US" +.%B IA-32 Intel\(rg Architecture Software Developer's Manual +.%T Volume 3: System Programming Guide +.%N Order Number 253669-027US .%D July 2008 -.%Q "Intel Corporation" +.%Q Intel Corporation .Re .Ss PMC Features CPUs conforming to version 1 of the @@ -735,11 +735,11 @@ The following errata affect performance processors. These errata are documented in .Rs -.%T "Intel® CoreTM Duo Processor and Intel® CoreTM Solo Processor on 65 nm Process" -.%B "Specification Update" -.%N "Order Number 309222-017" +.%B Specification Update +.%T Intel\(rg CoreTM Duo Processor and Intel\(rg CoreTM Solo Processor on 65 nm Process +.%N Order Number 309222-017 .%D July 2008 -.%Q "Intel Corporation" +.%Q Intel Corporation .Re .Bl -tag -width indent -compact .It AE19 From owner-svn-src-all@FreeBSD.ORG Thu May 27 13:56:41 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 32E7D10658FD; Thu, 27 May 2010 13:56:41 +0000 (UTC) (envelope-from uqs@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 21E948FC17; Thu, 27 May 2010 13:56:41 +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 o4RDuffq090461; Thu, 27 May 2010 13:56:41 GMT (envelope-from uqs@svn.freebsd.org) Received: (from uqs@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4RDueY7090456; Thu, 27 May 2010 13:56:40 GMT (envelope-from uqs@svn.freebsd.org) Message-Id: <201005271356.o4RDueY7090456@svn.freebsd.org> From: Ulrich Spoerlein Date: Thu, 27 May 2010 13:56:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208596 - in head: sbin/fsck_msdosfs share/man/man4 usr.sbin/dconschat X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 13:56:41 -0000 Author: uqs Date: Thu May 27 13:56:40 2010 New Revision: 208596 URL: http://svn.freebsd.org/changeset/base/208596 Log: mdoc: .Ud has attitude, it takes no argument! Modified: head/sbin/fsck_msdosfs/fsck_msdosfs.8 head/share/man/man4/dcons.4 head/share/man/man4/sbp_targ.4 head/usr.sbin/dconschat/dconschat.8 Modified: head/sbin/fsck_msdosfs/fsck_msdosfs.8 ============================================================================== --- head/sbin/fsck_msdosfs/fsck_msdosfs.8 Thu May 27 13:56:33 2010 (r208595) +++ head/sbin/fsck_msdosfs/fsck_msdosfs.8 Thu May 27 13:56:40 2010 (r208596) @@ -120,4 +120,4 @@ utility first appeared in The .Nm utility is -.Ud . +.Ud Modified: head/share/man/man4/dcons.4 ============================================================================== --- head/share/man/man4/dcons.4 Thu May 27 13:56:33 2010 (r208595) +++ head/share/man/man4/dcons.4 Thu May 27 13:56:40 2010 (r208596) @@ -122,4 +122,4 @@ dcons_gdb="1" .An Hidetoshi Shimokawa Aq simokawa@FreeBSD.org .Sh BUGS This driver is -.Ud . +.Ud Modified: head/share/man/man4/sbp_targ.4 ============================================================================== --- head/share/man/man4/sbp_targ.4 Thu May 27 13:56:33 2010 (r208595) +++ head/share/man/man4/sbp_targ.4 Thu May 27 13:56:40 2010 (r208596) @@ -93,6 +93,6 @@ driver was written by .An Hidetoshi Shimokawa . .Sh BUGS This driver is -.Ud . +.Ud It does not work correctly in multi-initiator environments or after the bus topology has been changed. Modified: head/usr.sbin/dconschat/dconschat.8 ============================================================================== --- head/usr.sbin/dconschat/dconschat.8 Thu May 27 13:56:33 2010 (r208595) +++ head/usr.sbin/dconschat/dconschat.8 Thu May 27 13:56:40 2010 (r208596) @@ -327,4 +327,4 @@ console remote { .An Hidetoshi Shimokawa Aq simokawa@FreeBSD.org .Sh BUGS This utility is -.Ud . +.Ud From owner-svn-src-all@FreeBSD.ORG Thu May 27 13:56:47 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9AAFE10659C0; Thu, 27 May 2010 13:56:47 +0000 (UTC) (envelope-from uqs@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8532B8FC1B; Thu, 27 May 2010 13:56: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 o4RDulQt090530; Thu, 27 May 2010 13:56:47 GMT (envelope-from uqs@svn.freebsd.org) Received: (from uqs@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4RDulHm090528; Thu, 27 May 2010 13:56:47 GMT (envelope-from uqs@svn.freebsd.org) Message-Id: <201005271356.o4RDulHm090528@svn.freebsd.org> From: Ulrich Spoerlein Date: Thu, 27 May 2010 13:56:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208597 - head/share/man/man4 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 13:56:47 -0000 Author: uqs Date: Thu May 27 13:56:47 2010 New Revision: 208597 URL: http://svn.freebsd.org/changeset/base/208597 Log: mdoc: remove duplicate width argument Modified: head/share/man/man4/ddb.4 Modified: head/share/man/man4/ddb.4 ============================================================================== --- head/share/man/man4/ddb.4 Thu May 27 13:56:40 2010 (r208596) +++ head/share/man/man4/ddb.4 Thu May 27 13:56:47 2010 (r208597) @@ -964,7 +964,7 @@ is printed. Show all threads within the system. Output format is as follows: .Pp -.Bl -tag -width "PPID" -compact -offset indent -width "Second column" +.Bl -tag -compact -offset indent -width "Second column" .It Ic First column Thread identifier (TID) .It Ic Second column From owner-svn-src-all@FreeBSD.ORG Thu May 27 13:56:54 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1D5781065AE9; Thu, 27 May 2010 13:56:53 +0000 (UTC) (envelope-from uqs@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id ACCD48FC1D; Thu, 27 May 2010 13:56: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 o4RDurNG090596; Thu, 27 May 2010 13:56:53 GMT (envelope-from uqs@svn.freebsd.org) Received: (from uqs@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4RDurCi090594; Thu, 27 May 2010 13:56:53 GMT (envelope-from uqs@svn.freebsd.org) Message-Id: <201005271356.o4RDurCi090594@svn.freebsd.org> From: Ulrich Spoerlein Date: Thu, 27 May 2010 13:56:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208598 - head/usr.sbin/pkg_install/updating X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 13:56:54 -0000 Author: uqs Date: Thu May 27 13:56:53 2010 New Revision: 208598 URL: http://svn.freebsd.org/changeset/base/208598 Log: mdoc: use mdoc spelling of Umlauts Modified: head/usr.sbin/pkg_install/updating/pkg_updating.1 Modified: head/usr.sbin/pkg_install/updating/pkg_updating.1 ============================================================================== --- head/usr.sbin/pkg_install/updating/pkg_updating.1 Thu May 27 13:56:47 2010 (r208597) +++ head/usr.sbin/pkg_install/updating/pkg_updating.1 Thu May 27 13:56:53 2010 (r208598) @@ -83,7 +83,7 @@ installed ports: .Xr pkg_delete 1 , .Xr pkg_version 1 .Sh AUTHORS -.An Beat Gätzi Aq beat@chruetertee.ch +.An Beat G\(:atzi Aq beat@chruetertee.ch .Sh CONTRIBUTORS .An Martin Tournoij Aq carpetsmoker@xs4all.nl .Sh BUGS From owner-svn-src-all@FreeBSD.ORG Thu May 27 15:16:00 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 29D28106566B; Thu, 27 May 2010 15:16:00 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 14C3A8FC13; Thu, 27 May 2010 15:16:00 +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 o4RFG0qO008291; Thu, 27 May 2010 15:16:00 GMT (envelope-from rdivacky@svn.freebsd.org) Received: (from rdivacky@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4RFFx0I008237; Thu, 27 May 2010 15:15:59 GMT (envelope-from rdivacky@svn.freebsd.org) Message-Id: <201005271515.o4RFFx0I008237@svn.freebsd.org> From: Roman Divacky Date: Thu, 27 May 2010 15:15:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208599 - in vendor/llvm/dist: . autoconf docs docs/CommandGuide docs/tutorial include/llvm include/llvm/ADT include/llvm/Analysis include/llvm/CodeGen include/llvm/Config include/llvm/... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 15:16:00 -0000 Author: rdivacky Date: Thu May 27 15:15:58 2010 New Revision: 208599 URL: http://svn.freebsd.org/changeset/base/208599 Log: Update LLVM to r104832. Added: vendor/llvm/dist/include/llvm/MC/MCLabel.h vendor/llvm/dist/include/llvm/MC/MCMachOSymbolFlags.h vendor/llvm/dist/include/llvm/MC/MCSectionCOFF.h vendor/llvm/dist/include/llvm/Transforms/Utils/SSAUpdaterImpl.h vendor/llvm/dist/lib/Analysis/ModuleDebugInfoPrinter.cpp vendor/llvm/dist/lib/MC/MCLabel.cpp vendor/llvm/dist/lib/MC/MCLoggingStreamer.cpp vendor/llvm/dist/lib/MC/MCSectionCOFF.cpp vendor/llvm/dist/lib/Transforms/Scalar/Sink.cpp vendor/llvm/dist/test/CodeGen/ARM/2010-05-14-IllegalType.ll vendor/llvm/dist/test/CodeGen/ARM/2010-05-17-DAGCombineAssert.ll vendor/llvm/dist/test/CodeGen/ARM/2010-05-17-FastAllocCrash.ll vendor/llvm/dist/test/CodeGen/ARM/2010-05-18-LocalAllocCrash.ll vendor/llvm/dist/test/CodeGen/ARM/2010-05-18-PostIndexBug.ll vendor/llvm/dist/test/CodeGen/ARM/2010-05-19-Shuffles.ll vendor/llvm/dist/test/CodeGen/ARM/2010-05-20-NEONSpillCrash.ll vendor/llvm/dist/test/CodeGen/ARM/2010-05-21-BuildVector.ll vendor/llvm/dist/test/CodeGen/ARM/arm-returnaddr.ll vendor/llvm/dist/test/CodeGen/ARM/lsr-on-unrolled-loops.ll vendor/llvm/dist/test/CodeGen/ARM/reg_sequence.ll vendor/llvm/dist/test/CodeGen/ARM/trap.ll vendor/llvm/dist/test/CodeGen/CellSPU/jumptable.ll vendor/llvm/dist/test/CodeGen/CellSPU/sub_ops.ll vendor/llvm/dist/test/CodeGen/Generic/legalize-dbg-value.ll vendor/llvm/dist/test/CodeGen/Thumb/trap.ll vendor/llvm/dist/test/CodeGen/Thumb2/2010-05-24-rsbs.ll vendor/llvm/dist/test/CodeGen/Thumb2/div.ll vendor/llvm/dist/test/CodeGen/Thumb2/sign_extend_inreg.ll vendor/llvm/dist/test/CodeGen/X86/2010-05-05-LocalAllocEarlyClobber.ll vendor/llvm/dist/test/CodeGen/X86/2010-05-06-LocalInlineAsmClobber.ll vendor/llvm/dist/test/CodeGen/X86/2010-05-07-ldconvert.ll vendor/llvm/dist/test/CodeGen/X86/2010-05-10-DAGCombinerBug.ll vendor/llvm/dist/test/CodeGen/X86/2010-05-12-FastAllocKills.ll vendor/llvm/dist/test/CodeGen/X86/2010-05-16-nosseconversion.ll vendor/llvm/dist/test/CodeGen/X86/2010-05-26-DotDebugLoc.ll vendor/llvm/dist/test/CodeGen/X86/2010-05-26-FP_TO_INT-crash.ll vendor/llvm/dist/test/CodeGen/X86/fp-stack.ll vendor/llvm/dist/test/CodeGen/X86/label-redefinition.ll vendor/llvm/dist/test/CodeGen/X86/mcinst-lowering-cmp0.ll vendor/llvm/dist/test/CodeGen/X86/mcinst-lowering.ll vendor/llvm/dist/test/CodeGen/X86/tls-1.ll vendor/llvm/dist/test/CodeGen/X86/unknown-location.ll vendor/llvm/dist/test/DebugInfo/2010-05-10-MultipleCU.ll vendor/llvm/dist/test/DebugInfo/2010-05-25-DotDebugLoc.ll vendor/llvm/dist/test/Feature/metadata.ll vendor/llvm/dist/test/FrontendC++/2010-05-10-Var-DbgInfo.cpp vendor/llvm/dist/test/FrontendC++/2010-05-11-alwaysinlineinstantiation.cpp vendor/llvm/dist/test/FrontendC++/2010-05-12-PtrToMember-Dbg.cpp vendor/llvm/dist/test/FrontendC++/thunk-weak-odr.cpp vendor/llvm/dist/test/FrontendC/2010-05-14-Optimized-VarType.c vendor/llvm/dist/test/FrontendC/2010-05-18-asmsched.c vendor/llvm/dist/test/FrontendC/2010-05-18-palignr.c vendor/llvm/dist/test/FrontendC/2010-05-26-AsmSideEffect.c vendor/llvm/dist/test/FrontendC/pr2394.c vendor/llvm/dist/test/MC/AsmParser/X86/x86_64-imm-widths.s vendor/llvm/dist/test/MC/AsmParser/directive_tbss.s vendor/llvm/dist/test/MC/AsmParser/directive_tdata.s vendor/llvm/dist/test/MC/AsmParser/directive_thread_init_func.s vendor/llvm/dist/test/MC/AsmParser/directive_tlv.s vendor/llvm/dist/test/MC/MachO/direction_labels.s vendor/llvm/dist/test/MC/MachO/indirect-symbols.s vendor/llvm/dist/test/MC/MachO/string-table.s vendor/llvm/dist/test/MC/MachO/tbss.s vendor/llvm/dist/test/MC/MachO/tdata.s vendor/llvm/dist/test/MC/MachO/thread_init_func.s vendor/llvm/dist/test/MC/MachO/tls.s vendor/llvm/dist/test/MC/MachO/tlv-reloc.s vendor/llvm/dist/test/MC/MachO/tlv.s vendor/llvm/dist/test/MC/MachO/zerofill-5.s vendor/llvm/dist/test/Other/2010-05-06-Printer.ll vendor/llvm/dist/test/Other/inline-asm-newline-terminator.ll vendor/llvm/dist/test/Transforms/GVN/2010-05-08-OneBit.ll vendor/llvm/dist/test/Transforms/Inline/2010-05-12-ValueMap.ll vendor/llvm/dist/test/Transforms/Sink/ vendor/llvm/dist/test/Transforms/Sink/basic.ll vendor/llvm/dist/test/Transforms/Sink/dg.exp vendor/llvm/dist/unittests/ADT/ilistTest.cpp vendor/llvm/dist/utils/TableGen/ClangASTNodesEmitter.cpp vendor/llvm/dist/utils/TableGen/ClangASTNodesEmitter.h vendor/llvm/dist/utils/valgrind/i386-pc-linux-gnu.supp vendor/llvm/dist/utils/valgrind/x86_64-pc-linux-gnu.supp Deleted: vendor/llvm/dist/include/llvm/CodeGen/ELFRelocation.h vendor/llvm/dist/test/CodeGen/X86/stack-color-with-reg-2.ll Modified: vendor/llvm/dist/Makefile.config.in vendor/llvm/dist/Makefile.rules vendor/llvm/dist/autoconf/configure.ac vendor/llvm/dist/configure vendor/llvm/dist/docs/AliasAnalysis.html vendor/llvm/dist/docs/BitCodeFormat.html vendor/llvm/dist/docs/Bugpoint.html vendor/llvm/dist/docs/CodeGenerator.html vendor/llvm/dist/docs/CodingStandards.html vendor/llvm/dist/docs/CommandGuide/index.html vendor/llvm/dist/docs/CommandGuide/lit.pod vendor/llvm/dist/docs/CommandLine.html vendor/llvm/dist/docs/CompilerDriver.html vendor/llvm/dist/docs/CompilerWriterInfo.html vendor/llvm/dist/docs/DeveloperPolicy.html vendor/llvm/dist/docs/ExceptionHandling.html vendor/llvm/dist/docs/ExtendingLLVM.html vendor/llvm/dist/docs/FAQ.html vendor/llvm/dist/docs/GCCFEBuildInstrs.html vendor/llvm/dist/docs/GarbageCollection.html vendor/llvm/dist/docs/GetElementPtr.html vendor/llvm/dist/docs/GettingStarted.html vendor/llvm/dist/docs/GettingStartedVS.html vendor/llvm/dist/docs/HowToReleaseLLVM.html vendor/llvm/dist/docs/HowToSubmitABug.html vendor/llvm/dist/docs/LangRef.html vendor/llvm/dist/docs/Lexicon.html vendor/llvm/dist/docs/LinkTimeOptimization.html vendor/llvm/dist/docs/MakefileGuide.html vendor/llvm/dist/docs/Packaging.html vendor/llvm/dist/docs/Passes.html vendor/llvm/dist/docs/ProgrammersManual.html vendor/llvm/dist/docs/Projects.html vendor/llvm/dist/docs/ReleaseNotes.html vendor/llvm/dist/docs/SourceLevelDebugging.html vendor/llvm/dist/docs/SystemLibrary.html vendor/llvm/dist/docs/TableGenFundamentals.html vendor/llvm/dist/docs/TestingGuide.html vendor/llvm/dist/docs/UsingLibraries.html vendor/llvm/dist/docs/WritingAnLLVMBackend.html vendor/llvm/dist/docs/WritingAnLLVMPass.html vendor/llvm/dist/docs/index.html vendor/llvm/dist/docs/tutorial/LangImpl1.html vendor/llvm/dist/docs/tutorial/LangImpl2.html vendor/llvm/dist/docs/tutorial/LangImpl3.html vendor/llvm/dist/docs/tutorial/LangImpl4.html vendor/llvm/dist/docs/tutorial/LangImpl5.html vendor/llvm/dist/docs/tutorial/LangImpl6.html vendor/llvm/dist/docs/tutorial/LangImpl7.html vendor/llvm/dist/docs/tutorial/LangImpl8.html vendor/llvm/dist/docs/tutorial/OCamlLangImpl1.html vendor/llvm/dist/docs/tutorial/OCamlLangImpl2.html vendor/llvm/dist/docs/tutorial/OCamlLangImpl3.html vendor/llvm/dist/docs/tutorial/OCamlLangImpl4.html vendor/llvm/dist/docs/tutorial/OCamlLangImpl5.html vendor/llvm/dist/docs/tutorial/OCamlLangImpl6.html vendor/llvm/dist/docs/tutorial/OCamlLangImpl7.html vendor/llvm/dist/include/llvm/ADT/DenseMap.h vendor/llvm/dist/include/llvm/ADT/EquivalenceClasses.h vendor/llvm/dist/include/llvm/ADT/SparseBitVector.h vendor/llvm/dist/include/llvm/ADT/StringRef.h vendor/llvm/dist/include/llvm/ADT/Twine.h vendor/llvm/dist/include/llvm/ADT/ilist_node.h vendor/llvm/dist/include/llvm/Analysis/DebugInfo.h vendor/llvm/dist/include/llvm/Analysis/InlineCost.h vendor/llvm/dist/include/llvm/Analysis/Lint.h vendor/llvm/dist/include/llvm/Analysis/Passes.h vendor/llvm/dist/include/llvm/CallingConv.h vendor/llvm/dist/include/llvm/CodeGen/FastISel.h vendor/llvm/dist/include/llvm/CodeGen/ISDOpcodes.h vendor/llvm/dist/include/llvm/CodeGen/LatencyPriorityQueue.h vendor/llvm/dist/include/llvm/CodeGen/LinkAllCodegenComponents.h vendor/llvm/dist/include/llvm/CodeGen/LiveInterval.h vendor/llvm/dist/include/llvm/CodeGen/LiveIntervalAnalysis.h vendor/llvm/dist/include/llvm/CodeGen/MachineFrameInfo.h vendor/llvm/dist/include/llvm/CodeGen/MachineFunction.h vendor/llvm/dist/include/llvm/CodeGen/MachineInstr.h vendor/llvm/dist/include/llvm/CodeGen/MachineRegisterInfo.h vendor/llvm/dist/include/llvm/CodeGen/MachineSSAUpdater.h vendor/llvm/dist/include/llvm/CodeGen/ScheduleDAG.h vendor/llvm/dist/include/llvm/CodeGen/SchedulerRegistry.h vendor/llvm/dist/include/llvm/CodeGen/SelectionDAG.h vendor/llvm/dist/include/llvm/CodeGen/TargetLoweringObjectFileImpl.h vendor/llvm/dist/include/llvm/CodeGen/ValueTypes.h vendor/llvm/dist/include/llvm/CodeGen/ValueTypes.td vendor/llvm/dist/include/llvm/Config/config.h.cmake vendor/llvm/dist/include/llvm/Config/config.h.in vendor/llvm/dist/include/llvm/Constants.h vendor/llvm/dist/include/llvm/Intrinsics.td vendor/llvm/dist/include/llvm/IntrinsicsX86.td vendor/llvm/dist/include/llvm/LinkAllPasses.h vendor/llvm/dist/include/llvm/MC/MCAsmInfo.h vendor/llvm/dist/include/llvm/MC/MCAsmLayout.h vendor/llvm/dist/include/llvm/MC/MCAssembler.h vendor/llvm/dist/include/llvm/MC/MCContext.h vendor/llvm/dist/include/llvm/MC/MCExpr.h vendor/llvm/dist/include/llvm/MC/MCFixup.h vendor/llvm/dist/include/llvm/MC/MCObjectWriter.h vendor/llvm/dist/include/llvm/MC/MCParser/AsmParser.h vendor/llvm/dist/include/llvm/MC/MCParser/MCAsmLexer.h vendor/llvm/dist/include/llvm/MC/MCSection.h vendor/llvm/dist/include/llvm/MC/MCSectionELF.h vendor/llvm/dist/include/llvm/MC/MCSectionMachO.h vendor/llvm/dist/include/llvm/MC/MCStreamer.h vendor/llvm/dist/include/llvm/MC/MCSymbol.h vendor/llvm/dist/include/llvm/MC/MachObjectWriter.h vendor/llvm/dist/include/llvm/PassManager.h vendor/llvm/dist/include/llvm/Support/Compiler.h vendor/llvm/dist/include/llvm/Support/DOTGraphTraits.h vendor/llvm/dist/include/llvm/Support/GraphWriter.h vendor/llvm/dist/include/llvm/Support/StandardPasses.h vendor/llvm/dist/include/llvm/System/Signals.h vendor/llvm/dist/include/llvm/Target/SubtargetFeature.h vendor/llvm/dist/include/llvm/Target/Target.td vendor/llvm/dist/include/llvm/Target/TargetAsmBackend.h vendor/llvm/dist/include/llvm/Target/TargetInstrInfo.h vendor/llvm/dist/include/llvm/Target/TargetLowering.h vendor/llvm/dist/include/llvm/Target/TargetLoweringObjectFile.h vendor/llvm/dist/include/llvm/Target/TargetMachine.h vendor/llvm/dist/include/llvm/Target/TargetRegisterInfo.h vendor/llvm/dist/include/llvm/Target/TargetRegistry.h vendor/llvm/dist/include/llvm/Target/TargetSelectionDAGInfo.h vendor/llvm/dist/include/llvm/Transforms/Scalar.h vendor/llvm/dist/include/llvm/Transforms/Utils/SSAUpdater.h vendor/llvm/dist/lib/Analysis/CMakeLists.txt vendor/llvm/dist/lib/Analysis/DebugInfo.cpp vendor/llvm/dist/lib/Analysis/InlineCost.cpp vendor/llvm/dist/lib/Analysis/Lint.cpp vendor/llvm/dist/lib/AsmParser/LLLexer.cpp vendor/llvm/dist/lib/AsmParser/LLParser.cpp vendor/llvm/dist/lib/AsmParser/LLToken.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/AsmPrinter.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/DIE.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfDebug.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfDebug.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfException.cpp vendor/llvm/dist/lib/CodeGen/AsmPrinter/DwarfException.h vendor/llvm/dist/lib/CodeGen/AsmPrinter/OcamlGCPrinter.cpp vendor/llvm/dist/lib/CodeGen/CriticalAntiDepBreaker.cpp vendor/llvm/dist/lib/CodeGen/IntrinsicLowering.cpp vendor/llvm/dist/lib/CodeGen/LLVMTargetMachine.cpp vendor/llvm/dist/lib/CodeGen/LatencyPriorityQueue.cpp vendor/llvm/dist/lib/CodeGen/LiveIntervalAnalysis.cpp vendor/llvm/dist/lib/CodeGen/LowerSubregs.cpp vendor/llvm/dist/lib/CodeGen/MachineCSE.cpp vendor/llvm/dist/lib/CodeGen/MachineFunction.cpp vendor/llvm/dist/lib/CodeGen/MachineInstr.cpp vendor/llvm/dist/lib/CodeGen/MachineLICM.cpp vendor/llvm/dist/lib/CodeGen/MachineRegisterInfo.cpp vendor/llvm/dist/lib/CodeGen/MachineSSAUpdater.cpp vendor/llvm/dist/lib/CodeGen/MachineSink.cpp vendor/llvm/dist/lib/CodeGen/MachineVerifier.cpp vendor/llvm/dist/lib/CodeGen/PHIElimination.cpp vendor/llvm/dist/lib/CodeGen/PHIElimination.h vendor/llvm/dist/lib/CodeGen/PostRASchedulerList.cpp vendor/llvm/dist/lib/CodeGen/PreAllocSplitting.cpp vendor/llvm/dist/lib/CodeGen/ProcessImplicitDefs.cpp vendor/llvm/dist/lib/CodeGen/PrologEpilogInserter.cpp vendor/llvm/dist/lib/CodeGen/RegAllocFast.cpp vendor/llvm/dist/lib/CodeGen/RegAllocLinearScan.cpp vendor/llvm/dist/lib/CodeGen/RegAllocLocal.cpp vendor/llvm/dist/lib/CodeGen/RegAllocPBQP.cpp vendor/llvm/dist/lib/CodeGen/RegisterScavenging.cpp vendor/llvm/dist/lib/CodeGen/ScheduleDAG.cpp vendor/llvm/dist/lib/CodeGen/ScheduleDAGEmit.cpp vendor/llvm/dist/lib/CodeGen/ScheduleDAGInstrs.cpp vendor/llvm/dist/lib/CodeGen/ScheduleDAGInstrs.h vendor/llvm/dist/lib/CodeGen/SelectionDAG/DAGCombiner.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/FastISel.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/InstrEmitter.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/InstrEmitter.h vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/LegalizeTypes.h vendor/llvm/dist/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.h vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAG.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/TargetLowering.cpp vendor/llvm/dist/lib/CodeGen/SelectionDAG/TargetSelectionDAGInfo.cpp vendor/llvm/dist/lib/CodeGen/SimpleRegisterCoalescing.cpp vendor/llvm/dist/lib/CodeGen/Spiller.cpp vendor/llvm/dist/lib/CodeGen/StackSlotColoring.cpp vendor/llvm/dist/lib/CodeGen/StrongPHIElimination.cpp vendor/llvm/dist/lib/CodeGen/TailDuplication.cpp vendor/llvm/dist/lib/CodeGen/TargetLoweringObjectFileImpl.cpp vendor/llvm/dist/lib/CodeGen/TwoAddressInstructionPass.cpp vendor/llvm/dist/lib/CodeGen/VirtRegRewriter.cpp vendor/llvm/dist/lib/CompilerDriver/Action.cpp vendor/llvm/dist/lib/ExecutionEngine/ExecutionEngine.cpp vendor/llvm/dist/lib/MC/CMakeLists.txt vendor/llvm/dist/lib/MC/MCAsmInfo.cpp vendor/llvm/dist/lib/MC/MCAsmInfoDarwin.cpp vendor/llvm/dist/lib/MC/MCAsmStreamer.cpp vendor/llvm/dist/lib/MC/MCAssembler.cpp vendor/llvm/dist/lib/MC/MCContext.cpp vendor/llvm/dist/lib/MC/MCExpr.cpp vendor/llvm/dist/lib/MC/MCInst.cpp vendor/llvm/dist/lib/MC/MCMachOStreamer.cpp vendor/llvm/dist/lib/MC/MCNullStreamer.cpp vendor/llvm/dist/lib/MC/MCParser/AsmLexer.cpp vendor/llvm/dist/lib/MC/MCParser/AsmParser.cpp vendor/llvm/dist/lib/MC/MCSection.cpp vendor/llvm/dist/lib/MC/MCSectionMachO.cpp vendor/llvm/dist/lib/MC/MCStreamer.cpp vendor/llvm/dist/lib/MC/MCSymbol.cpp vendor/llvm/dist/lib/MC/MachObjectWriter.cpp vendor/llvm/dist/lib/Support/APInt.cpp vendor/llvm/dist/lib/Support/CommandLine.cpp vendor/llvm/dist/lib/Support/ErrorHandling.cpp vendor/llvm/dist/lib/Support/PrettyStackTrace.cpp vendor/llvm/dist/lib/Support/StringRef.cpp vendor/llvm/dist/lib/Support/Timer.cpp vendor/llvm/dist/lib/Support/Twine.cpp vendor/llvm/dist/lib/Support/raw_ostream.cpp vendor/llvm/dist/lib/System/Unix/Signals.inc vendor/llvm/dist/lib/System/Win32/Signals.inc vendor/llvm/dist/lib/Target/ARM/ARM.h vendor/llvm/dist/lib/Target/ARM/ARM.td vendor/llvm/dist/lib/Target/ARM/ARMBaseInstrInfo.cpp vendor/llvm/dist/lib/Target/ARM/ARMBaseInstrInfo.h vendor/llvm/dist/lib/Target/ARM/ARMBaseRegisterInfo.cpp vendor/llvm/dist/lib/Target/ARM/ARMBaseRegisterInfo.h vendor/llvm/dist/lib/Target/ARM/ARMCodeEmitter.cpp vendor/llvm/dist/lib/Target/ARM/ARMExpandPseudoInsts.cpp vendor/llvm/dist/lib/Target/ARM/ARMISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/ARM/ARMISelLowering.cpp vendor/llvm/dist/lib/Target/ARM/ARMISelLowering.h vendor/llvm/dist/lib/Target/ARM/ARMInstrFormats.td vendor/llvm/dist/lib/Target/ARM/ARMInstrInfo.td vendor/llvm/dist/lib/Target/ARM/ARMInstrNEON.td vendor/llvm/dist/lib/Target/ARM/ARMInstrThumb.td vendor/llvm/dist/lib/Target/ARM/ARMInstrThumb2.td vendor/llvm/dist/lib/Target/ARM/ARMInstrVFP.td vendor/llvm/dist/lib/Target/ARM/ARMJITInfo.cpp vendor/llvm/dist/lib/Target/ARM/ARMRegisterInfo.h vendor/llvm/dist/lib/Target/ARM/ARMRegisterInfo.td vendor/llvm/dist/lib/Target/ARM/ARMRelocations.h vendor/llvm/dist/lib/Target/ARM/ARMSelectionDAGInfo.cpp vendor/llvm/dist/lib/Target/ARM/ARMSelectionDAGInfo.h vendor/llvm/dist/lib/Target/ARM/ARMSubtarget.cpp vendor/llvm/dist/lib/Target/ARM/ARMSubtarget.h vendor/llvm/dist/lib/Target/ARM/ARMTargetMachine.cpp vendor/llvm/dist/lib/Target/ARM/ARMTargetMachine.h vendor/llvm/dist/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp vendor/llvm/dist/lib/Target/ARM/AsmPrinter/ARMInstPrinter.cpp vendor/llvm/dist/lib/Target/ARM/AsmPrinter/ARMMCInstLower.h vendor/llvm/dist/lib/Target/ARM/NEONMoveFix.cpp vendor/llvm/dist/lib/Target/ARM/NEONPreAllocPass.cpp vendor/llvm/dist/lib/Target/ARM/Thumb1InstrInfo.cpp vendor/llvm/dist/lib/Target/ARM/Thumb1InstrInfo.h vendor/llvm/dist/lib/Target/ARM/Thumb2InstrInfo.cpp vendor/llvm/dist/lib/Target/ARM/Thumb2InstrInfo.h vendor/llvm/dist/lib/Target/Alpha/AlphaInstrInfo.cpp vendor/llvm/dist/lib/Target/Alpha/AlphaInstrInfo.h vendor/llvm/dist/lib/Target/Alpha/AlphaInstrInfo.td vendor/llvm/dist/lib/Target/Alpha/AlphaSelectionDAGInfo.cpp vendor/llvm/dist/lib/Target/Alpha/AlphaSelectionDAGInfo.h vendor/llvm/dist/lib/Target/Alpha/AlphaTargetMachine.cpp vendor/llvm/dist/lib/Target/Alpha/AlphaTargetMachine.h vendor/llvm/dist/lib/Target/Blackfin/BlackfinInstrInfo.cpp vendor/llvm/dist/lib/Target/Blackfin/BlackfinInstrInfo.h vendor/llvm/dist/lib/Target/Blackfin/BlackfinInstrInfo.td vendor/llvm/dist/lib/Target/Blackfin/BlackfinRegisterInfo.cpp vendor/llvm/dist/lib/Target/Blackfin/BlackfinRegisterInfo.h vendor/llvm/dist/lib/Target/Blackfin/BlackfinRegisterInfo.td vendor/llvm/dist/lib/Target/Blackfin/BlackfinSelectionDAGInfo.cpp vendor/llvm/dist/lib/Target/Blackfin/BlackfinSelectionDAGInfo.h vendor/llvm/dist/lib/Target/Blackfin/BlackfinTargetMachine.cpp vendor/llvm/dist/lib/Target/Blackfin/BlackfinTargetMachine.h vendor/llvm/dist/lib/Target/CBackend/CBackend.cpp vendor/llvm/dist/lib/Target/CBackend/CTargetMachine.h vendor/llvm/dist/lib/Target/CellSPU/README.txt vendor/llvm/dist/lib/Target/CellSPU/SPUISelLowering.cpp vendor/llvm/dist/lib/Target/CellSPU/SPUInstrInfo.cpp vendor/llvm/dist/lib/Target/CellSPU/SPUInstrInfo.h vendor/llvm/dist/lib/Target/CellSPU/SPUInstrInfo.td vendor/llvm/dist/lib/Target/CellSPU/SPURegisterInfo.cpp vendor/llvm/dist/lib/Target/CellSPU/SPUSelectionDAGInfo.cpp vendor/llvm/dist/lib/Target/CellSPU/SPUSelectionDAGInfo.h vendor/llvm/dist/lib/Target/CellSPU/SPUTargetMachine.cpp vendor/llvm/dist/lib/Target/CellSPU/SPUTargetMachine.h vendor/llvm/dist/lib/Target/CppBackend/CPPBackend.cpp vendor/llvm/dist/lib/Target/CppBackend/CPPTargetMachine.h vendor/llvm/dist/lib/Target/MBlaze/AsmPrinter/MBlazeAsmPrinter.cpp vendor/llvm/dist/lib/Target/MBlaze/MBlazeInstrInfo.cpp vendor/llvm/dist/lib/Target/MBlaze/MBlazeInstrInfo.h vendor/llvm/dist/lib/Target/MBlaze/MBlazeRegisterInfo.cpp vendor/llvm/dist/lib/Target/MBlaze/MBlazeRegisterInfo.td vendor/llvm/dist/lib/Target/MBlaze/MBlazeSelectionDAGInfo.cpp vendor/llvm/dist/lib/Target/MBlaze/MBlazeSelectionDAGInfo.h vendor/llvm/dist/lib/Target/MBlaze/MBlazeTargetMachine.cpp vendor/llvm/dist/lib/Target/MBlaze/MBlazeTargetMachine.h vendor/llvm/dist/lib/Target/MSIL/MSILWriter.cpp vendor/llvm/dist/lib/Target/MSP430/AsmPrinter/MSP430MCInstLower.h vendor/llvm/dist/lib/Target/MSP430/MSP430ISelLowering.cpp vendor/llvm/dist/lib/Target/MSP430/MSP430InstrInfo.cpp vendor/llvm/dist/lib/Target/MSP430/MSP430InstrInfo.h vendor/llvm/dist/lib/Target/MSP430/MSP430RegisterInfo.td vendor/llvm/dist/lib/Target/MSP430/MSP430SelectionDAGInfo.cpp vendor/llvm/dist/lib/Target/MSP430/MSP430SelectionDAGInfo.h vendor/llvm/dist/lib/Target/MSP430/MSP430TargetMachine.cpp vendor/llvm/dist/lib/Target/MSP430/MSP430TargetMachine.h vendor/llvm/dist/lib/Target/Mips/AsmPrinter/MipsAsmPrinter.cpp vendor/llvm/dist/lib/Target/Mips/MipsISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/Mips/MipsInstrInfo.cpp vendor/llvm/dist/lib/Target/Mips/MipsInstrInfo.h vendor/llvm/dist/lib/Target/Mips/MipsRegisterInfo.cpp vendor/llvm/dist/lib/Target/Mips/MipsRegisterInfo.h vendor/llvm/dist/lib/Target/Mips/MipsRegisterInfo.td vendor/llvm/dist/lib/Target/Mips/MipsSelectionDAGInfo.cpp vendor/llvm/dist/lib/Target/Mips/MipsSelectionDAGInfo.h vendor/llvm/dist/lib/Target/Mips/MipsTargetMachine.cpp vendor/llvm/dist/lib/Target/Mips/MipsTargetMachine.h vendor/llvm/dist/lib/Target/PIC16/AsmPrinter/PIC16AsmPrinter.h vendor/llvm/dist/lib/Target/PIC16/PIC16DebugInfo.cpp vendor/llvm/dist/lib/Target/PIC16/PIC16ISelDAGToDAG.h vendor/llvm/dist/lib/Target/PIC16/PIC16InstrInfo.cpp vendor/llvm/dist/lib/Target/PIC16/PIC16InstrInfo.h vendor/llvm/dist/lib/Target/PIC16/PIC16Section.h vendor/llvm/dist/lib/Target/PIC16/PIC16SelectionDAGInfo.cpp vendor/llvm/dist/lib/Target/PIC16/PIC16SelectionDAGInfo.h vendor/llvm/dist/lib/Target/PIC16/PIC16TargetMachine.cpp vendor/llvm/dist/lib/Target/PIC16/PIC16TargetMachine.h vendor/llvm/dist/lib/Target/PowerPC/PPCISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCISelLowering.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCISelLowering.h vendor/llvm/dist/lib/Target/PowerPC/PPCInstrInfo.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCInstrInfo.h vendor/llvm/dist/lib/Target/PowerPC/PPCInstrInfo.td vendor/llvm/dist/lib/Target/PowerPC/PPCRegisterInfo.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCRegisterInfo.td vendor/llvm/dist/lib/Target/PowerPC/PPCSelectionDAGInfo.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCSelectionDAGInfo.h vendor/llvm/dist/lib/Target/PowerPC/PPCTargetMachine.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCTargetMachine.h vendor/llvm/dist/lib/Target/README.txt vendor/llvm/dist/lib/Target/Sparc/SparcInstrInfo.cpp vendor/llvm/dist/lib/Target/Sparc/SparcInstrInfo.h vendor/llvm/dist/lib/Target/Sparc/SparcRegisterInfo.td vendor/llvm/dist/lib/Target/Sparc/SparcSelectionDAGInfo.cpp vendor/llvm/dist/lib/Target/Sparc/SparcSelectionDAGInfo.h vendor/llvm/dist/lib/Target/Sparc/SparcTargetMachine.cpp vendor/llvm/dist/lib/Target/Sparc/SparcTargetMachine.h vendor/llvm/dist/lib/Target/SubtargetFeature.cpp vendor/llvm/dist/lib/Target/SystemZ/AsmPrinter/SystemZAsmPrinter.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZISelLowering.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZInstrInfo.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZInstrInfo.h vendor/llvm/dist/lib/Target/SystemZ/SystemZRegisterInfo.h vendor/llvm/dist/lib/Target/SystemZ/SystemZRegisterInfo.td vendor/llvm/dist/lib/Target/SystemZ/SystemZSelectionDAGInfo.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZSelectionDAGInfo.h vendor/llvm/dist/lib/Target/SystemZ/SystemZTargetMachine.cpp vendor/llvm/dist/lib/Target/SystemZ/SystemZTargetMachine.h vendor/llvm/dist/lib/Target/TargetMachine.cpp vendor/llvm/dist/lib/Target/TargetRegisterInfo.cpp vendor/llvm/dist/lib/Target/X86/AsmParser/X86AsmParser.cpp vendor/llvm/dist/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp vendor/llvm/dist/lib/Target/X86/AsmPrinter/X86AsmPrinter.h vendor/llvm/dist/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp vendor/llvm/dist/lib/Target/X86/AsmPrinter/X86MCInstLower.h vendor/llvm/dist/lib/Target/X86/CMakeLists.txt vendor/llvm/dist/lib/Target/X86/Disassembler/X86Disassembler.cpp vendor/llvm/dist/lib/Target/X86/Disassembler/X86DisassemblerDecoder.c vendor/llvm/dist/lib/Target/X86/Disassembler/X86DisassemblerDecoder.h vendor/llvm/dist/lib/Target/X86/Disassembler/X86DisassemblerDecoderCommon.h vendor/llvm/dist/lib/Target/X86/SSEDomainFix.cpp vendor/llvm/dist/lib/Target/X86/X86AsmBackend.cpp vendor/llvm/dist/lib/Target/X86/X86COFFMachineModuleInfo.h vendor/llvm/dist/lib/Target/X86/X86CallingConv.td vendor/llvm/dist/lib/Target/X86/X86FastISel.cpp vendor/llvm/dist/lib/Target/X86/X86FloatingPointRegKill.cpp vendor/llvm/dist/lib/Target/X86/X86ISelDAGToDAG.cpp vendor/llvm/dist/lib/Target/X86/X86ISelLowering.cpp vendor/llvm/dist/lib/Target/X86/X86ISelLowering.h vendor/llvm/dist/lib/Target/X86/X86Instr64bit.td vendor/llvm/dist/lib/Target/X86/X86InstrInfo.cpp vendor/llvm/dist/lib/Target/X86/X86InstrInfo.h vendor/llvm/dist/lib/Target/X86/X86InstrInfo.td vendor/llvm/dist/lib/Target/X86/X86InstrMMX.td vendor/llvm/dist/lib/Target/X86/X86InstrSSE.td vendor/llvm/dist/lib/Target/X86/X86RegisterInfo.cpp vendor/llvm/dist/lib/Target/X86/X86RegisterInfo.h vendor/llvm/dist/lib/Target/X86/X86RegisterInfo.td vendor/llvm/dist/lib/Target/X86/X86SelectionDAGInfo.cpp vendor/llvm/dist/lib/Target/X86/X86SelectionDAGInfo.h vendor/llvm/dist/lib/Target/X86/X86TargetMachine.cpp vendor/llvm/dist/lib/Target/X86/X86TargetMachine.h vendor/llvm/dist/lib/Target/XCore/XCoreISelLowering.cpp vendor/llvm/dist/lib/Target/XCore/XCoreInstrInfo.cpp vendor/llvm/dist/lib/Target/XCore/XCoreInstrInfo.h vendor/llvm/dist/lib/Target/XCore/XCoreSelectionDAGInfo.cpp vendor/llvm/dist/lib/Target/XCore/XCoreSelectionDAGInfo.h vendor/llvm/dist/lib/Target/XCore/XCoreTargetMachine.cpp vendor/llvm/dist/lib/Target/XCore/XCoreTargetMachine.h vendor/llvm/dist/lib/Transforms/IPO/DeadArgumentElimination.cpp vendor/llvm/dist/lib/Transforms/IPO/InlineAlways.cpp vendor/llvm/dist/lib/Transforms/IPO/InlineSimple.cpp vendor/llvm/dist/lib/Transforms/IPO/MergeFunctions.cpp vendor/llvm/dist/lib/Transforms/IPO/StripSymbols.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombine.h vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineCasts.cpp vendor/llvm/dist/lib/Transforms/InstCombine/InstCombineWorklist.h vendor/llvm/dist/lib/Transforms/Scalar/CMakeLists.txt vendor/llvm/dist/lib/Transforms/Scalar/GVN.cpp vendor/llvm/dist/lib/Transforms/Scalar/LoopStrengthReduce.cpp vendor/llvm/dist/lib/Transforms/Scalar/SimplifyCFGPass.cpp vendor/llvm/dist/lib/Transforms/Scalar/SimplifyLibCalls.cpp vendor/llvm/dist/lib/Transforms/Utils/CloneFunction.cpp vendor/llvm/dist/lib/Transforms/Utils/PromoteMemoryToRegister.cpp vendor/llvm/dist/lib/Transforms/Utils/SSAUpdater.cpp vendor/llvm/dist/lib/VMCore/AsmWriter.cpp vendor/llvm/dist/lib/VMCore/PassManager.cpp vendor/llvm/dist/lib/VMCore/ValueTypes.cpp vendor/llvm/dist/lib/VMCore/Verifier.cpp vendor/llvm/dist/test/CodeGen/ARM/2008-02-04-LocalRegAllocBug.ll vendor/llvm/dist/test/CodeGen/ARM/2008-02-29-RegAllocLocal.ll vendor/llvm/dist/test/CodeGen/ARM/2009-05-05-DAGCombineBug.ll vendor/llvm/dist/test/CodeGen/ARM/2009-05-07-RegAllocLocal.ll vendor/llvm/dist/test/CodeGen/ARM/2009-11-02-NegativeLane.ll vendor/llvm/dist/test/CodeGen/ARM/arm-frameaddr.ll vendor/llvm/dist/test/CodeGen/ARM/div.ll vendor/llvm/dist/test/CodeGen/ARM/fabss.ll vendor/llvm/dist/test/CodeGen/ARM/fadds.ll vendor/llvm/dist/test/CodeGen/ARM/fdivs.ll vendor/llvm/dist/test/CodeGen/ARM/fmacs.ll vendor/llvm/dist/test/CodeGen/ARM/fmscs.ll vendor/llvm/dist/test/CodeGen/ARM/fmuls.ll vendor/llvm/dist/test/CodeGen/ARM/fnmscs.ll vendor/llvm/dist/test/CodeGen/ARM/mul_const.ll vendor/llvm/dist/test/CodeGen/ARM/spill-q.ll vendor/llvm/dist/test/CodeGen/ARM/vcgt.ll vendor/llvm/dist/test/CodeGen/Generic/2006-09-02-LocalAllocCrash.ll vendor/llvm/dist/test/CodeGen/PowerPC/2007-04-30-InlineAsmEarlyClobber.ll vendor/llvm/dist/test/CodeGen/PowerPC/2007-10-21-LocalRegAllocAssert.ll vendor/llvm/dist/test/CodeGen/PowerPC/2007-10-21-LocalRegAllocAssert2.ll vendor/llvm/dist/test/CodeGen/PowerPC/2008-02-09-LocalRegAllocAssert.ll vendor/llvm/dist/test/CodeGen/PowerPC/cr_spilling.ll vendor/llvm/dist/test/CodeGen/SystemZ/2009-07-10-BadIncomingArgOffset.ll vendor/llvm/dist/test/CodeGen/Thumb/2010-01-15-local-alloc-spill-physical.ll vendor/llvm/dist/test/CodeGen/Thumb2/machine-licm.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-pack.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-rev.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-shifter.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-smla.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-smul.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-spill-q.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-sxt_rot.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-uxt_rot.ll vendor/llvm/dist/test/CodeGen/Thumb2/thumb2-uxtb.ll vendor/llvm/dist/test/CodeGen/X86/2008-01-16-FPStackifierAssert.ll vendor/llvm/dist/test/CodeGen/X86/2008-02-22-LocalRegAllocBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-04-15-LiveVariableBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-05-28-LocalRegAllocBug.ll vendor/llvm/dist/test/CodeGen/X86/2008-09-17-inline-asm-1.ll vendor/llvm/dist/test/CodeGen/X86/2008-09-18-inline-asm-2.ll vendor/llvm/dist/test/CodeGen/X86/2009-01-29-LocalRegAllocBug.ll vendor/llvm/dist/test/CodeGen/X86/2009-04-14-IllegalRegs.ll vendor/llvm/dist/test/CodeGen/X86/2009-06-03-Win64DisableRedZone.ll vendor/llvm/dist/test/CodeGen/X86/2009-06-03-Win64SpillXMM.ll vendor/llvm/dist/test/CodeGen/X86/2009-08-08-CastError.ll vendor/llvm/dist/test/CodeGen/X86/2010-04-30-LocalAlloc-LandingPad.ll vendor/llvm/dist/test/CodeGen/X86/call-imm.ll vendor/llvm/dist/test/CodeGen/X86/fast-cc-callee-pops.ll vendor/llvm/dist/test/CodeGen/X86/fast-cc-pass-in-regs.ll vendor/llvm/dist/test/CodeGen/X86/fp-stack-O0-crash.ll vendor/llvm/dist/test/CodeGen/X86/liveness-local-regalloc.ll vendor/llvm/dist/test/CodeGen/X86/lsr-delayed-fold.ll vendor/llvm/dist/test/CodeGen/X86/sse-align-11.ll vendor/llvm/dist/test/FrontendC/2007-04-11-InlineStorageClassC89.c vendor/llvm/dist/test/FrontendC/2007-04-11-InlineStorageClassC99.c vendor/llvm/dist/test/MC/AsmParser/X86/x86_32-bit_cat.s vendor/llvm/dist/test/MC/AsmParser/X86/x86_32-encoding.s vendor/llvm/dist/test/MC/AsmParser/X86/x86_32-new-encoder.s vendor/llvm/dist/test/MC/AsmParser/X86/x86_64-encoding.s vendor/llvm/dist/test/MC/AsmParser/X86/x86_64-new-encoder.s vendor/llvm/dist/test/MC/AsmParser/X86/x86_64-suffix-matching.s vendor/llvm/dist/test/MC/AsmParser/X86/x86_instructions.s vendor/llvm/dist/test/MC/AsmParser/assignment.s vendor/llvm/dist/test/MC/AsmParser/directive_zerofill.s vendor/llvm/dist/test/MC/Disassembler/simple-tests.txt vendor/llvm/dist/test/MC/MachO/darwin-x86_64-reloc.s vendor/llvm/dist/test/MC/MachO/reloc.s vendor/llvm/dist/test/MC/MachO/symbol-flags.s vendor/llvm/dist/test/MC/MachO/x86_32-optimal_nop.s vendor/llvm/dist/test/Other/lint.ll vendor/llvm/dist/test/Transforms/InstCombine/cast.ll vendor/llvm/dist/test/Transforms/Mem2Reg/ConvertDebugInfo.ll vendor/llvm/dist/test/Transforms/SimplifyCFG/trapping-load-unreachable.ll vendor/llvm/dist/test/Transforms/SimplifyLibCalls/memcmp.ll vendor/llvm/dist/tools/bugpoint/ExecutionDriver.cpp vendor/llvm/dist/tools/bugpoint/Miscompilation.cpp vendor/llvm/dist/tools/bugpoint/ToolRunner.cpp vendor/llvm/dist/tools/bugpoint/ToolRunner.h vendor/llvm/dist/tools/edis/EDInst.cpp vendor/llvm/dist/tools/gold/Makefile vendor/llvm/dist/tools/gold/gold-plugin.cpp vendor/llvm/dist/tools/llc/llc.cpp vendor/llvm/dist/tools/llvm-ld/llvm-ld.cpp vendor/llvm/dist/tools/llvm-mc/Disassembler.cpp vendor/llvm/dist/tools/llvm-mc/llvm-mc.cpp vendor/llvm/dist/tools/lto/LTOCodeGenerator.cpp vendor/llvm/dist/tools/lto/LTOModule.cpp vendor/llvm/dist/tools/opt/opt.cpp vendor/llvm/dist/unittests/ADT/StringRefTest.cpp vendor/llvm/dist/utils/TableGen/AsmMatcherEmitter.cpp vendor/llvm/dist/utils/TableGen/CMakeLists.txt vendor/llvm/dist/utils/TableGen/ClangDiagnosticsEmitter.cpp vendor/llvm/dist/utils/TableGen/CodeGenDAGPatterns.cpp vendor/llvm/dist/utils/TableGen/CodeGenRegisters.h vendor/llvm/dist/utils/TableGen/CodeGenTarget.cpp vendor/llvm/dist/utils/TableGen/CodeGenTarget.h vendor/llvm/dist/utils/TableGen/DAGISelMatcherGen.cpp vendor/llvm/dist/utils/TableGen/EDEmitter.cpp vendor/llvm/dist/utils/TableGen/FastISelEmitter.cpp vendor/llvm/dist/utils/TableGen/IntrinsicEmitter.cpp vendor/llvm/dist/utils/TableGen/IntrinsicEmitter.h vendor/llvm/dist/utils/TableGen/Makefile vendor/llvm/dist/utils/TableGen/Record.h vendor/llvm/dist/utils/TableGen/RegisterInfoEmitter.cpp vendor/llvm/dist/utils/TableGen/TableGen.cpp vendor/llvm/dist/utils/TableGen/X86RecognizableInstr.cpp vendor/llvm/dist/utils/buildit/GNUmakefile vendor/llvm/dist/utils/buildit/build_llvm vendor/llvm/dist/utils/lit/lit/LitConfig.py vendor/llvm/dist/utils/lit/lit/ShUtil.py vendor/llvm/dist/utils/lit/lit/TestFormats.py vendor/llvm/dist/utils/lit/lit/lit.py Modified: vendor/llvm/dist/Makefile.config.in ============================================================================== --- vendor/llvm/dist/Makefile.config.in Thu May 27 13:56:53 2010 (r208598) +++ vendor/llvm/dist/Makefile.config.in Thu May 27 15:15:58 2010 (r208599) @@ -156,6 +156,7 @@ TAR := @TAR@ # Paths to miscellaneous programs we hope are present but might not be PERL := @PERL@ BZIP2 := @BZIP2@ +CAT := @CAT@ DOT := @DOT@ DOXYGEN := @DOXYGEN@ GROFF := @GROFF@ @@ -167,6 +168,7 @@ OCAMLDOC := @OCAMLDOC@ GAS := @GAS@ POD2HTML := @POD2HTML@ POD2MAN := @POD2MAN@ +PDFROFF := @PDFROFF@ RUNTEST := @RUNTEST@ TCLSH := @TCLSH@ ZIP := @ZIP@ @@ -268,6 +270,9 @@ ENABLE_SHARED := @ENABLE_SHARED@ # Use -fvisibility-inlines-hidden? ENABLE_VISIBILITY_INLINES_HIDDEN := @ENABLE_VISIBILITY_INLINES_HIDDEN@ +# Do we want to allow timestamping information into builds? +ENABLE_TIMESTAMPS := @ENABLE_TIMESTAMPS@ + # This option tells the Makefiles to produce verbose output. # It essentially prints the commands that make is executing #VERBOSE = 1 Modified: vendor/llvm/dist/Makefile.rules ============================================================================== --- vendor/llvm/dist/Makefile.rules Thu May 27 13:56:53 2010 (r208598) +++ vendor/llvm/dist/Makefile.rules Thu May 27 15:15:58 2010 (r208599) @@ -447,6 +447,14 @@ else endif endif +# Support makefile variable to disable any kind of timestamp/non-deterministic +# info from being used in the build. +ifeq ($(ENABLE_TIMESTAMPS),1) + DOTDIR_TIMESTAMP_COMMAND := $(DATE) +else + DOTDIR_TIMESTAMP_COMMAND := echo 'Created.' +endif + ifeq ($(HOST_OS),MingW) # Work around PR4957 CPP.Defines += -D__NO_CTYPE_INLINE @@ -581,10 +589,14 @@ ifeq ($(TARGET_OS),Darwin) endif ifdef SHARED_LIBRARY +ifneq ($(HOST_OS),Darwin) + LD.Flags += $(RPATH) -Wl,'$$ORIGIN' +else ifneq ($(DARWIN_MAJVERS),4) LD.Flags += $(RPATH) -Wl,$(LibDir) endif endif +endif ifdef TOOL_VERBOSE C.Flags += -v @@ -779,7 +791,7 @@ $(DESTDIR)$(PROJ_bindir) $(DESTDIR)$(PRO # To create other directories, as needed, and timestamp their creation %/.dir: $(Verb) $(MKDIR) $* > /dev/null - $(Verb) $(DATE) > $@ + $(Verb) $(DOTDIR_TIMESTAMP_COMMAND) > $@ .PRECIOUS: $(ObjDir)/.dir $(LibDir)/.dir $(ToolDir)/.dir $(ExmplDir)/.dir .PRECIOUS: $(LLVMLibDir)/.dir $(LLVMToolDir)/.dir $(LLVMExmplDir)/.dir @@ -1116,7 +1128,12 @@ install-local:: uninstall-local:: $(Echo) Uninstall circumvented with NO_INSTALL else + +ifdef LOADABLE_MODULE +DestSharedLib = $(DESTDIR)$(PROJ_libdir)/$(LIBRARYNAME)$(SHLIBEXT) +else DestSharedLib = $(DESTDIR)$(PROJ_libdir)/lib$(LIBRARYNAME)$(SHLIBEXT) +endif install-local:: $(DestSharedLib) Modified: vendor/llvm/dist/autoconf/configure.ac ============================================================================== --- vendor/llvm/dist/autoconf/configure.ac Thu May 27 13:56:53 2010 (r208598) +++ vendor/llvm/dist/autoconf/configure.ac Thu May 27 15:15:58 2010 (r208599) @@ -525,6 +525,20 @@ case "$enableval" in *) AC_MSG_ERROR([Invalid setting for --enable-shared. Use "yes" or "no"]) ;; esac +dnl Enable embedding timestamp information into build. +AC_ARG_ENABLE(timestamps, + AS_HELP_STRING([--enable-timestamps], + [Enable embedding timestamp information in build (default is YES)]),, + enableval=default) +case "$enableval" in + yes) AC_SUBST(ENABLE_TIMESTAMPS,[1]) ;; + no) AC_SUBST(ENABLE_TIMESTAMPS,[0]) ;; + default) AC_SUBST(ENABLE_TIMESTAMPS,[1]) ;; + *) AC_MSG_ERROR([Invalid setting for --enable-timestamps. Use "yes" or "no"]) ;; +esac +AC_DEFINE_UNQUOTED([ENABLE_TIMESTAMPS],$ENABLE_TIMESTAMPS, + [Define if timestamp information (e.g., __DATE___) is allowed]) + dnl Allow specific targets to be specified for building (or not) TARGETS_TO_BUILD="" AC_ARG_ENABLE([targets],AS_HELP_STRING([--enable-targets], @@ -1003,11 +1017,13 @@ dnl are not found then they are set to " dnl nothing. This just lets the build output show that we could have done dnl something if the tool was available. AC_PATH_PROG(BZIP2, [bzip2]) +AC_PATH_PROG(CAT, [cat]) AC_PATH_PROG(DOXYGEN, [doxygen]) AC_PATH_PROG(GROFF, [groff]) AC_PATH_PROG(GZIP, [gzip]) AC_PATH_PROG(POD2HTML, [pod2html]) AC_PATH_PROG(POD2MAN, [pod2man]) +AC_PATH_PROG(PDFROFF, [pdfroff]) AC_PATH_PROG(RUNTEST, [runtest]) DJ_AC_PATH_TCLSH AC_PATH_PROG(ZIP, [zip]) @@ -1543,9 +1559,6 @@ AC_CONFIG_FILES([Makefile.config]) dnl Configure the RPM spec file for LLVM AC_CONFIG_FILES([llvm.spec]) -dnl Configure doxygen's configuration file -AC_CONFIG_FILES([docs/doxygen.cfg]) - dnl Configure llvmc's Base plugin AC_CONFIG_FILES([tools/llvmc/plugins/Base/Base.td]) Modified: vendor/llvm/dist/configure ============================================================================== --- vendor/llvm/dist/configure Thu May 27 13:56:53 2010 (r208598) +++ vendor/llvm/dist/configure Thu May 27 15:15:58 2010 (r208599) @@ -690,6 +690,7 @@ ENABLE_DOXYGEN ENABLE_THREADS ENABLE_PIC ENABLE_SHARED +ENABLE_TIMESTAMPS TARGETS_TO_BUILD LLVM_ENUM_TARGETS LLVM_ENUM_ASM_PRINTERS @@ -736,11 +737,13 @@ INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA BZIP2 +CAT DOXYGEN GROFF GZIP POD2HTML POD2MAN +PDFROFF RUNTEST TCLSH ZIP @@ -1408,6 +1411,8 @@ Optional Features: is YES) --enable-shared Build a shared library and link tools against it (default is NO) + --enable-timestamps Enable embedding timestamp information in build + (default is YES) --enable-targets Build specific host targets: all or target1,target2,... Valid targets are: host, x86, x86_64, sparc, powerpc, alpha, arm, mips, spu, @@ -4921,6 +4926,30 @@ echo "$as_me: error: Invalid setting for { (exit 1); exit 1; }; } ;; esac +# Check whether --enable-timestamps was given. +if test "${enable_timestamps+set}" = set; then + enableval=$enable_timestamps; +else + enableval=default +fi + +case "$enableval" in + yes) ENABLE_TIMESTAMPS=1 + ;; + no) ENABLE_TIMESTAMPS=0 + ;; + default) ENABLE_TIMESTAMPS=1 + ;; + *) { { echo "$as_me:$LINENO: error: Invalid setting for --enable-timestamps. Use \"yes\" or \"no\"" >&5 +echo "$as_me: error: Invalid setting for --enable-timestamps. Use \"yes\" or \"no\"" >&2;} + { (exit 1); exit 1; }; } ;; +esac + +cat >>confdefs.h <<_ACEOF +#define ENABLE_TIMESTAMPS $ENABLE_TIMESTAMPS +_ACEOF + + TARGETS_TO_BUILD="" # Check whether --enable-targets was given. if test "${enable_targets+set}" = set; then @@ -8016,6 +8045,46 @@ echo "${ECHO_T}no" >&6; } fi +# Extract the first word of "cat", so it can be a program name with args. +set dummy cat; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_CAT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $CAT in + [\\/]* | ?:[\\/]*) + ac_cv_path_CAT="$CAT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_CAT="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +CAT=$ac_cv_path_CAT +if test -n "$CAT"; then + { echo "$as_me:$LINENO: result: $CAT" >&5 +echo "${ECHO_T}$CAT" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + # Extract the first word of "doxygen", so it can be a program name with args. set dummy doxygen; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 @@ -8216,6 +8285,46 @@ echo "${ECHO_T}no" >&6; } fi +# Extract the first word of "pdfroff", so it can be a program name with args. +set dummy pdfroff; ac_word=$2 +{ echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } +if test "${ac_cv_path_PDFROFF+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $PDFROFF in + [\\/]* | ?:[\\/]*) + ac_cv_path_PDFROFF="$PDFROFF" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_PDFROFF="$as_dir/$ac_word$ac_exec_ext" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + + ;; +esac +fi +PDFROFF=$ac_cv_path_PDFROFF +if test -n "$PDFROFF"; then + { echo "$as_me:$LINENO: result: $PDFROFF" >&5 +echo "${ECHO_T}$PDFROFF" >&6; } +else + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } +fi + + # Extract the first word of "runtest", so it can be a program name with args. set dummy runtest; ac_word=$2 { echo "$as_me:$LINENO: checking for $ac_word" >&5 @@ -11275,7 +11384,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <conf$$subs.sed <<_ACEOF +ENABLE_BUILT_CLANG!$ENABLE_BUILT_CLANG$ac_delim OPTIMIZE_OPTION!$OPTIMIZE_OPTION$ac_delim EXTRA_OPTIONS!$EXTRA_OPTIONS$ac_delim BINUTILS_INCDIR!$BINUTILS_INCDIR$ac_delim @@ -21176,11 +21282,13 @@ INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_deli INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim INSTALL_DATA!$INSTALL_DATA$ac_delim BZIP2!$BZIP2$ac_delim +CAT!$CAT$ac_delim DOXYGEN!$DOXYGEN$ac_delim GROFF!$GROFF$ac_delim GZIP!$GZIP$ac_delim POD2HTML!$POD2HTML$ac_delim POD2MAN!$POD2MAN$ac_delim +PDFROFF!$PDFROFF$ac_delim RUNTEST!$RUNTEST$ac_delim TCLSH!$TCLSH$ac_delim ZIP!$ZIP$ac_delim @@ -21233,7 +21341,7 @@ LIBOBJS!$LIBOBJS$ac_delim LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 92; then + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 95; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 Modified: vendor/llvm/dist/docs/AliasAnalysis.html ============================================================================== --- vendor/llvm/dist/docs/AliasAnalysis.html Thu May 27 13:56:53 2010 (r208598) +++ vendor/llvm/dist/docs/AliasAnalysis.html Thu May 27 15:15:58 2010 (r208599) @@ -930,7 +930,7 @@ analysis directly.

Chris Lattner
LLVM Compiler Infrastructure
- Last modified: $Date: 2010-03-01 20:24:17 +0100 (Mon, 01 Mar 2010) $ + Last modified: $Date: 2010-05-07 02:28:04 +0200 (Fri, 07 May 2010) $ Modified: vendor/llvm/dist/docs/BitCodeFormat.html ============================================================================== --- vendor/llvm/dist/docs/BitCodeFormat.html Thu May 27 13:56:53 2010 (r208598) +++ vendor/llvm/dist/docs/BitCodeFormat.html Thu May 27 15:15:58 2010 (r208599) @@ -40,8 +40,9 @@
-

Written by Chris Lattner - and Joshua Haberman. +

Written by Chris Lattner, + Joshua Haberman, + and Peter S. Housel.

@@ -1037,8 +1038,17 @@ fields of FUNCTION records.

-

The PARAMATTR_BLOCK block (id 9) ... -

+

The PARAMATTR_BLOCK block (id 9) contains a table of +entries describing the attributes of function parameters. These +entries are referenced by 1-based index in the paramattr field +of module block FUNCTION +records, or within the attr field of function block INST_INVOKE and INST_CALL records.

+ +

Entries within PARAMATTR_BLOCK are constructed to ensure +that each is unique (i.e., no two indicies represent equivalent +attribute lists).

@@ -1051,8 +1061,41 @@ fields of FUNCTION records.

[ENTRY, paramidx0, attr0, paramidx1, attr1...]

-

The ENTRY record (code 1) ... +

The ENTRY record (code 1) contains an even number of +values describing a unique set of function parameter attributes. Each +paramidx value indicates which set of attributes is +represented, with 0 representing the return value attributes, +0xFFFFFFFF representing function attributes, and other values +representing 1-based function parameters. Each attr value is a +bitmap with the following interpretation:

+ +
    +
  • bit 0: zeroext
  • +
  • bit 1: signext
  • +
  • bit 2: noreturn
  • +
  • bit 3: inreg
  • +
  • bit 4: sret
  • +
  • bit 5: nounwind
  • +
  • bit 6: noalias
  • +
  • bit 7: byval
  • +
  • bit 8: nest
  • +
  • bit 9: readnone
  • +
  • bit 10: readonly
  • +
  • bit 11: noinline
  • +
  • bit 12: alwaysinline
  • +
  • bit 13: optsize
  • +
  • bit 14: ssp
  • +
  • bit 15: sspreq
  • +
  • bits 16–31: align n
  • +
  • bit 32: nocapture
  • +
  • bit 33: noredzone
  • +
  • bit 34: noimplicitfloat
  • +
  • bit 35: naked
  • +
  • bit 36: inlinehint
  • +
  • bits 37–39: alignstack n, represented as +the logarithm base 2 of the requested alignment, plus 1
  • +
@@ -1061,11 +1104,283 @@ fields of FUNCTION records.

-

The TYPE_BLOCK block (id 10) ... +

The TYPE_BLOCK block (id 10) contains records which +constitute a table of type operator entries used to represent types +referenced within an LLVM module. Each record (with the exception of +NUMENTRY) generates a +single type table entry, which may be referenced by 0-based index from +instructions, constants, metadata, type symbol table entries, or other +type operator records. +

+ +

Entries within TYPE_BLOCK are constructed to ensure that +each entry is unique (i.e., no two indicies represent structurally +equivalent types).

+ +
+ + + + +
+ +

[NUMENTRY, numentries]

+ +

The NUMENTRY record (code 1) contains a single value which +indicates the total number of type code entries in the type table of +the module. If present, NUMENTRY should be the first record +in the block.

+
+ + +
+ +

[VOID]

+ +

The VOID record (code 2) adds a void type to the +type table. +

+
+ + + + +
+ +

[FLOAT]

+ +

The FLOAT record (code 3) adds a float (32-bit +floating point) type to the type table. +

+
+ + + + +
+ +

[DOUBLE]

+ +

The DOUBLE record (code 4) adds a double (64-bit +floating point) type to the type table. +

+
+ + + + +
+ +

[LABEL]

+ +

The LABEL record (code 5) adds a label type to +the type table. +

+
+ + + + +
+ +

[OPAQUE]

+ +

The OPAQUE record (code 6) adds an opaque type to +the type table. Note that distinct opaque types are not +unified. +

+
+ + + + +
+ +

[INTEGER, width]

+ +

The INTEGER record (code 7) adds an integer type to the +type table. The single width field indicates the width of the +integer type. +

+
+ + + + +
+ +

[POINTER, pointee type, address space]

+ +

The POINTER record (code 8) adds a pointer type to the +type table. The operand fields are

+ +
    +
  • pointee type: The type index of the pointed-to type
  • + +
  • address space: If supplied, the target-specific numbered +address space where the pointed-to object resides. Otherwise, the +default address space is zero. +
  • +
+
+ + + + +
+ +

[FUNCTION, vararg, ignored, retty, ...paramty... ]

+ +

The FUNCTION record (code 9) adds a function type to the +type table. The operand fields are

+ +
    +
  • vararg: Non-zero if the type represents a varargs function
  • + +
  • ignored: This value field is present for backward +compatibility only, and is ignored
  • + +
  • retty: The type index of the function's return type
  • + +
  • paramty: Zero or more type indices representing the +parameter types of the function
  • +
+ +
+ + + + +
+ +

[STRUCT, ispacked, ...eltty...]

+ +

The STRUCT record (code 10) adds a struct type to the +type table. The operand fields are

+ +
    +
  • ispacked: Non-zero if the type represents a packed structure
  • + +
  • eltty: Zero or more type indices representing the element +types of the structure
  • +
+
+ + + + +
+ +

[ARRAY, numelts, eltty]

+ +

The ARRAY record (code 11) adds an array type to the type +table. The operand fields are

+ +
    +
  • numelts: The number of elements in arrays of this type
  • + +
  • eltty: The type index of the array element type
  • +
+
+ + + + +
+ +

[VECTOR, numelts, eltty]

+ +

The VECTOR record (code 12) adds a vector type to the type +table. The operand fields are

+ +
    +
  • numelts: The number of elements in vectors of this type
  • + +
  • eltty: The type index of the vector element type
  • +
+
+ + + + +
+ +

[X86_FP80]

+ +

The X86_FP80 record (code 13) adds an x86_fp80 (80-bit +floating point) type to the type table. +

+
+ + + + +
+ +

[FP128]

+ +

The FP128 record (code 14) adds an fp128 (128-bit +floating point) type to the type table. +

+
+ + + + +
+ +

[PPC_FP128]

+ +

The PPC_FP128 record (code 15) adds a ppc_fp128 +(128-bit floating point) type to the type table. +

+
+ + + + +
+ +

[METADATA]

+ +

The METADATA record (code 16) adds a metadata +type to the type table. +

+
+ + + + +
+ +

[UNION, ...eltty...]

+ +

The UNION record (code 17) adds a union type to +the type table. The eltty operand fields are zero or more type +indices representing the element types of the union. +

+ +
CONSTANTS_BLOCK Contents @@ -1107,11 +1422,28 @@ fields of FUNCTION records.

-

The TYPE_SYMTAB_BLOCK block (id 13) ... +

The TYPE_SYMTAB_BLOCK block (id 13) contains entries which +map between module-level named types and their corresponding type +indices.

+ + + +
+ +

[ENTRY, typeid, ...string...]

+ +

The ENTRY record (code 1) contains a variable number of +values, with the first giving the type index of the designated type, +and the remaining values giving the character codes of the type +name. Each entry corresponds to a single named type. +

+
+
VALUE_SYMTAB_BLOCK Contents @@ -1157,7 +1489,7 @@ fields of FUNCTION records.

src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"> Chris Lattner
The LLVM Compiler Infrastructure
-Last modified: $Date: 2010-01-20 18:53:51 +0100 (Wed, 20 Jan 2010) $ +Last modified: $Date: 2010-05-22 00:20:54 +0200 (Sat, 22 May 2010) $ Modified: vendor/llvm/dist/docs/Bugpoint.html ============================================================================== --- vendor/llvm/dist/docs/Bugpoint.html Thu May 27 13:56:53 2010 (r208598) +++ vendor/llvm/dist/docs/Bugpoint.html Thu May 27 15:15:58 2010 (r208599) @@ -243,7 +243,7 @@ non-obvious ways. Here are some hints a Chris Lattner
LLVM Compiler Infrastructure
- Last modified: $Date: 2009-10-12 20:12:47 +0200 (Mon, 12 Oct 2009) $ + Last modified: $Date: 2010-05-07 02:28:04 +0200 (Fri, 07 May 2010) $ Modified: vendor/llvm/dist/docs/CodeGenerator.html ============================================================================== --- vendor/llvm/dist/docs/CodeGenerator.html Thu May 27 13:56:53 2010 (r208598) +++ vendor/llvm/dist/docs/CodeGenerator.html Thu May 27 15:15:58 2010 (r208599) @@ -2162,7 +2162,7 @@ MOVSX32rm16 -> movsx, 32-bit register Chris Lattner
The LLVM Compiler Infrastructure
- Last modified: $Date: 2010-04-09 20:39:54 +0200 (Fri, 09 Apr 2010) $ + Last modified: $Date: 2010-05-07 02:28:04 +0200 (Fri, 07 May 2010) $ Modified: vendor/llvm/dist/docs/CodingStandards.html ============================================================================== --- vendor/llvm/dist/docs/CodingStandards.html Thu May 27 13:56:53 2010 (r208598) +++ vendor/llvm/dist/docs/CodingStandards.html Thu May 27 15:15:58 2010 (r208599) @@ -1346,7 +1346,7 @@ something.

Chris Lattner
LLVM Compiler Infrastructure
- Last modified: $Date: 2010-02-26 21:18:32 +0100 (Fri, 26 Feb 2010) $ + Last modified: $Date: 2010-05-07 02:28:04 +0200 (Fri, 07 May 2010) $ Modified: vendor/llvm/dist/docs/CommandGuide/index.html ============================================================================== --- vendor/llvm/dist/docs/CommandGuide/index.html Thu May 27 13:56:53 2010 (r208598) +++ vendor/llvm/dist/docs/CommandGuide/index.html Thu May 27 15:15:58 2010 (r208599) @@ -148,7 +148,7 @@ options) arguments to the tool you are i src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"> LLVM Compiler Infrastructure
- Last modified: $Date: 2010-02-18 15:08:13 +0100 (Thu, 18 Feb 2010) $ + Last modified: $Date: 2010-05-11 18:47:42 +0200 (Tue, 11 May 2010) $ Modified: vendor/llvm/dist/docs/CommandGuide/lit.pod ============================================================================== --- vendor/llvm/dist/docs/CommandGuide/lit.pod Thu May 27 13:56:53 2010 (r208598) +++ vendor/llvm/dist/docs/CommandGuide/lit.pod Thu May 27 15:15:58 2010 (r208599) @@ -253,8 +253,8 @@ files passed on the command line. You ca discovered test suites at startup. Once a test suite is discovered, its config file is loaded. Config files -themselves are just Python modules which will be executed. When the config file -is executed, two important global variables are predefined: +themselves are Python modules which will be executed. When the config file is +executed, two important global variables are predefined: =over Modified: vendor/llvm/dist/docs/CommandLine.html ============================================================================== --- vendor/llvm/dist/docs/CommandLine.html Thu May 27 13:56:53 2010 (r208598) +++ vendor/llvm/dist/docs/CommandLine.html Thu May 27 15:15:58 2010 (r208599) @@ -1972,7 +1972,7 @@ tutorial.

Chris Lattner
LLVM Compiler Infrastructure
- Last modified: $Date: 2010-02-26 21:18:32 +0100 (Fri, 26 Feb 2010) $ + Last modified: $Date: 2010-05-07 02:28:04 +0200 (Fri, 07 May 2010) $ Modified: vendor/llvm/dist/docs/CompilerDriver.html ============================================================================== --- vendor/llvm/dist/docs/CompilerDriver.html Thu May 27 13:56:53 2010 (r208598) +++ vendor/llvm/dist/docs/CompilerDriver.html Thu May 27 15:15:58 2010 (r208599) @@ -748,7 +748,7 @@ the Mikhail Glushenkov
LLVM Compiler Infrastructure
-Last modified: $Date: 2010-02-18 15:08:13 +0100 (Thu, 18 Feb 2010) $ +Last modified: $Date: 2010-05-07 02:28:04 +0200 (Fri, 07 May 2010) $
Modified: vendor/llvm/dist/docs/CompilerWriterInfo.html ============================================================================== --- vendor/llvm/dist/docs/CompilerWriterInfo.html Thu May 27 13:56:53 2010 (r208598) +++ vendor/llvm/dist/docs/CompilerWriterInfo.html Thu May 27 15:15:58 2010 (r208599) @@ -256,7 +256,7 @@ processors. Misha Brukman
LLVM Compiler Infrastructure
- Last modified: $Date: 2008-12-11 18:34:48 +0100 (Thu, 11 Dec 2008) $ + Last modified: $Date: 2010-05-07 02:28:04 +0200 (Fri, 07 May 2010) $ Modified: vendor/llvm/dist/docs/DeveloperPolicy.html ============================================================================== --- vendor/llvm/dist/docs/DeveloperPolicy.html Thu May 27 13:56:53 2010 (r208598) +++ vendor/llvm/dist/docs/DeveloperPolicy.html Thu May 27 15:15:58 2010 (r208599) @@ -601,7 +601,7 @@ Changes Written by the LLVM Oversight Group
The LLVM Compiler Infrastructure
- Last modified: $Date: 2010-02-26 21:18:32 +0100 (Fri, 26 Feb 2010) $ + Last modified: $Date: 2010-05-07 02:28:04 +0200 (Fri, 07 May 2010) $ Modified: vendor/llvm/dist/docs/ExceptionHandling.html ============================================================================== --- vendor/llvm/dist/docs/ExceptionHandling.html Thu May 27 13:56:53 2010 (r208598) +++ vendor/llvm/dist/docs/ExceptionHandling.html Thu May 27 15:15:58 2010 (r208599) @@ -492,6 +492,26 @@ + +
+ +
+  void %llvm.eh.sjlj.setjmp(i8*)
+
+ +

The llvm.eh.sjlj.longjmp + intrinsic is used to implement __builtin_longjmp() for SJLJ + style exception handling. The single parameter is a pointer to a + buffer populated by + llvm.eh.sjlj.setjmp. The frame pointer and stack pointer + are restored from the buffer, then control is transfered to the + destination address.

+ +
+ + @@ -599,7 +619,7 @@ Chris Lattner
LLVM Compiler Infrastructure
- Last modified: $Date: 2010-01-28 02:45:32 +0100 (Thu, 28 Jan 2010) $ + Last modified: $Date: 2010-05-26 18:21:41 +0200 (Wed, 26 May 2010) $ Modified: vendor/llvm/dist/docs/ExtendingLLVM.html ============================================================================== --- vendor/llvm/dist/docs/ExtendingLLVM.html Thu May 27 13:56:53 2010 (r208598) +++ vendor/llvm/dist/docs/ExtendingLLVM.html Thu May 27 15:15:58 2010 (r208599) @@ -384,7 +384,7 @@ void calcTypeName(const Type *Ty, The LLVM Compiler Infrastructure
- Last modified: $Date: 2008-12-11 19:23:24 +0100 (Thu, 11 Dec 2008) $ + Last modified: $Date: 2010-05-07 02:28:04 +0200 (Fri, 07 May 2010) $ Modified: vendor/llvm/dist/docs/FAQ.html ============================================================================== --- vendor/llvm/dist/docs/FAQ.html Thu May 27 13:56:53 2010 (r208598) +++ vendor/llvm/dist/docs/FAQ.html Thu May 27 15:15:58 2010 (r208599) @@ -931,7 +931,7 @@ F.i: src="http://www.w3.org/Icons/valid-html401-blue" alt="Valid HTML 4.01"> LLVM Compiler Infrastructure
- Last modified: $Date: 2010-05-04 20:16:00 +0200 (Tue, 04 May 2010) $ + Last modified: $Date: 2010-05-07 02:28:04 +0200 (Fri, 07 May 2010) $ Modified: vendor/llvm/dist/docs/GCCFEBuildInstrs.html ============================================================================== --- vendor/llvm/dist/docs/GCCFEBuildInstrs.html Thu May 27 13:56:53 2010 (r208598) +++ vendor/llvm/dist/docs/GCCFEBuildInstrs.html Thu May 27 15:15:58 2010 (r208599) @@ -272,7 +272,7 @@ More information is LLVM Compiler Infrastructure
- Last modified: $Date: 2009-07-05 14:01:44 +0200 (Sun, 05 Jul 2009) $ + Last modified: $Date: 2010-05-07 02:28:04 +0200 (Fri, 07 May 2010) $ Modified: vendor/llvm/dist/docs/GarbageCollection.html ============================================================================== --- vendor/llvm/dist/docs/GarbageCollection.html Thu May 27 13:56:53 2010 (r208598) +++ vendor/llvm/dist/docs/GarbageCollection.html Thu May 27 15:15:58 2010 (r208599) @@ -617,7 +617,7 @@ conforms to the binary interface defined using namespace llvm; namespace { - class VISIBILITY_HIDDEN MyGC : public GCStrategy { + class LLVM_LIBRARY_VISIBILITY MyGC : public GCStrategy { public: MyGC() {} }; @@ -1229,7 +1229,7 @@ generation in the JIT, nor using the obj using namespace llvm; namespace { - class VISIBILITY_HIDDEN MyGCPrinter : public GCMetadataPrinter { + class LLVM_LIBRARY_VISIBILITY MyGCPrinter : public GCMetadataPrinter { public: virtual void beginAssembly(std::ostream &OS, AsmPrinter &AP, const TargetAsmInfo &TAI); @@ -1380,7 +1380,7 @@ Fergus Henderson. International Symposiu Chris Lattner
LLVM Compiler Infrastructure
- Last modified: $Date: 2009-08-05 17:42:44 +0200 (Wed, 05 Aug 2009) $ + Last modified: $Date: 2010-05-11 22:16:09 +0200 (Tue, 11 May 2010) $ Modified: vendor/llvm/dist/docs/GetElementPtr.html ============================================================================== --- vendor/llvm/dist/docs/GetElementPtr.html Thu May 27 13:56:53 2010 (r208598) +++ vendor/llvm/dist/docs/GetElementPtr.html Thu May 27 15:15:58 2010 (r208599) @@ -728,7 +728,7 @@ idx3 = (char*) &MyVar + 8 Valid HTML 4.01 The LLVM Compiler Infrastructure
- Last modified: $Date: 2010-02-25 19:16:03 +0100 (Thu, 25 Feb 2010) $ + Last modified: $Date: 2010-05-07 02:28:04 +0200 (Fri, 07 May 2010) $ Modified: vendor/llvm/dist/docs/GettingStarted.html ============================================================================== --- vendor/llvm/dist/docs/GettingStarted.html Thu May 27 13:56:53 2010 (r208598) +++ vendor/llvm/dist/docs/GettingStarted.html Thu May 27 15:15:58 2010 (r208599) @@ -452,8 +452,8 @@ href="GCCFEBuildInstrs.html">try to comp
  • Only needed if you want to run the automated test suite in the llvm/test directory.
  • If you want to make changes to the configure scripts, - you will need GNU autoconf (2.59), and consequently, GNU M4 (version 1.4 - or higher). You will also need automake (1.9.2). We only use aclocal + you will need GNU autoconf (2.60), and consequently, GNU M4 (version 1.4 + or higher). You will also need automake (1.9.6). We only use aclocal from that package.
  • @@ -1673,7 +1673,7 @@ out:

    Chris Lattner
    *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Thu May 27 15:17:07 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 77BDF106564A; Thu, 27 May 2010 15:17:07 +0000 (UTC) (envelope-from rdivacky@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6324C8FC1D; Thu, 27 May 2010 15:17: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 o4RFH7aL008583; Thu, 27 May 2010 15:17:07 GMT (envelope-from rdivacky@svn.freebsd.org) Received: (from rdivacky@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4RFH766008569; Thu, 27 May 2010 15:17:07 GMT (envelope-from rdivacky@svn.freebsd.org) Message-Id: <201005271517.o4RFH766008569@svn.freebsd.org> From: Roman Divacky Date: Thu, 27 May 2010 15:17:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208600 - in vendor/clang/dist: clang.xcodeproj docs docs/tools include/clang include/clang-c include/clang/AST include/clang/Analysis include/clang/Basic include/clang/Checker/PathSens... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 15:17:07 -0000 Author: rdivacky Date: Thu May 27 15:17:06 2010 New Revision: 208600 URL: http://svn.freebsd.org/changeset/base/208600 Log: Update clang to r104832. Added: vendor/clang/dist/include/clang/AST/CMakeLists.txt vendor/clang/dist/include/clang/AST/Makefile vendor/clang/dist/include/clang/AST/RecursiveASTVisitor.h vendor/clang/dist/include/clang/AST/StmtNodes.td vendor/clang/dist/include/clang/Basic/DiagnosticCategories.td vendor/clang/dist/include/clang/Driver/CC1AsOptions.h vendor/clang/dist/include/clang/Driver/CC1AsOptions.td vendor/clang/dist/lib/Checker/CastSizeChecker.cpp vendor/clang/dist/lib/CodeGen/CGCXXABI.h vendor/clang/dist/lib/CodeGen/ItaniumCXXABI.cpp vendor/clang/dist/lib/Driver/CC1AsOptions.cpp vendor/clang/dist/lib/Frontend/BoostConAction.cpp vendor/clang/dist/test/CXX/expr/expr.post/expr.ref/p3.cpp vendor/clang/dist/test/CXX/temp/temp.decls/temp.friend/p4.cpp vendor/clang/dist/test/CXX/temp/temp.names/p2.cpp vendor/clang/dist/test/CodeGen/microsoft-call-conv.c vendor/clang/dist/test/CodeGenCXX/PR5863-unreachable-block.cpp vendor/clang/dist/test/CodeGenCXX/c99-variable-length-array.cpp vendor/clang/dist/test/CodeGenCXX/implicit-copy-constructor.cpp vendor/clang/dist/test/CodeGenCXX/nrvo.cpp vendor/clang/dist/test/CodeGenCXX/static-init-3.cpp vendor/clang/dist/test/CodeGenCXX/threadsafe-statics-exceptions.cpp vendor/clang/dist/test/CodeGenObjC/blocks-ivar-debug.m vendor/clang/dist/test/CodeGenObjC/default-property-synthesis.m vendor/clang/dist/test/CodeGenObjC/objc-gc-aggr-assign.m vendor/clang/dist/test/CodeGenObjCXX/encode.mm vendor/clang/dist/test/CodeGenObjCXX/mangle-blocks.mm vendor/clang/dist/test/CodeGenObjCXX/property-objects.mm vendor/clang/dist/test/Index/annotate-tokens-include.c vendor/clang/dist/test/Index/annotate-tokens-include.h vendor/clang/dist/test/Index/complete-recovery.m vendor/clang/dist/test/Index/print-typekind.c vendor/clang/dist/test/Index/properties-class-extensions.m vendor/clang/dist/test/Index/usrs.cpp vendor/clang/dist/test/Misc/diag-aka-types.cpp vendor/clang/dist/test/Parser/cxx-undeclared-identifier.cpp vendor/clang/dist/test/Parser/namespaces.cpp vendor/clang/dist/test/Parser/pragma-options.c vendor/clang/dist/test/Parser/switch-recovery.cpp vendor/clang/dist/test/Rewriter/rewrite-block-argument.m vendor/clang/dist/test/Rewriter/rewrite-local-static-id.mm vendor/clang/dist/test/Rewriter/rewrite-no-nextline.mm vendor/clang/dist/test/Sema/pragma-align-mac68k-unsupported.c vendor/clang/dist/test/Sema/pragma-align-mac68k.c vendor/clang/dist/test/Sema/pragma-pack-and-options-align.c vendor/clang/dist/test/SemaCXX/c99-variable-length-array.cpp vendor/clang/dist/test/SemaCXX/flexible-array-test.cpp vendor/clang/dist/test/SemaCXX/invalid-instantiated-field-decl.cpp vendor/clang/dist/test/SemaCXX/return-noreturn.cpp vendor/clang/dist/test/SemaCXX/scope-check.cpp vendor/clang/dist/test/SemaCXX/vector.cpp vendor/clang/dist/test/SemaObjCXX/const-cast.mm vendor/clang/dist/test/SemaObjCXX/conversion-to-objc-pointer-2.mm vendor/clang/dist/test/SemaObjCXX/conversion-to-objc-pointer.mm vendor/clang/dist/test/SemaObjCXX/deduction.mm vendor/clang/dist/test/SemaObjCXX/ivar-construct.mm vendor/clang/dist/test/SemaObjCXX/ivar-struct.mm vendor/clang/dist/test/SemaObjCXX/objc2-merge-gc-attribue-decl.mm vendor/clang/dist/test/SemaObjCXX/static-cast.mm vendor/clang/dist/test/SemaTemplate/attributes.cpp vendor/clang/dist/test/SemaTemplate/dependent-template-recover.cpp vendor/clang/dist/test/SemaTemplate/instantiate-non-dependent-types.cpp vendor/clang/dist/test/SemaTemplate/instantiate-overload-candidates.cpp vendor/clang/dist/test/SemaTemplate/overload-candidates.cpp vendor/clang/dist/test/SemaTemplate/unused-variables.cpp vendor/clang/dist/tools/driver/cc1as_main.cpp vendor/clang/dist/tools/libclang/CXTypes.cpp vendor/clang/dist/www/clang-tutorial.html Deleted: vendor/clang/dist/lib/AST/RecordLayoutBuilder.h vendor/clang/dist/test/CodeGenCXX/PR6747.cpp Modified: vendor/clang/dist/clang.xcodeproj/project.pbxproj vendor/clang/dist/docs/InternalsManual.html vendor/clang/dist/docs/UsersManual.html vendor/clang/dist/docs/tools/clang.pod vendor/clang/dist/include/clang-c/Index.h vendor/clang/dist/include/clang/AST/ASTConsumer.h vendor/clang/dist/include/clang/AST/ASTContext.h vendor/clang/dist/include/clang/AST/Attr.h vendor/clang/dist/include/clang/AST/CXXInheritance.h vendor/clang/dist/include/clang/AST/CanonicalType.h vendor/clang/dist/include/clang/AST/Decl.h vendor/clang/dist/include/clang/AST/DeclBase.h vendor/clang/dist/include/clang/AST/DeclCXX.h vendor/clang/dist/include/clang/AST/DeclContextInternals.h vendor/clang/dist/include/clang/AST/DeclObjC.h vendor/clang/dist/include/clang/AST/DeclTemplate.h vendor/clang/dist/include/clang/AST/DeclarationName.h vendor/clang/dist/include/clang/AST/Expr.h vendor/clang/dist/include/clang/AST/ExprCXX.h vendor/clang/dist/include/clang/AST/RecordLayout.h vendor/clang/dist/include/clang/AST/Stmt.h vendor/clang/dist/include/clang/AST/StmtVisitor.h vendor/clang/dist/include/clang/AST/TemplateBase.h vendor/clang/dist/include/clang/AST/TemplateName.h vendor/clang/dist/include/clang/AST/Type.h vendor/clang/dist/include/clang/AST/TypeLoc.h vendor/clang/dist/include/clang/AST/TypeLocBuilder.h vendor/clang/dist/include/clang/AST/TypeNodes.def vendor/clang/dist/include/clang/AST/TypeVisitor.h vendor/clang/dist/include/clang/AST/UnresolvedSet.h vendor/clang/dist/include/clang/Analysis/ProgramPoint.h vendor/clang/dist/include/clang/Basic/Diagnostic.h vendor/clang/dist/include/clang/Basic/Diagnostic.td vendor/clang/dist/include/clang/Basic/DiagnosticASTKinds.td vendor/clang/dist/include/clang/Basic/DiagnosticDriverKinds.td vendor/clang/dist/include/clang/Basic/DiagnosticFrontendKinds.td vendor/clang/dist/include/clang/Basic/DiagnosticGroups.td vendor/clang/dist/include/clang/Basic/DiagnosticLexKinds.td vendor/clang/dist/include/clang/Basic/DiagnosticParseKinds.td vendor/clang/dist/include/clang/Basic/DiagnosticSemaKinds.td vendor/clang/dist/include/clang/Basic/SourceManager.h vendor/clang/dist/include/clang/Basic/TargetInfo.h vendor/clang/dist/include/clang/Basic/TokenKinds.def vendor/clang/dist/include/clang/CMakeLists.txt vendor/clang/dist/include/clang/Checker/PathSensitive/AnalysisManager.h vendor/clang/dist/include/clang/Checker/PathSensitive/GRExprEngine.h vendor/clang/dist/include/clang/Checker/PathSensitive/Store.h vendor/clang/dist/include/clang/CodeGen/CodeGenOptions.h vendor/clang/dist/include/clang/Driver/ArgList.h vendor/clang/dist/include/clang/Driver/CC1Options.td vendor/clang/dist/include/clang/Driver/CMakeLists.txt vendor/clang/dist/include/clang/Driver/Makefile vendor/clang/dist/include/clang/Driver/Options.td vendor/clang/dist/include/clang/Driver/Tool.h vendor/clang/dist/include/clang/Frontend/AnalysisConsumer.h vendor/clang/dist/include/clang/Frontend/CodeGenAction.h vendor/clang/dist/include/clang/Frontend/CompilerInstance.h vendor/clang/dist/include/clang/Frontend/DeclXML.def vendor/clang/dist/include/clang/Frontend/DiagnosticOptions.h vendor/clang/dist/include/clang/Frontend/DocumentXML.h vendor/clang/dist/include/clang/Frontend/FrontendActions.h vendor/clang/dist/include/clang/Frontend/FrontendOptions.h vendor/clang/dist/include/clang/Frontend/PCHBitCodes.h vendor/clang/dist/include/clang/Frontend/PCHReader.h vendor/clang/dist/include/clang/Frontend/PCHWriter.h vendor/clang/dist/include/clang/Frontend/TypeXML.def vendor/clang/dist/include/clang/Lex/LiteralSupport.h vendor/clang/dist/include/clang/Lex/Preprocessor.h vendor/clang/dist/include/clang/Makefile vendor/clang/dist/include/clang/Parse/Action.h vendor/clang/dist/include/clang/Parse/AttributeList.h vendor/clang/dist/include/clang/Parse/Ownership.h vendor/clang/dist/include/clang/Parse/Parser.h vendor/clang/dist/include/clang/Parse/Scope.h vendor/clang/dist/include/clang/Sema/CodeCompleteConsumer.h vendor/clang/dist/lib/AST/ASTContext.cpp vendor/clang/dist/lib/AST/ASTDiagnostic.cpp vendor/clang/dist/lib/AST/ASTImporter.cpp vendor/clang/dist/lib/AST/AttrImpl.cpp vendor/clang/dist/lib/AST/CMakeLists.txt vendor/clang/dist/lib/AST/CXXInheritance.cpp vendor/clang/dist/lib/AST/Decl.cpp vendor/clang/dist/lib/AST/DeclBase.cpp vendor/clang/dist/lib/AST/DeclCXX.cpp vendor/clang/dist/lib/AST/DeclTemplate.cpp vendor/clang/dist/lib/AST/DeclarationName.cpp vendor/clang/dist/lib/AST/Expr.cpp vendor/clang/dist/lib/AST/ExprCXX.cpp vendor/clang/dist/lib/AST/ExprConstant.cpp vendor/clang/dist/lib/AST/NestedNameSpecifier.cpp vendor/clang/dist/lib/AST/RecordLayout.cpp vendor/clang/dist/lib/AST/RecordLayoutBuilder.cpp vendor/clang/dist/lib/AST/Stmt.cpp vendor/clang/dist/lib/AST/StmtDumper.cpp vendor/clang/dist/lib/AST/StmtPrinter.cpp vendor/clang/dist/lib/AST/StmtProfile.cpp vendor/clang/dist/lib/AST/TemplateBase.cpp vendor/clang/dist/lib/AST/Type.cpp vendor/clang/dist/lib/AST/TypeLoc.cpp vendor/clang/dist/lib/AST/TypePrinter.cpp vendor/clang/dist/lib/Analysis/CFG.cpp vendor/clang/dist/lib/Analysis/CMakeLists.txt vendor/clang/dist/lib/Basic/Diagnostic.cpp vendor/clang/dist/lib/Basic/IdentifierTable.cpp vendor/clang/dist/lib/Basic/SourceManager.cpp vendor/clang/dist/lib/Basic/TargetInfo.cpp vendor/clang/dist/lib/Basic/Targets.cpp vendor/clang/dist/lib/Basic/Version.cpp vendor/clang/dist/lib/Checker/BasicObjCFoundationChecks.cpp vendor/clang/dist/lib/Checker/BasicStore.cpp vendor/clang/dist/lib/Checker/CFRefCount.cpp vendor/clang/dist/lib/Checker/CMakeLists.txt vendor/clang/dist/lib/Checker/CheckObjCDealloc.cpp vendor/clang/dist/lib/Checker/FlatStore.cpp vendor/clang/dist/lib/Checker/GRCXXExprEngine.cpp vendor/clang/dist/lib/Checker/GRExprEngine.cpp vendor/clang/dist/lib/Checker/GRExprEngineExperimentalChecks.cpp vendor/clang/dist/lib/Checker/GRExprEngineInternalChecks.h vendor/clang/dist/lib/Checker/GRState.cpp vendor/clang/dist/lib/Checker/LLVMConventionsChecker.cpp vendor/clang/dist/lib/Checker/MallocChecker.cpp vendor/clang/dist/lib/Checker/MemRegion.cpp vendor/clang/dist/lib/Checker/ObjCUnusedIVarsChecker.cpp vendor/clang/dist/lib/Checker/RegionStore.cpp vendor/clang/dist/lib/CodeGen/CGBlocks.cpp vendor/clang/dist/lib/CodeGen/CGBlocks.h vendor/clang/dist/lib/CodeGen/CGBuiltin.cpp vendor/clang/dist/lib/CodeGen/CGCXX.cpp vendor/clang/dist/lib/CodeGen/CGCall.cpp vendor/clang/dist/lib/CodeGen/CGClass.cpp vendor/clang/dist/lib/CodeGen/CGDebugInfo.cpp vendor/clang/dist/lib/CodeGen/CGDebugInfo.h vendor/clang/dist/lib/CodeGen/CGDecl.cpp vendor/clang/dist/lib/CodeGen/CGDeclCXX.cpp vendor/clang/dist/lib/CodeGen/CGException.cpp vendor/clang/dist/lib/CodeGen/CGExpr.cpp vendor/clang/dist/lib/CodeGen/CGExprAgg.cpp vendor/clang/dist/lib/CodeGen/CGExprCXX.cpp vendor/clang/dist/lib/CodeGen/CGExprConstant.cpp vendor/clang/dist/lib/CodeGen/CGExprScalar.cpp vendor/clang/dist/lib/CodeGen/CGObjC.cpp vendor/clang/dist/lib/CodeGen/CGObjCGNU.cpp vendor/clang/dist/lib/CodeGen/CGObjCMac.cpp vendor/clang/dist/lib/CodeGen/CGObjCRuntime.h vendor/clang/dist/lib/CodeGen/CGRecordLayout.h vendor/clang/dist/lib/CodeGen/CGRecordLayoutBuilder.cpp vendor/clang/dist/lib/CodeGen/CGStmt.cpp vendor/clang/dist/lib/CodeGen/CGVTT.cpp vendor/clang/dist/lib/CodeGen/CGVTables.cpp vendor/clang/dist/lib/CodeGen/CGVTables.h vendor/clang/dist/lib/CodeGen/CMakeLists.txt vendor/clang/dist/lib/CodeGen/CodeGenFunction.cpp vendor/clang/dist/lib/CodeGen/CodeGenFunction.h vendor/clang/dist/lib/CodeGen/CodeGenModule.cpp vendor/clang/dist/lib/CodeGen/CodeGenModule.h vendor/clang/dist/lib/CodeGen/CodeGenTypes.cpp vendor/clang/dist/lib/CodeGen/CodeGenTypes.h vendor/clang/dist/lib/CodeGen/Mangle.cpp vendor/clang/dist/lib/CodeGen/Mangle.h vendor/clang/dist/lib/CodeGen/ModuleBuilder.cpp vendor/clang/dist/lib/CodeGen/TargetInfo.cpp vendor/clang/dist/lib/Driver/ArgList.cpp vendor/clang/dist/lib/Driver/CC1Options.cpp vendor/clang/dist/lib/Driver/CMakeLists.txt vendor/clang/dist/lib/Driver/Driver.cpp vendor/clang/dist/lib/Driver/Tool.cpp vendor/clang/dist/lib/Driver/ToolChains.cpp vendor/clang/dist/lib/Driver/ToolChains.h vendor/clang/dist/lib/Driver/Tools.cpp vendor/clang/dist/lib/Driver/Tools.h vendor/clang/dist/lib/Frontend/AnalysisConsumer.cpp vendor/clang/dist/lib/Frontend/CMakeLists.txt vendor/clang/dist/lib/Frontend/CodeGenAction.cpp vendor/clang/dist/lib/Frontend/CompilerInstance.cpp vendor/clang/dist/lib/Frontend/CompilerInvocation.cpp vendor/clang/dist/lib/Frontend/DeclXML.cpp vendor/clang/dist/lib/Frontend/DocumentXML.cpp vendor/clang/dist/lib/Frontend/InitHeaderSearch.cpp vendor/clang/dist/lib/Frontend/InitPreprocessor.cpp vendor/clang/dist/lib/Frontend/PCHReader.cpp vendor/clang/dist/lib/Frontend/PCHReaderDecl.cpp vendor/clang/dist/lib/Frontend/PCHReaderStmt.cpp vendor/clang/dist/lib/Frontend/PCHWriter.cpp vendor/clang/dist/lib/Frontend/PCHWriterDecl.cpp vendor/clang/dist/lib/Frontend/PCHWriterStmt.cpp vendor/clang/dist/lib/Frontend/PrintParserCallbacks.cpp vendor/clang/dist/lib/Frontend/RewriteObjC.cpp vendor/clang/dist/lib/Frontend/TextDiagnosticPrinter.cpp vendor/clang/dist/lib/Headers/emmintrin.h vendor/clang/dist/lib/Headers/xmmintrin.h vendor/clang/dist/lib/Index/ASTLocation.cpp vendor/clang/dist/lib/Index/Analyzer.cpp vendor/clang/dist/lib/Index/ResolveLocation.cpp vendor/clang/dist/lib/Lex/Lexer.cpp vendor/clang/dist/lib/Lex/LiteralSupport.cpp vendor/clang/dist/lib/Parse/AttributeList.cpp vendor/clang/dist/lib/Parse/MinimalAction.cpp vendor/clang/dist/lib/Parse/ParseDecl.cpp vendor/clang/dist/lib/Parse/ParseDeclCXX.cpp vendor/clang/dist/lib/Parse/ParseExpr.cpp vendor/clang/dist/lib/Parse/ParseExprCXX.cpp vendor/clang/dist/lib/Parse/ParseObjc.cpp vendor/clang/dist/lib/Parse/ParsePragma.cpp vendor/clang/dist/lib/Parse/ParsePragma.h vendor/clang/dist/lib/Parse/ParseStmt.cpp vendor/clang/dist/lib/Parse/ParseTemplate.cpp vendor/clang/dist/lib/Parse/ParseTentative.cpp vendor/clang/dist/lib/Parse/Parser.cpp vendor/clang/dist/lib/Sema/AnalysisBasedWarnings.cpp vendor/clang/dist/lib/Sema/CMakeLists.txt vendor/clang/dist/lib/Sema/CodeCompleteConsumer.cpp vendor/clang/dist/lib/Sema/JumpDiagnostics.cpp vendor/clang/dist/lib/Sema/Sema.cpp vendor/clang/dist/lib/Sema/Sema.h vendor/clang/dist/lib/Sema/SemaAttr.cpp vendor/clang/dist/lib/Sema/SemaCXXCast.cpp vendor/clang/dist/lib/Sema/SemaChecking.cpp vendor/clang/dist/lib/Sema/SemaCodeComplete.cpp vendor/clang/dist/lib/Sema/SemaDecl.cpp vendor/clang/dist/lib/Sema/SemaDeclAttr.cpp vendor/clang/dist/lib/Sema/SemaDeclCXX.cpp vendor/clang/dist/lib/Sema/SemaDeclObjC.cpp vendor/clang/dist/lib/Sema/SemaExceptionSpec.cpp vendor/clang/dist/lib/Sema/SemaExpr.cpp vendor/clang/dist/lib/Sema/SemaExprCXX.cpp vendor/clang/dist/lib/Sema/SemaExprObjC.cpp vendor/clang/dist/lib/Sema/SemaInit.cpp vendor/clang/dist/lib/Sema/SemaInit.h vendor/clang/dist/lib/Sema/SemaLookup.cpp vendor/clang/dist/lib/Sema/SemaObjCProperty.cpp vendor/clang/dist/lib/Sema/SemaOverload.cpp vendor/clang/dist/lib/Sema/SemaOverload.h vendor/clang/dist/lib/Sema/SemaStmt.cpp vendor/clang/dist/lib/Sema/SemaTemplate.cpp vendor/clang/dist/lib/Sema/SemaTemplateDeduction.cpp vendor/clang/dist/lib/Sema/SemaTemplateInstantiate.cpp vendor/clang/dist/lib/Sema/SemaTemplateInstantiateDecl.cpp vendor/clang/dist/lib/Sema/SemaType.cpp vendor/clang/dist/lib/Sema/TreeTransform.h vendor/clang/dist/test/Analysis/dead-stores.c vendor/clang/dist/test/Analysis/inline.c vendor/clang/dist/test/Analysis/inline2.c vendor/clang/dist/test/Analysis/inline3.c vendor/clang/dist/test/Analysis/inline4.c vendor/clang/dist/test/Analysis/malloc.c vendor/clang/dist/test/Analysis/method-call.cpp vendor/clang/dist/test/Analysis/misc-ps-region-store.m vendor/clang/dist/test/Analysis/misc-ps.m vendor/clang/dist/test/Analysis/retain-release.m vendor/clang/dist/test/CXX/class.access/class.friend/p1.cpp vendor/clang/dist/test/CXX/class.access/p4.cpp vendor/clang/dist/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p8.cpp vendor/clang/dist/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/basic.cpp vendor/clang/dist/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.call/p6.cpp vendor/clang/dist/test/CXX/temp/temp.fct.spec/temp.deduct/temp.deduct.type/p17.cpp vendor/clang/dist/test/CXX/temp/temp.spec/temp.explicit/p2.cpp vendor/clang/dist/test/CXX/temp/temp.spec/temp.explicit/p5.cpp vendor/clang/dist/test/CodeCompletion/call.c vendor/clang/dist/test/CodeCompletion/call.cpp vendor/clang/dist/test/CodeCompletion/ordinary-name.cpp vendor/clang/dist/test/CodeCompletion/truncation.c vendor/clang/dist/test/CodeGen/blocks.c vendor/clang/dist/test/CodeGen/builtins.c vendor/clang/dist/test/CodeGen/complex.c vendor/clang/dist/test/CodeGen/stdcall-fastcall.c vendor/clang/dist/test/CodeGenCXX/anonymous-namespaces.cpp vendor/clang/dist/test/CodeGenCXX/anonymous-union-member-initializer.cpp vendor/clang/dist/test/CodeGenCXX/array-value-initialize.cpp vendor/clang/dist/test/CodeGenCXX/class-layout.cpp vendor/clang/dist/test/CodeGenCXX/condition.cpp vendor/clang/dist/test/CodeGenCXX/cxx-apple-kext.cpp vendor/clang/dist/test/CodeGenCXX/destructors.cpp vendor/clang/dist/test/CodeGenCXX/dynamic-cast.cpp vendor/clang/dist/test/CodeGenCXX/dyncast.cpp vendor/clang/dist/test/CodeGenCXX/key-function-vtable.cpp vendor/clang/dist/test/CodeGenCXX/mangle-subst-std.cpp vendor/clang/dist/test/CodeGenCXX/pointers-to-data-members.cpp vendor/clang/dist/test/CodeGenCXX/references.cpp vendor/clang/dist/test/CodeGenCXX/rtti-linkage.cpp vendor/clang/dist/test/CodeGenCXX/static-init.cpp vendor/clang/dist/test/CodeGenCXX/static-local-in-local-class.cpp vendor/clang/dist/test/CodeGenCXX/template-linkage.cpp vendor/clang/dist/test/CodeGenCXX/thunks.cpp vendor/clang/dist/test/CodeGenCXX/virtual-base-destructor-call.cpp vendor/clang/dist/test/CodeGenCXX/virtual-functions-incomplete-types.cpp vendor/clang/dist/test/CodeGenCXX/vtable-layout.cpp vendor/clang/dist/test/CodeGenCXX/vtable-linkage.cpp vendor/clang/dist/test/CodeGenCXX/x86_32-arguments.cpp vendor/clang/dist/test/CodeGenCXX/x86_64-arguments.cpp vendor/clang/dist/test/CodeGenObjC/atomic-aggregate-property.m vendor/clang/dist/test/CodeGenObjC/blocks-1.m vendor/clang/dist/test/CodeGenObjC/blocks-2.m vendor/clang/dist/test/CodeGenObjC/blocks.m vendor/clang/dist/test/CodeGenObjC/ivar-layout-64-bitfields.m vendor/clang/dist/test/CodeGenObjC/ivar-layout-64.m vendor/clang/dist/test/CodeGenObjC/ivar-layout-no-optimize.m vendor/clang/dist/test/CodeGenObjC/objc2-new-gc-api-strongcast.m vendor/clang/dist/test/CodeGenObjC/objc2-no-write-barrier.m vendor/clang/dist/test/CodeGenObjC/objc2-retain-codegen.m vendor/clang/dist/test/CodeGenObjC/objc2-strong-cast-1.m vendor/clang/dist/test/CodeGenObjC/objc2-strong-cast.m vendor/clang/dist/test/CodeGenObjC/objc2-weak-assign.m vendor/clang/dist/test/CodeGenObjC/objc2-weak-compare.m vendor/clang/dist/test/CodeGenObjC/objc2-weak-ivar-debug.m vendor/clang/dist/test/CodeGenObjC/objc2-weak-ivar.m vendor/clang/dist/test/CodeGenObjC/objc2-write-barrier-2.m vendor/clang/dist/test/CodeGenObjC/objc2-write-barrier-3.m vendor/clang/dist/test/CodeGenObjC/objc2-write-barrier-4.m vendor/clang/dist/test/CodeGenObjC/objc2-write-barrier-5.m vendor/clang/dist/test/CodeGenObjC/objc2-write-barrier.m vendor/clang/dist/test/CodeGenObjC/property-complex.m vendor/clang/dist/test/CodeGenObjC/protocols.m vendor/clang/dist/test/Coverage/ast-printing.cpp vendor/clang/dist/test/Driver/bindings.c vendor/clang/dist/test/Driver/clang_f_opts.c vendor/clang/dist/test/FixIt/typo.m vendor/clang/dist/test/Index/annotate-tokens.c vendor/clang/dist/test/Index/annotate-tokens.m vendor/clang/dist/test/Index/c-index-api-loadTU-test.m vendor/clang/dist/test/Index/complete-at-directives.m vendor/clang/dist/test/Index/complete-at-exprstmt.m vendor/clang/dist/test/Index/complete-exprs.c vendor/clang/dist/test/Index/complete-member-access.m vendor/clang/dist/test/Index/load-stmts.cpp vendor/clang/dist/test/Index/remap-load.c vendor/clang/dist/test/Index/usrs.m vendor/clang/dist/test/Lexer/gnu_keywords.c vendor/clang/dist/test/Lexer/hexfloat.cpp vendor/clang/dist/test/Makefile vendor/clang/dist/test/PCH/Inputs/namespaces.h vendor/clang/dist/test/PCH/cxx_exprs.cpp vendor/clang/dist/test/PCH/cxx_exprs.h vendor/clang/dist/test/PCH/namespaces.cpp vendor/clang/dist/test/Parser/recovery.c vendor/clang/dist/test/Sema/attr-sentinel.c vendor/clang/dist/test/Sema/c89.c vendor/clang/dist/test/Sema/compare.c vendor/clang/dist/test/Sema/conditional-expr.c vendor/clang/dist/test/Sema/conversion.c vendor/clang/dist/test/Sema/format-strings.c vendor/clang/dist/test/Sema/init.c vendor/clang/dist/test/Sema/scope-check.c vendor/clang/dist/test/Sema/switch.c vendor/clang/dist/test/Sema/unused-expr.c vendor/clang/dist/test/SemaCXX/alignof-sizeof-reference.cpp vendor/clang/dist/test/SemaCXX/anonymous-union.cpp vendor/clang/dist/test/SemaCXX/attr-deprecated.cpp vendor/clang/dist/test/SemaCXX/blocks.cpp vendor/clang/dist/test/SemaCXX/c99.cpp vendor/clang/dist/test/SemaCXX/class.cpp vendor/clang/dist/test/SemaCXX/compare.cpp vendor/clang/dist/test/SemaCXX/conditional-expr.cpp vendor/clang/dist/test/SemaCXX/constant-expression.cpp vendor/clang/dist/test/SemaCXX/default-assignment-operator.cpp vendor/clang/dist/test/SemaCXX/empty-class-layout.cpp vendor/clang/dist/test/SemaCXX/enum.cpp vendor/clang/dist/test/SemaCXX/i-c-e-cxx.cpp vendor/clang/dist/test/SemaCXX/implicit-virtual-member-functions.cpp vendor/clang/dist/test/SemaCXX/member-pointer.cpp vendor/clang/dist/test/SemaCXX/namespace-alias.cpp vendor/clang/dist/test/SemaCXX/nested-name-spec.cpp vendor/clang/dist/test/SemaCXX/new-delete.cpp vendor/clang/dist/test/SemaCXX/offsetof.cpp vendor/clang/dist/test/SemaCXX/overload-call.cpp vendor/clang/dist/test/SemaCXX/references.cpp vendor/clang/dist/test/SemaCXX/switch.cpp vendor/clang/dist/test/SemaCXX/vararg-non-pod.cpp vendor/clang/dist/test/SemaCXX/virtual-member-functions-key-function.cpp vendor/clang/dist/test/SemaCXX/warn-missing-noreturn.cpp vendor/clang/dist/test/SemaCXX/warn-reorder-ctor-initialization.cpp vendor/clang/dist/test/SemaCXX/warn-weak-vtables.cpp vendor/clang/dist/test/SemaObjC/block-attr.m vendor/clang/dist/test/SemaObjC/error-property-gc-attr.m vendor/clang/dist/test/SemaObjC/method-conflict.m vendor/clang/dist/test/SemaObjC/objc2-warn-weak-decl.m vendor/clang/dist/test/SemaObjC/warn-assign-property-nscopying.m vendor/clang/dist/test/SemaObjC/warn-weak-field.m vendor/clang/dist/test/SemaObjCXX/vla.mm vendor/clang/dist/test/SemaObjCXX/void_to_obj.mm vendor/clang/dist/test/SemaTemplate/current-instantiation.cpp vendor/clang/dist/test/SemaTemplate/dependent-base-classes.cpp vendor/clang/dist/test/SemaTemplate/dependent-expr.cpp vendor/clang/dist/test/SemaTemplate/dependent-type-identity.cpp vendor/clang/dist/test/SemaTemplate/enum-argument.cpp vendor/clang/dist/test/SemaTemplate/instantiate-anonymous-union.cpp vendor/clang/dist/test/SemaTemplate/instantiate-attr.cpp vendor/clang/dist/test/SemaTemplate/instantiate-complete.cpp vendor/clang/dist/test/SemaTemplate/instantiate-declref-ice.cpp vendor/clang/dist/test/SemaTemplate/instantiate-expr-2.cpp vendor/clang/dist/test/SemaTemplate/instantiate-expr-3.cpp vendor/clang/dist/test/SemaTemplate/instantiate-field.cpp vendor/clang/dist/test/SemaTemplate/instantiate-function-2.cpp vendor/clang/dist/test/SemaTemplate/instantiate-member-pointers.cpp vendor/clang/dist/test/SemaTemplate/nested-name-spec-template.cpp vendor/clang/dist/test/SemaTemplate/partial-spec-instantiate.cpp vendor/clang/dist/test/SemaTemplate/temp_explicit.cpp vendor/clang/dist/test/SemaTemplate/template-id-expr.cpp vendor/clang/dist/test/SemaTemplate/virtual-member-functions.cpp vendor/clang/dist/tools/c-index-test/c-index-test.c vendor/clang/dist/tools/driver/CMakeLists.txt vendor/clang/dist/tools/driver/cc1_main.cpp vendor/clang/dist/tools/driver/driver.cpp vendor/clang/dist/tools/libclang/CIndex.cpp vendor/clang/dist/tools/libclang/CIndexCodeCompletion.cpp vendor/clang/dist/tools/libclang/CIndexUSRs.cpp vendor/clang/dist/tools/libclang/CMakeLists.txt vendor/clang/dist/tools/libclang/CXCursor.cpp vendor/clang/dist/tools/libclang/Makefile vendor/clang/dist/tools/libclang/libclang.darwin.exports vendor/clang/dist/tools/libclang/libclang.exports vendor/clang/dist/www/analyzer/annotations.html vendor/clang/dist/www/analyzer/latest_checker.html.incl vendor/clang/dist/www/comparison.html vendor/clang/dist/www/cxx_compatibility.html vendor/clang/dist/www/cxx_status.html vendor/clang/dist/www/get_started.html Modified: vendor/clang/dist/clang.xcodeproj/project.pbxproj ============================================================================== --- vendor/clang/dist/clang.xcodeproj/project.pbxproj Thu May 27 15:15:58 2010 (r208599) +++ vendor/clang/dist/clang.xcodeproj/project.pbxproj Thu May 27 15:17:06 2010 (r208600) @@ -441,43 +441,42 @@ 1AA963AB10D8576800786C86 /* FullExpr.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.c.h; name = FullExpr.h; path = clang/AST/FullExpr.h; sourceTree = ""; tabWidth = 2; }; 1AB290021045858B00FE33D8 /* PartialDiagnostic.h */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.c.h; path = PartialDiagnostic.h; sourceTree = ""; tabWidth = 2; }; 1ABC36930C7A4BDC006DB0AB /* CGBuiltin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; name = CGBuiltin.cpp; path = lib/CodeGen/CGBuiltin.cpp; sourceTree = ""; tabWidth = 2; }; - 1ABD23B11182449800A48E65 /* APValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = APValue.cpp; sourceTree = ""; }; - 1ABD23B21182449800A48E65 /* ASTConsumer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ASTConsumer.cpp; sourceTree = ""; }; - 1ABD23B31182449800A48E65 /* ASTContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ASTContext.cpp; sourceTree = ""; }; - 1ABD23B41182449800A48E65 /* ASTDiagnostic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ASTDiagnostic.cpp; sourceTree = ""; }; - 1ABD23B51182449800A48E65 /* ASTImporter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ASTImporter.cpp; sourceTree = ""; }; - 1ABD23B61182449800A48E65 /* AttrImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AttrImpl.cpp; sourceTree = ""; }; - 1ABD23B71182449800A48E65 /* CXXInheritance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CXXInheritance.cpp; sourceTree = ""; }; - 1ABD23B81182449800A48E65 /* Decl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Decl.cpp; sourceTree = ""; }; - 1ABD23B91182449800A48E65 /* DeclarationName.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeclarationName.cpp; sourceTree = ""; }; - 1ABD23BA1182449800A48E65 /* DeclBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeclBase.cpp; sourceTree = ""; }; - 1ABD23BB1182449800A48E65 /* DeclCXX.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeclCXX.cpp; sourceTree = ""; }; - 1ABD23BC1182449800A48E65 /* DeclFriend.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeclFriend.cpp; sourceTree = ""; }; - 1ABD23BD1182449800A48E65 /* DeclGroup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeclGroup.cpp; sourceTree = ""; }; - 1ABD23BE1182449800A48E65 /* DeclObjC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeclObjC.cpp; sourceTree = ""; }; - 1ABD23BF1182449800A48E65 /* DeclPrinter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeclPrinter.cpp; sourceTree = ""; }; - 1ABD23C01182449800A48E65 /* DeclTemplate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeclTemplate.cpp; sourceTree = ""; }; - 1ABD23C11182449800A48E65 /* Expr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Expr.cpp; sourceTree = ""; }; - 1ABD23C21182449800A48E65 /* ExprConstant.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ExprConstant.cpp; sourceTree = ""; }; - 1ABD23C31182449800A48E65 /* ExprCXX.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ExprCXX.cpp; sourceTree = ""; }; - 1ABD23C41182449800A48E65 /* FullExpr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FullExpr.cpp; sourceTree = ""; }; - 1ABD23C51182449800A48E65 /* InheritViz.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InheritViz.cpp; sourceTree = ""; }; - 1ABD23C61182449800A48E65 /* NestedNameSpecifier.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NestedNameSpecifier.cpp; sourceTree = ""; }; - 1ABD23C71182449800A48E65 /* ParentMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParentMap.cpp; sourceTree = ""; }; - 1ABD23C81182449800A48E65 /* RecordLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RecordLayout.cpp; sourceTree = ""; }; - 1ABD23C91182449800A48E65 /* RecordLayoutBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RecordLayoutBuilder.cpp; sourceTree = ""; }; - 1ABD23CA1182449800A48E65 /* RecordLayoutBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RecordLayoutBuilder.h; sourceTree = ""; }; - 1ABD23CB1182449800A48E65 /* Stmt.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Stmt.cpp; sourceTree = ""; }; - 1ABD23CC1182449800A48E65 /* StmtDumper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StmtDumper.cpp; sourceTree = ""; }; - 1ABD23CD1182449800A48E65 /* StmtIterator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StmtIterator.cpp; sourceTree = ""; }; - 1ABD23CE1182449800A48E65 /* StmtPrinter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StmtPrinter.cpp; sourceTree = ""; }; - 1ABD23CF1182449800A48E65 /* StmtProfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StmtProfile.cpp; sourceTree = ""; }; - 1ABD23D01182449800A48E65 /* StmtViz.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StmtViz.cpp; sourceTree = ""; }; - 1ABD23D11182449800A48E65 /* TemplateBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TemplateBase.cpp; sourceTree = ""; }; - 1ABD23D21182449800A48E65 /* TemplateName.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TemplateName.cpp; sourceTree = ""; }; - 1ABD23D31182449800A48E65 /* Type.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Type.cpp; sourceTree = ""; }; - 1ABD23D41182449800A48E65 /* TypeLoc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TypeLoc.cpp; sourceTree = ""; }; - 1ABD23D51182449800A48E65 /* TypePrinter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TypePrinter.cpp; sourceTree = ""; }; + 1ABD23B11182449800A48E65 /* APValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = APValue.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23B21182449800A48E65 /* ASTConsumer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = ASTConsumer.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23B31182449800A48E65 /* ASTContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = ASTContext.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23B41182449800A48E65 /* ASTDiagnostic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = ASTDiagnostic.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23B51182449800A48E65 /* ASTImporter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = ASTImporter.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23B61182449800A48E65 /* AttrImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = AttrImpl.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23B71182449800A48E65 /* CXXInheritance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = CXXInheritance.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23B81182449800A48E65 /* Decl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = Decl.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23B91182449800A48E65 /* DeclarationName.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = DeclarationName.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23BA1182449800A48E65 /* DeclBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = DeclBase.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23BB1182449800A48E65 /* DeclCXX.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = DeclCXX.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23BC1182449800A48E65 /* DeclFriend.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = DeclFriend.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23BD1182449800A48E65 /* DeclGroup.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = DeclGroup.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23BE1182449800A48E65 /* DeclObjC.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = DeclObjC.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23BF1182449800A48E65 /* DeclPrinter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = DeclPrinter.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23C01182449800A48E65 /* DeclTemplate.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = DeclTemplate.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23C11182449800A48E65 /* Expr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = Expr.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23C21182449800A48E65 /* ExprConstant.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = ExprConstant.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23C31182449800A48E65 /* ExprCXX.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = ExprCXX.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23C41182449800A48E65 /* FullExpr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = FullExpr.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23C51182449800A48E65 /* InheritViz.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = InheritViz.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23C61182449800A48E65 /* NestedNameSpecifier.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = NestedNameSpecifier.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23C71182449800A48E65 /* ParentMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = ParentMap.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23C81182449800A48E65 /* RecordLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = RecordLayout.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23C91182449800A48E65 /* RecordLayoutBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = RecordLayoutBuilder.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23CB1182449800A48E65 /* Stmt.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = Stmt.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23CC1182449800A48E65 /* StmtDumper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = StmtDumper.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23CD1182449800A48E65 /* StmtIterator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = StmtIterator.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23CE1182449800A48E65 /* StmtPrinter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = StmtPrinter.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23CF1182449800A48E65 /* StmtProfile.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = StmtProfile.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23D01182449800A48E65 /* StmtViz.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = StmtViz.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23D11182449800A48E65 /* TemplateBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = TemplateBase.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23D21182449800A48E65 /* TemplateName.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = TemplateName.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23D31182449800A48E65 /* Type.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = Type.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23D41182449800A48E65 /* TypeLoc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = TypeLoc.cpp; sourceTree = ""; tabWidth = 2; }; + 1ABD23D51182449800A48E65 /* TypePrinter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; indentWidth = 2; lastKnownFileType = sourcecode.cpp.cpp; path = TypePrinter.cpp; sourceTree = ""; tabWidth = 2; }; 1ACB57DB1105820D0047B991 /* CompilerInstance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CompilerInstance.cpp; path = lib/Frontend/CompilerInstance.cpp; sourceTree = ""; }; 1ACB57DC1105820D0047B991 /* CompilerInvocation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CompilerInvocation.cpp; path = lib/Frontend/CompilerInvocation.cpp; sourceTree = ""; }; 1ACB57DD1105820D0047B991 /* DeclXML.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DeclXML.cpp; path = lib/Frontend/DeclXML.cpp; sourceTree = ""; }; @@ -1494,7 +1493,6 @@ 1ABD23C71182449800A48E65 /* ParentMap.cpp */, 1ABD23C81182449800A48E65 /* RecordLayout.cpp */, 1ABD23C91182449800A48E65 /* RecordLayoutBuilder.cpp */, - 1ABD23CA1182449800A48E65 /* RecordLayoutBuilder.h */, 1ABD23CB1182449800A48E65 /* Stmt.cpp */, 1ABD23CC1182449800A48E65 /* StmtDumper.cpp */, 1ABD23CD1182449800A48E65 /* StmtIterator.cpp */, Modified: vendor/clang/dist/docs/InternalsManual.html ============================================================================== --- vendor/clang/dist/docs/InternalsManual.html Thu May 27 15:15:58 2010 (r208599) +++ vendor/clang/dist/docs/InternalsManual.html Thu May 27 15:17:06 2010 (r208600) @@ -532,12 +532,12 @@ source code of the program. Important d

    In practice, the SourceLocation works together with the SourceManager class -to encode two pieces of information about a location: it's spelling location -and it's instantiation location. For most tokens, these will be the same. However, -for a macro expansion (or tokens that came from a _Pragma directive) these will -describe the location of the characters corresponding to the token and the -location where the token was used (i.e. the macro instantiation point or the -location of the _Pragma itself).

    +to encode two pieces of information about a location: its spelling location +and its instantiation location. For most tokens, these will be the same. +However, for a macro expansion (or tokens that came from a _Pragma directive) +these will describe the location of the characters corresponding to the token +and the location where the token was used (i.e. the macro instantiation point +or the location of the _Pragma itself).

    The Clang front-end inherently depends on the location of a token being tracked correctly. If it is ever incorrect, the front-end may get confused and Modified: vendor/clang/dist/docs/UsersManual.html ============================================================================== --- vendor/clang/dist/docs/UsersManual.html Thu May 27 15:15:58 2010 (r208599) +++ vendor/clang/dist/docs/UsersManual.html Thu May 27 15:17:06 2010 (r208600) @@ -36,6 +36,7 @@ td {

    @@ -286,6 +287,30 @@ diagnostic. This information tells you diagnostic, either from the command line or through #pragma GCC diagnostic. + +
    -fdiagnostics-show-category=none/id/name: +Enable printing category information in diagnostic line.
    +
    This option, which defaults to "none", +controls whether or not Clang prints the category associated with a diagnostic +when emitting it. Each diagnostic may or many not have an associated category, +if it has one, it is listed in the diagnostic categorization field of the +diagnostic line (in the []'s).

    + +

    For example, a format string warning will produce these three renditions +based on the setting of this option:

    + +
    +  t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int' [-Wformat]
    +  t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int' [-Wformat,1]
    +  t.c:3:11: warning: conversion specifies type 'char *' but the argument has type 'int' [-Wformat,Format String]
    +
    + +

    This category can be used by clients that want to group diagnostics by +category, so it should be a high level category. We want dozens of these, not +hundreds or thousands of them.

    +
    + +
    -f[no-]diagnostics-fixit-info: @@ -393,6 +418,10 @@ it:

  • An option that indicates how to control the diagnostic (for diagnostics that support it) [-fdiagnostics-show-option].
  • +
  • A high-level category for the + diagnostic for clients that want to group diagnostics by class (for + diagnostics that support it) [-fdiagnostics-show-category].
  • The line of source code that the issue occurs on, along with a caret and ranges that indicate the important locations [-fcaret-diagnostics].
  • @@ -407,6 +436,7 @@ it:

    For more information please see Formatting of Diagnostics.

    +

    Diagnostic Mappings

    All diagnostics are mapped into one of these 5 classes:

    @@ -420,7 +450,23 @@ Diagnostics.

  • Fatal
  • -

    Controlling Diagnostics via Command Line Flags

    +

    Diagnostic Categories

    + +

    Though not shown by default, diagnostics may each be associated with a + high-level category. This category is intended to make it possible to triage + builds that produce a large number of errors or warnings in a grouped way. +

    + +

    Categories are not shown by default, but they can be turned on with the +-fdiagnostics-show-category option. +When set to "name", the category is printed textually in the diagnostic +output. When it is set to "id", a category number is printed. The +mapping of category names to category id's can be obtained by running 'clang + --print-diagnostic-categories'. +

    + +

    Controlling Diagnostics via Command Line + Flags

    -W flags, -pedantic, etc

    Modified: vendor/clang/dist/docs/tools/clang.pod ============================================================================== --- vendor/clang/dist/docs/tools/clang.pod Thu May 27 15:15:58 2010 (r208599) +++ vendor/clang/dist/docs/tools/clang.pod Thu May 27 15:17:06 2010 (r208600) @@ -50,10 +50,13 @@ parse errors. The output of this stage =item B This stage translates an AST into low-level intermediate code (known as "LLVM -IR") and ultimately to machine code (depending on the optimization level). This -phase is responsible for optimizing the generated code and handling -target-specfic code generation. The output of this stage is typically called a -".s" file or "assembly" file. +IR") and ultimately to machine code. This phase is responsible for optimizing +the generated code and handling target-specfic code generation. The output of +this stage is typically called a ".s" file or "assembly" file. + +Clang also supports the use of an integrated assembler, in which the code +generator produces object files directly. This avoids the overhead of generating +the ".s" file and of calling the target assembler. =item B @@ -325,17 +328,21 @@ Pass I to the assembler. =item B<-Xclang> I -Pass I to the clang compiler. +Pass I to the clang compiler frontend. =item B<-Xlinker> I Pass I to the linker. +=item B<-mllvm> I + +Pass I to the LLVM backend. + =item B<-Xpreprocessor> I Pass I to the preprocessor. -=item B<-o> I +=item B<-o> I Write output to I. @@ -359,6 +366,12 @@ Print the paths used for finding librari Save intermediate compilation results. +=item B<-integrated-as> B<-no-integrated-as> + +Used to enable and disable, respectively, the use of the integrated +assembler. Whether the integrated assembler is on by default is target +dependent. + =item B<-time> Time individual commands. Modified: vendor/clang/dist/include/clang-c/Index.h ============================================================================== --- vendor/clang/dist/include/clang-c/Index.h Thu May 27 15:15:58 2010 (r208599) +++ vendor/clang/dist/include/clang-c/Index.h Thu May 27 15:17:06 2010 (r208600) @@ -343,6 +343,12 @@ CINDEX_LINKAGE CXSourceLocation clang_ge CINDEX_LINKAGE CXSourceLocation clang_getRangeEnd(CXSourceRange range); /** + * \brief Determine if the source location occurs within the main file + * of the translation unit (as opposed to an included header). + */ +CINDEX_LINKAGE unsigned clang_isFromMainFile(CXSourceLocation loc); + +/** * @} */ @@ -648,7 +654,6 @@ CINDEX_LINKAGE void clang_disposeTransla */ enum CXCursorKind { /* Declarations */ - CXCursor_FirstDecl = 1, /** * \brief A declaration whose specific kind is not exposed via this * interface. @@ -700,11 +705,15 @@ enum CXCursorKind { CXCursor_ObjCCategoryImplDecl = 19, /** \brief A typedef */ CXCursor_TypedefDecl = 20, - /** \brief A C++ class method. */ CXCursor_CXXMethod = 21, + /** \brief A C++ namespace. */ + CXCursor_Namespace = 22, + /** \brief A linkage specification, e.g. 'extern "C"'. */ + CXCursor_LinkageSpec = 23, - CXCursor_LastDecl = 21, + CXCursor_FirstDecl = CXCursor_UnexposedDecl, + CXCursor_LastDecl = CXCursor_LinkageSpec, /* References */ CXCursor_FirstRef = 40, /* Decl references */ @@ -807,7 +816,8 @@ enum CXCursorKind { CXCursor_IBActionAttr = 401, CXCursor_IBOutletAttr = 402, - CXCursor_LastAttr = CXCursor_IBOutletAttr, + CXCursor_IBOutletCollectionAttr = 403, + CXCursor_LastAttr = CXCursor_IBOutletCollectionAttr, /* Preprocessing */ CXCursor_PreprocessingDirective = 500, @@ -1021,6 +1031,124 @@ CINDEX_LINKAGE CXSourceRange clang_getCu */ /** + * \defgroup CINDEX_TYPES Type information for CXCursors + * + * @{ + */ + +/** + * \brief Describes the kind of type + */ +enum CXTypeKind { + /** + * \brief Reprents an invalid type (e.g., where no type is available). + */ + CXType_Invalid = 0, + + /** + * \brief A type whose specific kind is not exposed via this + * interface. + */ + CXType_Unexposed = 1, + + /* Builtin types */ + CXType_Void = 2, + CXType_Bool = 3, + CXType_Char_U = 4, + CXType_UChar = 5, + CXType_Char16 = 6, + CXType_Char32 = 7, + CXType_UShort = 8, + CXType_UInt = 9, + CXType_ULong = 10, + CXType_ULongLong = 11, + CXType_UInt128 = 12, + CXType_Char_S = 13, + CXType_SChar = 14, + CXType_WChar = 15, + CXType_Short = 16, + CXType_Int = 17, + CXType_Long = 18, + CXType_LongLong = 19, + CXType_Int128 = 20, + CXType_Float = 21, + CXType_Double = 22, + CXType_LongDouble = 23, + CXType_NullPtr = 24, + CXType_Overload = 25, + CXType_Dependent = 26, + CXType_ObjCId = 27, + CXType_ObjCClass = 28, + CXType_ObjCSel = 29, + CXType_FirstBuiltin = CXType_Void, + CXType_LastBuiltin = CXType_ObjCSel, + + CXType_Complex = 100, + CXType_Pointer = 101, + CXType_BlockPointer = 102, + CXType_LValueReference = 103, + CXType_RValueReference = 104, + CXType_Record = 105, + CXType_Enum = 106, + CXType_Typedef = 107, + CXType_ObjCInterface = 108, + CXType_ObjCObjectPointer = 109 +}; + +/** + * \brief The type of an element in the abstract syntax tree. + * + */ +typedef struct { + enum CXTypeKind kind; + void *data[2]; +} CXType; + +/** + * \brief Retrieve the type of a CXCursor (if any). + */ +CINDEX_LINKAGE CXType clang_getCursorType(CXCursor C); + +/** + * \determine Determine whether two CXTypes represent the same type. + * + * \returns non-zero if the CXTypes represent the same type and + zero otherwise. + */ +CINDEX_LINKAGE unsigned clang_equalTypes(CXType A, CXType B); + +/** + * \brief Return the canonical type for a CXType. + * + * Clang's type system explicitly models typedefs and all the ways + * a specific type can be represented. The canonical type is the underlying + * type with all the "sugar" removed. For example, if 'T' is a typedef + * for 'int', the canonical type for 'T' would be 'int'. + */ +CINDEX_LINKAGE CXType clang_getCanonicalType(CXType T); + +/** + * \brief For pointer types, returns the type of the pointee. + * + */ +CINDEX_LINKAGE CXType clang_getPointeeType(CXType T); + +/** + * \brief Return the cursor for the declaration of the given type. + */ +CINDEX_LINKAGE CXCursor clang_getTypeDeclaration(CXType T); + + +/** + * \brief Retrieve the spelling of a given CXTypeKind. + */ +CINDEX_LINKAGE CXString clang_getTypeKindSpelling(enum CXTypeKind K); + +/** + * @} + */ + +/** * \defgroup CINDEX_CURSOR_TRAVERSAL Traversing the AST with cursors * * These routines provide the ability to traverse the abstract syntax tree @@ -1220,6 +1348,24 @@ CINDEX_LINKAGE unsigned clang_isCursorDe */ /** + * \defgroup CINDEX_CPP C++ AST introspection + * + * The routines in this group provide access information in the ASTs specific + * to C++ language features. + * + * @{ + */ + +/** + * \brief Determine if a C++ member function is declared 'static'. + */ +CINDEX_LINKAGE unsigned clang_CXXMethod_isStatic(CXCursor C); + +/** + * @} + */ + +/** * \defgroup CINDEX_LEX Token extraction and manipulation * * The routines in this group provide access to the tokens within a @@ -1649,6 +1795,21 @@ CINDEX_LINKAGE unsigned clang_getNumCompletionChunks(CXCompletionString completion_string); /** + * \brief Determine the priority of this code completion. + * + * The priority of a code completion indicates how likely it is that this + * particular completion is the completion that the user will select. The + * priority is selected by various internal heuristics. + * + * \param completion_string The completion string to query. + * + * \returns The priority of this completion string. Smaller values indicate + * higher-priority (more likely) completions. + */ +CINDEX_LINKAGE unsigned +clang_getCompletionPriority(CXCompletionString completion_string); + +/** * \brief Contains the results of code-completion. * * This data structure contains the results of code completion, as Modified: vendor/clang/dist/include/clang/AST/ASTConsumer.h ============================================================================== --- vendor/clang/dist/include/clang/AST/ASTConsumer.h Thu May 27 15:15:58 2010 (r208599) +++ vendor/clang/dist/include/clang/AST/ASTConsumer.h Thu May 27 15:17:06 2010 (r208600) @@ -16,6 +16,7 @@ namespace clang { class ASTContext; + class CXXRecordDecl; class DeclGroupRef; class TagDecl; class HandleTagDeclDefinition; @@ -68,6 +69,17 @@ public: /// modified by the introduction of an implicit zero initializer. virtual void CompleteTentativeDefinition(VarDecl *D) {} + /// \brief Callback involved at the end of a translation unit to + /// notify the consumer that a vtable for the given C++ class is + /// required. + /// + /// \param RD The class whose vtable was used. + /// + /// \param DefinitionRequired Whether a definition of this vtable is + /// required in this translation unit; otherwise, it is only needed if + /// it was actually used. + virtual void HandleVTable(CXXRecordDecl *RD, bool DefinitionRequired) {} + /// PrintStats - If desired, print any statistics. virtual void PrintStats() {} Modified: vendor/clang/dist/include/clang/AST/ASTContext.h ============================================================================== --- vendor/clang/dist/include/clang/AST/ASTContext.h Thu May 27 15:15:58 2010 (r208599) +++ vendor/clang/dist/include/clang/AST/ASTContext.h Thu May 27 15:17:06 2010 (r208600) @@ -96,11 +96,10 @@ class ASTContext { llvm::FoldingSet TemplateTypeParmTypes; llvm::FoldingSet SubstTemplateTypeParmTypes; llvm::FoldingSet TemplateSpecializationTypes; - llvm::FoldingSet QualifiedNameTypes; + llvm::FoldingSet ElaboratedTypes; llvm::FoldingSet DependentNameTypes; - llvm::FoldingSet ObjCInterfaceTypes; + llvm::FoldingSet ObjCObjectTypes; llvm::FoldingSet ObjCObjectPointerTypes; - llvm::FoldingSet ElaboratedTypes; llvm::FoldingSet QualifiedTemplateNames; llvm::FoldingSet DependentTemplateNames; @@ -483,7 +482,7 @@ public: /// This gets the struct used to keep track of pointer to blocks, complete /// with captured variables. QualType getBlockParmType(bool BlockHasCopyDispose, - llvm::SmallVector &BDRDs); + llvm::SmallVectorImpl &Layout); /// This builds the struct used for __block variables. QualType BuildByRefType(const char *DeclName, QualType Ty); @@ -613,8 +612,9 @@ public: const TemplateArgumentListInfo &Args, QualType Canon = QualType()); - QualType getQualifiedNameType(NestedNameSpecifier *NNS, - QualType NamedType); + QualType getElaboratedType(ElaboratedTypeKeyword Keyword, + NestedNameSpecifier *NNS, + QualType NamedType); QualType getDependentNameType(ElaboratedTypeKeyword Keyword, NestedNameSpecifier *NNS, const IdentifierInfo *Name, @@ -623,19 +623,16 @@ public: NestedNameSpecifier *NNS, const TemplateSpecializationType *TemplateId, QualType Canon = QualType()); - QualType getElaboratedType(QualType UnderlyingType, - ElaboratedType::TagKind Tag); - QualType getObjCInterfaceType(const ObjCInterfaceDecl *Decl, - ObjCProtocolDecl **Protocols = 0, - unsigned NumProtocols = 0); - - /// getObjCObjectPointerType - Return a ObjCObjectPointerType type for the - /// given interface decl and the conforming protocol list. - QualType getObjCObjectPointerType(QualType OIT, - ObjCProtocolDecl **ProtocolList = 0, - unsigned NumProtocols = 0, - unsigned Quals = 0); + QualType getObjCInterfaceType(const ObjCInterfaceDecl *Decl); + + QualType getObjCObjectType(QualType Base, + ObjCProtocolDecl * const *Protocols, + unsigned NumProtocols); + + /// getObjCObjectPointerType - Return a ObjCObjectPointerType type + /// for the given ObjCObjectType. + QualType getObjCObjectPointerType(QualType OIT); /// getTypeOfType - GCC extension. QualType getTypeOfExprType(Expr *e); @@ -913,6 +910,9 @@ public: CharUnits getTypeAlignInChars(QualType T); CharUnits getTypeAlignInChars(const Type *T); + std::pair getTypeInfoInChars(const Type *T); + std::pair getTypeInfoInChars(QualType T); + /// getPreferredTypeAlign - Return the "preferred" alignment of the specified /// type for the current target in bits. This can be different than the ABI /// alignment in cases where it is beneficial for performance to overalign @@ -1184,8 +1184,8 @@ public: // Check the safety of assignment from LHS to RHS bool canAssignObjCInterfaces(const ObjCObjectPointerType *LHSOPT, const ObjCObjectPointerType *RHSOPT); - bool canAssignObjCInterfaces(const ObjCInterfaceType *LHS, - const ObjCInterfaceType *RHS); + bool canAssignObjCInterfaces(const ObjCObjectType *LHS, + const ObjCObjectType *RHS); bool canAssignObjCInterfacesInBlockPointer( const ObjCObjectPointerType *LHSOPT, const ObjCObjectPointerType *RHSOPT); @@ -1196,6 +1196,8 @@ public: // Functions for calculating composite types QualType mergeTypes(QualType, QualType, bool OfBlockPointer=false); QualType mergeFunctionTypes(QualType, QualType, bool OfBlockPointer=false); + + QualType mergeObjCGCQualifiers(QualType, QualType); /// UsualArithmeticConversionsType - handles the various conversions /// that are common to binary operators (C99 6.3.1.8, C++ [expr]p9) @@ -1270,6 +1272,15 @@ public: TypeSourceInfo * getTrivialTypeSourceInfo(QualType T, SourceLocation Loc = SourceLocation()); + /// \brief Add a deallocation callback that will be invoked when the + /// ASTContext is destroyed. + /// + /// \brief Callback A callback function that will be invoked on destruction. + /// + /// \brief Data Pointer data that will be provided to the callback function + /// when it is called. + void AddDeallocation(void (*Callback)(void*), void *Data); + private: ASTContext(const ASTContext&); // DO NOT IMPLEMENT void operator=(const ASTContext&); // DO NOT IMPLEMENT @@ -1284,16 +1295,21 @@ private: const FieldDecl *Field, bool OutermostType = false, bool EncodingProperty = false); - + const ASTRecordLayout &getObjCLayout(const ObjCInterfaceDecl *D, const ObjCImplementationDecl *Impl); private: + /// \brief A set of deallocations that should be performed when the + /// ASTContext is destroyed. + llvm::SmallVector, 16> Deallocations; + // FIXME: This currently contains the set of StoredDeclMaps used // by DeclContext objects. This probably should not be in ASTContext, // but we include it here so that ASTContext can quickly deallocate them. llvm::PointerIntPair LastSDM; friend class DeclContext; + friend class DeclarationNameTable; void ReleaseDeclContextMaps(); }; Modified: vendor/clang/dist/include/clang/AST/Attr.h ============================================================================== --- vendor/clang/dist/include/clang/AST/Attr.h Thu May 27 15:15:58 2010 (r208599) +++ vendor/clang/dist/include/clang/AST/Attr.h Thu May 27 15:17:06 2010 (r208600) @@ -23,9 +23,10 @@ using llvm::dyn_cast; namespace clang { class ASTContext; + class IdentifierInfo; + class ObjCInterfaceDecl; } - // Defined in ASTContext.h void *operator new(size_t Bytes, clang::ASTContext &C, size_t Alignment = 16) throw (); @@ -44,6 +45,7 @@ public: enum Kind { Alias, Aligned, + AlignMac68k, AlwaysInline, AnalyzerNoReturn, // Clang-specific. Annotate, @@ -63,8 +65,10 @@ public: GNUInline, Hiding, IBOutletKind, // Clang-specific. Use "Kind" suffix to not conflict w/ macro. + IBOutletCollectionKind, // Clang-specific. IBActionKind, // Clang-specific. Use "Kind" suffix to not conflict w/ macro. Malloc, + MaxFieldAlignment, NoDebug, NoInline, NonNull, @@ -79,13 +83,13 @@ public: NSReturnsNotRetained, // Clang/Checker-specific. Overloadable, // Clang-specific Packed, - PragmaPack, Pure, Regparm, ReqdWorkGroupSize, // OpenCL-specific Section, Sentinel, StdCall, + ThisCall, TransparentUnion, Unavailable, Unused, @@ -183,11 +187,14 @@ public: DEF_SIMPLE_ATTR(Packed); -class PragmaPackAttr : public Attr { +/// \brief Attribute for specifying a maximum field alignment; this is only +/// valid on record decls. +class MaxFieldAlignmentAttr : public Attr { unsigned Alignment; public: - PragmaPackAttr(unsigned alignment) : Attr(PragmaPack), Alignment(alignment) {} + MaxFieldAlignmentAttr(unsigned alignment) + : Attr(MaxFieldAlignment), Alignment(alignment) {} /// getAlignment - The specified alignment in bits. unsigned getAlignment() const { return Alignment; } @@ -196,11 +203,13 @@ public: // Implement isa/cast/dyncast/etc. static bool classof(const Attr *A) { - return A->getKind() == PragmaPack; + return A->getKind() == MaxFieldAlignment; } - static bool classof(const PragmaPackAttr *A) { return true; } + static bool classof(const MaxFieldAlignmentAttr *A) { return true; } }; +DEF_SIMPLE_ATTR(AlignMac68k); + class AlignedAttr : public Attr { unsigned Alignment; public: @@ -317,6 +326,23 @@ public: static bool classof(const IBOutletAttr *A) { return true; } }; +class IBOutletCollectionAttr : public Attr { + const ObjCInterfaceDecl *D; +public: + IBOutletCollectionAttr(const ObjCInterfaceDecl *d = 0) + : Attr(IBOutletCollectionKind), D(d) {} + + const ObjCInterfaceDecl *getClass() const { return D; } + + virtual Attr *clone(ASTContext &C) const; + + // Implement isa/cast/dyncast/etc. + static bool classof(const Attr *A) { + return A->getKind() == IBOutletCollectionKind; + } + static bool classof(const IBOutletCollectionAttr *A) { return true; } +}; + class IBActionAttr : public Attr { public: IBActionAttr() : Attr(IBActionKind) {} @@ -457,6 +483,7 @@ public: DEF_SIMPLE_ATTR(FastCall); DEF_SIMPLE_ATTR(StdCall); +DEF_SIMPLE_ATTR(ThisCall); DEF_SIMPLE_ATTR(CDecl); DEF_SIMPLE_ATTR(TransparentUnion); DEF_SIMPLE_ATTR(ObjCNSObject); Added: vendor/clang/dist/include/clang/AST/CMakeLists.txt ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/clang/dist/include/clang/AST/CMakeLists.txt Thu May 27 15:17:06 2010 (r208600) @@ -0,0 +1,5 @@ +set(LLVM_TARGET_DEFINITIONS StmtNodes.td) +tablegen(StmtNodes.inc + -gen-clang-stmt-nodes) +add_custom_target(ClangStmtNodes + DEPENDS StmtNodes.inc) Modified: vendor/clang/dist/include/clang/AST/CXXInheritance.h ============================================================================== --- vendor/clang/dist/include/clang/AST/CXXInheritance.h Thu May 27 15:15:58 2010 (r208599) +++ vendor/clang/dist/include/clang/AST/CXXInheritance.h Thu May 27 15:17:06 2010 (r208600) @@ -196,7 +196,7 @@ public: /// \brief Determine whether the path from the most-derived type to the /// given base type is ambiguous (i.e., it refers to multiple subobjects of /// the same base type). - bool isAmbiguous(QualType BaseType); + bool isAmbiguous(CanQualType BaseType); /// \brief Whether we are finding multiple paths to detect ambiguities. bool isFindingAmbiguities() const { return FindAmbiguities; } Modified: vendor/clang/dist/include/clang/AST/CanonicalType.h ============================================================================== --- vendor/clang/dist/include/clang/AST/CanonicalType.h Thu May 27 15:15:58 2010 (r208599) +++ vendor/clang/dist/include/clang/AST/CanonicalType.h Thu May 27 15:17:06 2010 (r208600) @@ -643,6 +643,24 @@ struct CanProxyAdaptor +struct CanProxyAdaptor + : public CanProxyBase { + LLVM_CLANG_CANPROXY_TYPE_ACCESSOR(getBaseType) + LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(const ObjCInterfaceDecl *, + getInterface) + LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(bool, isObjCUnqualifiedId) + LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(bool, isObjCUnqualifiedClass) + LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(bool, isObjCQualifiedId) + LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(bool, isObjCQualifiedClass) + + typedef ObjCObjectPointerType::qual_iterator qual_iterator; + LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(qual_iterator, qual_begin) + LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(qual_iterator, qual_end) + LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(bool, qual_empty) + LLVM_CLANG_CANPROXY_SIMPLE_ACCESSOR(unsigned, getNumProtocols) +}; + +template<> struct CanProxyAdaptor : public CanProxyBase { LLVM_CLANG_CANPROXY_TYPE_ACCESSOR(getPointeeType) Modified: vendor/clang/dist/include/clang/AST/Decl.h ============================================================================== --- vendor/clang/dist/include/clang/AST/Decl.h Thu May 27 15:15:58 2010 (r208599) +++ vendor/clang/dist/include/clang/AST/Decl.h Thu May 27 15:17:06 2010 (r208600) @@ -55,7 +55,7 @@ public: QualType getType() const { return Ty; } /// \brief Return the TypeLoc wrapper for the type source info. - TypeLoc getTypeLoc() const; + TypeLoc getTypeLoc() const; // implemented in TypeLoc.h }; /// TranslationUnitDecl - The top declaration context. @@ -138,6 +138,8 @@ public: // FIXME: Deprecated, move clients to getName(). std::string getNameAsString() const { return Name.getAsString(); } + void printName(llvm::raw_ostream &os) const { return Name.printName(os); } + /// getDeclName - Get the actual, stored name of the declaration, /// which may be a special name. DeclarationName getDeclName() const { return Name; } @@ -265,18 +267,25 @@ public: // \brief Returns true if this is an anonymous namespace declaration. // // For example: + /// \code // namespace { // ... // }; + // \endcode // q.v. C++ [namespace.unnamed] bool isAnonymousNamespace() const { return !getIdentifier(); } + /// \brief Return the next extended namespace declaration or null if this + /// is none. NamespaceDecl *getNextNamespace() { return NextNamespace; } const NamespaceDecl *getNextNamespace() const { return NextNamespace; } + + /// \brief Set the next extended namespace declaration. void setNextNamespace(NamespaceDecl *ND) { NextNamespace = ND; } + /// \brief Get the original (first) namespace declaration. NamespaceDecl *getOriginalNamespace() const { if (OrigOrAnonNamespace.getInt()) return const_cast(this); @@ -284,6 +293,14 @@ public: return OrigOrAnonNamespace.getPointer(); } + /// \brief Return true if this declaration is an original (first) declaration + /// of the namespace. This is false for non-original (subsequent) namespace + /// declarations and anonymous namespaces. + bool isOriginalNamespace() const { + return getOriginalNamespace() == this; + } + + /// \brief Set the original (first) namespace declaration. void setOriginalNamespace(NamespaceDecl *ND) { if (ND != this) { OrigOrAnonNamespace.setPointer(ND); @@ -502,6 +519,10 @@ private: /// or an Objective-C @catch statement. bool ExceptionVar : 1; + /// \brief Whether this local variable could be allocated in the return + /// slot of its function, enabling the named return value optimization (NRVO). + bool NRVOVariable : 1; + friend class StmtIteratorBase; protected: VarDecl(Kind DK, DeclContext *DC, SourceLocation L, IdentifierInfo *Id, @@ -509,7 +530,7 @@ protected: StorageClass SCAsWritten) : DeclaratorDecl(DK, DC, L, Id, T, TInfo), Init(), ThreadSpecified(false), HasCXXDirectInit(false), - DeclaredInCondition(false), ExceptionVar(false) { + DeclaredInCondition(false), ExceptionVar(false), NRVOVariable(false) { SClass = SC; SClassAsWritten = SCAsWritten; } @@ -852,6 +873,19 @@ public: } void setExceptionVariable(bool EV) { ExceptionVar = EV; } + /// \brief Determine whether this local variable can be used with the named + /// return value optimization (NRVO). + /// + /// The named return value optimization (NRVO) works by marking certain + /// non-volatile local variables of class type as NRVO objects. These + /// locals can be allocated within the return slot of their containing + /// function, in which case there is no need to copy the object to the + /// return slot when returning from the function. Within the function body, + /// each return that returns the NRVO object will have this variable as its + /// NRVO candidate. + bool isNRVOVariable() const { return NRVOVariable; } + void setNRVOVariable(bool NRVO) { NRVOVariable = NRVO; } + /// \brief If this variable is an instantiated static data member of a /// class template specialization, returns the templated static data member /// from which it was instantiated. @@ -1390,6 +1424,16 @@ public: /// returns NULL. const TemplateArgumentList *getTemplateSpecializationArgs() const; + /// \brief Retrieve the template argument list as written in the sources, + /// if any. + /// + /// If this function declaration is not a function template specialization + /// or if it had no explicit template argument list, returns NULL. + /// Note that it an explicit template argument list may be written empty, + /// e.g., template<> void foo<>(char* s); + const TemplateArgumentListInfo* + getTemplateSpecializationArgsAsWritten() const; + /// \brief Specify that this function declaration is actually a function /// template specialization. /// @@ -1409,7 +1453,8 @@ public: void setFunctionTemplateSpecialization(FunctionTemplateDecl *Template, const TemplateArgumentList *TemplateArgs, void *InsertPos, - TemplateSpecializationKind TSK = TSK_ImplicitInstantiation); + TemplateSpecializationKind TSK = TSK_ImplicitInstantiation, + const TemplateArgumentListInfo *TemplateArgsAsWritten = 0); /// \brief Specifies that this function declaration is actually a /// dependent function template specialization. @@ -1593,7 +1638,19 @@ class TypedefDecl : public TypeDecl, pub : TypeDecl(Typedef, DC, L, Id), TInfo(TInfo) {} virtual ~TypedefDecl(); + +protected: + typedef Redeclarable redeclarable_base; + virtual TypedefDecl *getNextRedeclaration() { return RedeclLink.getNext(); } + public: + typedef redeclarable_base::redecl_iterator redecl_iterator; + redecl_iterator redecls_begin() const { + return redeclarable_base::redecls_begin(); + } + redecl_iterator redecls_end() const { + return redeclarable_base::redecls_end(); + } static TypedefDecl *Create(ASTContext &C, DeclContext *DC, SourceLocation L, IdentifierInfo *Id, @@ -1631,11 +1688,7 @@ class TagDecl : public TypeDecl, public DeclContext, public Redeclarable { public: // This is really ugly. - typedef ElaboratedType::TagKind TagKind; - static const TagKind TK_struct = ElaboratedType::TK_struct; - static const TagKind TK_union = ElaboratedType::TK_union; - static const TagKind TK_class = ElaboratedType::TK_class; - static const TagKind TK_enum = ElaboratedType::TK_enum; + typedef TagTypeKind TagKind; private: // FIXME: This can be packed into the bitfields in Decl. @@ -1651,6 +1704,12 @@ private: /// in the syntax of a declarator. bool IsEmbeddedInDeclarator : 1; +protected: + // These are used by (and only defined for) EnumDecl. + unsigned NumPositiveBits : 8; + unsigned NumNegativeBits : 8; + +private: SourceLocation TagKeywordLoc; SourceLocation RBraceLoc; @@ -1680,7 +1739,8 @@ protected: TagDecl *PrevDecl, SourceLocation TKL = SourceLocation()) : TypeDecl(DK, DC, L, Id), DeclContext(DK), TagKeywordLoc(TKL), TypedefDeclOrQualifier((TypedefDecl*) 0) { - assert((DK != Enum || TK == TK_enum) &&"EnumDecl not matched with TK_enum"); + assert((DK != Enum || TK == TTK_Enum) && + "EnumDecl not matched with TTK_Enum"); TagDeclKind = TK; IsDefinition = false; IsEmbeddedInDeclarator = false; @@ -1753,30 +1813,26 @@ public: void setDefinition(bool V) { IsDefinition = V; } const char *getKindName() const { - return ElaboratedType::getNameForTagKind(getTagKind()); + return TypeWithKeyword::getTagTypeKindName(getTagKind()); } - /// getTagKindForTypeSpec - Converts a type specifier (DeclSpec::TST) - /// into a tag kind. It is an error to provide a type specifier - /// which *isn't* a tag kind here. - static TagKind getTagKindForTypeSpec(unsigned TypeSpec); - TagKind getTagKind() const { return TagKind(TagDeclKind); } void setTagKind(TagKind TK) { TagDeclKind = TK; } *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Thu May 27 15:27:31 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9B7381065677; Thu, 27 May 2010 15:27:31 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8BA108FC2F; Thu, 27 May 2010 15:27: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 o4RFRVsQ010926; Thu, 27 May 2010 15:27:31 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4RFRVpk010924; Thu, 27 May 2010 15:27:31 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201005271527.o4RFRVpk010924@svn.freebsd.org> From: Robert Watson Date: Thu, 27 May 2010 15:27:31 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208601 - head/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 15:27:31 -0000 Author: rwatson Date: Thu May 27 15:27:31 2010 New Revision: 208601 URL: http://svn.freebsd.org/changeset/base/208601 Log: When close() is called on a connected socket pair, SO_ISCONNECTED might be set but be cleared before the call to sodisconnect(). In this case, ENOTCONN is returned: suppress this error rather than returning it to userspace so that close() doesn't report an error improperly. PR: kern/144061 Reported by: Matt Reimer , Nikolay Denev , Mikolaj Golub MFC after: 3 days Modified: head/sys/kern/uipc_socket.c Modified: head/sys/kern/uipc_socket.c ============================================================================== --- head/sys/kern/uipc_socket.c Thu May 27 15:17:06 2010 (r208600) +++ head/sys/kern/uipc_socket.c Thu May 27 15:27:31 2010 (r208601) @@ -665,8 +665,11 @@ soclose(struct socket *so) if (so->so_state & SS_ISCONNECTED) { if ((so->so_state & SS_ISDISCONNECTING) == 0) { error = sodisconnect(so); - if (error) + if (error) { + if (error == ENOTCONN) + error = 0; goto drop; + } } if (so->so_options & SO_LINGER) { if ((so->so_state & SS_ISDISCONNECTING) && From owner-svn-src-all@FreeBSD.ORG Thu May 27 15:28:55 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D1FF3106566C; Thu, 27 May 2010 15:28:55 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A7FFA8FC16; Thu, 27 May 2010 15:28: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 o4RFStNI011261; Thu, 27 May 2010 15:28:55 GMT (envelope-from rwatson@svn.freebsd.org) Received: (from rwatson@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4RFStEc011259; Thu, 27 May 2010 15:28:55 GMT (envelope-from rwatson@svn.freebsd.org) Message-Id: <201005271528.o4RFStEc011259@svn.freebsd.org> From: Robert Watson Date: Thu, 27 May 2010 15:28:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208602 - head/tools/regression/sockets/unix_close_race X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 15:28:55 -0000 Author: rwatson Date: Thu May 27 15:28:55 2010 New Revision: 208602 URL: http://svn.freebsd.org/changeset/base/208602 Log: Correct several nits/problems in the unix_close_race regression test. Submitted by: Mikolaj Golub MFC after: 3 days Modified: head/tools/regression/sockets/unix_close_race/unix_close_race.c Modified: head/tools/regression/sockets/unix_close_race/unix_close_race.c ============================================================================== --- head/tools/regression/sockets/unix_close_race/unix_close_race.c Thu May 27 15:27:31 2010 (r208601) +++ head/tools/regression/sockets/unix_close_race/unix_close_race.c Thu May 27 15:28:55 2010 (r208602) @@ -75,8 +75,8 @@ main(int argc, char **argv) warnx("SMP not present, test may be unable to trigger race"); /* - * Create a UNIX domain socket that the parent will repeatedly - * accept() from, and that the child will repeatedly connect() to. + * Create a UNIX domain socket that the child will repeatedly + * accept() from, and that the parent will repeatedly connect() to. */ if ((listenfd = socket(AF_LOCAL, SOCK_STREAM, 0)) < 0) err(1, "parent: socket error"); @@ -104,13 +104,19 @@ main(int argc, char **argv) servaddr.sun_family = AF_LOCAL; strcpy(servaddr.sun_path, UNIXSTR_PATH); for (counter = 0; counter < LOOPS; counter++) { - if ((connfd = socket(AF_LOCAL, SOCK_STREAM, 0)) < 0) - err(1, "child: socket error"); + if ((connfd = socket(AF_LOCAL, SOCK_STREAM, 0)) < 0) { + (void)kill(pid, SIGTERM); + err(1, "parent: socket error"); + } if (connect(connfd, (struct sockaddr *)&servaddr, - sizeof(servaddr)) < 0) - err(1, "child: connect error"); - if (close(connfd) < 0) - err(1, "child: close error"); + sizeof(servaddr)) < 0) { + (void)kill(pid, SIGTERM); + err(1, "parent: connect error"); + } + if (close(connfd) < 0) { + (void)kill(pid, SIGTERM); + err(1, "parent: close error"); + } usleep(USLEEP); } (void)kill(pid, SIGTERM); @@ -122,9 +128,9 @@ main(int argc, char **argv) for ( ; ; ) { if ((connfd = accept(listenfd, (struct sockaddr *)NULL, NULL)) < 0) - err(1, "parent: accept error"); + err(1, "child: accept error"); if (close(connfd) < 0) - err(1, "parent: close error"); + err(1, "child: close error"); } } printf("OK\n"); From owner-svn-src-all@FreeBSD.ORG Thu May 27 18:07:21 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7E0F51065670; Thu, 27 May 2010 18:07:21 +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 63EFD8FC16; Thu, 27 May 2010 18:07: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 o4RI7Lew046416; Thu, 27 May 2010 18:07:21 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4RI7L7J046415; Thu, 27 May 2010 18:07:21 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201005271807.o4RI7L7J046415@svn.freebsd.org> From: John Baldwin Date: Thu, 27 May 2010 18:07:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208603 - head/sys/nfsclient X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 18:07:21 -0000 Author: jhb Date: Thu May 27 18:07:20 2010 New Revision: 208603 URL: http://svn.freebsd.org/changeset/base/208603 Log: More gracefully handle stale file handles and attributes when opening a file via NFS. Specifically, to satisfy close-to-open-consistency, the NFS client always performs at least one RPC on a file during an open(2) to see if the file has changed. Normally this RPC is an ACCESS or GETATTR RPC that is forced by flushing a file's attribute cache during nfs_open() and then requesting new attributes. However, if the file is noticed to be stale during nfs_open(), the only recourse is to fail the open(2) call with ESTALE. On the other hand, if the ACCESS or GETATTR RPC is sent during nfs_lookup(), then the NFS client can fall back to a LOOKUP RPC to obtain the new file handle in the case that a file has been replaced. This change causes the NFS client to flush the attribute cache during nfs_lookup() when validating a name cache hit if the attributes fetched during nfs_lookup() can be reused in nfs_open(). This allows the client to open a replaced file via the new file handle the first time that it notices a replaced file rather than failing with ESTALE in some cases. Reviewed by: rmacklem, bde Reviewed by: mohans (older version) MFC after: 1 week Modified: head/sys/nfsclient/nfs_vnops.c Modified: head/sys/nfsclient/nfs_vnops.c ============================================================================== --- head/sys/nfsclient/nfs_vnops.c Thu May 27 15:28:55 2010 (r208602) +++ head/sys/nfsclient/nfs_vnops.c Thu May 27 18:07:20 2010 (r208603) @@ -932,7 +932,7 @@ nfs_lookup(struct vop_lookup_args *ap) struct mbuf *mreq, *mrep, *md, *mb; long len; nfsfh_t *fhp; - struct nfsnode *np; + struct nfsnode *np, *newnp; int error = 0, attrflag, fhsize, ltype; int v3 = NFS_ISV3(dvp); struct thread *td = cnp->cn_thread; @@ -958,10 +958,27 @@ nfs_lookup(struct vop_lookup_args *ap) * change time of the file matches our cached copy. * Otherwise, we discard the cache entry and fallback * to doing a lookup RPC. + * + * To better handle stale file handles and attributes, + * clear the attribute cache of this node if it is a + * leaf component, part of an open() call, and not + * locally modified before fetching the attributes. + * This should allow stale file handles to be detected + * here where we can fall back to a LOOKUP RPC to + * recover rather than having nfs_open() detect the + * stale file handle and failing open(2) with ESTALE. */ newvp = *vpp; - if (!VOP_GETATTR(newvp, &vattr, cnp->cn_cred) - && vattr.va_ctime.tv_sec == VTONFS(newvp)->n_ctime) { + newnp = VTONFS(newvp); + if ((cnp->cn_flags & (ISLASTCN | ISOPEN)) == + (ISLASTCN | ISOPEN) && !(newnp->n_flag & NMODIFIED)) { + mtx_lock(&newnp->n_mtx); + newnp->n_attrstamp = 0; + KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp); + mtx_unlock(&newnp->n_mtx); + } + if (VOP_GETATTR(newvp, &vattr, cnp->cn_cred) == 0 && + vattr.va_ctime.tv_sec == newnp->n_ctime) { nfsstats.lookupcache_hits++; if (cnp->cn_nameiop != LOOKUP && (flags & ISLASTCN)) From owner-svn-src-all@FreeBSD.ORG Thu May 27 18:33:01 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 188F1106567A; Thu, 27 May 2010 18:33:01 +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 07EF78FC1E; Thu, 27 May 2010 18:33: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 o4RIX0pV052337; Thu, 27 May 2010 18:33:00 GMT (envelope-from kib@svn.freebsd.org) Received: (from kib@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4RIX0bE052335; Thu, 27 May 2010 18:33:00 GMT (envelope-from kib@svn.freebsd.org) Message-Id: <201005271833.o4RIX0bE052335@svn.freebsd.org> From: Konstantin Belousov Date: Thu, 27 May 2010 18:33:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208604 - head/sys/i386/i386 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 18:33:01 -0000 Author: kib Date: Thu May 27 18:33:00 2010 New Revision: 208604 URL: http://svn.freebsd.org/changeset/base/208604 Log: Clarify a potential issue in get_fpcontext() use. MFC after: 1 week Modified: head/sys/i386/i386/machdep.c Modified: head/sys/i386/i386/machdep.c ============================================================================== --- head/sys/i386/i386/machdep.c Thu May 27 18:07:20 2010 (r208603) +++ head/sys/i386/i386/machdep.c Thu May 27 18:33:00 2010 (r208604) @@ -633,6 +633,13 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, sf.sf_uc.uc_mcontext.mc_gs = rgs(); bcopy(regs, &sf.sf_uc.uc_mcontext.mc_fs, sizeof(*regs)); sf.sf_uc.uc_mcontext.mc_len = sizeof(sf.sf_uc.uc_mcontext); /* magic */ + + /* + * The get_fpcontext() call must be placed before assignments + * to mc_fsbase and mc_gsbase due to the alignment-override + * code in get_fpcontext() that possibly clobbers 12 bytes of + * mcontext after mc_fpstate. + */ get_fpcontext(td, &sf.sf_uc.uc_mcontext); fpstate_drop(td); /* @@ -3240,6 +3247,13 @@ get_mcontext(struct thread *td, mcontext mcp->mc_esp = tp->tf_esp; mcp->mc_ss = tp->tf_ss; mcp->mc_len = sizeof(*mcp); + + /* + * The get_fpcontext() call must be placed before assignments + * to mc_fsbase and mc_gsbase due to the alignment-override + * code in get_fpcontext() that possibly clobbers 12 bytes of + * mcontext after mc_fpstate. + */ get_fpcontext(td, mcp); sdp = &td->td_pcb->pcb_gsd; mcp->mc_fsbase = sdp->sd_hibase << 24 | sdp->sd_lobase; From owner-svn-src-all@FreeBSD.ORG Thu May 27 22:59:38 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2C805106564A; Thu, 27 May 2010 22:59:38 +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 1C5218FC12; Thu, 27 May 2010 22:59: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 o4RMxbHD010749; Thu, 27 May 2010 22:59:37 GMT (envelope-from delphij@svn.freebsd.org) Received: (from delphij@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4RMxbCP010748; Thu, 27 May 2010 22:59:37 GMT (envelope-from delphij@svn.freebsd.org) Message-Id: <201005272259.o4RMxbCP010748@svn.freebsd.org> From: Xin LI Date: Thu, 27 May 2010 22:59:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208605 - head/sys/nfsclient X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 May 2010 22:59:38 -0000 Author: delphij Date: Thu May 27 22:59:37 2010 New Revision: 208605 URL: http://svn.freebsd.org/changeset/base/208605 Log: Fix build: newnp represents newvp so KDTRACE_NFS_ATTRCACHE_FLUSH_DONE() on newvp instead of vp here. Modified: head/sys/nfsclient/nfs_vnops.c Modified: head/sys/nfsclient/nfs_vnops.c ============================================================================== --- head/sys/nfsclient/nfs_vnops.c Thu May 27 18:33:00 2010 (r208604) +++ head/sys/nfsclient/nfs_vnops.c Thu May 27 22:59:37 2010 (r208605) @@ -974,7 +974,7 @@ nfs_lookup(struct vop_lookup_args *ap) (ISLASTCN | ISOPEN) && !(newnp->n_flag & NMODIFIED)) { mtx_lock(&newnp->n_mtx); newnp->n_attrstamp = 0; - KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(vp); + KDTRACE_NFS_ATTRCACHE_FLUSH_DONE(newvp); mtx_unlock(&newnp->n_mtx); } if (VOP_GETATTR(newvp, &vattr, cnp->cn_cred) == 0 && From owner-svn-src-all@FreeBSD.ORG Fri May 28 01:06:40 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id ED1551065674; Fri, 28 May 2010 01:06:40 +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 DD56D8FC14; Fri, 28 May 2010 01:06: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 o4S16evN038501; Fri, 28 May 2010 01:06:40 GMT (envelope-from cperciva@svn.freebsd.org) Received: (from cperciva@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4S16eSL038499; Fri, 28 May 2010 01:06:40 GMT (envelope-from cperciva@svn.freebsd.org) Message-Id: <201005280106.o4S16eSL038499@svn.freebsd.org> From: Colin Percival Date: Fri, 28 May 2010 01:06:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208606 - head/crypto/openssh X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 May 2010 01:06:41 -0000 Author: cperciva Date: Fri May 28 01:06:40 2010 New Revision: 208606 URL: http://svn.freebsd.org/changeset/base/208606 Log: Fix .Dd line: FreeBSD's mdoc code doesn't understand OpenBSD's $Mdocdate$. MFC after: 3 days Modified: head/crypto/openssh/ssh-pkcs11-helper.8 Modified: head/crypto/openssh/ssh-pkcs11-helper.8 ============================================================================== --- head/crypto/openssh/ssh-pkcs11-helper.8 Thu May 27 22:59:37 2010 (r208605) +++ head/crypto/openssh/ssh-pkcs11-helper.8 Fri May 28 01:06:40 2010 (r208606) @@ -14,7 +14,7 @@ .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" -.Dd $Mdocdate: February 10 2010 $ +.Dd February 10, 2010 .Dt SSH-PKCS11-HELPER 8 .Os .Sh NAME From owner-svn-src-all@FreeBSD.ORG Fri May 28 02:00:15 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AF08C106567A; Fri, 28 May 2010 02:00:15 +0000 (UTC) (envelope-from neel@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 85E778FC18; Fri, 28 May 2010 02:00:15 +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 o4S20FRv050178; Fri, 28 May 2010 02:00:15 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4S20F0t050176; Fri, 28 May 2010 02:00:15 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201005280200.o4S20F0t050176@svn.freebsd.org> From: Neel Natu Date: Fri, 28 May 2010 02:00:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208607 - head/sys/mips/mips X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 May 2010 02:00:15 -0000 Author: neel Date: Fri May 28 02:00:15 2010 New Revision: 208607 URL: http://svn.freebsd.org/changeset/base/208607 Log: If 'timer2hz' is zero then we don't need to call 'timer2clock()' directly. It will be called automatically by 'timer1clock()'. Do profiling as often as possible by running it as the same frequency as 'timer1hz'. The statistics clock is run as close to 128Hz as possible. Pointed out by: mav@ Modified: head/sys/mips/mips/tick.c Modified: head/sys/mips/mips/tick.c ============================================================================== --- head/sys/mips/mips/tick.c Fri May 28 01:06:40 2010 (r208606) +++ head/sys/mips/mips/tick.c Fri May 28 02:00:15 2010 (r208607) @@ -127,9 +127,6 @@ void mips_timer_init_params(uint64_t platform_counter_freq, int double_count) { - stathz = hz; - profhz = hz; - /* * XXX: Do not use printf here: uart code 8250 may use DELAY so this * function should be called before cninit. @@ -143,6 +140,17 @@ mips_timer_init_params(uint64_t platform if (double_count != 0) counter_freq /= 2; + /* + * We want to run stathz in the neighborhood of 128hz. We would + * like profhz to run as often as possible, so we let it run on + * each clock tick. We try to honor the requested 'hz' value as + * much as possible. + * + * If 'hz' is above 1500, then we just let the timer + * (and profhz) run at hz. If 'hz' is below 1500 but above + * 750, then we let the timer run at 2 * 'hz'. If 'hz' + * is below 750 then we let the timer run at 4 * 'hz'. + */ if (hz >= 1500) timer1hz = hz; else if (hz >= 750) @@ -150,6 +158,12 @@ mips_timer_init_params(uint64_t platform else timer1hz = hz * 4; + if (timer1hz < 128) + stathz = timer1hz; + else + stathz = timer1hz / (timer1hz / 128); + profhz = timer1hz; + cycles_per_tick = counter_freq / timer1hz; cycles_per_usec = counter_freq / (1 * 1000 * 1000); @@ -285,7 +299,6 @@ clock_intr(void *arg) while (lost_ticks >= cycles_per_tick) { timer1clock(TRAPF_USERMODE(tf), tf->pc); - timer2clock(TRAPF_USERMODE(tf), tf->pc); lost_ticks -= cycles_per_tick; } DPCPU_SET(lost_ticks, lost_ticks); @@ -301,7 +314,6 @@ clock_intr(void *arg) (*cyclic_clock_func[cpu])(tf); #endif timer1clock(TRAPF_USERMODE(tf), tf->pc); - timer2clock(TRAPF_USERMODE(tf), tf->pc); critical_exit(); return (FILTER_HANDLED); } From owner-svn-src-all@FreeBSD.ORG Fri May 28 05:34:44 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4149F1065680; Fri, 28 May 2010 05:34:44 +0000 (UTC) (envelope-from neel@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 308278FC1D; Fri, 28 May 2010 05:34: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 o4S5Yibu097231; Fri, 28 May 2010 05:34:44 GMT (envelope-from neel@svn.freebsd.org) Received: (from neel@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4S5Yi4p097229; Fri, 28 May 2010 05:34:44 GMT (envelope-from neel@svn.freebsd.org) Message-Id: <201005280534.o4S5Yi4p097229@svn.freebsd.org> From: Neel Natu Date: Fri, 28 May 2010 05:34:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208608 - head/sys/mips/mips X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 May 2010 05:34:44 -0000 Author: neel Date: Fri May 28 05:34:43 2010 New Revision: 208608 URL: http://svn.freebsd.org/changeset/base/208608 Log: Get rid of unused variable 'virtual_sys_start'. Modified: head/sys/mips/mips/pmap.c Modified: head/sys/mips/mips/pmap.c ============================================================================== --- head/sys/mips/mips/pmap.c Fri May 28 02:00:15 2010 (r208607) +++ head/sys/mips/mips/pmap.c Fri May 28 05:34:43 2010 (r208608) @@ -211,7 +211,6 @@ struct local_sysmaps { * bit mode this goes away. */ static struct local_sysmaps sysmap_lmem[MAXCPU]; -caddr_t virtual_sys_start = (caddr_t)0; #define PMAP_LMEM_MAP1(va, phys) \ int cpu; \ @@ -443,7 +442,7 @@ again: PMAP_LGMEM_LOCK_INIT(&sysmap_lmem[i]); } } - virtual_sys_start = (caddr_t)virtual_avail; + /* * Allocate segment table for the kernel */ From owner-svn-src-all@FreeBSD.ORG Fri May 28 06:49:57 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7F1BB1065670; Fri, 28 May 2010 06:49:57 +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 541458FC08; Fri, 28 May 2010 06:49: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 o4S6nvM5013755; Fri, 28 May 2010 06:49:57 GMT (envelope-from alc@svn.freebsd.org) Received: (from alc@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4S6nvYg013752; Fri, 28 May 2010 06:49:57 GMT (envelope-from alc@svn.freebsd.org) Message-Id: <201005280649.o4S6nvYg013752@svn.freebsd.org> From: Alan Cox Date: Fri, 28 May 2010 06:49:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208609 - in head/sys: amd64/amd64 i386/i386 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 May 2010 06:49:57 -0000 Author: alc Date: Fri May 28 06:49:57 2010 New Revision: 208609 URL: http://svn.freebsd.org/changeset/base/208609 Log: Defer freeing any page table pages in pmap_remove_all() until after the page queues lock is released. This may reduce the amount of time that the page queues lock is held by pmap_remove_all(). Modified: head/sys/amd64/amd64/pmap.c head/sys/i386/i386/pmap.c Modified: head/sys/amd64/amd64/pmap.c ============================================================================== --- head/sys/amd64/amd64/pmap.c Fri May 28 05:34:43 2010 (r208608) +++ head/sys/amd64/amd64/pmap.c Fri May 28 06:49:57 2010 (r208609) @@ -2796,6 +2796,7 @@ pmap_remove_all(vm_page_t m) KASSERT((m->flags & PG_FICTITIOUS) == 0, ("pmap_remove_all: page %p is fictitious", m)); + free = NULL; vm_page_lock_queues(); pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m)); while ((pv = TAILQ_FIRST(&pvh->pv_list)) != NULL) { @@ -2825,16 +2826,15 @@ pmap_remove_all(vm_page_t m) */ if ((tpte & (PG_M | PG_RW)) == (PG_M | PG_RW)) vm_page_dirty(m); - free = NULL; pmap_unuse_pt(pmap, pv->pv_va, *pde, &free); pmap_invalidate_page(pmap, pv->pv_va); - pmap_free_zero_pages(free); TAILQ_REMOVE(&m->md.pv_list, pv, pv_list); free_pv_entry(pmap, pv); PMAP_UNLOCK(pmap); } vm_page_flag_clear(m, PG_WRITEABLE); vm_page_unlock_queues(); + pmap_free_zero_pages(free); } /* Modified: head/sys/i386/i386/pmap.c ============================================================================== --- head/sys/i386/i386/pmap.c Fri May 28 05:34:43 2010 (r208608) +++ head/sys/i386/i386/pmap.c Fri May 28 06:49:57 2010 (r208609) @@ -2900,6 +2900,7 @@ pmap_remove_all(vm_page_t m) KASSERT((m->flags & PG_FICTITIOUS) == 0, ("pmap_remove_all: page %p is fictitious", m)); + free = NULL; vm_page_lock_queues(); sched_pin(); pvh = pa_to_pvh(VM_PAGE_TO_PHYS(m)); @@ -2930,10 +2931,8 @@ pmap_remove_all(vm_page_t m) */ if ((tpte & (PG_M | PG_RW)) == (PG_M | PG_RW)) vm_page_dirty(m); - free = NULL; pmap_unuse_pt(pmap, pv->pv_va, &free); pmap_invalidate_page(pmap, pv->pv_va); - pmap_free_zero_pages(free); TAILQ_REMOVE(&m->md.pv_list, pv, pv_list); free_pv_entry(pmap, pv); PMAP_UNLOCK(pmap); @@ -2941,6 +2940,7 @@ pmap_remove_all(vm_page_t m) vm_page_flag_clear(m, PG_WRITEABLE); sched_unpin(); vm_page_unlock_queues(); + pmap_free_zero_pages(free); } /* From owner-svn-src-all@FreeBSD.ORG Fri May 28 07:34:20 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id ABCA81065672; Fri, 28 May 2010 07:34:20 +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 9A0208FC23; Fri, 28 May 2010 07:34:20 +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 o4S7YKpT023583; Fri, 28 May 2010 07:34:20 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4S7YKFB023581; Fri, 28 May 2010 07:34:20 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <201005280734.o4S7YKFB023581@svn.freebsd.org> From: Andriy Gapon Date: Fri, 28 May 2010 07:34:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208610 - head/sys/boot/zfs X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 May 2010 07:34:20 -0000 Author: avg Date: Fri May 28 07:34:20 2010 New Revision: 208610 URL: http://svn.freebsd.org/changeset/base/208610 Log: boot/zfs: fix gang block reading code - use correct size (512) while reading a gang block - skip holes while reading child blocks - advance buffer pointer while reading child blocks PR: 144214 MFC after: 10 days Modified: head/sys/boot/zfs/zfsimpl.c Modified: head/sys/boot/zfs/zfsimpl.c ============================================================================== --- head/sys/boot/zfs/zfsimpl.c Fri May 28 06:49:57 2010 (r208609) +++ head/sys/boot/zfs/zfsimpl.c Fri May 28 07:34:20 2010 (r208610) @@ -958,12 +958,17 @@ zio_read_gang(spa_t *spa, const blkptr_t break; if (!vdev || !vdev->v_read) return (EIO); - if (vdev->v_read(vdev, bp, &zio_gb, offset, SPA_GANGBLOCKSIZE)) + if (vdev->v_read(vdev, NULL, &zio_gb, offset, SPA_GANGBLOCKSIZE)) return (EIO); for (i = 0; i < SPA_GBH_NBLKPTRS; i++) { - if (zio_read(spa, &zio_gb.zg_blkptr[i], buf)) + blkptr_t *gbp = &zio_gb.zg_blkptr[i]; + + if (BP_IS_HOLE(gbp)) + continue; + if (zio_read(spa, gbp, buf)) return (EIO); + buf = (char*)buf + BP_GET_PSIZE(gbp); } return (0); @@ -994,9 +999,8 @@ zio_read(spa_t *spa, const blkptr_t *bp, continue; if (DVA_GET_GANG(dva)) { - printf("ZFS: gang block detected!\n"); if (zio_read_gang(spa, bp, dva, buf)) - return (EIO); + continue; } else { vdevid = DVA_GET_VDEV(dva); offset = DVA_GET_OFFSET(dva); From owner-svn-src-all@FreeBSD.ORG Fri May 28 09:26:54 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6B6AC106567B; Fri, 28 May 2010 09:26:54 +0000 (UTC) (envelope-from jh@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 59CCB8FC08; Fri, 28 May 2010 09:26: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 o4S9Qsch048475; Fri, 28 May 2010 09:26:54 GMT (envelope-from jh@svn.freebsd.org) Received: (from jh@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4S9QsWC048472; Fri, 28 May 2010 09:26:54 GMT (envelope-from jh@svn.freebsd.org) Message-Id: <201005280926.o4S9QsWC048472@svn.freebsd.org> From: Jaakko Heinonen Date: Fri, 28 May 2010 09:26:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208611 - in head/contrib/nvi: docs ex X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 May 2010 09:26:54 -0000 Author: jh Date: Fri May 28 09:26:53 2010 New Revision: 208611 URL: http://svn.freebsd.org/changeset/base/208611 Log: Fix misspelling of "substitution". PR: bin/130874 Submitted by: Yoshihiro Ota Modified: head/contrib/nvi/docs/help head/contrib/nvi/ex/ex_cmd.c Modified: head/contrib/nvi/docs/help ============================================================================== --- head/contrib/nvi/docs/help Fri May 28 07:34:20 2010 (r208610) +++ head/contrib/nvi/docs/help Fri May 28 09:26:53 2010 (r208611) @@ -129,7 +129,7 @@ EX COMMANDS: ^D: scroll lines !: filter lines through commands or run commands #: display numbered lines - &: repeat the last subsitution + &: repeat the last substitution *: execute a buffer <: shift lines left =: display line number Modified: head/contrib/nvi/ex/ex_cmd.c ============================================================================== --- head/contrib/nvi/ex/ex_cmd.c Fri May 28 07:34:20 2010 (r208610) +++ head/contrib/nvi/ex/ex_cmd.c Fri May 28 09:26:53 2010 (r208611) @@ -68,7 +68,7 @@ EXCMDLIST const cmds[] = { {"&", ex_subagain, E_ADDR2, "s", "[line [,line]] & [cgr] [count] [#lp]", - "repeat the last subsitution"}, + "repeat the last substitution"}, /* C_STAR */ {"*", ex_at, 0, "b", From owner-svn-src-all@FreeBSD.ORG Fri May 28 09:30:13 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CB2671065675; Fri, 28 May 2010 09:30:13 +0000 (UTC) (envelope-from jh@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B90188FC08; Fri, 28 May 2010 09:30: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 o4S9UDCa049237; Fri, 28 May 2010 09:30:13 GMT (envelope-from jh@svn.freebsd.org) Received: (from jh@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4S9UDV3049234; Fri, 28 May 2010 09:30:13 GMT (envelope-from jh@svn.freebsd.org) Message-Id: <201005280930.o4S9UDV3049234@svn.freebsd.org> From: Jaakko Heinonen Date: Fri, 28 May 2010 09:30:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208612 - head/contrib/nvi/vi X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 May 2010 09:30:14 -0000 Author: jh Date: Fri May 28 09:30:13 2010 New Revision: 208612 URL: http://svn.freebsd.org/changeset/base/208612 Log: Fixes from NetBSD for nvi visual mode: - Fix handling of ^@ when reading an ex command. Don't try to replay the previous input. - Fix handling of ^C in insert mode and when reading an ex command. Repeating an interrupted input could cause a crash and interrupting ex command input could cause a file corruption. - Fix a bug which causes crashes in file name completion when a file name is longer than the screen width. - When an error occurs in v_txt(), leave the input mode. PR: bin/21089, bin/136393 Obtained from: NetBSD Modified: head/contrib/nvi/vi/v_ex.c head/contrib/nvi/vi/v_txt.c Modified: head/contrib/nvi/vi/v_ex.c ============================================================================== --- head/contrib/nvi/vi/v_ex.c Fri May 28 09:26:53 2010 (r208611) +++ head/contrib/nvi/vi/v_ex.c Fri May 28 09:30:13 2010 (r208612) @@ -428,6 +428,10 @@ v_ex(sp, vp) if (tp->term == TERM_BS) break; + /* If the user changed their mind, return. */ + if (tp->term != TERM_OK) + break; + /* Log the command. */ if (O_STR(sp, O_CEDIT) != NULL && v_ecl_log(sp, tp)) return (1); Modified: head/contrib/nvi/vi/v_txt.c ============================================================================== --- head/contrib/nvi/vi/v_txt.c Fri May 28 09:26:53 2010 (r208611) +++ head/contrib/nvi/vi/v_txt.c Fri May 28 09:30:13 2010 (r208612) @@ -510,15 +510,6 @@ next: if (v_event_get(sp, evp, 0, ec_fla case E_EOF: F_SET(sp, SC_EXIT_FORCE); return (1); - case E_INTERRUPT: - /* - * !!! - * Historically, exited the user from text input - * mode or cancelled a colon command, and returned to command - * mode. It also beeped the terminal, but that seems a bit - * excessive. - */ - goto k_escape; case E_REPAINT: if (vs_repaint(sp, &ev)) return (1); @@ -526,10 +517,37 @@ next: if (v_event_get(sp, evp, 0, ec_fla case E_WRESIZE: /* interrupts the input mode. */ v_emsg(sp, NULL, VIM_WRESIZE); - goto k_escape; + /* FALLTHROUGH */ default: - v_event_err(sp, evp); - goto k_escape; + if (evp->e_event != E_INTERRUPT && evp->e_event != E_WRESIZE) + v_event_err(sp, evp); + /* + * !!! + * Historically, exited the user from text input + * mode or cancelled a colon command, and returned to command + * mode. It also beeped the terminal, but that seems a bit + * excessive. + */ + /* + * If we are recording, morph into key so that + * we can repeat the command safely: there is no way to + * invalidate the repetition of an instance of a command, + * which would be the alternative possibility. + * If we are not recording (most likely on the command line), + * simply discard the input and return to command mode + * so that an INTERRUPT doesn't become for example a file + * completion request. -aymeric + */ + if (LF_ISSET(TXT_RECORD)) { + evp->e_event = E_CHARACTER; + evp->e_c = 033; + evp->e_flags = 0; + evp->e_value = K_ESCAPE; + break; + } else { + tp->term = TERM_ESC; + goto k_escape; + } } /* @@ -539,7 +557,7 @@ next: if (v_event_get(sp, evp, 0, ec_fla * This was not documented as far as I know, and is a great test of vi * clones. */ - if (rcol == 0 && !LF_ISSET(TXT_REPLAY) && evp->e_c == '\0') { + if (LF_ISSET(TXT_RECORD) && rcol == 0 && evp->e_c == '\0') { if (vip->rep == NULL) goto done; @@ -1456,6 +1474,7 @@ done: /* Leave input mode. */ err: alloc_err: + F_CLR(sp, SC_TINPUT); txt_err(sp, &sp->tiq); return (1); } @@ -2216,8 +2235,8 @@ txt_fc_col(sp, argc, argv) /* If the largest file name is too large, just print them. */ if (colwidth > sp->cols) { - p = msg_print(sp, av[0]->bp + prefix, &nf); for (ac = argc, av = argv; ac > 0; --ac, ++av) { + p = msg_print(sp, av[0]->bp + prefix, &nf); (void)ex_printf(sp, "%s\n", p); if (F_ISSET(gp, G_INTERRUPTED)) break; From owner-svn-src-all@FreeBSD.ORG Fri May 28 10:35:44 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D857F1065678; Fri, 28 May 2010 10:35:44 +0000 (UTC) (envelope-from raj@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C82CD8FC1B; Fri, 28 May 2010 10:35: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 o4SAZiHt066746; Fri, 28 May 2010 10:35:44 GMT (envelope-from raj@svn.freebsd.org) Received: (from raj@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4SAZiOm066744; Fri, 28 May 2010 10:35:44 GMT (envelope-from raj@svn.freebsd.org) Message-Id: <201005281035.o4SAZiOm066744@svn.freebsd.org> From: Rafal Jaworowski Date: Fri, 28 May 2010 10:35:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208613 - head/sys/conf X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 May 2010 10:35:44 -0000 Author: raj Date: Fri May 28 10:35:44 2010 New Revision: 208613 URL: http://svn.freebsd.org/changeset/base/208613 Log: Introduce kernel build options for the Flattened Device Tree support. Reviewed by: imp Sponsored by: The FreeBSD Foundation Modified: head/sys/conf/options Modified: head/sys/conf/options ============================================================================== --- head/sys/conf/options Fri May 28 09:30:13 2010 (r208612) +++ head/sys/conf/options Fri May 28 10:35:44 2010 (r208613) @@ -848,3 +848,7 @@ SND_PCM_64 opt_snd.h SND_OLDSTEREO opt_snd.h X86BIOS + +# Flattened device tree options +FDT opt_platform.h +FDT_DTB_STATIC opt_platform.h From owner-svn-src-all@FreeBSD.ORG Fri May 28 10:43:56 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 93D7A1065697; Fri, 28 May 2010 10:43:56 +0000 (UTC) (envelope-from raj@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8228C8FC0A; Fri, 28 May 2010 10:43: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 o4SAhud8068973; Fri, 28 May 2010 10:43:56 GMT (envelope-from raj@svn.freebsd.org) Received: (from raj@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4SAhuam068965; Fri, 28 May 2010 10:43:56 GMT (envelope-from raj@svn.freebsd.org) Message-Id: <201005281043.o4SAhuam068965@svn.freebsd.org> From: Rafal Jaworowski Date: Fri, 28 May 2010 10:43:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208614 - in head/sys: dev/ofw powerpc/ofw X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 May 2010 10:43:56 -0000 Author: raj Date: Fri May 28 10:43:56 2010 New Revision: 208614 URL: http://svn.freebsd.org/changeset/base/208614 Log: Prepare and extend OFW layer for FDT support. o Let OFW_INIT() and OF_init() return status value. o Provide helper routines for 'compatible' property handling. o Only compile OF and OFW code, which is relevant in FDT scenario. o Other minor cosmetics Reviewed by: imp Sponsored by: The FreeBSD Foundation Modified: head/sys/dev/ofw/ofw_bus_subr.c head/sys/dev/ofw/ofw_bus_subr.h head/sys/dev/ofw/ofw_if.m head/sys/dev/ofw/ofw_standard.c head/sys/dev/ofw/openfirm.c head/sys/dev/ofw/openfirm.h head/sys/powerpc/ofw/ofw_real.c Modified: head/sys/dev/ofw/ofw_bus_subr.c ============================================================================== --- head/sys/dev/ofw/ofw_bus_subr.c Fri May 28 10:35:44 2010 (r208613) +++ head/sys/dev/ofw/ofw_bus_subr.c Fri May 28 10:43:56 2010 (r208614) @@ -30,6 +30,7 @@ #include __FBSDID("$FreeBSD$"); +#include "opt_platform.h" #include #include #include @@ -146,6 +147,53 @@ ofw_bus_gen_get_type(device_t bus, devic return (obd->obd_type); } +int +ofw_bus_is_compatible(device_t dev, const char *onecompat) +{ + phandle_t node; + const char *compat; + int len, onelen, l; + + if ((compat = ofw_bus_get_compat(dev)) == NULL) + return (0); + + if ((node = ofw_bus_get_node(dev)) == 0) + return (0); + + /* Get total 'compatible' prop len */ + if ((len = OF_getproplen(node, "compatible")) <= 0) + return (0); + + onelen = strlen(onecompat); + + while (len > 0) { + if (strncasecmp(compat, onecompat, onelen) == 0) + /* Found it. */ + return (1); + + /* Slide to the next sub-string. */ + l = strlen(compat) + 1; + compat += l; + len -= l; + } + return (0); +} + +int +ofw_bus_is_compatible_strict(device_t dev, const char *compatible) +{ + const char *compat; + + if ((compat = ofw_bus_get_compat(dev)) == NULL) + return (0); + + if (strncasecmp(compat, compatible, strlen(compatible)) == 0) + return (1); + + return (0); +} + +#ifndef FDT void ofw_bus_setup_iinfo(phandle_t node, struct ofw_bus_iinfo *ii, int intrsz) { @@ -262,3 +310,4 @@ ofw_bus_search_intrmap(void *intr, int i } return (0); } +#endif /* !FDT */ Modified: head/sys/dev/ofw/ofw_bus_subr.h ============================================================================== --- head/sys/dev/ofw/ofw_bus_subr.h Fri May 28 10:35:44 2010 (r208613) +++ head/sys/dev/ofw/ofw_bus_subr.h Fri May 28 10:43:56 2010 (r208614) @@ -67,4 +67,8 @@ int ofw_bus_lookup_imap(phandle_t, struc int ofw_bus_search_intrmap(void *, int, void *, int, void *, int, void *, void *, void *, int); +/* Helper routine for checking compat prop */ +int ofw_bus_is_compatible(device_t, const char *); +int ofw_bus_is_compatible_strict(device_t, const char *); + #endif /* !_DEV_OFW_OFW_BUS_SUBR_H_ */ Modified: head/sys/dev/ofw/ofw_if.m ============================================================================== --- head/sys/dev/ofw/ofw_if.m Fri May 28 10:35:44 2010 (r208613) +++ head/sys/dev/ofw/ofw_if.m Fri May 28 10:43:56 2010 (r208614) @@ -43,7 +43,7 @@ INTERFACE ofw; * @param _cookie A handle to the client interface, generally the OF * callback routine. */ -METHOD void init { +METHOD int init { ofw_t _ofw; void *_cookie; }; Modified: head/sys/dev/ofw/ofw_standard.c ============================================================================== --- head/sys/dev/ofw/ofw_standard.c Fri May 28 10:35:44 2010 (r208613) +++ head/sys/dev/ofw/ofw_standard.c Fri May 28 10:43:56 2010 (r208614) @@ -70,7 +70,7 @@ __FBSDID("$FreeBSD$"); #include "ofw_if.h" -static void ofw_std_init(ofw_t ofw, void *openfirm); +static int ofw_std_init(ofw_t ofw, void *openfirm); static int ofw_std_test(ofw_t ofw, const char *name); static int ofw_std_interpret(ofw_t ofw, const char *cmd, int nreturns, unsigned long *returns); @@ -150,11 +150,12 @@ static int (*openfirmware)(void *); /* Initializer */ -static void +static int ofw_std_init(ofw_t ofw, void *openfirm) { openfirmware = (int (*)(void *))openfirm; + return (0); } /* Modified: head/sys/dev/ofw/openfirm.c ============================================================================== --- head/sys/dev/ofw/openfirm.c Fri May 28 10:35:44 2010 (r208613) +++ head/sys/dev/ofw/openfirm.c Fri May 28 10:43:56 2010 (r208614) @@ -58,6 +58,8 @@ #include __FBSDID("$FreeBSD$"); +#include "opt_platform.h" + #include #include #include @@ -110,10 +112,11 @@ OF_install(char *name, int prio) } /* Initializer */ -void +int OF_init(void *cookie) { phandle_t chosen; + int rv; ofw_obj = &ofw_kernel_obj; /* @@ -123,14 +126,16 @@ OF_init(void *cookie) kobj_class_compile_static(ofw_def_impl, &ofw_kernel_kops); kobj_init((kobj_t)ofw_obj, ofw_def_impl); - OFW_INIT(ofw_obj, cookie); + rv = OFW_INIT(ofw_obj, cookie); + + if ((chosen = OF_finddevice("/chosen")) > 0) + if (OF_getprop(chosen, "stdout", &stdout, sizeof(stdout)) == -1) + stdout = -1; - if ((chosen = OF_finddevice("/chosen")) == -1) - OF_exit(); - if (OF_getprop(chosen, "stdout", &stdout, sizeof(stdout)) == -1) - stdout = -1; + return (rv); } +#ifndef FDT void OF_printf(const char *fmt, ...) { @@ -154,6 +159,7 @@ OF_test(const char *name) return (OFW_TEST(ofw_obj, name)); } +#endif int OF_interpret(const char *cmd, int nreturns, ...) @@ -228,7 +234,7 @@ OF_getprop(phandle_t package, const char } /* - * Resursively search the node and its parent for the given property, working + * Recursively search the node and its parent for the given property, working * downward from the node to the device tree root. Returns the value of the * first match. */ @@ -315,6 +321,7 @@ OF_package_to_path(phandle_t package, ch return (OFW_PACKAGE_TO_PATH(ofw_obj, package, buf, len)); } +#ifndef FDT /* Call the method in the scope of a given instance. */ int OF_call_method(const char *method, ihandle_t instance, int nargs, int nreturns, @@ -428,3 +435,4 @@ OF_exit() for (;;) /* just in case */ ; } +#endif Modified: head/sys/dev/ofw/openfirm.h ============================================================================== --- head/sys/dev/ofw/openfirm.h Fri May 28 10:35:44 2010 (r208613) +++ head/sys/dev/ofw/openfirm.h Fri May 28 10:43:56 2010 (r208614) @@ -83,7 +83,7 @@ MALLOC_DECLARE(M_OFWPROP); */ boolean_t OF_install(char *name, int prio); -void OF_init(void *cookie); +int OF_init(void *cookie); /* * Known Open Firmware interface names Modified: head/sys/powerpc/ofw/ofw_real.c ============================================================================== --- head/sys/powerpc/ofw/ofw_real.c Fri May 28 10:35:44 2010 (r208613) +++ head/sys/powerpc/ofw/ofw_real.c Fri May 28 10:43:56 2010 (r208614) @@ -76,7 +76,7 @@ __FBSDID("$FreeBSD$"); #include #include "ofw_if.h" -static void ofw_real_init(ofw_t, void *openfirm); +static int ofw_real_init(ofw_t, void *openfirm); static int ofw_real_test(ofw_t, const char *name); static phandle_t ofw_real_peer(ofw_t, phandle_t node); static phandle_t ofw_real_child(ofw_t, phandle_t node); @@ -256,13 +256,14 @@ ofw_real_unmap(cell_t physaddr, void *bu /* Initialiser */ -static void +static int ofw_real_init(ofw_t ofw, void *openfirm) { openfirmware = (int (*)(void *))openfirm; mtx_init(&of_bounce_mtx, "OF Bounce Page", MTX_DEF, 0); of_bounce_virt = NULL; + return (0); } /* From owner-svn-src-all@FreeBSD.ORG Fri May 28 10:51:45 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 45A31106566B; Fri, 28 May 2010 10:51:45 +0000 (UTC) (envelope-from raj@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 340158FC0A; Fri, 28 May 2010 10:51: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 o4SApjMO071248; Fri, 28 May 2010 10:51:45 GMT (envelope-from raj@svn.freebsd.org) Received: (from raj@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4SApjg4071246; Fri, 28 May 2010 10:51:45 GMT (envelope-from raj@svn.freebsd.org) Message-Id: <201005281051.o4SApjg4071246@svn.freebsd.org> From: Rafal Jaworowski Date: Fri, 28 May 2010 10:51:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208615 - head/sys/dev/ofw X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 May 2010 10:51:45 -0000 Author: raj Date: Fri May 28 10:51:44 2010 New Revision: 208615 URL: http://svn.freebsd.org/changeset/base/208615 Log: Initial implementation of the OFW i/f methods for FDT back-end. Reviewed by: imp Sponsored by: The FreeBSD Foundation Added: head/sys/dev/ofw/ofw_fdt.c (contents, props changed) Added: head/sys/dev/ofw/ofw_fdt.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/sys/dev/ofw/ofw_fdt.c Fri May 28 10:51:44 2010 (r208615) @@ -0,0 +1,458 @@ +/*- + * Copyright (c) 2009-2010 The FreeBSD Foundation + * All rights reserved. + * + * This software was developed by Semihalf under sponsorship from + * the FreeBSD Foundation. + * + * 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 AUTHOR 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 AUTHOR 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. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include + +#include + +#include + +#include +#include +#include + +#include "ofw_if.h" + +#ifdef DEBUG +#define debugf(fmt, args...) do { printf("%s(): ", __func__); \ + printf(fmt,##args); } while (0) +#else +#define debugf(fmt, args...) +#endif + +static int ofw_fdt_init(ofw_t, void *); +static phandle_t ofw_fdt_peer(ofw_t, phandle_t); +static phandle_t ofw_fdt_child(ofw_t, phandle_t); +static phandle_t ofw_fdt_parent(ofw_t, phandle_t); +static phandle_t ofw_fdt_instance_to_package(ofw_t, ihandle_t); +static ssize_t ofw_fdt_getproplen(ofw_t, phandle_t, const char *); +static ssize_t ofw_fdt_getprop(ofw_t, phandle_t, const char *, void *, size_t); +static int ofw_fdt_nextprop(ofw_t, phandle_t, const char *, char *, size_t); +static int ofw_fdt_setprop(ofw_t, phandle_t, const char *, const void *, + size_t); +static ssize_t ofw_fdt_canon(ofw_t, const char *, char *, size_t); +static phandle_t ofw_fdt_finddevice(ofw_t, const char *); +static ssize_t ofw_fdt_instance_to_path(ofw_t, ihandle_t, char *, size_t); +static ssize_t ofw_fdt_package_to_path(ofw_t, phandle_t, char *, size_t); +static int ofw_fdt_interpret(ofw_t, const char *, int, unsigned long *); + +static ofw_method_t ofw_fdt_methods[] = { + OFWMETHOD(ofw_init, ofw_fdt_init), + OFWMETHOD(ofw_peer, ofw_fdt_peer), + OFWMETHOD(ofw_child, ofw_fdt_child), + OFWMETHOD(ofw_parent, ofw_fdt_parent), + OFWMETHOD(ofw_instance_to_package, ofw_fdt_instance_to_package), + OFWMETHOD(ofw_getproplen, ofw_fdt_getproplen), + OFWMETHOD(ofw_getprop, ofw_fdt_getprop), + OFWMETHOD(ofw_nextprop, ofw_fdt_nextprop), + OFWMETHOD(ofw_setprop, ofw_fdt_setprop), + OFWMETHOD(ofw_canon, ofw_fdt_canon), + OFWMETHOD(ofw_finddevice, ofw_fdt_finddevice), + OFWMETHOD(ofw_instance_to_path, ofw_fdt_instance_to_path), + OFWMETHOD(ofw_package_to_path, ofw_fdt_package_to_path), + OFWMETHOD(ofw_interpret, ofw_fdt_interpret), + { 0, 0 } +}; + +static ofw_def_t ofw_fdt = { + OFW_FDT, + ofw_fdt_methods, + 0 +}; +OFW_DEF(ofw_fdt); + +static void *fdtp = NULL; + +static int +ofw_fdt_init(ofw_t ofw, void *data) +{ + int err; + + /* Check FDT blob integrity */ + if ((err = fdt_check_header(data)) != 0) + return (err); + + fdtp = data; + return (0); +} + +/* + * Device tree functions + */ + +static int +fdt_phandle_offset(phandle_t p) +{ + const char *dt_struct; + int offset; + + dt_struct = (const char *)fdtp + fdt_off_dt_struct(fdtp); + + if (((const char *)p < dt_struct) || + (const char *)p > (dt_struct + fdt_size_dt_struct(fdtp))) + return (-1); + + offset = (const char *)p - dt_struct; + if (offset < 0) + return (-1); + + return (offset); +} + +/* Return the next sibling of this node or 0. */ +static phandle_t +ofw_fdt_peer(ofw_t ofw, phandle_t node) +{ + phandle_t p; + int depth, offset; + + if (node == 0) { + /* Find root node */ + offset = fdt_path_offset(fdtp, "/"); + p = (phandle_t)fdt_offset_ptr(fdtp, offset, sizeof(p)); + + return (p); + } + + offset = fdt_phandle_offset(node); + if (offset < 0) + return (0); + + for (depth = 1, offset = fdt_next_node(fdtp, offset, &depth); + offset >= 0; + offset = fdt_next_node(fdtp, offset, &depth)) { + if (depth < 0) + return (0); + if (depth == 1) { + p = (phandle_t)fdt_offset_ptr(fdtp, offset, sizeof(p)); + return (p); + } + } + + return (0); +} + +/* Return the first child of this node or 0. */ +static phandle_t +ofw_fdt_child(ofw_t ofw, phandle_t node) +{ + phandle_t p; + int depth, offset; + + offset = fdt_phandle_offset(node); + if (offset < 0) + return (0); + + for (depth = 0, offset = fdt_next_node(fdtp, offset, &depth); + (offset >= 0) && (depth > 0); + offset = fdt_next_node(fdtp, offset, &depth)) { + if (depth < 0) + return (0); + if (depth == 1) { + p = (phandle_t)fdt_offset_ptr(fdtp, offset, sizeof(p)); + return (p); + } + } + + return (0); +} + +/* Return the parent of this node or 0. */ +static phandle_t +ofw_fdt_parent(ofw_t ofw, phandle_t node) +{ + phandle_t p; + int offset, paroffset; + + offset = fdt_phandle_offset(node); + if (offset < 0) + return (0); + + paroffset = fdt_parent_offset(fdtp, offset); + p = (phandle_t)fdt_offset_ptr(fdtp, paroffset, sizeof(phandle_t)); + return (p); +} + +/* Return the package handle that corresponds to an instance handle. */ +static phandle_t +ofw_fdt_instance_to_package(ofw_t ofw, ihandle_t instance) +{ + phandle_t p; + int offset; + + /* + * Note: FDT does not have the notion of instances, but we somewhat + * abuse the semantics and let treat as 'instance' the internal + * 'phandle' prop, so that ofw I/F consumers have a uniform way of + * translation between internal representation (which appear in some + * contexts as property values) and effective phandles. + */ + offset = fdt_node_offset_by_phandle(fdtp, instance); + if (offset < 0) + return (0); + + p = (phandle_t)fdt_offset_ptr(fdtp, offset, sizeof(phandle_t)); + return (p); +} + +/* Get the length of a property of a package. */ +static ssize_t +ofw_fdt_getproplen(ofw_t ofw, phandle_t package, const char *propname) +{ + const struct fdt_property *prop; + int offset, len; + + offset = fdt_phandle_offset(package); + if (offset < 0) + return (0); + + if (strcmp(propname, "name") == 0) { + /* Emulate the 'name' property */ + fdt_get_name(fdtp, offset, &len); + return (len + 1); + } + + len = 0; + prop = fdt_get_property(fdtp, offset, propname, &len); + + return (len); +} + +/* Get the value of a property of a package. */ +static ssize_t +ofw_fdt_getprop(ofw_t ofw, phandle_t package, const char *propname, void *buf, + size_t buflen) +{ + const void *prop; + const char *name; + int len, offset; + + offset = fdt_phandle_offset(package); + if (offset < 0) + return (0); + + if (strcmp(propname, "name") == 0) { + /* Emulate the 'name' property */ + name = fdt_get_name(fdtp, offset, &len); + strncpy(buf, name, buflen); + if (len + 1 > buflen) + len = buflen; + return (len + 1); + } + + prop = fdt_getprop(fdtp, offset, propname, &len); + if (prop == NULL) + return (0); + + if (len > buflen) + len = buflen; + bcopy(prop, buf, len); + return (len); +} + +static int +fdt_nextprop(int offset, char *buf, size_t size) +{ + const struct fdt_property *prop; + const char *name; + uint32_t tag; + int nextoffset, depth; + + depth = 0; + tag = fdt_next_tag(fdtp, offset, &nextoffset); + + /* Find the next prop */ + do { + offset = nextoffset; + tag = fdt_next_tag(fdtp, offset, &nextoffset); + + if (tag == FDT_BEGIN_NODE) + depth++; + else if (tag == FDT_END_NODE) + depth--; + else if ((tag == FDT_PROP) && (depth == 0)) { + prop = + (const struct fdt_property *)fdt_offset_ptr(fdtp, + offset, sizeof(*prop)); + name = fdt_string(fdtp, + fdt32_to_cpu(prop->nameoff)); + strncpy(buf, name, size); + return (strlen(name)); + } else + depth = -1; + } while (depth >= 0); + + return (0); +} + +/* + * Get the next property of a package. Return the actual len of retrieved + * prop name. + */ +static int +ofw_fdt_nextprop(ofw_t ofw, phandle_t package, const char *previous, char *buf, + size_t size) +{ + const struct fdt_property *prop; + int offset, rv; + + offset = fdt_phandle_offset(package); + if (offset < 0) + return (0); + + if (previous == NULL) + /* Find the first prop in the node */ + return (fdt_nextprop(offset, buf, size)); + + /* + * Advance to the previous prop + */ + prop = fdt_get_property(fdtp, offset, previous, NULL); + if (prop == NULL) + return (0); + + offset = fdt_phandle_offset((phandle_t)prop); + rv = fdt_nextprop(offset, buf, size); + return (rv); +} + +/* Set the value of a property of a package. */ +static int +ofw_fdt_setprop(ofw_t ofw, phandle_t package, const char *propname, + const void *buf, size_t len) +{ + int offset; + + offset = fdt_phandle_offset(package); + if (offset < 0) + return (-1); + + return (fdt_setprop_inplace(fdtp, offset, propname, buf, len)); +} + +/* Convert a device specifier to a fully qualified pathname. */ +static ssize_t +ofw_fdt_canon(ofw_t ofw, const char *device, char *buf, size_t len) +{ + + return (-1); +} + +/* Return a package handle for the specified device. */ +static phandle_t +ofw_fdt_finddevice(ofw_t ofw, const char *device) +{ + phandle_t p; + int offset; + + offset = fdt_path_offset(fdtp, device); + + p = (phandle_t)fdt_offset_ptr(fdtp, offset, sizeof(p)); + + return (p); +} + +/* Return the fully qualified pathname corresponding to an instance. */ +static ssize_t +ofw_fdt_instance_to_path(ofw_t ofw, ihandle_t instance, char *buf, size_t len) +{ + + return (-1); +} + +/* Return the fully qualified pathname corresponding to a package. */ +static ssize_t +ofw_fdt_package_to_path(ofw_t ofw, phandle_t package, char *buf, size_t len) +{ + + return (-1); +} + +static int +ofw_fdt_fixup(ofw_t ofw) +{ +#define FDT_MODEL_LEN 80 + char model[FDT_MODEL_LEN]; + phandle_t root; + ssize_t len; + int i; + + if ((root = ofw_fdt_finddevice(ofw, "/")) == 0) + return (ENODEV); + + if ((len = ofw_fdt_getproplen(ofw, root, "model")) <= 0) + return (0); + + bzero(model, FDT_MODEL_LEN); + if (ofw_fdt_getprop(ofw, root, "model", model, FDT_MODEL_LEN) <= 0) + return (0); + + /* + * Search fixup table and call handler if appropriate. + */ + for (i = 0; fdt_fixup_table[i].model != NULL; i++) { + if (strncmp(model, fdt_fixup_table[i].model, + FDT_MODEL_LEN) != 0) + continue; + + if (fdt_fixup_table[i].handler != NULL) + (*fdt_fixup_table[i].handler)(root); + } + + return (0); +} + +static int +ofw_fdt_interpret(ofw_t ofw, const char *cmd, int nret, unsigned long *retvals) +{ + int rv; + + /* + * Note: FDT does not have the possibility to 'interpret' commands, + * but we abuse the interface a bit to use it for doing non-standard + * operations on the device tree blob. + * + * Currently the only supported 'command' is to trigger performing + * fixups. + */ + if (strncmp("perform-fixup", cmd, 13) != 0) + return (0); + + rv = ofw_fdt_fixup(ofw); + if (nret > 0) + retvals[0] = rv; + + return (rv); +} From owner-svn-src-all@FreeBSD.ORG Fri May 28 12:05:57 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 08079106566C; Fri, 28 May 2010 12:05:57 +0000 (UTC) (envelope-from jchandra@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id EB8B68FC12; Fri, 28 May 2010 12:05: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 o4SC5u2M087604; Fri, 28 May 2010 12:05:56 GMT (envelope-from jchandra@svn.freebsd.org) Received: (from jchandra@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4SC5uPN087602; Fri, 28 May 2010 12:05:56 GMT (envelope-from jchandra@svn.freebsd.org) Message-Id: <201005281205.o4SC5uPN087602@svn.freebsd.org> From: "Jayachandran C." Date: Fri, 28 May 2010 12:05:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208616 - head/sys/mips/mips X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 May 2010 12:05:57 -0000 Author: jchandra Date: Fri May 28 12:05:56 2010 New Revision: 208616 URL: http://svn.freebsd.org/changeset/base/208616 Log: Fix lock order reversal, unlock page queue and pmap locks before calling uma_zfree(). Also if needed, acquire page queue lock before modifying pte page attributes. Approved by: rrs (mentor) Modified: head/sys/mips/mips/pmap.c Modified: head/sys/mips/mips/pmap.c ============================================================================== --- head/sys/mips/mips/pmap.c Fri May 28 10:51:44 2010 (r208615) +++ head/sys/mips/mips/pmap.c Fri May 28 12:05:56 2010 (r208616) @@ -885,8 +885,12 @@ _pmap_unwire_pte_hold(pmap_t pmap, vm_pa /* * If the page is finally unwired, simply free it. */ - pmap_release_pte_page(m); atomic_subtract_int(&cnt.v_wire_count, 1); + PMAP_UNLOCK(pmap); + vm_page_unlock_queues(); + pmap_release_pte_page(m); + vm_page_lock_queues(); + PMAP_LOCK(pmap); return (1); } @@ -1007,9 +1011,14 @@ pmap_alloc_pte_page(pmap_t pmap, unsigne paddr = MIPS_KSEG0_TO_PHYS(va); m = PHYS_TO_VM_PAGE(paddr); + if (!locked) + vm_page_lock_queues(); m->pindex = index; m->valid = VM_PAGE_BITS_ALL; m->wire_count = 1; + if (!locked) + vm_page_unlock_queues(); + atomic_add_int(&cnt.v_wire_count, 1); *vap = (vm_offset_t)va; return (m); From owner-svn-src-all@FreeBSD.ORG Fri May 28 16:57:58 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 855221065679; Fri, 28 May 2010 16:57:58 +0000 (UTC) (envelope-from yanefbsd@gmail.com) Received: from mail-vw0-f54.google.com (mail-vw0-f54.google.com [209.85.212.54]) by mx1.freebsd.org (Postfix) with ESMTP id E876D8FC14; Fri, 28 May 2010 16:57:57 +0000 (UTC) Received: by vws12 with SMTP id 12so1493123vws.13 for ; Fri, 28 May 2010 09:57:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=A1QDlK8lif9rHBpj1e1cMipQ/33WbrZDtUI9WNhsoVs=; b=V5Q/MNAsN4y8Qj4C/NTy+sjBl9TNTPeB0YS5xy552XB1RVtgTSDdYLBCPC2plS8sap epw8nB4RQdqXppGHiZxJ47JFtvo4wF2EmBPxh2n76Raq2yM7UIBgmSH63cHqCa27BOpC LE6Rl6385YZzTTqJJn0tBgvmz3XCBiaqIeg2o= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=pm4B6oqdkyb0pFYPQG2ekj9re4178n+xcVY3ns4E14NleDpQZDLgICVf+gfictZrnj SmyGVNfiSUK6HbpkxMHuuZXO2ktlE+omav6KISU5TGlxZNOywSGNbu6cfyZB9lxEibo8 mCSIh2v7lOLt3CPCf+2qiiLtBSecOxpuuoZvQ= MIME-Version: 1.0 Received: by 10.224.53.131 with SMTP id m3mr350996qag.266.1275065876969; Fri, 28 May 2010 09:57:56 -0700 (PDT) Received: by 10.229.190.83 with HTTP; Fri, 28 May 2010 09:57:56 -0700 (PDT) In-Reply-To: <201005281035.o4SAZiOm066744@svn.freebsd.org> References: <201005281035.o4SAZiOm066744@svn.freebsd.org> Date: Fri, 28 May 2010 09:57:56 -0700 Message-ID: From: Garrett Cooper To: Rafal Jaworowski Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r208613 - head/sys/conf X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 May 2010 16:57:58 -0000 On Fri, May 28, 2010 at 3:35 AM, Rafal Jaworowski wrote: > Author: raj > Date: Fri May 28 10:35:44 2010 > New Revision: 208613 > URL: http://svn.freebsd.org/changeset/base/208613 > > Log: > =A0Introduce kernel build options for the Flattened Device Tree support. > > =A0Reviewed by: =A0imp > =A0Sponsored by: The FreeBSD Foundation > > Modified: > =A0head/sys/conf/options > > Modified: head/sys/conf/options > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D > --- head/sys/conf/options =A0 =A0 =A0 Fri May 28 09:30:13 2010 =A0 =A0 = =A0 =A0(r208612) > +++ head/sys/conf/options =A0 =A0 =A0 Fri May 28 10:35:44 2010 =A0 =A0 = =A0 =A0(r208613) > @@ -848,3 +848,7 @@ SND_PCM_64 =A0 =A0 =A0 =A0 =A0opt_snd.h > =A0SND_OLDSTEREO =A0 =A0 =A0 =A0 =A0opt_snd.h > > =A0X86BIOS > + > +# Flattened device tree options > +FDT =A0 =A0 =A0 =A0 =A0 =A0opt_platform.h > +FDT_DTB_STATIC opt_platform.h Wewt -- awesome work guys...! Thanks, -Garrett From owner-svn-src-all@FreeBSD.ORG Fri May 28 17:50:24 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9E66D1065675; Fri, 28 May 2010 17:50:24 +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 741198FC14; Fri, 28 May 2010 17:50:24 +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 o4SHoOhf064719; Fri, 28 May 2010 17:50:24 GMT (envelope-from jhb@svn.freebsd.org) Received: (from jhb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4SHoOE6064714; Fri, 28 May 2010 17:50:24 GMT (envelope-from jhb@svn.freebsd.org) Message-Id: <201005281750.o4SHoOE6064714@svn.freebsd.org> From: John Baldwin Date: Fri, 28 May 2010 17:50:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208621 - in head/sys: amd64/amd64 i386/i386 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 May 2010 17:50:24 -0000 Author: jhb Date: Fri May 28 17:50:24 2010 New Revision: 208621 URL: http://svn.freebsd.org/changeset/base/208621 Log: Defer initializing machine checks for the boot CPU until the local APIC is fully configured. MFC after: 1 month Modified: head/sys/amd64/amd64/machdep.c head/sys/amd64/amd64/mca.c head/sys/i386/i386/machdep.c head/sys/i386/i386/mca.c Modified: head/sys/amd64/amd64/machdep.c ============================================================================== --- head/sys/amd64/amd64/machdep.c Fri May 28 15:45:17 2010 (r208620) +++ head/sys/amd64/amd64/machdep.c Fri May 28 17:50:24 2010 (r208621) @@ -285,7 +285,6 @@ cpu_startup(dummy) vm_pager_bufferinit(); cpu_setregs(); - mca_init(); } /* Modified: head/sys/amd64/amd64/mca.c ============================================================================== --- head/sys/amd64/amd64/mca.c Fri May 28 15:45:17 2010 (r208620) +++ head/sys/amd64/amd64/mca.c Fri May 28 17:50:24 2010 (r208621) @@ -789,6 +789,19 @@ mca_init(void) load_cr4(rcr4() | CR4_MCE); } +/* + * The machine check registers for the BSP cannot be initialized until + * the local APIC is initialized. This happens at SI_SUB_CPU, + * SI_ORDER_SECOND. + */ +static void +mca_init_bsp(void *arg __unused) +{ + + mca_init(); +} +SYSINIT(mca_init_bsp, SI_SUB_CPU, SI_ORDER_ANY, mca_init_bsp, NULL); + /* Called when a machine check exception fires. */ int mca_intr(void) Modified: head/sys/i386/i386/machdep.c ============================================================================== --- head/sys/i386/i386/machdep.c Fri May 28 15:45:17 2010 (r208620) +++ head/sys/i386/i386/machdep.c Fri May 28 17:50:24 2010 (r208621) @@ -328,7 +328,6 @@ cpu_startup(dummy) #ifndef XEN cpu_setregs(); #endif - mca_init(); } /* Modified: head/sys/i386/i386/mca.c ============================================================================== --- head/sys/i386/i386/mca.c Fri May 28 15:45:17 2010 (r208620) +++ head/sys/i386/i386/mca.c Fri May 28 17:50:24 2010 (r208621) @@ -812,6 +812,19 @@ mca_init(void) load_cr4(rcr4() | CR4_MCE); } +/* + * The machine check registers for the BSP cannot be initialized until + * the local APIC is initialized. This happens at SI_SUB_CPU, + * SI_ORDER_SECOND. + */ +static void +mca_init_bsp(void *arg __unused) +{ + + mca_init(); +} +SYSINIT(mca_init_bsp, SI_SUB_CPU, SI_ORDER_ANY, mca_init_bsp, NULL); + /* Called when a machine check exception fires. */ int mca_intr(void) From owner-svn-src-all@FreeBSD.ORG Fri May 28 17:50:36 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 445E1106566C; Fri, 28 May 2010 17:50:36 +0000 (UTC) (envelope-from marcel@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 33F078FC1A; Fri, 28 May 2010 17:50: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 o4SHoasc064818; Fri, 28 May 2010 17:50:36 GMT (envelope-from marcel@svn.freebsd.org) Received: (from marcel@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4SHoaC5064816; Fri, 28 May 2010 17:50:36 GMT (envelope-from marcel@svn.freebsd.org) Message-Id: <201005281750.o4SHoaC5064816@svn.freebsd.org> From: Marcel Moolenaar Date: Fri, 28 May 2010 17:50:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208622 - head/release/ia64 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 May 2010 17:50:36 -0000 Author: marcel Date: Fri May 28 17:50:35 2010 New Revision: 208622 URL: http://svn.freebsd.org/changeset/base/208622 Log: The EFI system partition used to make the CD image bootable is running out of space. Bump it up... Modified: head/release/ia64/mkisoimages.sh Modified: head/release/ia64/mkisoimages.sh ============================================================================== --- head/release/ia64/mkisoimages.sh Fri May 28 17:50:24 2010 (r208621) +++ head/release/ia64/mkisoimages.sh Fri May 28 17:50:35 2010 (r208622) @@ -67,7 +67,7 @@ EFIPART=efipart.sys # To create a bootable CD under EFI, the boot image should be an EFI # system partition. if [ $bootable = yes ]; then - EFISZ=40960 + EFISZ=65536 MNT=/mnt dd if=/dev/zero of=$BASE/$EFIPART count=$EFISZ md=`mdconfig -a -t vnode -f $BASE/$EFIPART` From owner-svn-src-all@FreeBSD.ORG Fri May 28 18:15:28 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6E3401065670; Fri, 28 May 2010 18:15:28 +0000 (UTC) (envelope-from zml@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 52E5D8FC19; Fri, 28 May 2010 18:15: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 o4SIFSkZ070285; Fri, 28 May 2010 18:15:28 GMT (envelope-from zml@svn.freebsd.org) Received: (from zml@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4SIFSWr070281; Fri, 28 May 2010 18:15:28 GMT (envelope-from zml@svn.freebsd.org) Message-Id: <201005281815.o4SIFSWr070281@svn.freebsd.org> From: Zachary Loafman Date: Fri, 28 May 2010 18:15:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208623 - in head/sys: kern sys X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 May 2010 18:15:28 -0000 Author: zml Date: Fri May 28 18:15:28 2010 New Revision: 208623 URL: http://svn.freebsd.org/changeset/base/208623 Log: Revert r207439 and solve the problem differently. The task handler ta_func may free the task structure, so no references to its members are valid after the handler has been called. Using a per-queue member and having waits longer than strictly necessary was suggested by jhb. Submitted by: Matthew Fleming Reviewed by: zml, jhb Modified: head/sys/kern/subr_taskqueue.c head/sys/sys/_task.h head/sys/sys/taskqueue.h Modified: head/sys/kern/subr_taskqueue.c ============================================================================== --- head/sys/kern/subr_taskqueue.c Fri May 28 17:50:35 2010 (r208622) +++ head/sys/kern/subr_taskqueue.c Fri May 28 18:15:28 2010 (r208623) @@ -56,6 +56,7 @@ struct taskqueue { int tq_tcount; int tq_spin; int tq_flags; + int tq_tasks_running; }; #define TQ_FLAGS_ACTIVE (1 << 0) @@ -232,13 +233,13 @@ taskqueue_run(struct taskqueue *queue) STAILQ_REMOVE_HEAD(&queue->tq_queue, ta_link); pending = task->ta_pending; task->ta_pending = 0; - task->ta_flags |= TA_FLAGS_RUNNING; + queue->tq_tasks_running++; TQ_UNLOCK(queue); task->ta_func(task->ta_context, pending); TQ_LOCK(queue); - task->ta_flags &= ~TA_FLAGS_RUNNING; + queue->tq_tasks_running--; wakeup(task); } @@ -255,16 +256,14 @@ taskqueue_drain(struct taskqueue *queue, { if (queue->tq_spin) { /* XXX */ mtx_lock_spin(&queue->tq_mutex); - while (task->ta_pending != 0 || - (task->ta_flags & TA_FLAGS_RUNNING) != 0) + while (task->ta_pending != 0 || queue->tq_tasks_running > 0) msleep_spin(task, &queue->tq_mutex, "-", 0); mtx_unlock_spin(&queue->tq_mutex); } else { WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, __func__); mtx_lock(&queue->tq_mutex); - while (task->ta_pending != 0 || - (task->ta_flags & TA_FLAGS_RUNNING) != 0) + while (task->ta_pending != 0 || queue->tq_tasks_running > 0) msleep(task, &queue->tq_mutex, PWAIT, "-", 0); mtx_unlock(&queue->tq_mutex); } Modified: head/sys/sys/_task.h ============================================================================== --- head/sys/sys/_task.h Fri May 28 17:50:35 2010 (r208622) +++ head/sys/sys/_task.h Fri May 28 18:15:28 2010 (r208623) @@ -45,8 +45,6 @@ typedef void task_fn_t(void *context, in struct task { STAILQ_ENTRY(task) ta_link; /* (q) link for queue */ - u_int ta_flags; /* (q) state of this task */ -#define TA_FLAGS_RUNNING 0x01 u_short ta_pending; /* (q) count times queued */ u_short ta_priority; /* (c) Priority */ task_fn_t *ta_func; /* (c) task handler */ Modified: head/sys/sys/taskqueue.h ============================================================================== --- head/sys/sys/taskqueue.h Fri May 28 17:50:35 2010 (r208622) +++ head/sys/sys/taskqueue.h Fri May 28 18:15:28 2010 (r208623) @@ -75,7 +75,6 @@ void taskqueue_thread_enqueue(void *cont (task)->ta_priority = (priority); \ (task)->ta_func = (func); \ (task)->ta_context = (context); \ - (task)->ta_flags = 0; \ } while (0) /* From owner-svn-src-all@FreeBSD.ORG Fri May 28 18:15:35 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2DAEC106576F; Fri, 28 May 2010 18:15:34 +0000 (UTC) (envelope-from zml@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A04008FC12; Fri, 28 May 2010 18:15: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 o4SIFYBP070357; Fri, 28 May 2010 18:15:34 GMT (envelope-from zml@svn.freebsd.org) Received: (from zml@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4SIFYY4070355; Fri, 28 May 2010 18:15:34 GMT (envelope-from zml@svn.freebsd.org) Message-Id: <201005281815.o4SIFYY4070355@svn.freebsd.org> From: Zachary Loafman Date: Fri, 28 May 2010 18:15:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208624 - head/sys/kern X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 May 2010 18:15:35 -0000 Author: zml Date: Fri May 28 18:15:34 2010 New Revision: 208624 URL: http://svn.freebsd.org/changeset/base/208624 Log: Avoid a wakeup(9) if we can be sure no one is waiting on the task. Submitted by: Matthew Fleming Reviewed by: zml, jhb Modified: head/sys/kern/subr_taskqueue.c Modified: head/sys/kern/subr_taskqueue.c ============================================================================== --- head/sys/kern/subr_taskqueue.c Fri May 28 18:15:28 2010 (r208623) +++ head/sys/kern/subr_taskqueue.c Fri May 28 18:15:34 2010 (r208624) @@ -57,6 +57,7 @@ struct taskqueue { int tq_spin; int tq_flags; int tq_tasks_running; + int tq_task_waiters; }; #define TQ_FLAGS_ACTIVE (1 << 0) @@ -240,7 +241,8 @@ taskqueue_run(struct taskqueue *queue) TQ_LOCK(queue); queue->tq_tasks_running--; - wakeup(task); + if (queue->tq_task_waiters > 0) + wakeup(task); } /* @@ -256,15 +258,21 @@ taskqueue_drain(struct taskqueue *queue, { if (queue->tq_spin) { /* XXX */ mtx_lock_spin(&queue->tq_mutex); - while (task->ta_pending != 0 || queue->tq_tasks_running > 0) + while (task->ta_pending != 0 || queue->tq_tasks_running > 0) { + queue->tq_task_waiters++; msleep_spin(task, &queue->tq_mutex, "-", 0); + queue->tq_task_waiters--; + } mtx_unlock_spin(&queue->tq_mutex); } else { WITNESS_WARN(WARN_GIANTOK | WARN_SLEEPOK, NULL, __func__); mtx_lock(&queue->tq_mutex); - while (task->ta_pending != 0 || queue->tq_tasks_running > 0) + while (task->ta_pending != 0 || queue->tq_tasks_running > 0) { + queue->tq_task_waiters++; msleep(task, &queue->tq_mutex, PWAIT, "-", 0); + queue->tq_task_waiters--; + } mtx_unlock(&queue->tq_mutex); } } From owner-svn-src-all@FreeBSD.ORG Fri May 28 18:39:16 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A04B4106567A; Fri, 28 May 2010 18:39:16 +0000 (UTC) (envelope-from ed@hoeg.nl) Received: from mx0.hoeg.nl (mx0.hoeg.nl [IPv6:2001:4dd0:ff41::b23f:aa]) by mx1.freebsd.org (Postfix) with ESMTP id 5E9698FC2A; Fri, 28 May 2010 18:39:16 +0000 (UTC) Received: by mx0.hoeg.nl (Postfix, from userid 1000) id 0C6C02A28CBE; Fri, 28 May 2010 20:39:15 +0200 (CEST) Date: Fri, 28 May 2010 20:39:15 +0200 From: Ed Schouten To: Roman Divacky Message-ID: <20100528183915.GN56080@hoeg.nl> References: <201005271515.o4RFFx0I008237@svn.freebsd.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="0iSpYRf9rOurbk0+" Content-Disposition: inline In-Reply-To: <201005271515.o4RFFx0I008237@svn.freebsd.org> User-Agent: Mutt/1.5.20 (2009-06-14) Cc: svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-vendor@freebsd.org Subject: Re: svn commit: r208599 - in vendor/llvm/dist: . autoconf docs docs/CommandGuide docs/tutorial include/llvm include/llvm/ADT include/llvm/Analysis include/llvm/CodeGen include/llvm/Config include/llvm/... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 May 2010 18:39:16 -0000 --0iSpYRf9rOurbk0+ Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable * Roman Divacky wrote: > Log: > Update LLVM to r104832. So is there any chance we can start tagging LLVM snapshots again? Tags in SVN are basically free. --=20 Ed Schouten WWW: http://80386.nl/ --0iSpYRf9rOurbk0+ Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.14 (FreeBSD) iEYEARECAAYFAkwADdMACgkQ52SDGA2eCwVZIwCfeXS7wPomE0kl7buMNJUvlAiB nIgAnjQ5d2crAbaYue6PlWfDI/p50DEf =02e2 -----END PGP SIGNATURE----- --0iSpYRf9rOurbk0+-- From owner-svn-src-all@FreeBSD.ORG Fri May 28 18:46:49 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2BA591065670; Fri, 28 May 2010 18:46:49 +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 1637D8FC12; Fri, 28 May 2010 18:46:49 +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 o4SIkn7P077448; Fri, 28 May 2010 18:46:49 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4SIkmtP077438; Fri, 28 May 2010 18:46:48 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201005281846.o4SIkmtP077438@svn.freebsd.org> From: Jung-uk Kim Date: Fri, 28 May 2010 18:46:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor-sys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208625 - in vendor-sys/acpica/dist: . common compiler debugger disassembler dispatcher events executer hardware include namespace os_specific/service_layers tools/acpiexec tools/acpisr... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 May 2010 18:46:49 -0000 Author: jkim Date: Fri May 28 18:46:48 2010 New Revision: 208625 URL: http://svn.freebsd.org/changeset/base/208625 Log: Import ACPICA 20100528. Added: vendor-sys/acpica/dist/compiler/dtcompile.c (contents, props changed) vendor-sys/acpica/dist/compiler/dtcompiler.h (contents, props changed) vendor-sys/acpica/dist/compiler/dtfield.c (contents, props changed) vendor-sys/acpica/dist/compiler/dtio.c (contents, props changed) vendor-sys/acpica/dist/compiler/dtsubtable.c (contents, props changed) vendor-sys/acpica/dist/compiler/dttable.c (contents, props changed) vendor-sys/acpica/dist/compiler/dtutils.c (contents, props changed) Modified: vendor-sys/acpica/dist/changes.txt vendor-sys/acpica/dist/common/adisasm.c vendor-sys/acpica/dist/common/adwalk.c vendor-sys/acpica/dist/common/dmextern.c vendor-sys/acpica/dist/common/dmrestag.c vendor-sys/acpica/dist/common/dmtable.c vendor-sys/acpica/dist/common/dmtbdump.c vendor-sys/acpica/dist/common/dmtbinfo.c vendor-sys/acpica/dist/compiler/Makefile vendor-sys/acpica/dist/compiler/aslanalyze.c vendor-sys/acpica/dist/compiler/aslcompile.c vendor-sys/acpica/dist/compiler/aslcompiler.h vendor-sys/acpica/dist/compiler/aslcompiler.l vendor-sys/acpica/dist/compiler/aslcompiler.y vendor-sys/acpica/dist/compiler/asldefine.h vendor-sys/acpica/dist/compiler/aslerror.c vendor-sys/acpica/dist/compiler/aslfiles.c vendor-sys/acpica/dist/compiler/aslglobal.h vendor-sys/acpica/dist/compiler/asllookup.c vendor-sys/acpica/dist/compiler/aslmain.c vendor-sys/acpica/dist/compiler/aslopt.c vendor-sys/acpica/dist/compiler/aslpredef.c vendor-sys/acpica/dist/compiler/aslstartup.c vendor-sys/acpica/dist/compiler/asltransform.c vendor-sys/acpica/dist/compiler/asltree.c vendor-sys/acpica/dist/compiler/asltypes.h vendor-sys/acpica/dist/compiler/aslutils.c vendor-sys/acpica/dist/debugger/dbcmds.c vendor-sys/acpica/dist/debugger/dbdisply.c vendor-sys/acpica/dist/debugger/dbexec.c vendor-sys/acpica/dist/debugger/dbfileio.c vendor-sys/acpica/dist/debugger/dbhistry.c vendor-sys/acpica/dist/debugger/dbinput.c vendor-sys/acpica/dist/debugger/dbutils.c vendor-sys/acpica/dist/disassembler/dmobject.c vendor-sys/acpica/dist/disassembler/dmopcode.c vendor-sys/acpica/dist/disassembler/dmresrc.c vendor-sys/acpica/dist/dispatcher/dsinit.c vendor-sys/acpica/dist/dispatcher/dsmethod.c vendor-sys/acpica/dist/dispatcher/dsmthdat.c vendor-sys/acpica/dist/dispatcher/dsopcode.c vendor-sys/acpica/dist/dispatcher/dsutils.c vendor-sys/acpica/dist/events/evgpeutil.c vendor-sys/acpica/dist/events/evrgnini.c vendor-sys/acpica/dist/executer/exdump.c vendor-sys/acpica/dist/executer/exfldio.c vendor-sys/acpica/dist/executer/exprep.c vendor-sys/acpica/dist/executer/exregion.c vendor-sys/acpica/dist/executer/exsystem.c vendor-sys/acpica/dist/hardware/hwsleep.c vendor-sys/acpica/dist/hardware/hwvalid.c vendor-sys/acpica/dist/include/acconfig.h vendor-sys/acpica/dist/include/acdisasm.h vendor-sys/acpica/dist/include/acexcep.h vendor-sys/acpica/dist/include/acglobal.h vendor-sys/acpica/dist/include/aclocal.h vendor-sys/acpica/dist/include/acnamesp.h vendor-sys/acpica/dist/include/acobject.h vendor-sys/acpica/dist/include/acpixf.h vendor-sys/acpica/dist/include/acpredef.h vendor-sys/acpica/dist/include/acstruct.h vendor-sys/acpica/dist/include/actbl2.h vendor-sys/acpica/dist/namespace/nsaccess.c vendor-sys/acpica/dist/namespace/nsalloc.c vendor-sys/acpica/dist/namespace/nsdump.c vendor-sys/acpica/dist/namespace/nsinit.c vendor-sys/acpica/dist/namespace/nsnames.c vendor-sys/acpica/dist/namespace/nsparse.c vendor-sys/acpica/dist/namespace/nsrepair2.c vendor-sys/acpica/dist/namespace/nssearch.c vendor-sys/acpica/dist/namespace/nsutils.c vendor-sys/acpica/dist/namespace/nswalk.c vendor-sys/acpica/dist/namespace/nsxfobj.c vendor-sys/acpica/dist/os_specific/service_layers/oswinxf.c vendor-sys/acpica/dist/tools/acpiexec/aehandlers.c vendor-sys/acpica/dist/tools/acpiexec/aemain.c vendor-sys/acpica/dist/tools/acpisrc/asconvrt.c vendor-sys/acpica/dist/tools/acpisrc/asfile.c vendor-sys/acpica/dist/tools/acpixtract/acpixtract.c vendor-sys/acpica/dist/utilities/utglobal.c vendor-sys/acpica/dist/utilities/uttrack.c Modified: vendor-sys/acpica/dist/changes.txt ============================================================================== --- vendor-sys/acpica/dist/changes.txt Fri May 28 18:15:34 2010 (r208624) +++ vendor-sys/acpica/dist/changes.txt Fri May 28 18:46:48 2010 (r208625) @@ -1,4 +1,91 @@ ---------------------------------------- +28 May 2010. Summary of changes for version 20100528: + +This release is available at www.acpica.org/downloads + +Note: The ACPI 4.0a specification was released on April 5, 2010 and is +available at www.acpi.info. This is primarily an errata release. + +1) ACPI CA Core Subsystem: + +Undefined ACPI tables: We are looking for the definitions for the following +ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. + +Implemented support to enable multi-byte transfers for Embedded Controller +(EC) operation regions. Previously, the maximum data size passed to the EC +operation region handler was a single byte. There are often EC Fields larger +than one byte that need to be transferred, and it is useful for the EC driver +to lock these as a single transaction. This change enables single transfers +larger than 8 bits. This effectively changes the access to the EC space from +ByteAcc to AnyAcc, and will probably require changes to the host OS Embedded +Controller driver to enable 16/32/64/256-bit transfers in addition to 8-bit +transfers. Alexey Starikovskiy, Lin Ming + +Implemented a performance enhancement for namespace search and access. This +change enhances the performance of namespace searches and walks by adding a +backpointer to the parent in each namespace node. On large namespaces, this +change can improve overall ACPI performance by up to 9X. Adding a pointer to +each namespace node increases the overall size of the internal namespace by +about 5%, since each namespace entry usually consists of both a namespace +node and an ACPI operand object. However, this is the first growth of the +namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. + +Implemented a performance optimization that reduces the number of namespace +walks. On control method exit, only walk the namespace if the method is known +to have created namespace objects outside of its local scope. Previously, the +entire namespace was traversed on each control method exit. This change can +improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob Moore. + +Added support to truncate I/O addresses to 16 bits for Windows compatibility. +Some ASL code has been seen in the field that inadvertently has bits set +above bit 15. This feature is optional and is enabled if the BIOS requests +any Windows OSI strings. It can also be enabled by the host OS. Matthew +Garrett, Bob Moore. + +Added support to limit the maximum time for the ASL Sleep() operator. To +prevent accidental deep sleeps, limit the maximum time that Sleep() will +actually sleep. Configurable, the default maximum is two seconds. ACPICA +bugzilla 854. + +Added run-time validation support for the _WDG and_WED Microsoft predefined +methods. These objects are defined by "Windows Instrumentation", and are not +part of the ACPI spec. ACPICA BZ 860. + +Expanded all statistic counters used during namespace and device +initialization from 16 to 32 bits in order to support very large namespaces. + +Replaced all instances of %d in printf format specifiers with %u since nearly +all integers in ACPICA are unsigned. + +Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly returned +as AE_NO_HANDLER. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total + Debug Version: 164.2K Code, 51.5K Data, 215.7K Total + Current Release: + Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total + Debug Version: 164.1K Code, 51.5K Data, 215.6K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Added compiler support for the _WDG and_WED Microsoft predefined +methods. These objects are defined by "Windows Instrumentation", and are not +part of the ACPI spec. ACPICA BZ 860. + +AcpiExec: added option to disable the memory tracking mechanism. The -dt +option will disable the tracking mechanism, which improves performance +considerably. + +AcpiExec: Restructured the command line options into -d (disable) and -e +(enable) options. + +---------------------------------------- 28 April 2010. Summary of changes for version 20100428: 1) ACPI CA Core Subsystem: Modified: vendor-sys/acpica/dist/common/adisasm.c ============================================================================== --- vendor-sys/acpica/dist/common/adisasm.c Fri May 28 18:15:34 2010 (r208624) +++ vendor-sys/acpica/dist/common/adisasm.c Fri May 28 18:46:48 2010 (r208625) @@ -502,7 +502,7 @@ AdAmlDisassemble ( if (AcpiDmGetExternalMethodCount ()) { fprintf (stderr, - "\nFound %d external control methods, reparsing with new information\n", + "\nFound %u external control methods, reparsing with new information\n", AcpiDmGetExternalMethodCount ()); /* @@ -515,10 +515,11 @@ AdAmlDisassemble ( AcpiGbl_RootNodeStruct.Name.Integer = ACPI_ROOT_NAME; AcpiGbl_RootNodeStruct.DescriptorType = ACPI_DESC_TYPE_NAMED; AcpiGbl_RootNodeStruct.Type = ACPI_TYPE_DEVICE; + AcpiGbl_RootNodeStruct.Parent = NULL; AcpiGbl_RootNodeStruct.Child = NULL; AcpiGbl_RootNodeStruct.Peer = NULL; AcpiGbl_RootNodeStruct.Object = NULL; - AcpiGbl_RootNodeStruct.Flags = ANOBJ_END_OF_PEER_LIST; + AcpiGbl_RootNodeStruct.Flags = 0; Status = AcpiNsRootInitialize (); AcpiDmAddExternalsToNamespace (); @@ -706,7 +707,7 @@ AdCreateTableHeader ( /* Open the ASL definition block */ AcpiOsPrintf ( - "DefinitionBlock (\"%s\", \"%4.4s\", %hd, \"%.6s\", \"%.8s\", 0x%8.8X)\n", + "DefinitionBlock (\"%s\", \"%4.4s\", %hu, \"%.6s\", \"%.8s\", 0x%8.8X)\n", NewFilename, Table->Signature, Table->Revision, Table->OemId, Table->OemTableId, Table->OemRevision); @@ -1018,7 +1019,7 @@ AdGetLocalTables ( * is architecture-dependent. */ NumTables = (NewTable->Length - sizeof (ACPI_TABLE_HEADER)) / PointerSize; - AcpiOsPrintf ("There are %d tables defined in the %4.4s\n\n", + AcpiOsPrintf ("There are %u tables defined in the %4.4s\n\n", NumTables, NewTable->Signature); /* Get the FADT */ Modified: vendor-sys/acpica/dist/common/adwalk.c ============================================================================== --- vendor-sys/acpica/dist/common/adwalk.c Fri May 28 18:15:34 2010 (r208624) +++ vendor-sys/acpica/dist/common/adwalk.c Fri May 28 18:46:48 2010 (r208625) @@ -537,7 +537,7 @@ AcpiDmFindOrphanDescending ( } ArgCount = AcpiDmInspectPossibleArgs (3, 1, NextOp); - AcpiOsPrintf ("/* A-CHILDREN: %d Actual %d */\n", ArgCount, AcpiDmCountChildren (Op)); + AcpiOsPrintf ("/* A-CHILDREN: %u Actual %u */\n", ArgCount, AcpiDmCountChildren (Op)); if (ArgCount < 1) { Modified: vendor-sys/acpica/dist/common/dmextern.c ============================================================================== --- vendor-sys/acpica/dist/common/dmextern.c Fri May 28 18:15:34 2010 (r208624) +++ vendor-sys/acpica/dist/common/dmextern.c Fri May 28 18:46:48 2010 (r208625) @@ -252,7 +252,7 @@ AcpiDmNormalizeParentPrefix ( Node = Op->Common.Node; while (Node && (*Path == (UINT8) AML_PARENT_PREFIX)) { - Node = AcpiNsGetParentNode (Node); + Node = Node->Parent; Path++; } @@ -629,7 +629,7 @@ AcpiDmEmitExternals ( if (AcpiGbl_ExternalList->Type == ACPI_TYPE_METHOD) { - AcpiOsPrintf (") // %d Arguments\n", + AcpiOsPrintf (") // %u Arguments\n", AcpiGbl_ExternalList->Value); } else Modified: vendor-sys/acpica/dist/common/dmrestag.c ============================================================================== --- vendor-sys/acpica/dist/common/dmrestag.c Fri May 28 18:15:34 2010 (r208624) +++ vendor-sys/acpica/dist/common/dmrestag.c Fri May 28 18:46:48 2010 (r208625) @@ -549,13 +549,6 @@ AcpiDmGetResourceNode ( return (Node); } - /* List is circular, this flag marks the end */ - - if (Node->Flags & ANOBJ_END_OF_PEER_LIST) - { - return (NULL); - } - Node = Node->Peer; } Modified: vendor-sys/acpica/dist/common/dmtable.c ============================================================================== --- vendor-sys/acpica/dist/common/dmtable.c Fri May 28 18:15:34 2010 (r208624) +++ vendor-sys/acpica/dist/common/dmtable.c Fri May 28 18:46:48 2010 (r208625) @@ -117,6 +117,7 @@ #include "accommon.h" #include "acdisasm.h" #include "actables.h" +#include "dtcompiler.h" /* This module used for application-level code only */ @@ -125,10 +126,6 @@ /* Local Prototypes */ -static ACPI_DMTABLE_DATA * -AcpiDmGetTableData ( - char *Signature); - static void AcpiDmCheckAscii ( UINT8 *Target, @@ -247,37 +244,37 @@ static const char *AcpiDmFadtP static ACPI_DMTABLE_DATA AcpiDmTableData[] = { - {ACPI_SIG_ASF, NULL, AcpiDmDumpAsf, "Alert Standard Format table"}, - {ACPI_SIG_BOOT, AcpiDmTableInfoBoot, NULL, "Simple Boot Flag Table"}, - {ACPI_SIG_BERT, AcpiDmTableInfoBert, NULL, "Boot Error Record Table"}, - {ACPI_SIG_CPEP, NULL, AcpiDmDumpCpep, "Corrected Platform Error Polling table"}, - {ACPI_SIG_DBGP, AcpiDmTableInfoDbgp, NULL, "Debug Port table"}, - {ACPI_SIG_DMAR, NULL, AcpiDmDumpDmar, "DMA Remapping table"}, - {ACPI_SIG_ECDT, AcpiDmTableInfoEcdt, NULL, "Embedded Controller Boot Resources Table"}, - {ACPI_SIG_EINJ, NULL, AcpiDmDumpEinj, "Error Injection table"}, - {ACPI_SIG_ERST, NULL, AcpiDmDumpErst, "Error Record Serialization Table"}, - {ACPI_SIG_FADT, NULL, AcpiDmDumpFadt, "Fixed ACPI Description Table"}, - {ACPI_SIG_HEST, NULL, AcpiDmDumpHest, "Hardware Error Source Table"}, - {ACPI_SIG_HPET, AcpiDmTableInfoHpet, NULL, "High Precision Event Timer table"}, - {ACPI_SIG_IVRS, NULL, AcpiDmDumpIvrs, "I/O Virtualization Reporting Structure"}, - {ACPI_SIG_MADT, NULL, AcpiDmDumpMadt, "Multiple APIC Description Table"}, - {ACPI_SIG_MCFG, NULL, AcpiDmDumpMcfg, "Memory Mapped Configuration table"}, - {ACPI_SIG_MCHI, AcpiDmTableInfoMchi, NULL, "Management Controller Host Interface table"}, - {ACPI_SIG_MSCT, NULL, AcpiDmDumpMsct, "Maximum System Characteristics Table"}, - {ACPI_SIG_RSDT, NULL, AcpiDmDumpRsdt, "Root System Description Table"}, - {ACPI_SIG_SBST, AcpiDmTableInfoSbst, NULL, "Smart Battery Specification Table"}, - {ACPI_SIG_SLIC, AcpiDmTableInfoSlic, NULL, "Software Licensing Description Table"}, - {ACPI_SIG_SLIT, NULL, AcpiDmDumpSlit, "System Locality Information Table"}, - {ACPI_SIG_SPCR, AcpiDmTableInfoSpcr, NULL, "Serial Port Console Redirection table"}, - {ACPI_SIG_SPMI, AcpiDmTableInfoSpmi, NULL, "Server Platform Management Interface table"}, - {ACPI_SIG_SRAT, NULL, AcpiDmDumpSrat, "System Resource Affinity Table"}, - {ACPI_SIG_TCPA, AcpiDmTableInfoTcpa, NULL, "Trusted Computing Platform Alliance table"}, - {ACPI_SIG_UEFI, AcpiDmTableInfoUefi, NULL, "UEFI Boot Optimization Table"}, - {ACPI_SIG_WAET, AcpiDmTableInfoWaet, NULL, "Windows ACPI Emulated Devices Table"}, - {ACPI_SIG_WDAT, NULL, AcpiDmDumpWdat, "Watchdog Action Table"}, - {ACPI_SIG_WDRT, AcpiDmTableInfoWdrt, NULL, "Watchdog Resource Table"}, - {ACPI_SIG_XSDT, NULL, AcpiDmDumpXsdt, "Extended System Description Table"}, - {NULL, NULL, NULL, NULL} + {ACPI_SIG_ASF, NULL, AcpiDmDumpAsf, DtCompileAsf, "Alert Standard Format table"}, + {ACPI_SIG_BOOT, AcpiDmTableInfoBoot, NULL, NULL, "Simple Boot Flag Table"}, + {ACPI_SIG_BERT, AcpiDmTableInfoBert, NULL, NULL, "Boot Error Record Table"}, + {ACPI_SIG_CPEP, NULL, AcpiDmDumpCpep, DtCompileCpep, "Corrected Platform Error Polling table"}, + {ACPI_SIG_DBGP, AcpiDmTableInfoDbgp, NULL, NULL, "Debug Port table"}, + {ACPI_SIG_DMAR, NULL, AcpiDmDumpDmar, DtCompileDmar, "DMA Remapping table"}, + {ACPI_SIG_ECDT, AcpiDmTableInfoEcdt, NULL, NULL, "Embedded Controller Boot Resources Table"}, + {ACPI_SIG_EINJ, NULL, AcpiDmDumpEinj, DtCompileEinj, "Error Injection table"}, + {ACPI_SIG_ERST, NULL, AcpiDmDumpErst, DtCompileErst, "Error Record Serialization Table"}, + {ACPI_SIG_FADT, NULL, AcpiDmDumpFadt, DtCompileFadt, "Fixed ACPI Description Table"}, + {ACPI_SIG_HEST, NULL, AcpiDmDumpHest, DtCompileHest, "Hardware Error Source Table"}, + {ACPI_SIG_HPET, AcpiDmTableInfoHpet, NULL, NULL, "High Precision Event Timer table"}, + {ACPI_SIG_IVRS, NULL, AcpiDmDumpIvrs, DtCompileIvrs, "I/O Virtualization Reporting Structure"}, + {ACPI_SIG_MADT, NULL, AcpiDmDumpMadt, DtCompileMadt, "Multiple APIC Description Table"}, + {ACPI_SIG_MCFG, NULL, AcpiDmDumpMcfg, DtCompileMcfg, "Memory Mapped Configuration table"}, + {ACPI_SIG_MCHI, AcpiDmTableInfoMchi, NULL, NULL, "Management Controller Host Interface table"}, + {ACPI_SIG_MSCT, NULL, AcpiDmDumpMsct, DtCompileMsct, "Maximum System Characteristics Table"}, + {ACPI_SIG_RSDT, NULL, AcpiDmDumpRsdt, DtCompileRsdt, "Root System Description Table"}, + {ACPI_SIG_SBST, AcpiDmTableInfoSbst, NULL, NULL, "Smart Battery Specification Table"}, + {ACPI_SIG_SLIC, AcpiDmTableInfoSlic, NULL, NULL, "Software Licensing Description Table"}, + {ACPI_SIG_SLIT, NULL, AcpiDmDumpSlit, DtCompileSlit, "System Locality Information Table"}, + {ACPI_SIG_SPCR, AcpiDmTableInfoSpcr, NULL, NULL, "Serial Port Console Redirection table"}, + {ACPI_SIG_SPMI, AcpiDmTableInfoSpmi, NULL, NULL, "Server Platform Management Interface table"}, + {ACPI_SIG_SRAT, NULL, AcpiDmDumpSrat, DtCompileSrat, "System Resource Affinity Table"}, + {ACPI_SIG_TCPA, AcpiDmTableInfoTcpa, NULL, NULL, "Trusted Computing Platform Alliance table"}, + {ACPI_SIG_UEFI, AcpiDmTableInfoUefi, NULL, NULL, "UEFI Boot Optimization Table"}, + {ACPI_SIG_WAET, AcpiDmTableInfoWaet, NULL, NULL, "Windows ACPI Emulated Devices Table"}, + {ACPI_SIG_WDAT, NULL, AcpiDmDumpWdat, DtCompileWdat, "Watchdog Action Table"}, + {ACPI_SIG_WDRT, AcpiDmTableInfoWdrt, NULL, NULL, "Watchdog Resource Table"}, + {ACPI_SIG_XSDT, NULL, AcpiDmDumpXsdt, DtCompileXsdt, "Extended System Description Table"}, + {NULL, NULL, NULL, NULL, NULL} }; @@ -328,7 +325,7 @@ AcpiTbGenerateChecksum ( * ******************************************************************************/ -static ACPI_DMTABLE_DATA * +ACPI_DMTABLE_DATA * AcpiDmGetTableData ( char *Signature) { Modified: vendor-sys/acpica/dist/common/dmtbdump.c ============================================================================== --- vendor-sys/acpica/dist/common/dmtbdump.c Fri May 28 18:15:34 2010 (r208624) +++ vendor-sys/acpica/dist/common/dmtbdump.c Fri May 28 18:46:48 2010 (r208625) @@ -1174,7 +1174,7 @@ AcpiDmDumpMcfg ( { if (Offset + sizeof (ACPI_MCFG_ALLOCATION) > Table->Length) { - AcpiOsPrintf ("Warning: there are %d invalid trailing bytes\n", + AcpiOsPrintf ("Warning: there are %u invalid trailing bytes\n", sizeof (ACPI_MCFG_ALLOCATION) - (Offset - Table->Length)); return; } Modified: vendor-sys/acpica/dist/common/dmtbinfo.c ============================================================================== --- vendor-sys/acpica/dist/common/dmtbinfo.c Fri May 28 18:15:34 2010 (r208624) +++ vendor-sys/acpica/dist/common/dmtbinfo.c Fri May 28 18:46:48 2010 (r208625) @@ -230,6 +230,11 @@ #define ACPI_MADT9_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_LOCAL_X2APIC,f,o) #define ACPI_MADT10_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_LOCAL_X2APIC_NMI,f,o) +/* + * Required terminator for all tables below + */ +#define ACPI_DMT_TERMINATOR {ACPI_DMT_EXIT, 0, NULL, 0} + /* * ACPI Table Information, used to dump formatted ACPI tables @@ -245,16 +250,16 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoHeader[] = { - {ACPI_DMT_SIG, ACPI_HDR_OFFSET (Signature[0]), "Signature"}, - {ACPI_DMT_UINT32, ACPI_HDR_OFFSET (Length), "Table Length"}, - {ACPI_DMT_UINT8, ACPI_HDR_OFFSET (Revision), "Revision"}, - {ACPI_DMT_CHKSUM, ACPI_HDR_OFFSET (Checksum), "Checksum"}, - {ACPI_DMT_NAME6, ACPI_HDR_OFFSET (OemId[0]), "Oem ID"}, - {ACPI_DMT_NAME8, ACPI_HDR_OFFSET (OemTableId[0]), "Oem Table ID"}, - {ACPI_DMT_UINT32, ACPI_HDR_OFFSET (OemRevision), "Oem Revision"}, - {ACPI_DMT_NAME4, ACPI_HDR_OFFSET (AslCompilerId[0]), "Asl Compiler ID"}, - {ACPI_DMT_UINT32, ACPI_HDR_OFFSET (AslCompilerRevision), "Asl Compiler Revision"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_SIG, ACPI_HDR_OFFSET (Signature[0]), "Signature", 0}, + {ACPI_DMT_UINT32, ACPI_HDR_OFFSET (Length), "Table Length", DT_LENGTH}, + {ACPI_DMT_UINT8, ACPI_HDR_OFFSET (Revision), "Revision", 0}, + {ACPI_DMT_CHKSUM, ACPI_HDR_OFFSET (Checksum), "Checksum", 0}, + {ACPI_DMT_NAME6, ACPI_HDR_OFFSET (OemId[0]), "Oem ID", 0}, + {ACPI_DMT_NAME8, ACPI_HDR_OFFSET (OemTableId[0]), "Oem Table ID", 0}, + {ACPI_DMT_UINT32, ACPI_HDR_OFFSET (OemRevision), "Oem Revision", 0}, + {ACPI_DMT_NAME4, ACPI_HDR_OFFSET (AslCompilerId[0]), "Asl Compiler ID", 0}, + {ACPI_DMT_UINT32, ACPI_HDR_OFFSET (AslCompilerRevision), "Asl Compiler Revision", 0}, + ACPI_DMT_TERMINATOR }; @@ -266,12 +271,12 @@ ACPI_DMTABLE_INFO AcpiDmTableI ACPI_DMTABLE_INFO AcpiDmTableInfoGas[] = { - {ACPI_DMT_SPACEID, ACPI_GAS_OFFSET (SpaceId), "Space ID"}, - {ACPI_DMT_UINT8, ACPI_GAS_OFFSET (BitWidth), "Bit Width"}, - {ACPI_DMT_UINT8, ACPI_GAS_OFFSET (BitOffset), "Bit Offset"}, - {ACPI_DMT_UINT8, ACPI_GAS_OFFSET (AccessWidth), "Access Width"}, - {ACPI_DMT_UINT64, ACPI_GAS_OFFSET (Address), "Address"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_SPACEID, ACPI_GAS_OFFSET (SpaceId), "Space ID", 0}, + {ACPI_DMT_UINT8, ACPI_GAS_OFFSET (BitWidth), "Bit Width", 0}, + {ACPI_DMT_UINT8, ACPI_GAS_OFFSET (BitOffset), "Bit Offset", 0}, + {ACPI_DMT_UINT8, ACPI_GAS_OFFSET (AccessWidth), "Access Width", 0}, + {ACPI_DMT_UINT64, ACPI_GAS_OFFSET (Address), "Address", 0}, + ACPI_DMT_TERMINATOR }; @@ -283,23 +288,23 @@ ACPI_DMTABLE_INFO AcpiDmTableI ACPI_DMTABLE_INFO AcpiDmTableInfoRsdp1[] = { - {ACPI_DMT_NAME8, ACPI_RSDP_OFFSET (Signature[0]), "Signature"}, - {ACPI_DMT_UINT8, ACPI_RSDP_OFFSET (Checksum), "Checksum"}, - {ACPI_DMT_NAME6, ACPI_RSDP_OFFSET (OemId[0]), "Oem ID"}, - {ACPI_DMT_UINT8, ACPI_RSDP_OFFSET (Revision), "Revision"}, - {ACPI_DMT_UINT32, ACPI_RSDP_OFFSET (RsdtPhysicalAddress), "RSDT Address"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_NAME8, ACPI_RSDP_OFFSET (Signature[0]), "Signature", 0}, + {ACPI_DMT_UINT8, ACPI_RSDP_OFFSET (Checksum), "Checksum", 0}, + {ACPI_DMT_NAME6, ACPI_RSDP_OFFSET (OemId[0]), "Oem ID", 0}, + {ACPI_DMT_UINT8, ACPI_RSDP_OFFSET (Revision), "Revision", 0}, + {ACPI_DMT_UINT32, ACPI_RSDP_OFFSET (RsdtPhysicalAddress), "RSDT Address", 0}, + ACPI_DMT_TERMINATOR }; /* ACPI 2.0+ Extensions */ ACPI_DMTABLE_INFO AcpiDmTableInfoRsdp2[] = { - {ACPI_DMT_UINT32, ACPI_RSDP_OFFSET (Length), "Length"}, - {ACPI_DMT_UINT64, ACPI_RSDP_OFFSET (XsdtPhysicalAddress), "XSDT Address"}, - {ACPI_DMT_UINT8, ACPI_RSDP_OFFSET (ExtendedChecksum), "Extended Checksum"}, - {ACPI_DMT_UINT24, ACPI_RSDP_OFFSET (Reserved[0]), "Reserved"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_UINT32, ACPI_RSDP_OFFSET (Length), "Length", DT_LENGTH}, + {ACPI_DMT_UINT64, ACPI_RSDP_OFFSET (XsdtPhysicalAddress), "XSDT Address", 0}, + {ACPI_DMT_UINT8, ACPI_RSDP_OFFSET (ExtendedChecksum), "Extended Checksum", 0}, + {ACPI_DMT_UINT24, ACPI_RSDP_OFFSET (Reserved[0]), "Reserved", 0}, + ACPI_DMT_TERMINATOR }; @@ -311,20 +316,20 @@ ACPI_DMTABLE_INFO AcpiDmTableI ACPI_DMTABLE_INFO AcpiDmTableInfoFacs[] = { - {ACPI_DMT_NAME4, ACPI_FACS_OFFSET (Signature[0]), "Signature"}, - {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (Length), "Length"}, - {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (HardwareSignature), "Hardware Signature"}, - {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (FirmwareWakingVector), "32 Firmware Waking Vector"}, - {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (GlobalLock), "Global Lock"}, - {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (Flags), "Flags (decoded below)"}, - {ACPI_DMT_FLAG0, ACPI_FACS_FLAG_OFFSET (Flags,0), "S4BIOS Support Present"}, - {ACPI_DMT_FLAG1, ACPI_FACS_FLAG_OFFSET (Flags,0), "64-bit Wake Supported (V2)"}, - {ACPI_DMT_UINT64, ACPI_FACS_OFFSET (XFirmwareWakingVector), "64 Firmware Waking Vector"}, - {ACPI_DMT_UINT8, ACPI_FACS_OFFSET (Version), "Version"}, - {ACPI_DMT_UINT24, ACPI_FACS_OFFSET (Reserved[0]), "Reserved"}, - {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (OspmFlags), "OspmFlags (decoded below)"}, - {ACPI_DMT_FLAG0, ACPI_FACS_FLAG_OFFSET (OspmFlags,0), "64-bit Wake Env Required (V2)"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_NAME4, ACPI_FACS_OFFSET (Signature[0]), "Signature", 0}, + {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (Length), "Length", DT_LENGTH}, + {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (HardwareSignature), "Hardware Signature", 0}, + {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (FirmwareWakingVector), "32 Firmware Waking Vector", 0}, + {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (GlobalLock), "Global Lock", 0}, + {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, + {ACPI_DMT_FLAG0, ACPI_FACS_FLAG_OFFSET (Flags,0), "S4BIOS Support Present", 0}, + {ACPI_DMT_FLAG1, ACPI_FACS_FLAG_OFFSET (Flags,0), "64-bit Wake Supported (V2)", 0}, + {ACPI_DMT_UINT64, ACPI_FACS_OFFSET (XFirmwareWakingVector), "64 Firmware Waking Vector", 0}, + {ACPI_DMT_UINT8, ACPI_FACS_OFFSET (Version), "Version", 0}, + {ACPI_DMT_UINT24, ACPI_FACS_OFFSET (Reserved[0]), "Reserved", 0}, + {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (OspmFlags), "OspmFlags (decoded below)", DT_FLAG}, + {ACPI_DMT_FLAG0, ACPI_FACS_FLAG_OFFSET (OspmFlags,0), "64-bit Wake Env Required (V2)", 0}, + ACPI_DMT_TERMINATOR }; @@ -338,113 +343,113 @@ ACPI_DMTABLE_INFO AcpiDmTableI ACPI_DMTABLE_INFO AcpiDmTableInfoFadt1[] = { - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Facs), "FACS Address"}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Dsdt), "DSDT Address"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Model), "Model"}, - {ACPI_DMT_FADTPM, ACPI_FADT_OFFSET (PreferredProfile), "PM Profile"}, - {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (SciInterrupt), "SCI Interrupt"}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (SmiCommand), "SMI Command Port"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (AcpiEnable), "ACPI Enable Value"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (AcpiDisable), "ACPI Disable Value"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (S4BiosRequest), "S4BIOS Command"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (PstateControl), "P-State Control"}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Pm1aEventBlock), "PM1A Event Block Address"}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Pm1bEventBlock), "PM1B Event Block Address"}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Pm1aControlBlock), "PM1A Control Block Address"}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Pm1bControlBlock), "PM1B Control Block Address"}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Pm2ControlBlock), "PM2 Control Block Address"}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (PmTimerBlock), "PM Timer Block Address"}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Gpe0Block), "GPE0 Block Address"}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Gpe1Block), "GPE1 Block Address"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Pm1EventLength), "PM1 Event Block Length"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Pm1ControlLength), "PM1 Control Block Length"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Pm2ControlLength), "PM2 Control Block Length"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (PmTimerLength), "PM Timer Block Length"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Gpe0BlockLength), "GPE0 Block Length"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Gpe1BlockLength), "GPE1 Block Length"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Gpe1Base), "GPE1 Base Offset"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (CstControl), "_CST Support"}, - {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (C2Latency), "C2 Latency"}, - {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (C3Latency), "C3 Latency"}, - {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (FlushSize), "CPU Cache Size"}, - {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (FlushStride), "Cache Flush Stride"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (DutyOffset), "Duty Cycle Offset"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (DutyWidth), "Duty Cycle Width"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (DayAlarm), "RTC Day Alarm Index"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (MonthAlarm), "RTC Month Alarm Index"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Century), "RTC Century Index"}, - {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (BootFlags), "Boot Flags (decoded below)"}, + {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Facs), "FACS Address", 0}, + {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Dsdt), "DSDT Address", DT_NON_ZERO}, + {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Model), "Model", 0}, + {ACPI_DMT_FADTPM, ACPI_FADT_OFFSET (PreferredProfile), "PM Profile", 0}, + {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (SciInterrupt), "SCI Interrupt", 0}, + {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (SmiCommand), "SMI Command Port", 0}, + {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (AcpiEnable), "ACPI Enable Value", 0}, + {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (AcpiDisable), "ACPI Disable Value", 0}, + {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (S4BiosRequest), "S4BIOS Command", 0}, + {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (PstateControl), "P-State Control", 0}, + {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Pm1aEventBlock), "PM1A Event Block Address", 0}, + {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Pm1bEventBlock), "PM1B Event Block Address", 0}, + {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Pm1aControlBlock), "PM1A Control Block Address", 0}, + {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Pm1bControlBlock), "PM1B Control Block Address", 0}, + {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Pm2ControlBlock), "PM2 Control Block Address", 0}, + {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (PmTimerBlock), "PM Timer Block Address", 0}, + {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Gpe0Block), "GPE0 Block Address", 0}, + {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Gpe1Block), "GPE1 Block Address", 0}, + {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Pm1EventLength), "PM1 Event Block Length", 0}, + {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Pm1ControlLength), "PM1 Control Block Length", 0}, + {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Pm2ControlLength), "PM2 Control Block Length", 0}, + {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (PmTimerLength), "PM Timer Block Length", 0}, + {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Gpe0BlockLength), "GPE0 Block Length", 0}, + {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Gpe1BlockLength), "GPE1 Block Length", 0}, + {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Gpe1Base), "GPE1 Base Offset", 0}, + {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (CstControl), "_CST Support", 0}, + {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (C2Latency), "C2 Latency", 0}, + {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (C3Latency), "C3 Latency", 0}, + {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (FlushSize), "CPU Cache Size", 0}, + {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (FlushStride), "Cache Flush Stride", 0}, + {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (DutyOffset), "Duty Cycle Offset", 0}, + {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (DutyWidth), "Duty Cycle Width", 0}, + {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (DayAlarm), "RTC Day Alarm Index", 0}, + {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (MonthAlarm), "RTC Month Alarm Index", 0}, + {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Century), "RTC Century Index", 0}, + {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (BootFlags), "Boot Flags (decoded below)", DT_FLAG}, /* Boot Architecture Flags byte 0 */ - {ACPI_DMT_FLAG0, ACPI_FADT_FLAG_OFFSET (BootFlags,0), "Legacy Devices Supported (V2)"}, - {ACPI_DMT_FLAG1, ACPI_FADT_FLAG_OFFSET (BootFlags,0), "8042 Present on ports 60/64 (V2)"}, - {ACPI_DMT_FLAG2, ACPI_FADT_FLAG_OFFSET (BootFlags,0), "VGA Not Present (V4)"}, - {ACPI_DMT_FLAG3, ACPI_FADT_FLAG_OFFSET (BootFlags,0), "MSI Not Supported (V4)"}, - {ACPI_DMT_FLAG4, ACPI_FADT_FLAG_OFFSET (BootFlags,0), "PCIe ASPM Not Supported (V4)"}, + {ACPI_DMT_FLAG0, ACPI_FADT_FLAG_OFFSET (BootFlags,0), "Legacy Devices Supported (V2)", 0}, + {ACPI_DMT_FLAG1, ACPI_FADT_FLAG_OFFSET (BootFlags,0), "8042 Present on ports 60/64 (V2)", 0}, + {ACPI_DMT_FLAG2, ACPI_FADT_FLAG_OFFSET (BootFlags,0), "VGA Not Present (V4)", 0}, + {ACPI_DMT_FLAG3, ACPI_FADT_FLAG_OFFSET (BootFlags,0), "MSI Not Supported (V4)", 0}, + {ACPI_DMT_FLAG4, ACPI_FADT_FLAG_OFFSET (BootFlags,0), "PCIe ASPM Not Supported (V4)", 0}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Reserved), "Reserved"}, - {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Flags), "Flags (decoded below)"}, + {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, /* Flags byte 0 */ - {ACPI_DMT_FLAG0, ACPI_FADT_FLAG_OFFSET (Flags,0), "WBINVD instruction is operational (V1)"}, - {ACPI_DMT_FLAG1, ACPI_FADT_FLAG_OFFSET (Flags,0), "WBINVD flushes all caches (V1)"}, - {ACPI_DMT_FLAG2, ACPI_FADT_FLAG_OFFSET (Flags,0), "All CPUs support C1 (V1)"}, - {ACPI_DMT_FLAG3, ACPI_FADT_FLAG_OFFSET (Flags,0), "C2 works on MP system (V1)"}, - {ACPI_DMT_FLAG4, ACPI_FADT_FLAG_OFFSET (Flags,0), "Control Method Power Button (V1)"}, - {ACPI_DMT_FLAG5, ACPI_FADT_FLAG_OFFSET (Flags,0), "Control Method Sleep Button (V1)"}, - {ACPI_DMT_FLAG6, ACPI_FADT_FLAG_OFFSET (Flags,0), "RTC wake not in fixed reg space (V1)"}, - {ACPI_DMT_FLAG7, ACPI_FADT_FLAG_OFFSET (Flags,0), "RTC can wake system from S4 (V1)"}, + {ACPI_DMT_FLAG0, ACPI_FADT_FLAG_OFFSET (Flags,0), "WBINVD instruction is operational (V1)", 0}, + {ACPI_DMT_FLAG1, ACPI_FADT_FLAG_OFFSET (Flags,0), "WBINVD flushes all caches (V1)", 0}, + {ACPI_DMT_FLAG2, ACPI_FADT_FLAG_OFFSET (Flags,0), "All CPUs support C1 (V1)", 0}, + {ACPI_DMT_FLAG3, ACPI_FADT_FLAG_OFFSET (Flags,0), "C2 works on MP system (V1)", 0}, + {ACPI_DMT_FLAG4, ACPI_FADT_FLAG_OFFSET (Flags,0), "Control Method Power Button (V1)", 0}, + {ACPI_DMT_FLAG5, ACPI_FADT_FLAG_OFFSET (Flags,0), "Control Method Sleep Button (V1)", 0}, + {ACPI_DMT_FLAG6, ACPI_FADT_FLAG_OFFSET (Flags,0), "RTC wake not in fixed reg space (V1)", 0}, + {ACPI_DMT_FLAG7, ACPI_FADT_FLAG_OFFSET (Flags,0), "RTC can wake system from S4 (V1)", 0}, /* Flags byte 1 */ - {ACPI_DMT_FLAG0, ACPI_FADT_FLAG_OFFSET (Flags,1), "32-bit PM Timer (V1)"}, - {ACPI_DMT_FLAG1, ACPI_FADT_FLAG_OFFSET (Flags,1), "Docking Supported (V1)"}, - {ACPI_DMT_FLAG2, ACPI_FADT_FLAG_OFFSET (Flags,1), "Reset Register Supported (V2)"}, - {ACPI_DMT_FLAG3, ACPI_FADT_FLAG_OFFSET (Flags,1), "Sealed Case (V3)"}, - {ACPI_DMT_FLAG4, ACPI_FADT_FLAG_OFFSET (Flags,1), "Headless - No Video (V3)"}, - {ACPI_DMT_FLAG5, ACPI_FADT_FLAG_OFFSET (Flags,1), "Use native instr after SLP_TYPx (V3)"}, - {ACPI_DMT_FLAG6, ACPI_FADT_FLAG_OFFSET (Flags,1), "PCIEXP_WAK Bits Supported (V4)"}, - {ACPI_DMT_FLAG7, ACPI_FADT_FLAG_OFFSET (Flags,1), "Use Platform Timer (V4)"}, + {ACPI_DMT_FLAG0, ACPI_FADT_FLAG_OFFSET (Flags,1), "32-bit PM Timer (V1)", 0}, + {ACPI_DMT_FLAG1, ACPI_FADT_FLAG_OFFSET (Flags,1), "Docking Supported (V1)", 0}, + {ACPI_DMT_FLAG2, ACPI_FADT_FLAG_OFFSET (Flags,1), "Reset Register Supported (V2)", 0}, + {ACPI_DMT_FLAG3, ACPI_FADT_FLAG_OFFSET (Flags,1), "Sealed Case (V3)", 0}, + {ACPI_DMT_FLAG4, ACPI_FADT_FLAG_OFFSET (Flags,1), "Headless - No Video (V3)", 0}, + {ACPI_DMT_FLAG5, ACPI_FADT_FLAG_OFFSET (Flags,1), "Use native instr after SLP_TYPx (V3)", 0}, + {ACPI_DMT_FLAG6, ACPI_FADT_FLAG_OFFSET (Flags,1), "PCIEXP_WAK Bits Supported (V4)", 0}, + {ACPI_DMT_FLAG7, ACPI_FADT_FLAG_OFFSET (Flags,1), "Use Platform Timer (V4)", 0}, /* Flags byte 2 */ - {ACPI_DMT_FLAG0, ACPI_FADT_FLAG_OFFSET (Flags,2), "RTC_STS valid on S4 wake (V4)"}, - {ACPI_DMT_FLAG1, ACPI_FADT_FLAG_OFFSET (Flags,2), "Remote Power-on capable (V4)"}, - {ACPI_DMT_FLAG2, ACPI_FADT_FLAG_OFFSET (Flags,2), "Use APIC Cluster Model (V4)"}, - {ACPI_DMT_FLAG3, ACPI_FADT_FLAG_OFFSET (Flags,2), "Use APIC Physical Destination Mode (V4)"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_FLAG0, ACPI_FADT_FLAG_OFFSET (Flags,2), "RTC_STS valid on S4 wake (V4)", 0}, + {ACPI_DMT_FLAG1, ACPI_FADT_FLAG_OFFSET (Flags,2), "Remote Power-on capable (V4)", 0}, + {ACPI_DMT_FLAG2, ACPI_FADT_FLAG_OFFSET (Flags,2), "Use APIC Cluster Model (V4)", 0}, + {ACPI_DMT_FLAG3, ACPI_FADT_FLAG_OFFSET (Flags,2), "Use APIC Physical Destination Mode (V4)", 0}, + ACPI_DMT_TERMINATOR }; /* ACPI 1.0 MS Extensions (FADT version 2) */ ACPI_DMTABLE_INFO AcpiDmTableInfoFadt2[] = { - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (ResetRegister), "Reset Register"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (ResetValue), "Value to cause reset"}, - {ACPI_DMT_UINT24, ACPI_FADT_OFFSET (Reserved4[0]), "Reserved"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_GAS, ACPI_FADT_OFFSET (ResetRegister), "Reset Register", 0}, + {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (ResetValue), "Value to cause reset", 0}, + {ACPI_DMT_UINT24, ACPI_FADT_OFFSET (Reserved4[0]), "Reserved", 0}, + ACPI_DMT_TERMINATOR }; /* ACPI 2.0+ Extensions (FADT version 3+) */ ACPI_DMTABLE_INFO AcpiDmTableInfoFadt3[] = { - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (ResetRegister), "Reset Register"}, - {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (ResetValue), "Value to cause reset"}, - {ACPI_DMT_UINT24, ACPI_FADT_OFFSET (Reserved4[0]), "Reserved"}, - {ACPI_DMT_UINT64, ACPI_FADT_OFFSET (XFacs), "FACS Address"}, - {ACPI_DMT_UINT64, ACPI_FADT_OFFSET (XDsdt), "DSDT Address"}, - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPm1aEventBlock), "PM1A Event Block"}, - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPm1bEventBlock), "PM1B Event Block"}, - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPm1aControlBlock), "PM1A Control Block"}, - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPm1bControlBlock), "PM1B Control Block"}, - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPm2ControlBlock), "PM2 Control Block"}, - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPmTimerBlock), "PM Timer Block"}, - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XGpe0Block), "GPE0 Block"}, - {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XGpe1Block), "GPE1 Block"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_GAS, ACPI_FADT_OFFSET (ResetRegister), "Reset Register", 0}, + {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (ResetValue), "Value to cause reset", 0}, + {ACPI_DMT_UINT24, ACPI_FADT_OFFSET (Reserved4[0]), "Reserved", 0}, + {ACPI_DMT_UINT64, ACPI_FADT_OFFSET (XFacs), "FACS Address", 0}, + {ACPI_DMT_UINT64, ACPI_FADT_OFFSET (XDsdt), "DSDT Address", 0}, + {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPm1aEventBlock), "PM1A Event Block", 0}, + {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPm1bEventBlock), "PM1B Event Block", 0}, + {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPm1aControlBlock), "PM1A Control Block", 0}, + {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPm1bControlBlock), "PM1B Control Block", 0}, + {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPm2ControlBlock), "PM2 Control Block", 0}, + {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPmTimerBlock), "PM Timer Block", 0}, + {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XGpe0Block), "GPE0 Block", 0}, + {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XGpe1Block), "GPE1 Block", 0}, + ACPI_DMT_TERMINATOR }; @@ -462,97 +467,97 @@ ACPI_DMTABLE_INFO AcpiDmTableI ACPI_DMTABLE_INFO AcpiDmTableInfoAsfHdr[] = { - {ACPI_DMT_ASF, ACPI_ASF0_OFFSET (Header.Type), "Subtable Type"}, - {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (Header.Reserved), "Reserved"}, - {ACPI_DMT_UINT16, ACPI_ASF0_OFFSET (Header.Length), "Length"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_ASF, ACPI_ASF0_OFFSET (Header.Type), "Subtable Type", 0}, + {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (Header.Reserved), "Reserved", 0}, + {ACPI_DMT_UINT16, ACPI_ASF0_OFFSET (Header.Length), "Length", DT_LENGTH}, + ACPI_DMT_TERMINATOR }; /* 0: ASF Information */ ACPI_DMTABLE_INFO AcpiDmTableInfoAsf0[] = { - {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (MinResetValue), "Minimum Reset Value"}, - {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (MinPollInterval), "Minimum Polling Interval"}, - {ACPI_DMT_UINT16, ACPI_ASF0_OFFSET (SystemId), "System ID"}, - {ACPI_DMT_UINT32, ACPI_ASF0_OFFSET (MfgId), "Manufacturer ID"}, - {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (Flags), "Flags"}, - {ACPI_DMT_UINT24, ACPI_ASF0_OFFSET (Reserved2[0]), "Reserved"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (MinResetValue), "Minimum Reset Value", 0}, + {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (MinPollInterval), "Minimum Polling Interval", 0}, + {ACPI_DMT_UINT16, ACPI_ASF0_OFFSET (SystemId), "System ID", 0}, + {ACPI_DMT_UINT32, ACPI_ASF0_OFFSET (MfgId), "Manufacturer ID", 0}, + {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (Flags), "Flags", 0}, + {ACPI_DMT_UINT24, ACPI_ASF0_OFFSET (Reserved2[0]), "Reserved", 0}, + ACPI_DMT_TERMINATOR }; /* 1: ASF Alerts */ ACPI_DMTABLE_INFO AcpiDmTableInfoAsf1[] = { - {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (AssertMask), "AssertMask"}, - {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (DeassertMask), "DeassertMask"}, - {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (Alerts), "Alert Count"}, - {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (DataLength), "Alert Data Length"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (AssertMask), "AssertMask", 0}, + {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (DeassertMask), "DeassertMask", 0}, + {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (Alerts), "Alert Count", 0}, + {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (DataLength), "Alert Data Length", 0}, + ACPI_DMT_TERMINATOR }; /* 1a: ASF Alert data */ ACPI_DMTABLE_INFO AcpiDmTableInfoAsf1a[] = { - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Address), "Address"}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Command), "Command"}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Mask), "Mask"}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Value), "Value"}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (SensorType), "SensorType"}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Type), "Type"}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Offset), "Offset"}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (SourceType), "SourceType"}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Severity), "Severity"}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (SensorNumber), "SensorNumber"}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Entity), "Entity"}, - {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Instance), "Instance"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Address), "Address", 0}, + {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Command), "Command", 0}, + {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Mask), "Mask", 0}, + {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Value), "Value", 0}, + {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (SensorType), "SensorType", 0}, + {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Type), "Type", 0}, + {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Offset), "Offset", 0}, + {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (SourceType), "SourceType", 0}, + {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Severity), "Severity", 0}, + {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (SensorNumber), "SensorNumber", 0}, + {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Entity), "Entity", 0}, + {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Instance), "Instance", 0}, + ACPI_DMT_TERMINATOR }; /* 2: ASF Remote Control */ ACPI_DMTABLE_INFO AcpiDmTableInfoAsf2[] = { - {ACPI_DMT_UINT8, ACPI_ASF2_OFFSET (Controls), "Control Count"}, - {ACPI_DMT_UINT8, ACPI_ASF2_OFFSET (DataLength), "Control Data Length"}, - {ACPI_DMT_UINT16, ACPI_ASF2_OFFSET (Reserved2), "Reserved"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_UINT8, ACPI_ASF2_OFFSET (Controls), "Control Count", 0}, + {ACPI_DMT_UINT8, ACPI_ASF2_OFFSET (DataLength), "Control Data Length", 0}, + {ACPI_DMT_UINT16, ACPI_ASF2_OFFSET (Reserved2), "Reserved", 0}, + ACPI_DMT_TERMINATOR }; /* 2a: ASF Control data */ ACPI_DMTABLE_INFO AcpiDmTableInfoAsf2a[] = { - {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Function), "Function"}, - {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Address), "Address"}, - {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Command), "Command"}, - {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Value), "Value"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Function), "Function", 0}, + {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Address), "Address", 0}, + {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Command), "Command", 0}, + {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Value), "Value", 0}, + ACPI_DMT_TERMINATOR }; /* 3: ASF RMCP Boot Options */ ACPI_DMTABLE_INFO AcpiDmTableInfoAsf3[] = { - {ACPI_DMT_UINT56, ACPI_ASF3_OFFSET (Capabilities[0]), "Capabilites"}, - {ACPI_DMT_UINT8, ACPI_ASF3_OFFSET (CompletionCode), "Completion Code"}, - {ACPI_DMT_UINT32, ACPI_ASF3_OFFSET (EnterpriseId), "Enterprise ID"}, - {ACPI_DMT_UINT8, ACPI_ASF3_OFFSET (Command), "Command"}, - {ACPI_DMT_UINT16, ACPI_ASF3_OFFSET (Parameter), "Parameter"}, - {ACPI_DMT_UINT16, ACPI_ASF3_OFFSET (BootOptions), "Boot Options"}, - {ACPI_DMT_UINT16, ACPI_ASF3_OFFSET (OemParameters), "Oem Parameters"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_UINT56, ACPI_ASF3_OFFSET (Capabilities[0]), "Capabilities", 0}, + {ACPI_DMT_UINT8, ACPI_ASF3_OFFSET (CompletionCode), "Completion Code", 0}, + {ACPI_DMT_UINT32, ACPI_ASF3_OFFSET (EnterpriseId), "Enterprise ID", 0}, + {ACPI_DMT_UINT8, ACPI_ASF3_OFFSET (Command), "Command", 0}, + {ACPI_DMT_UINT16, ACPI_ASF3_OFFSET (Parameter), "Parameter", 0}, + {ACPI_DMT_UINT16, ACPI_ASF3_OFFSET (BootOptions), "Boot Options", 0}, + {ACPI_DMT_UINT16, ACPI_ASF3_OFFSET (OemParameters), "Oem Parameters", 0}, + ACPI_DMT_TERMINATOR }; /* 4: ASF Address */ ACPI_DMTABLE_INFO AcpiDmTableInfoAsf4[] = { - {ACPI_DMT_UINT8, ACPI_ASF4_OFFSET (EpromAddress), "Eprom Address"}, - {ACPI_DMT_UINT8, ACPI_ASF4_OFFSET (Devices), "Device Count"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_UINT8, ACPI_ASF4_OFFSET (EpromAddress), "Eprom Address", 0}, + {ACPI_DMT_UINT8, ACPI_ASF4_OFFSET (Devices), "Device Count", DT_COUNT}, + ACPI_DMT_TERMINATOR }; @@ -564,9 +569,9 @@ ACPI_DMTABLE_INFO AcpiDmTableI ACPI_DMTABLE_INFO AcpiDmTableInfoBert[] = { - {ACPI_DMT_UINT32, ACPI_BERT_OFFSET (RegionLength), "Boot Error Region Length"}, - {ACPI_DMT_UINT64, ACPI_BERT_OFFSET (Address), "Boot Error Region Address"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_UINT32, ACPI_BERT_OFFSET (RegionLength), "Boot Error Region Length", 0}, + {ACPI_DMT_UINT64, ACPI_BERT_OFFSET (Address), "Boot Error Region Address", 0}, + ACPI_DMT_TERMINATOR }; @@ -578,9 +583,9 @@ ACPI_DMTABLE_INFO AcpiDmTableI ACPI_DMTABLE_INFO AcpiDmTableInfoBoot[] = { - {ACPI_DMT_UINT8, ACPI_BOOT_OFFSET (CmosIndex), "Boot Register Index"}, - {ACPI_DMT_UINT24, ACPI_BOOT_OFFSET (Reserved[0]), "Reserved"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_UINT8, ACPI_BOOT_OFFSET (CmosIndex), "Boot Register Index", 0}, + {ACPI_DMT_UINT24, ACPI_BOOT_OFFSET (Reserved[0]), "Reserved", 0}, + ACPI_DMT_TERMINATOR }; @@ -592,18 +597,18 @@ ACPI_DMTABLE_INFO AcpiDmTableI ACPI_DMTABLE_INFO AcpiDmTableInfoCpep[] = { - {ACPI_DMT_UINT64, ACPI_CPEP_OFFSET (Reserved), "Reserved"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_UINT64, ACPI_CPEP_OFFSET (Reserved), "Reserved", 0}, + ACPI_DMT_TERMINATOR }; ACPI_DMTABLE_INFO AcpiDmTableInfoCpep0[] = { - {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Header.Type), "Subtable Type"}, - {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Header.Length), "Length"}, - {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Id), "Processor ID"}, - {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Eid), "Processor EID"}, - {ACPI_DMT_UINT32, ACPI_CPEP0_OFFSET (Interval), "Polling Interval"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Header.Type), "Subtable Type", 0}, + {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Header.Length), "Length", DT_LENGTH}, + {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Id), "Processor ID", 0}, + {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Eid), "Processor EID", 0}, + {ACPI_DMT_UINT32, ACPI_CPEP0_OFFSET (Interval), "Polling Interval", 0}, + ACPI_DMT_TERMINATOR }; @@ -615,10 +620,10 @@ ACPI_DMTABLE_INFO AcpiDmTableI ACPI_DMTABLE_INFO AcpiDmTableInfoDbgp[] = { - {ACPI_DMT_UINT8, ACPI_DBGP_OFFSET (Type), "Interface Type"}, - {ACPI_DMT_UINT24, ACPI_DBGP_OFFSET (Reserved[0]), "Reserved"}, - {ACPI_DMT_GAS, ACPI_DBGP_OFFSET (DebugPort), "Debug Port Register"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_UINT8, ACPI_DBGP_OFFSET (Type), "Interface Type", 0}, + {ACPI_DMT_UINT24, ACPI_DBGP_OFFSET (Reserved[0]), "Reserved", 0}, + {ACPI_DMT_GAS, ACPI_DBGP_OFFSET (DebugPort), "Debug Port Register", 0}, + ACPI_DMT_TERMINATOR }; @@ -630,30 +635,30 @@ ACPI_DMTABLE_INFO AcpiDmTableI ACPI_DMTABLE_INFO AcpiDmTableInfoDmar[] = { - {ACPI_DMT_UINT8, ACPI_DMAR_OFFSET (Width), "Host Address Width"}, - {ACPI_DMT_UINT8, ACPI_DMAR_OFFSET (Flags), "Flags"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_UINT8, ACPI_DMAR_OFFSET (Width), "Host Address Width", 0}, + {ACPI_DMT_UINT8, ACPI_DMAR_OFFSET (Flags), "Flags", 0}, + ACPI_DMT_TERMINATOR }; /* Common Subtable header (one per Subtable) */ ACPI_DMTABLE_INFO AcpiDmTableInfoDmarHdr[] = { - {ACPI_DMT_DMAR, ACPI_DMAR0_OFFSET (Header.Type), "Subtable Type"}, - {ACPI_DMT_UINT16, ACPI_DMAR0_OFFSET (Header.Length), "Length"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_DMAR, ACPI_DMAR0_OFFSET (Header.Type), "Subtable Type", 0}, + {ACPI_DMT_UINT16, ACPI_DMAR0_OFFSET (Header.Length), "Length", DT_LENGTH}, + ACPI_DMT_TERMINATOR }; /* Common device scope entry */ ACPI_DMTABLE_INFO AcpiDmTableInfoDmarScope[] = { - {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (EntryType), "Device Scope Entry Type"}, - {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (Length), "Entry Length"}, - {ACPI_DMT_UINT16, ACPI_DMARS_OFFSET (Reserved), "Reserved"}, - {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (EnumerationId), "Enumeration ID"}, - {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (Bus), "PCI Bus Number"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (EntryType), "Device Scope Entry Type", 0}, + {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (Length), "Entry Length", DT_LENGTH}, + {ACPI_DMT_UINT16, ACPI_DMARS_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (EnumerationId), "Enumeration ID", 0}, + {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (Bus), "PCI Bus Number", 0}, + ACPI_DMT_TERMINATOR }; /* DMAR Subtables */ @@ -662,42 +667,42 @@ ACPI_DMTABLE_INFO AcpiDmTableI ACPI_DMTABLE_INFO AcpiDmTableInfoDmar0[] = { - {ACPI_DMT_UINT8, ACPI_DMAR0_OFFSET (Flags), "Flags"}, - {ACPI_DMT_UINT8, ACPI_DMAR0_OFFSET (Reserved), "Reserved"}, - {ACPI_DMT_UINT16, ACPI_DMAR0_OFFSET (Segment), "PCI Segment Number"}, - {ACPI_DMT_UINT64, ACPI_DMAR0_OFFSET (Address), "Register Base Address"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_UINT8, ACPI_DMAR0_OFFSET (Flags), "Flags", 0}, + {ACPI_DMT_UINT8, ACPI_DMAR0_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT16, ACPI_DMAR0_OFFSET (Segment), "PCI Segment Number", 0}, + {ACPI_DMT_UINT64, ACPI_DMAR0_OFFSET (Address), "Register Base Address", 0}, + ACPI_DMT_TERMINATOR }; /* 1: Reserved Memory Definition */ ACPI_DMTABLE_INFO AcpiDmTableInfoDmar1[] = { - {ACPI_DMT_UINT16, ACPI_DMAR1_OFFSET (Reserved), "Reserved"}, - {ACPI_DMT_UINT16, ACPI_DMAR1_OFFSET (Segment), "PCI Segment Number"}, - {ACPI_DMT_UINT64, ACPI_DMAR1_OFFSET (BaseAddress), "Base Address"}, - {ACPI_DMT_UINT64, ACPI_DMAR1_OFFSET (EndAddress), "End Address (limit)"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_UINT16, ACPI_DMAR1_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT16, ACPI_DMAR1_OFFSET (Segment), "PCI Segment Number", 0}, + {ACPI_DMT_UINT64, ACPI_DMAR1_OFFSET (BaseAddress), "Base Address", 0}, + {ACPI_DMT_UINT64, ACPI_DMAR1_OFFSET (EndAddress), "End Address (limit)", 0}, + ACPI_DMT_TERMINATOR }; /* 2: Root Port ATS Capability Definition */ ACPI_DMTABLE_INFO AcpiDmTableInfoDmar2[] = { - {ACPI_DMT_UINT8, ACPI_DMAR2_OFFSET (Flags), "Flags"}, - {ACPI_DMT_UINT8, ACPI_DMAR2_OFFSET (Reserved), "Reserved"}, - {ACPI_DMT_UINT16, ACPI_DMAR2_OFFSET (Segment), "PCI Segment Number"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_UINT8, ACPI_DMAR2_OFFSET (Flags), "Flags", 0}, + {ACPI_DMT_UINT8, ACPI_DMAR2_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT16, ACPI_DMAR2_OFFSET (Segment), "PCI Segment Number", 0}, + ACPI_DMT_TERMINATOR }; /* 3: Remapping Hardware Static Affinity Structure */ ACPI_DMTABLE_INFO AcpiDmTableInfoDmar3[] = { - {ACPI_DMT_UINT32, ACPI_DMAR3_OFFSET (Reserved), "Reserved"}, - {ACPI_DMT_UINT64, ACPI_DMAR3_OFFSET (BaseAddress), "Base Address"}, - {ACPI_DMT_UINT32, ACPI_DMAR3_OFFSET (ProximityDomain), "Proximity Domain"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_UINT32, ACPI_DMAR3_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_UINT64, ACPI_DMAR3_OFFSET (BaseAddress), "Base Address", 0}, + {ACPI_DMT_UINT32, ACPI_DMAR3_OFFSET (ProximityDomain), "Proximity Domain", 0}, + ACPI_DMT_TERMINATOR }; @@ -709,12 +714,12 @@ ACPI_DMTABLE_INFO AcpiDmTableI ACPI_DMTABLE_INFO AcpiDmTableInfoEcdt[] = { - {ACPI_DMT_GAS, ACPI_ECDT_OFFSET (Control), "Command/Status Register"}, - {ACPI_DMT_GAS, ACPI_ECDT_OFFSET (Data), "Data Register"}, - {ACPI_DMT_UINT32, ACPI_ECDT_OFFSET (Uid), "UID"}, - {ACPI_DMT_UINT8, ACPI_ECDT_OFFSET (Gpe), "GPE Number"}, - {ACPI_DMT_STRING, ACPI_ECDT_OFFSET (Id[0]), "Namepath"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_GAS, ACPI_ECDT_OFFSET (Control), "Command/Status Register", 0}, + {ACPI_DMT_GAS, ACPI_ECDT_OFFSET (Data), "Data Register", 0}, + {ACPI_DMT_UINT32, ACPI_ECDT_OFFSET (Uid), "UID", 0}, + {ACPI_DMT_UINT8, ACPI_ECDT_OFFSET (Gpe), "GPE Number", 0}, + {ACPI_DMT_STRING, ACPI_ECDT_OFFSET (Id[0]), "Namepath", 0}, + ACPI_DMT_TERMINATOR }; @@ -726,23 +731,23 @@ ACPI_DMTABLE_INFO AcpiDmTableI ACPI_DMTABLE_INFO AcpiDmTableInfoEinj[] = { - {ACPI_DMT_UINT32, ACPI_EINJ_OFFSET (HeaderLength), "Injection Header Length"}, - {ACPI_DMT_UINT8, ACPI_EINJ_OFFSET (Flags), "Flags"}, - {ACPI_DMT_UINT24, ACPI_EINJ_OFFSET (Reserved[0]), "Reserved"}, - {ACPI_DMT_UINT32, ACPI_EINJ_OFFSET (Entries), "Injection Entry Count"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_UINT32, ACPI_EINJ_OFFSET (HeaderLength), "Injection Header Length", DT_LENGTH}, + {ACPI_DMT_UINT8, ACPI_EINJ_OFFSET (Flags), "Flags", 0}, + {ACPI_DMT_UINT24, ACPI_EINJ_OFFSET (Reserved[0]), "Reserved", 0}, + {ACPI_DMT_UINT32, ACPI_EINJ_OFFSET (Entries), "Injection Entry Count", 0}, + ACPI_DMT_TERMINATOR }; ACPI_DMTABLE_INFO AcpiDmTableInfoEinj0[] = { - {ACPI_DMT_UINT8, ACPI_EINJ0_OFFSET (Action), "Action"}, - {ACPI_DMT_UINT8, ACPI_EINJ0_OFFSET (Instruction), "Instruction"}, - {ACPI_DMT_UINT8, ACPI_EINJ0_OFFSET (Flags), "Flags"}, - {ACPI_DMT_UINT8, ACPI_EINJ0_OFFSET (Reserved), "Reserved"}, - {ACPI_DMT_GAS, ACPI_EINJ0_OFFSET (RegisterRegion), "Register Region"}, - {ACPI_DMT_UINT64, ACPI_EINJ0_OFFSET (Value), "Value"}, - {ACPI_DMT_UINT64, ACPI_EINJ0_OFFSET (Mask), "Mask"}, - {ACPI_DMT_EXIT, 0, NULL} + {ACPI_DMT_UINT8, ACPI_EINJ0_OFFSET (Action), "Action", 0}, + {ACPI_DMT_UINT8, ACPI_EINJ0_OFFSET (Instruction), "Instruction", 0}, + {ACPI_DMT_UINT8, ACPI_EINJ0_OFFSET (Flags), "Flags", 0}, + {ACPI_DMT_UINT8, ACPI_EINJ0_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_GAS, ACPI_EINJ0_OFFSET (RegisterRegion), "Register Region", 0}, + {ACPI_DMT_UINT64, ACPI_EINJ0_OFFSET (Value), "Value", 0}, + {ACPI_DMT_UINT64, ACPI_EINJ0_OFFSET (Mask), "Mask", 0}, + ACPI_DMT_TERMINATOR }; @@ -754,10 +759,10 @@ ACPI_DMTABLE_INFO AcpiDmTableI ACPI_DMTABLE_INFO AcpiDmTableInfoErst[] = { - {ACPI_DMT_UINT32, ACPI_ERST_OFFSET (HeaderLength), "Serialization Header Length"}, - {ACPI_DMT_UINT32, ACPI_ERST_OFFSET (Reserved), "Reserved"}, *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-all@FreeBSD.ORG Fri May 28 18:47:57 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 67756106566C; Fri, 28 May 2010 18:47:57 +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 3DA578FC24; Fri, 28 May 2010 18:47: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 o4SIlv9p077744; Fri, 28 May 2010 18:47:57 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4SIlvgt077743; Fri, 28 May 2010 18:47:57 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201005281847.o4SIlvgt077743@svn.freebsd.org> From: Jung-uk Kim Date: Fri, 28 May 2010 18:47:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org X-SVN-Group: vendor-sys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208626 - vendor-sys/acpica/20100528 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 May 2010 18:47:57 -0000 Author: jkim Date: Fri May 28 18:47:56 2010 New Revision: 208626 URL: http://svn.freebsd.org/changeset/base/208626 Log: Tag ACPICA 20100528. Added: vendor-sys/acpica/20100528/ - copied from r208625, vendor-sys/acpica/dist/ From owner-svn-src-all@FreeBSD.ORG Fri May 28 22:08:35 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 54EEA1065675; Fri, 28 May 2010 22:08:35 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 439408FC13; Fri, 28 May 2010 22:08:35 +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 o4SM8ZoA021880; Fri, 28 May 2010 22:08:35 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4SM8Z3I021877; Fri, 28 May 2010 22:08:35 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201005282208.o4SM8Z3I021877@svn.freebsd.org> From: Jilles Tjoelker Date: Fri, 28 May 2010 22:08:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208629 - head/tools/regression/bin/sh/builtins X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 May 2010 22:08:35 -0000 Author: jilles Date: Fri May 28 22:08:34 2010 New Revision: 208629 URL: http://svn.freebsd.org/changeset/base/208629 Log: sh: Add some simple tests for ., exec and return from . script. Added: head/tools/regression/bin/sh/builtins/dot1.0 (contents, props changed) head/tools/regression/bin/sh/builtins/exec1.0 (contents, props changed) head/tools/regression/bin/sh/builtins/return4.0 (contents, props changed) Added: head/tools/regression/bin/sh/builtins/dot1.0 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/regression/bin/sh/builtins/dot1.0 Fri May 28 22:08:34 2010 (r208629) @@ -0,0 +1,21 @@ +# $FreeBSD$ + +failures= +failure() { + echo "Error at line $1" >&2 + failures=x$failures +} + +T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) || exit +trap 'rm -rf $T' 0 +cd $T || exit 3 +unset x +echo 'x=2' >testscript +. ./testscript +[ "$x" = 2 ] || failure $LINENO +cd / || exit 3 +x=1 +PATH=$T:$PATH . testscript +[ "$x" = 2 ] || failure $LINENO + +test -z "$failures" Added: head/tools/regression/bin/sh/builtins/exec1.0 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/regression/bin/sh/builtins/exec1.0 Fri May 28 22:08:34 2010 (r208629) @@ -0,0 +1,25 @@ +# $FreeBSD$ + +failures= +failure() { + echo "Error at line $1" >&2 + failures=x$failures +} + +( + exec >/dev/null + echo bad +) +[ $? = 0 ] || failure $LINENO +( + exec sh -c 'exit 42' + echo bad +) +[ $? = 42 ] || failure $LINENO +( + exec /var/empty/nosuch + echo bad +) 2>/dev/null +[ $? = 127 ] || failure $LINENO + +test -z "$failures" Added: head/tools/regression/bin/sh/builtins/return4.0 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/regression/bin/sh/builtins/return4.0 Fri May 28 22:08:34 2010 (r208629) @@ -0,0 +1,16 @@ +# $FreeBSD$ + +failures= +failure() { + echo "Error at line $1" >&2 + failures=x$failures +} + +T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) || exit +trap 'rm -rf $T' 0 +cd $T || exit 3 +echo 'return 42; exit 4' >testscript +. ./testscript +[ "$?" = 42 ] || failure $LINENO + +test -z "$failures" From owner-svn-src-all@FreeBSD.ORG Fri May 28 22:40:25 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 29ABC1065670; Fri, 28 May 2010 22:40:25 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 17D848FC1E; Fri, 28 May 2010 22:40:25 +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 o4SMeOCx028919; Fri, 28 May 2010 22:40:24 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4SMeOcJ028914; Fri, 28 May 2010 22:40:24 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201005282240.o4SMeOcJ028914@svn.freebsd.org> From: Jilles Tjoelker Date: Fri, 28 May 2010 22:40:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208630 - in head: bin/sh tools/regression/bin/sh/builtins X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 28 May 2010 22:40:25 -0000 Author: jilles Date: Fri May 28 22:40:24 2010 New Revision: 208630 URL: http://svn.freebsd.org/changeset/base/208630 Log: sh: Recognize "--" in . and exec. Although "--" historically has not been required to be recognized for certain special builtins that do not take options in POSIX, some other implementations recognize options for them, requiring scripts to use "--" or avoid operands starting with "-". Operands starting with "-" can be avoided with eval by prepending a space, and cannot occur with break, continue, exit, return and shift as they only take numbers, nor with times as it does not take operands. With . and exec, avoiding "-" is not so easy as it may require reimplementing the PATH search; therefore the current proposal for POSIX is to require recognition of "--" for them. We continue to accept other strings starting with "-" as operands to . and exec, and also "--" if it is alone to . (which would otherwise be invalid anyway). Added: head/tools/regression/bin/sh/builtins/dot2.0 (contents, props changed) head/tools/regression/bin/sh/builtins/exec2.0 (contents, props changed) Modified: head/bin/sh/eval.c head/bin/sh/main.c Modified: head/bin/sh/eval.c ============================================================================== --- head/bin/sh/eval.c Fri May 28 22:08:34 2010 (r208629) +++ head/bin/sh/eval.c Fri May 28 22:40:24 2010 (r208630) @@ -1170,6 +1170,12 @@ truecmd(int argc __unused, char **argv _ int execcmd(int argc, char **argv) { + /* + * Because we have historically not supported any options, + * only treat "--" specially. + */ + if (argc > 1 && strcmp(argv[1], "--") == 0) + argc--, argv++; if (argc > 1) { struct strlist *sp; Modified: head/bin/sh/main.c ============================================================================== --- head/bin/sh/main.c Fri May 28 22:08:34 2010 (r208629) +++ head/bin/sh/main.c Fri May 28 22:40:24 2010 (r208630) @@ -314,14 +314,20 @@ find_dot_file(char *basename) int dotcmd(int argc, char **argv) { - char *fullname; + char *filename, *fullname; if (argc < 2) error("missing filename"); exitstatus = 0; - fullname = find_dot_file(argv[1]); + /* + * Because we have historically not supported any options, + * only treat "--" specially. + */ + filename = argc > 2 && strcmp(argv[1], "--") == 0 ? argv[2] : argv[1]; + + fullname = find_dot_file(filename); setinputfile(fullname, 1); commandname = fullname; cmdloop(0); Added: head/tools/regression/bin/sh/builtins/dot2.0 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/regression/bin/sh/builtins/dot2.0 Fri May 28 22:40:24 2010 (r208630) @@ -0,0 +1,21 @@ +# $FreeBSD$ + +failures= +failure() { + echo "Error at line $1" >&2 + failures=x$failures +} + +T=$(mktemp -d ${TMPDIR:-/tmp}/sh-test.XXXXXX) || exit +trap 'rm -rf $T' 0 +cd $T || exit 3 +unset x +echo 'x=2' >testscript +. -- ./testscript +[ "$x" = 2 ] || failure $LINENO +cd / || exit 3 +x=1 +PATH=$T:$PATH . -- testscript +[ "$x" = 2 ] || failure $LINENO + +test -z "$failures" Added: head/tools/regression/bin/sh/builtins/exec2.0 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/tools/regression/bin/sh/builtins/exec2.0 Fri May 28 22:40:24 2010 (r208630) @@ -0,0 +1,25 @@ +# $FreeBSD$ + +failures= +failure() { + echo "Error at line $1" >&2 + failures=x$failures +} + +( + exec -- >/dev/null + echo bad +) +[ $? = 0 ] || failure $LINENO +( + exec -- sh -c 'exit 42' + echo bad +) +[ $? = 42 ] || failure $LINENO +( + exec -- /var/empty/nosuch + echo bad +) 2>/dev/null +[ $? = 127 ] || failure $LINENO + +test -z "$failures" From owner-svn-src-all@FreeBSD.ORG Sat May 29 03:06:56 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E64DA1065670; Sat, 29 May 2010 03:06:56 +0000 (UTC) (envelope-from nyan@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D52368FC1B; Sat, 29 May 2010 03:06: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 o4T36uff087143; Sat, 29 May 2010 03:06:56 GMT (envelope-from nyan@svn.freebsd.org) Received: (from nyan@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4T36uog087141; Sat, 29 May 2010 03:06:56 GMT (envelope-from nyan@svn.freebsd.org) Message-Id: <201005290306.o4T36uog087141@svn.freebsd.org> From: Takahashi Yoshihiro Date: Sat, 29 May 2010 03:06:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208632 - head/sys/pc98/pc98 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 29 May 2010 03:06:57 -0000 Author: nyan Date: Sat May 29 03:06:56 2010 New Revision: 208632 URL: http://svn.freebsd.org/changeset/base/208632 Log: MFi386: revision 208604 Clarify a potential issue in get_fpcontext() use. Modified: head/sys/pc98/pc98/machdep.c Modified: head/sys/pc98/pc98/machdep.c ============================================================================== --- head/sys/pc98/pc98/machdep.c Sat May 29 02:14:05 2010 (r208631) +++ head/sys/pc98/pc98/machdep.c Sat May 29 03:06:56 2010 (r208632) @@ -563,6 +563,13 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, sf.sf_uc.uc_mcontext.mc_gs = rgs(); bcopy(regs, &sf.sf_uc.uc_mcontext.mc_fs, sizeof(*regs)); sf.sf_uc.uc_mcontext.mc_len = sizeof(sf.sf_uc.uc_mcontext); /* magic */ + + /* + * The get_fpcontext() call must be placed before assignments + * to mc_fsbase and mc_gsbase due to the alignment-override + * code in get_fpcontext() that possibly clobbers 12 bytes of + * mcontext after mc_fpstate. + */ get_fpcontext(td, &sf.sf_uc.uc_mcontext); fpstate_drop(td); /* @@ -2455,6 +2462,13 @@ get_mcontext(struct thread *td, mcontext mcp->mc_esp = tp->tf_esp; mcp->mc_ss = tp->tf_ss; mcp->mc_len = sizeof(*mcp); + + /* + * The get_fpcontext() call must be placed before assignments + * to mc_fsbase and mc_gsbase due to the alignment-override + * code in get_fpcontext() that possibly clobbers 12 bytes of + * mcontext after mc_fpstate. + */ get_fpcontext(td, mcp); sdp = &td->td_pcb->pcb_gsd; mcp->mc_fsbase = sdp->sd_hibase << 24 | sdp->sd_lobase; From owner-svn-src-all@FreeBSD.ORG Sat May 29 03:09:30 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2D9ED106564A; Sat, 29 May 2010 03:09:30 +0000 (UTC) (envelope-from nyan@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1C9A88FC0A; Sat, 29 May 2010 03:09: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 o4T39UUC087702; Sat, 29 May 2010 03:09:30 GMT (envelope-from nyan@svn.freebsd.org) Received: (from nyan@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4T39TSS087700; Sat, 29 May 2010 03:09:29 GMT (envelope-from nyan@svn.freebsd.org) Message-Id: <201005290309.o4T39TSS087700@svn.freebsd.org> From: Takahashi Yoshihiro Date: Sat, 29 May 2010 03:09:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208633 - head/sys/pc98/pc98 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 29 May 2010 03:09:30 -0000 Author: nyan Date: Sat May 29 03:09:29 2010 New Revision: 208633 URL: http://svn.freebsd.org/changeset/base/208633 Log: MFi386: revision 208621 Defer initializing machine checks for the boot CPU until the local APIC is fully configured. Modified: head/sys/pc98/pc98/machdep.c Modified: head/sys/pc98/pc98/machdep.c ============================================================================== --- head/sys/pc98/pc98/machdep.c Sat May 29 03:06:56 2010 (r208632) +++ head/sys/pc98/pc98/machdep.c Sat May 29 03:09:29 2010 (r208633) @@ -257,8 +257,6 @@ cpu_startup(dummy) vm_pager_bufferinit(); cpu_setregs(); - - mca_init(); } /* From owner-svn-src-all@FreeBSD.ORG Sat May 29 03:40:00 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BB793106566B; Sat, 29 May 2010 03:40:00 +0000 (UTC) (envelope-from nyan@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9F2F58FC14; Sat, 29 May 2010 03:40:00 +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 o4T3e0TR094522; Sat, 29 May 2010 03:40:00 GMT (envelope-from nyan@svn.freebsd.org) Received: (from nyan@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4T3e03n094520; Sat, 29 May 2010 03:40:00 GMT (envelope-from nyan@svn.freebsd.org) Message-Id: <201005290340.o4T3e03n094520@svn.freebsd.org> From: Takahashi Yoshihiro Date: Sat, 29 May 2010 03:40:00 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208634 - head/sys/pc98/pc98 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 29 May 2010 03:40:00 -0000 Author: nyan Date: Sat May 29 03:40:00 2010 New Revision: 208634 URL: http://svn.freebsd.org/changeset/base/208634 Log: Reduce diffs against i386. Modified: head/sys/pc98/pc98/machdep.c Modified: head/sys/pc98/pc98/machdep.c ============================================================================== --- head/sys/pc98/pc98/machdep.c Sat May 29 03:09:29 2010 (r208633) +++ head/sys/pc98/pc98/machdep.c Sat May 29 03:40:00 2010 (r208634) @@ -213,6 +213,8 @@ static void cpu_startup(dummy) void *dummy; { + uintmax_t memsize; + /* * Good {morning,afternoon,evening,night}. */ @@ -222,9 +224,14 @@ cpu_startup(dummy) #ifdef PERFMON perfmon_init(); #endif - printf("real memory = %ju (%ju MB)\n", ptoa((uintmax_t)Maxmem), - ptoa((uintmax_t)Maxmem) / 1048576); realmem = Maxmem; + + /* + * Display physical memory. + */ + memsize = ptoa((uintmax_t)Maxmem); + printf("real memory = %ju (%ju MB)\n", memsize, memsize >> 20); + /* * Display any holes after the first chunk of extended memory. */ @@ -255,7 +262,6 @@ cpu_startup(dummy) */ bufinit(); vm_pager_bufferinit(); - cpu_setregs(); } @@ -1028,8 +1034,8 @@ sigreturn(td, uap) else td->td_sigstk.ss_flags &= ~SS_ONSTACK; #endif - kern_sigprocmask(td, SIG_SETMASK, &ucp->uc_sigmask, NULL, 0); + kern_sigprocmask(td, SIG_SETMASK, &ucp->uc_sigmask, NULL, 0); return (EJUSTRETURN); } @@ -1296,10 +1302,11 @@ SYSCTL_ULONG(_machdep, OID_AUTO, guessed */ int _default_ldt; + union descriptor gdt[NGDT * MAXCPU]; /* global descriptor table */ +union descriptor ldt[NLDT]; /* local descriptor table */ static struct gate_descriptor idt0[NIDT]; struct gate_descriptor *idt = &idt0[0]; /* interrupt descriptor table */ -union descriptor ldt[NLDT]; /* local descriptor table */ struct region_descriptor r_gdt, r_idt; /* table descriptors */ struct mtx dt_lock; /* lock for GDT and LDT */ @@ -1655,7 +1662,8 @@ getmemsize(int first) int i, off, physmap_idx, pa_indx, da_indx; int pg_n; u_long physmem_tunable; - u_int extmem, under16; + u_int extmem; + u_int under16; vm_paddr_t pa, physmap[PHYSMAP_SIZE]; pt_entry_t *pte; quad_t dcons_addr, dcons_size; @@ -1680,7 +1688,7 @@ getmemsize(int first) /* * Perform "base memory" related probes & setup */ - under16 = pc98_getmemsize(&basemem, &extmem); + under16 = pc98_getmemsize(&basemem, &extmem); if (basemem > 640) { printf("Preposterous BIOS basemem of %uK, truncating to 640K\n", basemem); @@ -1912,7 +1920,7 @@ do_next: } *pte = 0; invltlb(); - + /* * XXX * The last chunk must contain at least one page plus the message @@ -1942,9 +1950,8 @@ init386(first) int first; { struct gate_descriptor *gdp; - int gsel_tss, metadata_missing, x; + int gsel_tss, metadata_missing, x, pa; struct pcpu *pc; - int pa; thread0.td_kstack = proc0kstack; thread0.td_pcb = (struct pcb *) @@ -2005,7 +2012,6 @@ init386(first) pmap_kenter(pa + KERNBASE, pa); dpcpu_init((void *)(first + KERNBASE), 0); first += DPCPU_SIZE; - PCPU_SET(prvspace, pc); PCPU_SET(curthread, &thread0); PCPU_SET(curpcb, thread0.td_pcb); From owner-svn-src-all@FreeBSD.ORG Sat May 29 09:07:41 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 478D01065675; Sat, 29 May 2010 09:07:41 +0000 (UTC) (envelope-from nyan@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 3500D8FC13; Sat, 29 May 2010 09:07:41 +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 o4T97fCA066450; Sat, 29 May 2010 09:07:41 GMT (envelope-from nyan@svn.freebsd.org) Received: (from nyan@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4T97fNZ066448; Sat, 29 May 2010 09:07:41 GMT (envelope-from nyan@svn.freebsd.org) Message-Id: <201005290907.o4T97fNZ066448@svn.freebsd.org> From: Takahashi Yoshihiro Date: Sat, 29 May 2010 09:07:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208638 - head/sys/pc98/pc98 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 29 May 2010 09:07:41 -0000 Author: nyan Date: Sat May 29 09:07:40 2010 New Revision: 208638 URL: http://svn.freebsd.org/changeset/base/208638 Log: MFi386: revision 178471 - Add an integer argument to idle to indicate how likely we are to wake from idle over the next tick. - Add a new MD routine, cpu_wake_idle() to wakeup idle threads who are suspended in cpu specific states. This function can fail and cause the scheduler to fall back to another mechanism (ipi). - Implement support for mwait in cpu_idle() on i386/amd64 machines that support it. mwait is a higher performance way to synchronize cpus as compared to hlt & ipis. - Allow selecting the idle routine by name via sysctl machdep.idle. This replaces machdep.cpu_idle_hlt. Only idle routines supported by the current machine are permitted. Modified: head/sys/pc98/pc98/machdep.c Modified: head/sys/pc98/pc98/machdep.c ============================================================================== --- head/sys/pc98/pc98/machdep.c Sat May 29 09:07:25 2010 (r208637) +++ head/sys/pc98/pc98/machdep.c Sat May 29 09:07:40 2010 (r208638) @@ -1108,6 +1108,7 @@ cpu_est_clockrate(int cpu_id, uint64_t * return (0); } + /* * Shutdown the CPU as much as possible */ @@ -1118,70 +1119,177 @@ cpu_halt(void) __asm__ ("hlt"); } -/* - * Hook to idle the CPU when possible. In the SMP case we default to - * off because a halted cpu will not currently pick up a new thread in the - * run queue until the next timer tick. If turned on this will result in - * approximately a 4.2% loss in real time performance in buildworld tests - * (but improves user and sys times oddly enough), and saves approximately - * 5% in power consumption on an idle machine (tests w/2xCPU 1.1GHz P3). - * - * XXX we need to have a cpu mask of idle cpus and generate an IPI or - * otherwise generate some sort of interrupt to wake up cpus sitting in HLT. - * Then we can have our cake and eat it too. - * - * XXX I'm turning it on for SMP as well by default for now. It seems to - * help lock contention somewhat, and this is critical for HTT. -Peter - */ -static int cpu_idle_hlt = 1; -TUNABLE_INT("machdep.cpu_idle_hlt", &cpu_idle_hlt); -SYSCTL_INT(_machdep, OID_AUTO, cpu_idle_hlt, CTLFLAG_RW, - &cpu_idle_hlt, 0, "Idle loop HLT enable"); - static void -cpu_idle_default(void) +cpu_idle_hlt(int busy) { /* - * we must absolutely guarentee that hlt is the - * absolute next instruction after sti or we - * introduce a timing window. + * we must absolutely guarentee that hlt is the next instruction + * after sti or we introduce a timing window. */ - __asm __volatile("sti; hlt"); + disable_intr(); + if (sched_runnable()) + enable_intr(); + else + __asm __volatile("sti; hlt"); } -/* - * Note that we have to be careful here to avoid a race between checking - * sched_runnable() and actually halting. If we don't do this, we may waste - * the time between calling hlt and the next interrupt even though there - * is a runnable process. - */ +static void +cpu_idle_spin(int busy) +{ + return; +} + +void (*cpu_idle_fn)(int) = cpu_idle_hlt; + void cpu_idle(int busy) { - -#ifdef SMP +#if defined(SMP) if (mp_grab_cpu_hlt()) return; #endif + cpu_idle_fn(busy); +} + +/* + * mwait cpu power states. Lower 4 bits are sub-states. + */ +#define MWAIT_C0 0xf0 +#define MWAIT_C1 0x00 +#define MWAIT_C2 0x10 +#define MWAIT_C3 0x20 +#define MWAIT_C4 0x30 + +#define MWAIT_DISABLED 0x0 +#define MWAIT_WOKEN 0x1 +#define MWAIT_WAITING 0x2 + +static void +cpu_idle_mwait(int busy) +{ + int *mwait; - if (cpu_idle_hlt) { - disable_intr(); - if (sched_runnable()) - enable_intr(); - else - (*cpu_idle_hook)(); + mwait = (int *)PCPU_PTR(monitorbuf); + *mwait = MWAIT_WAITING; + if (sched_runnable()) + return; + cpu_monitor(mwait, 0, 0); + if (*mwait == MWAIT_WAITING) + cpu_mwait(0, MWAIT_C1); +} + +static void +cpu_idle_mwait_hlt(int busy) +{ + int *mwait; + + mwait = (int *)PCPU_PTR(monitorbuf); + if (busy == 0) { + *mwait = MWAIT_DISABLED; + cpu_idle_hlt(busy); + return; } + *mwait = MWAIT_WAITING; + if (sched_runnable()) + return; + cpu_monitor(mwait, 0, 0); + if (*mwait == MWAIT_WAITING) + cpu_mwait(0, MWAIT_C1); } int cpu_idle_wakeup(int cpu) { + struct pcpu *pcpu; + int *mwait; - return (0); + if (cpu_idle_fn == cpu_idle_spin) + return (1); + if (cpu_idle_fn != cpu_idle_mwait && cpu_idle_fn != cpu_idle_mwait_hlt) + return (0); + pcpu = pcpu_find(cpu); + mwait = (int *)pcpu->pc_monitorbuf; + /* + * This doesn't need to be atomic since missing the race will + * simply result in unnecessary IPIs. + */ + if (cpu_idle_fn == cpu_idle_mwait_hlt && *mwait == MWAIT_DISABLED) + return (0); + *mwait = MWAIT_WOKEN; + + return (1); +} + +/* + * Ordered by speed/power consumption. + */ +struct { + void *id_fn; + char *id_name; +} idle_tbl[] = { + { cpu_idle_spin, "spin" }, + { cpu_idle_mwait, "mwait" }, + { cpu_idle_mwait_hlt, "mwait_hlt" }, + { cpu_idle_hlt, "hlt" }, + { NULL, NULL } +}; + +static int +idle_sysctl_available(SYSCTL_HANDLER_ARGS) +{ + char *avail, *p; + int error; + int i; + + avail = malloc(256, M_TEMP, M_WAITOK); + p = avail; + for (i = 0; idle_tbl[i].id_name != NULL; i++) { + if (strstr(idle_tbl[i].id_name, "mwait") && + (cpu_feature2 & CPUID2_MON) == 0) + continue; + p += sprintf(p, "%s, ", idle_tbl[i].id_name); + } + error = sysctl_handle_string(oidp, avail, 0, req); + free(avail, M_TEMP); + return (error); } -/* Other subsystems (e.g., ACPI) can hook this later. */ -void (*cpu_idle_hook)(void) = cpu_idle_default; +static int +idle_sysctl(SYSCTL_HANDLER_ARGS) +{ + char buf[16]; + int error; + char *p; + int i; + + p = "unknown"; + for (i = 0; idle_tbl[i].id_name != NULL; i++) { + if (idle_tbl[i].id_fn == cpu_idle_fn) { + p = idle_tbl[i].id_name; + break; + } + } + strncpy(buf, p, sizeof(buf)); + error = sysctl_handle_string(oidp, buf, sizeof(buf), req); + if (error != 0 || req->newptr == NULL) + return (error); + for (i = 0; idle_tbl[i].id_name != NULL; i++) { + if (strstr(idle_tbl[i].id_name, "mwait") && + (cpu_feature2 & CPUID2_MON) == 0) + continue; + if (strcmp(idle_tbl[i].id_name, buf)) + continue; + cpu_idle_fn = idle_tbl[i].id_fn; + return (0); + } + return (EINVAL); +} + +SYSCTL_PROC(_machdep, OID_AUTO, idle_available, CTLTYPE_STRING | CTLFLAG_RD, + 0, 0, idle_sysctl_available, "A", "list of available idle functions"); + +SYSCTL_PROC(_machdep, OID_AUTO, idle, CTLTYPE_STRING | CTLFLAG_RW, 0, 0, + idle_sysctl, "A", "currently selected idle function"); /* * Reset registers to default values on exec. From owner-svn-src-all@FreeBSD.ORG Sat May 29 09:12:02 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E5A3B1065674; Sat, 29 May 2010 09:12:02 +0000 (UTC) (envelope-from nyan@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D3E8B8FC08; Sat, 29 May 2010 09:12: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 o4T9C2o0067461; Sat, 29 May 2010 09:12:02 GMT (envelope-from nyan@svn.freebsd.org) Received: (from nyan@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4T9C2mX067459; Sat, 29 May 2010 09:12:02 GMT (envelope-from nyan@svn.freebsd.org) Message-Id: <201005290912.o4T9C2mX067459@svn.freebsd.org> From: Takahashi Yoshihiro Date: Sat, 29 May 2010 09:12:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208639 - head/sys/pc98/pc98 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 29 May 2010 09:12:03 -0000 Author: nyan Date: Sat May 29 09:12:02 2010 New Revision: 208639 URL: http://svn.freebsd.org/changeset/base/208639 Log: MFi386: the part of revision 181809 Use SEL_KPL macro. Modified: head/sys/pc98/pc98/machdep.c Modified: head/sys/pc98/pc98/machdep.c ============================================================================== --- head/sys/pc98/pc98/machdep.c Sat May 29 09:07:40 2010 (r208638) +++ head/sys/pc98/pc98/machdep.c Sat May 29 09:12:02 2010 (r208639) @@ -1439,7 +1439,7 @@ struct soft_segment_descriptor gdt_segs[ { .ssd_base = 0x0, .ssd_limit = 0x0, .ssd_type = 0, - .ssd_dpl = 0, + .ssd_dpl = SEL_KPL, .ssd_p = 0, .ssd_xx = 0, .ssd_xx1 = 0, .ssd_def32 = 0, @@ -1448,7 +1448,7 @@ struct soft_segment_descriptor gdt_segs[ { .ssd_base = 0x0, .ssd_limit = 0xfffff, .ssd_type = SDT_MEMRWA, - .ssd_dpl = 0, + .ssd_dpl = SEL_KPL, .ssd_p = 1, .ssd_xx = 0, .ssd_xx1 = 0, .ssd_def32 = 1, @@ -1475,7 +1475,7 @@ struct soft_segment_descriptor gdt_segs[ { .ssd_base = 0x0, .ssd_limit = 0xfffff, .ssd_type = SDT_MEMERA, - .ssd_dpl = 0, + .ssd_dpl = SEL_KPL, .ssd_p = 1, .ssd_xx = 0, .ssd_xx1 = 0, .ssd_def32 = 1, @@ -1484,7 +1484,7 @@ struct soft_segment_descriptor gdt_segs[ { .ssd_base = 0x0, .ssd_limit = 0xfffff, .ssd_type = SDT_MEMRWA, - .ssd_dpl = 0, + .ssd_dpl = SEL_KPL, .ssd_p = 1, .ssd_xx = 0, .ssd_xx1 = 0, .ssd_def32 = 1, @@ -1511,7 +1511,7 @@ struct soft_segment_descriptor gdt_segs[ { .ssd_base = 0x400, .ssd_limit = 0xfffff, .ssd_type = SDT_MEMRWA, - .ssd_dpl = 0, + .ssd_dpl = SEL_KPL, .ssd_p = 1, .ssd_xx = 0, .ssd_xx1 = 0, .ssd_def32 = 1, From owner-svn-src-all@FreeBSD.ORG Sat May 29 11:12:07 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 341371065676; Sat, 29 May 2010 11:12:07 +0000 (UTC) (envelope-from rdivacky@vlk.vlakno.cz) Received: from vlakno.cz (lev.vlakno.cz [77.93.215.190]) by mx1.freebsd.org (Postfix) with ESMTP id DBF848FC1B; Sat, 29 May 2010 11:12:05 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by vlakno.cz (Postfix) with ESMTP id ECED89CB082; Sat, 29 May 2010 13:08:39 +0200 (CEST) X-Virus-Scanned: amavisd-new at vlakno.cz Received: from vlakno.cz ([127.0.0.1]) by localhost (lev.vlakno.cz [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id QKmmlsgTa-Wf; Sat, 29 May 2010 13:08:37 +0200 (CEST) Received: from vlk.vlakno.cz (localhost [127.0.0.1]) by vlakno.cz (Postfix) with ESMTP id AB8EE9CB181; Sat, 29 May 2010 13:08:37 +0200 (CEST) Received: (from rdivacky@localhost) by vlk.vlakno.cz (8.14.3/8.14.3/Submit) id o4TB8bIF093298; Sat, 29 May 2010 13:08:37 +0200 (CEST) (envelope-from rdivacky) Date: Sat, 29 May 2010 13:08:37 +0200 From: Roman Divacky To: Ed Schouten Message-ID: <20100529110837.GA93235@freebsd.org> References: <201005271515.o4RFFx0I008237@svn.freebsd.org> <20100528183915.GN56080@hoeg.nl> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20100528183915.GN56080@hoeg.nl> User-Agent: Mutt/1.4.2.3i Cc: svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-vendor@freebsd.org Subject: Re: svn commit: r208599 - in vendor/llvm/dist: . autoconf docs docs/CommandGuide docs/tutorial include/llvm include/llvm/ADT include/llvm/Analysis include/llvm/CodeGen include/llvm/Config include/llvm/... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 29 May 2010 11:12:07 -0000 On Fri, May 28, 2010 at 08:39:15PM +0200, Ed Schouten wrote: > * Roman Divacky wrote: > > Log: > > Update LLVM to r104832. > > So is there any chance we can start tagging LLVM snapshots again? Tags > in SVN are basically free. if this particular import gets all the testing I'll sure tag this one as clang-import or something :) From owner-svn-src-all@FreeBSD.ORG Sat May 29 12:49:08 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 953D2106567A; Sat, 29 May 2010 12:49:08 +0000 (UTC) (envelope-from ed@hoeg.nl) Received: from mx0.hoeg.nl (mx0.hoeg.nl [IPv6:2001:4dd0:ff41::b23f:aa]) by mx1.freebsd.org (Postfix) with ESMTP id 51BB78FC18; Sat, 29 May 2010 12:49:08 +0000 (UTC) Received: by mx0.hoeg.nl (Postfix, from userid 1000) id 598C52A28CBE; Sat, 29 May 2010 14:49:07 +0200 (CEST) Date: Sat, 29 May 2010 14:49:07 +0200 From: Ed Schouten To: Roman Divacky Message-ID: <20100529124907.GO56080@hoeg.nl> References: <201005271515.o4RFFx0I008237@svn.freebsd.org> <20100528183915.GN56080@hoeg.nl> <20100529110837.GA93235@freebsd.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="WVt2Ja9ZTIogLOrS" Content-Disposition: inline In-Reply-To: <20100529110837.GA93235@freebsd.org> User-Agent: Mutt/1.5.20 (2009-06-14) Cc: svn-src-all@freebsd.org, src-committers@freebsd.org, svn-src-vendor@freebsd.org Subject: Re: svn commit: r208599 - in vendor/llvm/dist: . autoconf docs docs/CommandGuide docs/tutorial include/llvm include/llvm/ADT include/llvm/Analysis include/llvm/CodeGen include/llvm/Config include/llvm/... X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 29 May 2010 12:49:08 -0000 --WVt2Ja9ZTIogLOrS Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable * Roman Divacky wrote: > if this particular import gets all the testing I'll sure tag this one=20 > as clang-import or something :) For some reason I still can't understand why tagging each import is a bad thing. But I have no time and interest to bikeshed about this. --=20 Ed Schouten WWW: http://80386.nl/ --WVt2Ja9ZTIogLOrS Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.14 (FreeBSD) iEYEARECAAYFAkwBDUMACgkQ52SDGA2eCwWw/wCfVxW+C8bW/2krtGbjr319HZFe OgcAnArigHA4kjvdJYrT1fJgO7KQl0w8 =TAqq -----END PGP SIGNATURE----- --WVt2Ja9ZTIogLOrS-- From owner-svn-src-all@FreeBSD.ORG Sat May 29 16:10:08 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9619A106564A; Sat, 29 May 2010 16:10:08 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 361918FC1A; Sat, 29 May 2010 16:10:08 +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 o4TGA8EH063514; Sat, 29 May 2010 16:10:08 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4TGA8s8063512; Sat, 29 May 2010 16:10:08 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <201005291610.o4TGA8s8063512@svn.freebsd.org> From: Rui Paulo Date: Sat, 29 May 2010 16:10:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208642 - head/sys/dev/ath/ath_hal X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 29 May 2010 16:10:08 -0000 Author: rpaulo Date: Sat May 29 16:10:07 2010 New Revision: 208642 URL: http://svn.freebsd.org/changeset/base/208642 Log: Don't shadow the global variable 'version'. Submitted by: Arnaud Lacombe MFC after: 1 week Modified: head/sys/dev/ath/ath_hal/ah_eeprom_v1.c Modified: head/sys/dev/ath/ath_hal/ah_eeprom_v1.c ============================================================================== --- head/sys/dev/ath/ath_hal/ah_eeprom_v1.c Sat May 29 13:05:41 2010 (r208641) +++ head/sys/dev/ath/ath_hal/ah_eeprom_v1.c Sat May 29 16:10:07 2010 (r208642) @@ -112,7 +112,7 @@ ath_hal_v1EepromAttach(struct ath_hal *a { HAL_EEPROM_v1 *ee = AH_PRIVATE(ah)->ah_eeprom; uint16_t athvals[AR_EEPROM_ATHEROS_MAX]; /* XXX off stack */ - uint16_t protect, version, eeval; + uint16_t protect, eeprom_version, eeval; uint32_t sum; int i, loc; @@ -138,18 +138,18 @@ ath_hal_v1EepromAttach(struct ath_hal *a HALDEBUG(ah, HAL_DEBUG_ATTACH, "EEPROM protect 0x%x\n", protect); /* XXX check proper access before continuing */ - if (!ath_hal_eepromRead(ah, AR_EEPROM_VERSION, &version)) { + if (!ath_hal_eepromRead(ah, AR_EEPROM_VERSION, &eeprom_version)) { HALDEBUG(ah, HAL_DEBUG_ANY, "%s: unable to read EEPROM version\n", __func__); return HAL_EEREAD; } - if (((version>>12) & 0xf) != 1) { + if (((eeprom_version>>12) & 0xf) != 1) { /* * This code only groks the version 1 EEPROM layout. */ HALDEBUG(ah, HAL_DEBUG_ANY, "%s: unsupported EEPROM version 0x%x found\n", - __func__, version); + __func__, eeprom_version); return HAL_EEVERSION; } @@ -183,7 +183,7 @@ ath_hal_v1EepromAttach(struct ath_hal *a return HAL_ENOMEM; } - ee->ee_version = version; + ee->ee_version = eeprom_version; ee->ee_protect = protect; ee->ee_antenna = athvals[2]; ee->ee_biasCurrents = athvals[3]; @@ -243,7 +243,7 @@ ath_hal_v1EepromAttach(struct ath_hal *a } AH_PRIVATE(ah)->ah_eeprom = ee; - AH_PRIVATE(ah)->ah_eeversion = version; + AH_PRIVATE(ah)->ah_eeversion = eeprom_version; AH_PRIVATE(ah)->ah_eepromDetach = v1EepromDetach; AH_PRIVATE(ah)->ah_eepromGet = v1EepromGet; AH_PRIVATE(ah)->ah_eepromSet = v1EepromSet; From owner-svn-src-all@FreeBSD.ORG Sat May 29 16:11:51 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CD1A4106566C; Sat, 29 May 2010 16:11:51 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id BC7AF8FC18; Sat, 29 May 2010 16:11: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 o4TGBpIK063919; Sat, 29 May 2010 16:11:51 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4TGBpUL063917; Sat, 29 May 2010 16:11:51 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <201005291611.o4TGBpUL063917@svn.freebsd.org> From: Rui Paulo Date: Sat, 29 May 2010 16:11:51 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208643 - head/sys/dev/ath/ath_hal/ar5210 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 29 May 2010 16:11:51 -0000 Author: rpaulo Date: Sat May 29 16:11:51 2010 New Revision: 208643 URL: http://svn.freebsd.org/changeset/base/208643 Log: Due to the way HALDEBUG() is defined, we need to add curly brackets when using it as a sole if clause instruction. Submitted by: Arnaud Lacombe MFC after: 1 week Modified: head/sys/dev/ath/ath_hal/ar5210/ar5210_reset.c Modified: head/sys/dev/ath/ath_hal/ar5210/ar5210_reset.c ============================================================================== --- head/sys/dev/ath/ath_hal/ar5210/ar5210_reset.c Sat May 29 16:10:07 2010 (r208642) +++ head/sys/dev/ath/ath_hal/ar5210/ar5210_reset.c Sat May 29 16:11:51 2010 (r208643) @@ -526,9 +526,10 @@ ar5210PerCalibrationN(struct ath_hal *ah /* AGC calibration (this was added to make the NF threshold check work) */ OS_REG_WRITE(ah, AR_PHY_AGCCTL, OS_REG_READ(ah, AR_PHY_AGCCTL) | AR_PHY_AGC_CAL); - if (!ath_hal_wait(ah, AR_PHY_AGCCTL, AR_PHY_AGC_CAL, 0)) + if (!ath_hal_wait(ah, AR_PHY_AGCCTL, AR_PHY_AGC_CAL, 0)) { HALDEBUG(ah, HAL_DEBUG_ANY, "%s: AGC calibration timeout\n", __func__); + } /* Rewrite our AGC values we stored off earlier (return AGC to normal operation) */ OS_REG_WRITE(ah, 0x9858, reg9858); From owner-svn-src-all@FreeBSD.ORG Sat May 29 16:14:03 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 05FAA1065677; Sat, 29 May 2010 16:14:03 +0000 (UTC) (envelope-from rpaulo@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E954D8FC0A; Sat, 29 May 2010 16:14: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 o4TGE2eS064437; Sat, 29 May 2010 16:14:02 GMT (envelope-from rpaulo@svn.freebsd.org) Received: (from rpaulo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4TGE2cM064435; Sat, 29 May 2010 16:14:02 GMT (envelope-from rpaulo@svn.freebsd.org) Message-Id: <201005291614.o4TGE2cM064435@svn.freebsd.org> From: Rui Paulo Date: Sat, 29 May 2010 16:14:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208644 - head/sys/dev/ath/ath_hal/ar5211 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 29 May 2010 16:14:03 -0000 Author: rpaulo Date: Sat May 29 16:14:02 2010 New Revision: 208644 URL: http://svn.freebsd.org/changeset/base/208644 Log: Due to the way HALDEBUG() is defined, we need to add curly brackets when using it as a sole if clause instruction. While there, fix 'const static' typo. Submitted by: Arnaud Lacombe MFC after: 1 week Modified: head/sys/dev/ath/ath_hal/ar5211/ar5211_reset.c Modified: head/sys/dev/ath/ath_hal/ar5211/ar5211_reset.c ============================================================================== --- head/sys/dev/ath/ath_hal/ar5211/ar5211_reset.c Sat May 29 16:11:51 2010 (r208643) +++ head/sys/dev/ath/ath_hal/ar5211/ar5211_reset.c Sat May 29 16:14:02 2010 (r208644) @@ -46,7 +46,7 @@ typedef struct { } CHAN_INFO_2GHZ; #define CI_2GHZ_INDEX_CORRECTION 19 -const static CHAN_INFO_2GHZ chan2GHzData[] = { +static const CHAN_INFO_2GHZ chan2GHzData[] = { { 1, 0x46, 96 }, /* 2312 -19 */ { 1, 0x46, 97 }, /* 2317 -18 */ { 1, 0x46, 98 }, /* 2322 -17 */ @@ -926,9 +926,10 @@ ar5211IsNfGood(struct ath_hal *ah, struc if (!getNoiseFloorThresh(ah, chan, &nfThresh)) return AH_FALSE; - if (OS_REG_READ(ah, AR_PHY_AGC_CONTROL) & AR_PHY_AGC_CONTROL_NF) + if (OS_REG_READ(ah, AR_PHY_AGC_CONTROL) & AR_PHY_AGC_CONTROL_NF) { HALDEBUG(ah, HAL_DEBUG_ANY, "%s: NF did not complete in calibration window\n", __func__); + } nf = ar5211GetNoiseFloor(ah); if (nf > nfThresh) { HALDEBUG(ah, HAL_DEBUG_ANY, From owner-svn-src-all@FreeBSD.ORG Sat May 29 17:10:46 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5C2BA1065673; Sat, 29 May 2010 17:10:46 +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 144F98FC08; Sat, 29 May 2010 17:10:46 +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 o4THAjwP076874; Sat, 29 May 2010 17:10:45 GMT (envelope-from alc@svn.freebsd.org) Received: (from alc@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4THAjk8076870; Sat, 29 May 2010 17:10:45 GMT (envelope-from alc@svn.freebsd.org) Message-Id: <201005291710.o4THAjk8076870@svn.freebsd.org> From: Alan Cox Date: Sat, 29 May 2010 17:10:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208645 - in head/sys: amd64/amd64 i386/i386 vm X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 29 May 2010 17:10:46 -0000 Author: alc Date: Sat May 29 17:10:45 2010 New Revision: 208645 URL: http://svn.freebsd.org/changeset/base/208645 Log: When I pushed down the page queues lock into pmap_is_modified(), I created an ordering dependence: A pmap operation that clears PG_WRITEABLE and calls vm_page_dirty() must perform the call first. Otherwise, pmap_is_modified() could return FALSE without acquiring the page queues lock because the page is not (currently) writeable, and the caller to pmap_is_modified() might believe that the page's dirty field is clear because it has not seen the effect of the vm_page_dirty() call. When I pushed down the page queues lock into pmap_is_modified(), I overlooked one place where this ordering dependence is violated: pmap_enter(). In a rare situation pmap_enter() can be called to replace a dirty mapping to one page with a mapping to another page. (I say rare because replacements generally occur as a result of a copy-on-write fault, and so the old page is not dirty.) This change delays clearing PG_WRITEABLE until after vm_page_dirty() has been called. Fixing the ordering dependency also makes it easy to introduce a small optimization: When pmap_enter() used to replace a mapping to one page with a mapping to another page, it freed the pv entry for the first mapping and later called the pv entry allocator for the new mapping. Now, pmap_enter() attempts to recycle the old pv entry, saving two calls to the pv entry allocator. There is no point in setting PG_WRITEABLE on unmanaged pages, so don't. Update a comment to reflect this. Tidy up the variable declarations at the start of pmap_enter(). Modified: head/sys/amd64/amd64/pmap.c head/sys/i386/i386/pmap.c head/sys/vm/vm_page.h Modified: head/sys/amd64/amd64/pmap.c ============================================================================== --- head/sys/amd64/amd64/pmap.c Sat May 29 16:14:02 2010 (r208644) +++ head/sys/amd64/amd64/pmap.c Sat May 29 17:10:45 2010 (r208645) @@ -3128,11 +3128,11 @@ void pmap_enter(pmap_t pmap, vm_offset_t va, vm_prot_t access, vm_page_t m, vm_prot_t prot, boolean_t wired) { - vm_paddr_t pa; pd_entry_t *pde; pt_entry_t *pte; - vm_paddr_t opa; - pt_entry_t origpte, newpte; + pt_entry_t newpte, origpte; + pv_entry_t pv; + vm_paddr_t opa, pa; vm_page_t mpte, om; boolean_t invlva; @@ -3200,6 +3200,9 @@ pmap_enter(pmap_t pmap, vm_offset_t va, } goto validate; } + + pv = NULL; + /* * Mapping has changed, invalidate old range and fall through to * handle validating new mapping. @@ -3209,7 +3212,7 @@ pmap_enter(pmap_t pmap, vm_offset_t va, pmap->pm_stats.wired_count--; if (origpte & PG_MANAGED) { om = PHYS_TO_VM_PAGE(opa); - pmap_remove_entry(pmap, om, va); + pv = pmap_pvh_remove(&om->md, pmap, va); } if (mpte != NULL) { mpte->wire_count--; @@ -3226,9 +3229,13 @@ pmap_enter(pmap_t pmap, vm_offset_t va, if ((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0) { KASSERT(va < kmi.clean_sva || va >= kmi.clean_eva, ("pmap_enter: managed mapping within the clean submap")); - pmap_insert_entry(pmap, va, m); + if (pv == NULL) + pv = get_pv_entry(pmap, FALSE); + pv->pv_va = va; + TAILQ_INSERT_TAIL(&m->md.pv_list, pv, pv_list); pa |= PG_MANAGED; - } + } else if (pv != NULL) + free_pv_entry(pmap, pv); /* * Increment counters @@ -3243,7 +3250,8 @@ validate: newpte = (pt_entry_t)(pa | pmap_cache_bits(m->md.pat_mode, 0) | PG_V); if ((prot & VM_PROT_WRITE) != 0) { newpte |= PG_RW; - vm_page_flag_set(m, PG_WRITEABLE); + if ((newpte & PG_MANAGED) != 0) + vm_page_flag_set(m, PG_WRITEABLE); } if ((prot & VM_PROT_EXECUTE) == 0) newpte |= pg_nx; @@ -3278,6 +3286,10 @@ validate: if ((newpte & PG_RW) == 0) invlva = TRUE; } + if ((origpte & PG_MANAGED) != 0 && + TAILQ_EMPTY(&om->md.pv_list) && + TAILQ_EMPTY(&pa_to_pvh(opa)->pv_list)) + vm_page_flag_clear(om, PG_WRITEABLE); if (invlva) pmap_invalidate_page(pmap, va); } else Modified: head/sys/i386/i386/pmap.c ============================================================================== --- head/sys/i386/i386/pmap.c Sat May 29 16:14:02 2010 (r208644) +++ head/sys/i386/i386/pmap.c Sat May 29 17:10:45 2010 (r208645) @@ -3257,11 +3257,11 @@ void pmap_enter(pmap_t pmap, vm_offset_t va, vm_prot_t access, vm_page_t m, vm_prot_t prot, boolean_t wired) { - vm_paddr_t pa; pd_entry_t *pde; pt_entry_t *pte; - vm_paddr_t opa; - pt_entry_t origpte, newpte; + pt_entry_t newpte, origpte; + pv_entry_t pv; + vm_paddr_t opa, pa; vm_page_t mpte, om; boolean_t invlva; @@ -3336,6 +3336,9 @@ pmap_enter(pmap_t pmap, vm_offset_t va, } goto validate; } + + pv = NULL; + /* * Mapping has changed, invalidate old range and fall through to * handle validating new mapping. @@ -3345,7 +3348,7 @@ pmap_enter(pmap_t pmap, vm_offset_t va, pmap->pm_stats.wired_count--; if (origpte & PG_MANAGED) { om = PHYS_TO_VM_PAGE(opa); - pmap_remove_entry(pmap, om, va); + pv = pmap_pvh_remove(&om->md, pmap, va); } if (mpte != NULL) { mpte->wire_count--; @@ -3362,9 +3365,13 @@ pmap_enter(pmap_t pmap, vm_offset_t va, if ((m->flags & (PG_FICTITIOUS | PG_UNMANAGED)) == 0) { KASSERT(va < kmi.clean_sva || va >= kmi.clean_eva, ("pmap_enter: managed mapping within the clean submap")); - pmap_insert_entry(pmap, va, m); + if (pv == NULL) + pv = get_pv_entry(pmap, FALSE); + pv->pv_va = va; + TAILQ_INSERT_TAIL(&m->md.pv_list, pv, pv_list); pa |= PG_MANAGED; - } + } else if (pv != NULL) + free_pv_entry(pmap, pv); /* * Increment counters @@ -3379,7 +3386,8 @@ validate: newpte = (pt_entry_t)(pa | pmap_cache_bits(m->md.pat_mode, 0) | PG_V); if ((prot & VM_PROT_WRITE) != 0) { newpte |= PG_RW; - vm_page_flag_set(m, PG_WRITEABLE); + if ((newpte & PG_MANAGED) != 0) + vm_page_flag_set(m, PG_WRITEABLE); } #ifdef PAE if ((prot & VM_PROT_EXECUTE) == 0) @@ -3420,6 +3428,10 @@ validate: if ((prot & VM_PROT_WRITE) == 0) invlva = TRUE; } + if ((origpte & PG_MANAGED) != 0 && + TAILQ_EMPTY(&om->md.pv_list) && + TAILQ_EMPTY(&pa_to_pvh(opa)->pv_list)) + vm_page_flag_clear(om, PG_WRITEABLE); if (invlva) pmap_invalidate_page(pmap, va); } else Modified: head/sys/vm/vm_page.h ============================================================================== --- head/sys/vm/vm_page.h Sat May 29 16:14:02 2010 (r208644) +++ head/sys/vm/vm_page.h Sat May 29 17:10:45 2010 (r208645) @@ -219,8 +219,8 @@ extern struct vpglocks pa_lock[]; * pte mappings, nor can they be removed from their objects via * the object, and such pages are also not on any PQ queue. * - * PG_WRITEABLE is set exclusively by pmap_enter(). When it does so, the page - * must be VPO_BUSY. + * PG_WRITEABLE is set exclusively on managed pages by pmap_enter(). When it + * does so, the page must be VPO_BUSY. */ #define PG_CACHED 0x0001 /* page is cached */ #define PG_FREE 0x0002 /* page is free */ From owner-svn-src-all@FreeBSD.ORG Sat May 29 18:26:44 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A13F51065675; Sat, 29 May 2010 18:26:44 +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 910B08FC0C; Sat, 29 May 2010 18:26: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 o4TIQimV093531; Sat, 29 May 2010 18:26:44 GMT (envelope-from alc@svn.freebsd.org) Received: (from alc@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4TIQisq093529; Sat, 29 May 2010 18:26:44 GMT (envelope-from alc@svn.freebsd.org) Message-Id: <201005291826.o4TIQisq093529@svn.freebsd.org> From: Alan Cox Date: Sat, 29 May 2010 18:26:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208646 - head/sys/ia64/ia64 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 29 May 2010 18:26:44 -0000 Author: alc Date: Sat May 29 18:26:44 2010 New Revision: 208646 URL: http://svn.freebsd.org/changeset/base/208646 Log: Don't set PG_WRITEABLE in pmap_enter() unless the page is managed. Modified: head/sys/ia64/ia64/pmap.c Modified: head/sys/ia64/ia64/pmap.c ============================================================================== --- head/sys/ia64/ia64/pmap.c Sat May 29 17:10:45 2010 (r208645) +++ head/sys/ia64/ia64/pmap.c Sat May 29 18:26:44 2010 (r208646) @@ -1595,7 +1595,7 @@ validate: if (icache_inval) ia64_sync_icache(va, PAGE_SIZE); - if ((prot & VM_PROT_WRITE) != 0) + if ((prot & VM_PROT_WRITE) != 0 && managed) vm_page_flag_set(m, PG_WRITEABLE); vm_page_unlock_queues(); pmap_switch(oldpmap); From owner-svn-src-all@FreeBSD.ORG Sat May 29 20:24:01 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E680C1065673; Sat, 29 May 2010 20:24:01 +0000 (UTC) (envelope-from jilles@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id D53268FC0A; Sat, 29 May 2010 20:24: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 o4TKO1Rf019226; Sat, 29 May 2010 20:24:01 GMT (envelope-from jilles@svn.freebsd.org) Received: (from jilles@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4TKO1gf019223; Sat, 29 May 2010 20:24:01 GMT (envelope-from jilles@svn.freebsd.org) Message-Id: <201005292024.o4TKO1gf019223@svn.freebsd.org> From: Jilles Tjoelker Date: Sat, 29 May 2010 20:24:01 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208647 - in head: sbin/mount share/man/man5 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 29 May 2010 20:24:02 -0000 Author: jilles Date: Sat May 29 20:24:01 2010 New Revision: 208647 URL: http://svn.freebsd.org/changeset/base/208647 Log: Clarify devfs manpages slightly. mount(8): add xref to devfs(5) devfs(5): change example to something more likely to be useful (it is not necessary to mount a devfs on /dev manually, but for chroots/jails it is often needed), mention since when devfs is preferred to device nodes on ufs PR: 146600 MFC after: 2 weeks Modified: head/sbin/mount/mount.8 head/share/man/man5/devfs.5 Modified: head/sbin/mount/mount.8 ============================================================================== --- head/sbin/mount/mount.8 Sat May 29 18:26:44 2010 (r208646) +++ head/sbin/mount/mount.8 Sat May 29 20:24:01 2010 (r208647) @@ -525,6 +525,7 @@ support for a particular file system mig .Xr nmount 2 , .Xr acl 3 , .Xr mac 4 , +.Xr devfs 5 , .Xr ext2fs 5 , .Xr fstab 5 , .Xr procfs 5 , Modified: head/share/man/man5/devfs.5 ============================================================================== --- head/share/man/man5/devfs.5 Sat May 29 18:26:44 2010 (r208646) +++ head/share/man/man5/devfs.5 Sat May 29 20:24:01 2010 (r208647) @@ -38,7 +38,7 @@ .\" .\" $FreeBSD$ .\" -.Dd December 14, 1996 +.Dd May 29, 2010 .Dt DEVFS 5 .Os .Sh NAME @@ -80,9 +80,9 @@ mount point. To mount a .Nm volume located on -.Pa /dev : +.Pa /mychroot/dev : .Pp -.Dl "mount -t devfs devfs /dev" +.Dl "mount -t devfs devfs /mychroot/dev" .Sh SEE ALSO .Xr devfs 8 , .Xr mount 8 @@ -90,7 +90,9 @@ volume located on The .Nm file system first appeared in -.Fx 2.0 . +.Fx 2.0 +and became the preferred method for accessing devices in +.Fx 5.0 . The .Nm manual page first appeared in From owner-svn-src-all@FreeBSD.ORG Sat May 29 22:38:03 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DC699106567E; Sat, 29 May 2010 22:38:03 +0000 (UTC) (envelope-from rpaulo@freebsd.org) Received: from karen.lavabit.com (karen.lavabit.com [72.249.41.33]) by mx1.freebsd.org (Postfix) with ESMTP id 9B9EB8FC18; Sat, 29 May 2010 22:38:03 +0000 (UTC) Received: from e.earth.lavabit.com (e.earth.lavabit.com [192.168.111.14]) by karen.lavabit.com (Postfix) with ESMTP id D2CE011BA59; Sat, 29 May 2010 17:38:02 -0500 (CDT) Received: from 10.0.10.3 (54.81.54.77.rev.vodafone.pt [77.54.81.54]) by lavabit.com with ESMTP id TFZBHLU5PX48; Sat, 29 May 2010 17:38:02 -0500 Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Apple Message framework v1078) From: Rui Paulo In-Reply-To: <201005291614.o4TGE2cM064435@svn.freebsd.org> Date: Sat, 29 May 2010 23:37:59 +0100 Content-Transfer-Encoding: 7bit Message-Id: References: <201005291614.o4TGE2cM064435@svn.freebsd.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-Mailer: Apple Mail (2.1078) Cc: Subject: Re: svn commit: r208644 - head/sys/dev/ath/ath_hal/ar5211 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 29 May 2010 22:38:04 -0000 On 29 May 2010, at 17:14, Rui Paulo wrote: > Author: rpaulo > Date: Sat May 29 16:14:02 2010 > New Revision: 208644 > URL: http://svn.freebsd.org/changeset/base/208644 > > Log: > Due to the way HALDEBUG() is defined, we need to add curly brackets > when using it as a sole if clause instruction. > While there, fix 'const static' typo. > > Submitted by: Arnaud Lacombe This should read alc@NetBSD.org. Regards, -- Rui Paulo From owner-svn-src-all@FreeBSD.ORG Sat May 29 22:52:18 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 79DD71065670; Sat, 29 May 2010 22:52:18 +0000 (UTC) (envelope-from gordon@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 671B78FC12; Sat, 29 May 2010 22:52:18 +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 o4TMqIg6055251; Sat, 29 May 2010 22:52:18 GMT (envelope-from gordon@svn.freebsd.org) Received: (from gordon@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4TMqIOU055249; Sat, 29 May 2010 22:52:18 GMT (envelope-from gordon@svn.freebsd.org) Message-Id: <201005292252.o4TMqIOU055249@svn.freebsd.org> From: Gordon Tetlow Date: Sat, 29 May 2010 22:52:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208648 - head/usr.sbin/newsyslog X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 29 May 2010 22:52:18 -0000 Author: gordon Date: Sat May 29 22:52:17 2010 New Revision: 208648 URL: http://svn.freebsd.org/changeset/base/208648 Log: Convert newsyslog to using queue(3) macros instead of a home rolled version. Reviewed by: gad@ Approved by: wes@ (mentor) MFC after: 2 months Modified: head/usr.sbin/newsyslog/newsyslog.c Modified: head/usr.sbin/newsyslog/newsyslog.c ============================================================================== --- head/usr.sbin/newsyslog/newsyslog.c Sat May 29 20:24:01 2010 (r208647) +++ head/usr.sbin/newsyslog/newsyslog.c Sat May 29 22:52:17 2010 (r208648) @@ -113,6 +113,7 @@ __FBSDID("$FreeBSD$"); #define DEBUG_MARKER "" struct conf_entry { + STAILQ_ENTRY(conf_entry) cf_nextp; char *log; /* Name of the log */ char *pid_file; /* PID file */ char *r_reason; /* The reason this file is being rotated */ @@ -129,7 +130,6 @@ struct conf_entry { int flags; /* CE_COMPACT, CE_BZCOMPACT, CE_BINARY */ int sig; /* Signal to send */ int def_cfg; /* Using the rule for this file */ - struct conf_entry *next;/* Linked list pointer */ }; struct sigwork_entry { @@ -153,6 +153,7 @@ typedef enum { FREE_ENT, KEEP_ENT } fk_entry; +STAILQ_HEAD(cflist, conf_entry); SLIST_HEAD(swlisthead, sigwork_entry) swhead = SLIST_HEAD_INITIALIZER(swhead); SLIST_HEAD(zwlisthead, zipwork_entry) zwhead = SLIST_HEAD_INITIALIZER(zwhead); @@ -186,9 +187,9 @@ char daytime[DAYTIME_LEN]; /* The curren * used for rotation-tracking messages. */ char hostname[MAXHOSTNAMELEN]; /* hostname */ -static struct conf_entry *get_worklist(char **files); -static void parse_file(FILE *cf, const char *cfname, struct conf_entry **work_p, - struct conf_entry **glob_p, struct conf_entry **defconf_p); +static struct cflist *get_worklist(char **files); +static void parse_file(FILE *cf, struct cflist *work_p, struct cflist *glob_p, + struct conf_entry *defconf_p); static char *sob(char *p); static char *son(char *p); static int isnumberstr(const char *); @@ -205,9 +206,8 @@ static struct zipwork_entry * sigwork_entry *, int, const char *); static void set_swpid(struct sigwork_entry *, const struct conf_entry *); static int sizefile(const char *); -static void expand_globs(struct conf_entry **work_p, - struct conf_entry **glob_p); -static void free_clist(struct conf_entry **firstent); +static void expand_globs(struct cflist *work_p, struct cflist *glob_p); +static void free_clist(struct cflist *list); static void free_entry(struct conf_entry *ent); static struct conf_entry *init_entry(const char *fname, struct conf_entry *src_entry); @@ -233,8 +233,8 @@ static void createlog(const struct conf_ int main(int argc, char **argv) { - fk_entry free_or_keep; - struct conf_entry *p, *q; + struct cflist *worklist; + struct conf_entry *p; struct sigwork_entry *stmp; struct zipwork_entry *ztmp; @@ -247,18 +247,17 @@ main(int argc, char **argv) if (needroot && getuid() && geteuid()) errx(1, "must have root privs"); - p = q = get_worklist(argv); + worklist = get_worklist(argv); /* * Rotate all the files which need to be rotated. Note that * some users have *hundreds* of entries in newsyslog.conf! */ - while (p) { - free_or_keep = do_entry(p); - p = p->next; - if (free_or_keep == FREE_ENT) - free_entry(q); - q = p; + while (!STAILQ_EMPTY(worklist)) { + p = STAILQ_FIRST(worklist); + STAILQ_REMOVE_HEAD(worklist, cf_nextp); + if (do_entry(p) == FREE_ENT) + free_entry(p); } /* @@ -365,7 +364,6 @@ init_entry(const char *fname, struct con tempwork->sig = SIGHUP; tempwork->def_cfg = 0; } - tempwork->next = NULL; return (tempwork); } @@ -403,21 +401,18 @@ free_entry(struct conf_entry *ent) } static void -free_clist(struct conf_entry **firstent) +free_clist(struct cflist *list) { - struct conf_entry *ent, *nextent; - - if (firstent == NULL) - return; /* There is nothing to do. */ + struct conf_entry *ent; - ent = *firstent; - firstent = NULL; - - while (ent) { - nextent = ent->next; + while (!STAILQ_EMPTY(list)) { + ent = STAILQ_FIRST(list); + STAILQ_REMOVE_HEAD(list, cf_nextp); free_entry(ent); - ent = nextent; } + + free(list); + list = NULL; } static fk_entry @@ -732,17 +727,26 @@ usage(void) * Parse a configuration file and return a linked list of all the logs * which should be processed. */ -static struct conf_entry * +static struct cflist * get_worklist(char **files) { FILE *f; const char *fname; char **given; - struct conf_entry *defconf, *dupent, *ent, *firstnew; - struct conf_entry *globlist, *lastnew, *worklist; + struct cflist *filelist, *globlist, *cmdlist; + struct conf_entry *defconf, *dupent, *ent; int gmatch, fnres; - defconf = globlist = worklist = NULL; + defconf = NULL; + + filelist = malloc(sizeof(struct cflist)); + if (filelist == NULL) + err(1, "malloc of filelist"); + STAILQ_INIT(filelist); + globlist = malloc(sizeof(struct cflist)); + if (globlist == NULL) + err(1, "malloc of globlist"); + STAILQ_INIT(globlist); fname = conf; if (fname == NULL) @@ -757,22 +761,22 @@ get_worklist(char **files) if (!f) err(1, "%s", fname); - parse_file(f, fname, &worklist, &globlist, &defconf); + parse_file(f, filelist, globlist, defconf); (void) fclose(f); /* * All config-file information has been read in and turned into - * a worklist and a globlist. If there were no specific files + * a filelist and a globlist. If there were no specific files * given on the run command, then the only thing left to do is to * call a routine which finds all files matched by the globlist - * and adds them to the worklist. Then return the worklist. + * and adds them to the filelist. Then return the worklist. */ if (*files == NULL) { - expand_globs(&worklist, &globlist); - free_clist(&globlist); + expand_globs(filelist, globlist); + free_clist(globlist); if (defconf != NULL) free_entry(defconf); - return (worklist); + return (filelist); /* NOTREACHED */ } @@ -794,7 +798,7 @@ get_worklist(char **files) * If newsyslog was run with a list of specific filenames, * then create a new worklist which has only those files in * it, picking up the rotation-rules for those files from - * the original worklist. + * the original filelist. * * XXX - Note that this will copy multiple rules for a single * logfile, if multiple entries are an exact match for @@ -802,21 +806,21 @@ get_worklist(char **files) * we want to continue to allow it? If so, it should * probably be handled more intelligently. */ - firstnew = lastnew = NULL; + cmdlist = malloc(sizeof(struct cflist)); + if (cmdlist == NULL) + err(1, "malloc of cmdlist"); + STAILQ_INIT(cmdlist); + for (given = files; *given; ++given) { /* * First try to find exact-matches for this given file. */ gmatch = 0; - for (ent = worklist; ent; ent = ent->next) { + STAILQ_FOREACH(ent, filelist, cf_nextp) { if (strcmp(ent->log, *given) == 0) { gmatch++; dupent = init_entry(*given, ent); - if (!firstnew) - firstnew = dupent; - else - lastnew->next = dupent; - lastnew = dupent; + STAILQ_INSERT_TAIL(cmdlist, dupent, cf_nextp); } } if (gmatch) { @@ -832,7 +836,7 @@ get_worklist(char **files) gmatch = 0; if (verbose > 2 && globlist != NULL) printf("\t+ Checking globs for %s\n", *given); - for (ent = globlist; ent; ent = ent->next) { + STAILQ_FOREACH(ent, globlist, cf_nextp) { fnres = fnmatch(ent->log, *given, FNM_PATHNAME); if (verbose > 2) printf("\t+ = %d for pattern %s\n", fnres, @@ -840,13 +844,9 @@ get_worklist(char **files) if (fnres == 0) { gmatch++; dupent = init_entry(*given, ent); - if (!firstnew) - firstnew = dupent; - else - lastnew->next = dupent; - lastnew = dupent; /* This new entry is not a glob! */ dupent->flags &= ~CE_GLOB; + STAILQ_INSERT_TAIL(cmdlist, dupent, cf_nextp); /* Only allow a match to one glob-entry */ break; } @@ -866,25 +866,21 @@ get_worklist(char **files) printf("\t+ No entry matched %s (will use %s)\n", *given, DEFAULT_MARKER); dupent = init_entry(*given, defconf); - if (!firstnew) - firstnew = dupent; - else - lastnew->next = dupent; /* Mark that it was *not* found in a config file */ dupent->def_cfg = 1; - lastnew = dupent; + STAILQ_INSERT_TAIL(cmdlist, dupent, cf_nextp); } /* * Free all the entries in the original work list, the list of * glob entries, and the default entry. */ - free_clist(&worklist); - free_clist(&globlist); + free_clist(filelist); + free_clist(globlist); free_entry(defconf); /* And finally, return a worklist which matches the given files. */ - return (firstnew); + return (cmdlist); } /* @@ -892,19 +888,15 @@ get_worklist(char **files) * which match those glob-entries onto the worklist. */ static void -expand_globs(struct conf_entry **work_p, struct conf_entry **glob_p) +expand_globs(struct cflist *work_p, struct cflist *glob_p) { int gmatch, gres; size_t i; char *mfname; - struct conf_entry *dupent, *ent, *firstmatch, *globent; - struct conf_entry *lastmatch; + struct conf_entry *dupent, *ent, *globent; glob_t pglob; struct stat st_fm; - if ((glob_p == NULL) || (*glob_p == NULL)) - return; /* There is nothing to do. */ - /* * The worklist contains all fully-specified (non-GLOB) names. * @@ -913,9 +905,7 @@ expand_globs(struct conf_entry **work_p, * that already exist. Do not add a glob-related entry for any * file which already exists in the fully-specified list. */ - firstmatch = lastmatch = NULL; - for (globent = *glob_p; globent; globent = globent->next) { - + STAILQ_FOREACH(globent, glob_p, cf_nextp) { gres = glob(globent->log, GLOB_NOCHECK, NULL, &pglob); if (gres != 0) { warn("cannot expand pattern (%d): %s", gres, @@ -930,7 +920,7 @@ expand_globs(struct conf_entry **work_p, /* See if this file already has a specific entry. */ gmatch = 0; - for (ent = *work_p; ent; ent = ent->next) { + STAILQ_FOREACH(ent, work_p, cf_nextp) { if (strcmp(mfname, ent->log) == 0) { gmatch++; break; @@ -957,29 +947,16 @@ expand_globs(struct conf_entry **work_p, if (verbose > 2) printf("\t+ . add file %s\n", mfname); dupent = init_entry(mfname, globent); - if (!firstmatch) - firstmatch = dupent; - else - lastmatch->next = dupent; - lastmatch = dupent; /* This new entry is not a glob! */ dupent->flags &= ~CE_GLOB; + + /* Add to the worklist. */ + STAILQ_INSERT_TAIL(work_p, dupent, cf_nextp); } globfree(&pglob); if (verbose > 2) printf("\t+ Done with pattern %s\n", globent->log); } - - /* Add the list of matched files to the end of the worklist. */ - if (!*work_p) - *work_p = firstmatch; - else { - ent = *work_p; - while (ent->next) - ent = ent->next; - ent->next = firstmatch; - } - } /* @@ -987,22 +964,16 @@ expand_globs(struct conf_entry **work_p, * process. */ static void -parse_file(FILE *cf, const char *cfname, struct conf_entry **work_p, - struct conf_entry **glob_p, struct conf_entry **defconf_p) +parse_file(FILE *cf, struct cflist *work_p, struct cflist *glob_p, + struct conf_entry *defconf_p) { char line[BUFSIZ], *parse, *q; char *cp, *errline, *group; - struct conf_entry *lastglob, *lastwork, *working; + struct conf_entry *working; struct passwd *pwd; struct group *grp; int eol, ptm_opts, res, special; - /* - * XXX - for now, assume that only one config file will be read, - * ie, this routine is only called one time. - */ - lastglob = lastwork = NULL; - errline = NULL; while (fgets(line, BUFSIZ, cf)) { if ((line[0] == '\n') || (line[0] == '#') || @@ -1032,7 +1003,7 @@ parse_file(FILE *cf, const char *cfname, /* * Allow people to set debug options via the config file. - * (NOTE: debug optons are undocumented, and may disappear + * (NOTE: debug options are undocumented, and may disappear * at any time, etc). */ if (strcasecmp(DEBUG_MARKER, q) == 0) { @@ -1052,17 +1023,12 @@ parse_file(FILE *cf, const char *cfname, working = init_entry(q, NULL); if (strcasecmp(DEFAULT_MARKER, q) == 0) { special = 1; - if (defconf_p == NULL) { - warnx("Ignoring entry for %s in %s!", q, - cfname); - free_entry(working); - continue; - } else if (*defconf_p != NULL) { + if (defconf_p != NULL) { warnx("Ignoring duplicate entry for %s!", q); free_entry(working); continue; } - *defconf_p = working; + defconf_p = working; } q = parse = missing_field(sob(++parse), errline); @@ -1328,17 +1294,9 @@ no_trimat: if (special) { ; /* Do not add to any list */ } else if (working->flags & CE_GLOB) { - if (!*glob_p) - *glob_p = working; - else - lastglob->next = working; - lastglob = working; + STAILQ_INSERT_TAIL(glob_p, working, cf_nextp); } else { - if (!*work_p) - *work_p = working; - else - lastwork->next = working; - lastwork = working; + STAILQ_INSERT_TAIL(work_p, working, cf_nextp); } } if (errline != NULL) From owner-svn-src-all@FreeBSD.ORG Sat May 29 22:55:59 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 966621065670; Sat, 29 May 2010 22:55:59 +0000 (UTC) (envelope-from gordon@FreeBSD.org) Received: from svn.freebsd.org (unknown [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 840368FC12; Sat, 29 May 2010 22: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 o4TMtxh9056398; Sat, 29 May 2010 22:55:59 GMT (envelope-from gordon@svn.freebsd.org) Received: (from gordon@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id o4TMtxmT056395; Sat, 29 May 2010 22:55:59 GMT (envelope-from gordon@svn.freebsd.org) Message-Id: <201005292255.o4TMtxmT056395@svn.freebsd.org> From: Gordon Tetlow Date: Sat, 29 May 2010 22:55:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r208649 - head/usr.sbin/newsyslog X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 29 May 2010 22:55:59 -0000 Author: gordon Date: Sat May 29 22:55:59 2010 New Revision: 208649 URL: http://svn.freebsd.org/changeset/base/208649 Log: Add file include processing for newsyslog. Format for the include line in /etc/newsyslog.conf is: /etc/defaults/newsyslog.conf Other notes of interest: Globbing is supported in statements. Properly detect circular include loop dependencies. Reviewed by: gad@ Approved by: wes@ (mentor) MFC after: 2 months Modified: head/usr.sbin/newsyslog/newsyslog.c head/usr.sbin/newsyslog/newsyslog.conf.5 Modified: head/usr.sbin/newsyslog/newsyslog.c ============================================================================== --- head/usr.sbin/newsyslog/newsyslog.c Sat May 29 22:52:17 2010 (r208648) +++ head/usr.sbin/newsyslog/newsyslog.c Sat May 29 22:55:59 2010 (r208649) @@ -111,6 +111,7 @@ __FBSDID("$FreeBSD$"); #define DEFAULT_MARKER "" #define DEBUG_MARKER "" +#define INCLUDE_MARKER "" struct conf_entry { STAILQ_ENTRY(conf_entry) cf_nextp; @@ -149,6 +150,11 @@ struct zipwork_entry { char zw_fname[1]; /* the file to compress */ }; +struct include_entry { + STAILQ_ENTRY(include_entry) inc_nextp; + const char *file; /* Name of file to process */ +}; + typedef enum { FREE_ENT, KEEP_ENT } fk_entry; @@ -156,6 +162,7 @@ typedef enum { STAILQ_HEAD(cflist, conf_entry); SLIST_HEAD(swlisthead, sigwork_entry) swhead = SLIST_HEAD_INITIALIZER(swhead); SLIST_HEAD(zwlisthead, zipwork_entry) zwhead = SLIST_HEAD_INITIALIZER(zwhead); +STAILQ_HEAD(ilist, include_entry); int dbg_at_times; /* -D Show details of 'trim_at' code */ @@ -189,10 +196,12 @@ char hostname[MAXHOSTNAMELEN]; /* hostna static struct cflist *get_worklist(char **files); static void parse_file(FILE *cf, struct cflist *work_p, struct cflist *glob_p, - struct conf_entry *defconf_p); + struct conf_entry *defconf_p, struct ilist *inclist); +static void add_to_queue(const char *fname, struct ilist *inclist); static char *sob(char *p); static char *son(char *p); static int isnumberstr(const char *); +static int isglobstr(const char *); static char *missing_field(char *p, char *errline); static void change_attrs(const char *, const struct conf_entry *); static fk_entry do_entry(struct conf_entry *); @@ -731,13 +740,15 @@ static struct cflist * get_worklist(char **files) { FILE *f; - const char *fname; char **given; - struct cflist *filelist, *globlist, *cmdlist; + struct cflist *cmdlist, *filelist, *globlist; struct conf_entry *defconf, *dupent, *ent; + struct ilist inclist; + struct include_entry *inc; int gmatch, fnres; defconf = NULL; + STAILQ_INIT(&inclist); filelist = malloc(sizeof(struct cflist)); if (filelist == NULL) @@ -748,21 +759,29 @@ get_worklist(char **files) err(1, "malloc of globlist"); STAILQ_INIT(globlist); - fname = conf; - if (fname == NULL) - fname = _PATH_CONF; + inc = malloc(sizeof(struct include_entry)); + if (inc == NULL) + err(1, "malloc of inc"); + inc->file = conf; + if (inc->file == NULL) + inc->file = _PATH_CONF; + STAILQ_INSERT_TAIL(&inclist, inc, inc_nextp); + + STAILQ_FOREACH(inc, &inclist, inc_nextp) { + if (strcmp(inc->file, "-") != 0) + f = fopen(inc->file, "r"); + else { + f = stdin; + inc->file = ""; + } + if (!f) + err(1, "%s", inc->file); - if (strcmp(fname, "-") != 0) - f = fopen(fname, "r"); - else { - f = stdin; - fname = ""; + if (verbose) + printf("Processing %s\n", inc->file); + parse_file(f, filelist, globlist, defconf, &inclist); + (void) fclose(f); } - if (!f) - err(1, "%s", fname); - - parse_file(f, filelist, globlist, defconf); - (void) fclose(f); /* * All config-file information has been read in and turned into @@ -965,14 +984,16 @@ expand_globs(struct cflist *work_p, stru */ static void parse_file(FILE *cf, struct cflist *work_p, struct cflist *glob_p, - struct conf_entry *defconf_p) + struct conf_entry *defconf_p, struct ilist *inclist) { char line[BUFSIZ], *parse, *q; char *cp, *errline, *group; struct conf_entry *working; struct passwd *pwd; struct group *grp; + glob_t pglob; int eol, ptm_opts, res, special; + size_t i; errline = NULL; while (fgets(line, BUFSIZ, cf)) { @@ -1017,6 +1038,37 @@ parse_file(FILE *cf, struct cflist *work parse_doption(q); } continue; + } else if (strcasecmp(INCLUDE_MARKER, q) == 0) { + if (verbose) + printf("Found: %s", errline); + q = parse = missing_field(sob(++parse), errline); + parse = son(parse); + if (!*parse) { + warnx("include line missing argument:\n%s", + errline); + continue; + } + + *parse = '\0'; + + if (isglobstr(q)) { + res = glob(q, GLOB_NOCHECK, NULL, &pglob); + if (res != 0) { + warn("cannot expand pattern (%d): %s", + res, q); + continue; + } + + if (verbose > 2) + printf("\t+ Expanding pattern %s\n", q); + + for (i = 0; i < pglob.gl_matchc; i++) + add_to_queue(pglob.gl_pathv[i], + inclist); + globfree(&pglob); + } else + add_to_queue(q, inclist); + continue; } special = 0; @@ -1312,6 +1364,33 @@ missing_field(char *p, char *errline) return (p); } +/* + * Only add to the queue if the file hasn't already been added. This is + * done to prevent circular include loops. + */ +static void +add_to_queue(const char *fname, struct ilist *inclist) +{ + struct include_entry *inc; + + STAILQ_FOREACH(inc, inclist, inc_nextp) { + if (strcmp(fname, inc->file) == 0) { + warnx("duplicate include detected: %s", fname); + return; + } + } + + inc = malloc(sizeof(struct include_entry)); + if (inc == NULL) + err(1, "malloc of inc"); + inc->file = strdup(fname); + + if (verbose > 2) + printf("\t+ Adding %s to the processing queue.\n", fname); + + STAILQ_INSERT_TAIL(inclist, inc, inc_nextp); +} + static fk_entry do_rotate(const struct conf_entry *ent) { @@ -1916,6 +1995,19 @@ isnumberstr(const char *string) return (1); } +/* Check if string contains a glob */ +static int +isglobstr(const char *string) +{ + char chr; + + while ((chr = *string++)) { + if (chr == '*' || chr == '?' || chr == '[') + return (1); + } + return (0); +} + /* * Save the active log file under a new name. A link to the new name * is the quick-and-easy way to do this. If that fails (which it will Modified: head/usr.sbin/newsyslog/newsyslog.conf.5 ============================================================================== --- head/usr.sbin/newsyslog/newsyslog.conf.5 Sat May 29 22:52:17 2010 (r208648) +++ head/usr.sbin/newsyslog/newsyslog.conf.5 Sat May 29 22:55:59 2010 (r208649) @@ -69,13 +69,18 @@ is treated as an ordinary character. The fields of the configuration file are as follows: .Bl -tag -width indent .It Ar logfile_name -Name of the system log file to be archived, or the literal string -.Dq Aq Li default . +Name of the system log file to be archived, +or one of the literal strings +.Dq Aq Li default , +or +.Dq Aq Li include . The special default entry will only be used if a log file name is given as a command line argument to .Xr newsyslog 8 , and if that log file name is not matched by any other line in the configuration file. +The include entry is used to include other configuration +files and supports globbing. .It Ar owner : Ns Ar group This optional field specifies the owner and group for the archive file. The