Date: Mon, 15 Sep 2014 17:57:16 GMT From: John Baldwin <jhb@FreeBSD.org> To: Perforce Change Reviews <perforce@FreeBSD.org> Subject: PERFORCE change 1200284 for review Message-ID: <201409151757.s8FHvGqF037811@skunkworks.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://p4web.freebsd.org/@@1200284?ac=10 Change 1200284 by jhb@jhb_ralph on 2014/09/15 17:56:52 IFC @1200281 Affected files ... .. //depot/projects/smpng/share/man/man9/sysctl.9#10 integrate .. //depot/projects/smpng/sys/amd64/amd64/machdep.c#133 integrate .. //depot/projects/smpng/sys/arm/arm/gic.c#10 integrate .. //depot/projects/smpng/sys/arm/arm/nexus.c#27 integrate .. //depot/projects/smpng/sys/arm/at91/at91_pinctrl.c#3 integrate .. //depot/projects/smpng/sys/arm/at91/files.at91#18 integrate .. //depot/projects/smpng/sys/arm/freescale/imx/files.imx51#8 integrate .. //depot/projects/smpng/sys/arm/freescale/imx/files.imx53#8 integrate .. //depot/projects/smpng/sys/arm/freescale/imx/files.imx6#7 integrate .. //depot/projects/smpng/sys/arm/freescale/imx/imx51_iomux.c#6 delete .. //depot/projects/smpng/sys/arm/freescale/imx/imx51_iomuxreg.h#3 delete .. //depot/projects/smpng/sys/arm/freescale/imx/imx6_iomux.c#2 delete .. //depot/projects/smpng/sys/arm/freescale/imx/imx6_iomuxreg.h#2 delete .. //depot/projects/smpng/sys/arm/freescale/imx/imx6_machdep.c#5 integrate .. //depot/projects/smpng/sys/arm/freescale/imx/imx_iomux.c#1 branch .. //depot/projects/smpng/sys/arm/freescale/imx/std.imx51#3 integrate .. //depot/projects/smpng/sys/arm/freescale/imx/std.imx53#3 integrate .. //depot/projects/smpng/sys/arm/freescale/imx/std.imx6#4 integrate .. //depot/projects/smpng/sys/arm/include/intr.h#22 integrate .. //depot/projects/smpng/sys/boot/common/Makefile.inc#22 integrate .. //depot/projects/smpng/sys/boot/common/zfsloader.8#1 branch .. //depot/projects/smpng/sys/boot/i386/gptzfsboot/Makefile#13 integrate .. //depot/projects/smpng/sys/boot/i386/gptzfsboot/gptzfsboot.8#1 branch .. //depot/projects/smpng/sys/boot/i386/zfsboot/Makefile#15 integrate .. //depot/projects/smpng/sys/boot/i386/zfsboot/zfsboot.8#1 branch .. //depot/projects/smpng/sys/cam/cam_ccb.h#33 integrate .. //depot/projects/smpng/sys/cam/cam_queue.c#13 integrate .. //depot/projects/smpng/sys/cam/cam_queue.h#9 integrate .. //depot/projects/smpng/sys/cam/cam_xpt.c#96 integrate .. //depot/projects/smpng/sys/cam/ctl/ctl.c#14 integrate .. //depot/projects/smpng/sys/cam/ctl/ctl_private.h#8 integrate .. //depot/projects/smpng/sys/cam/ctl/ctl_ser_table.c#5 integrate .. //depot/projects/smpng/sys/cddl/boot/zfs/zfsimpl.h#16 integrate .. //depot/projects/smpng/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c#21 integrate .. //depot/projects/smpng/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c#17 integrate .. //depot/projects/smpng/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c#13 integrate .. //depot/projects/smpng/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dnode.h#13 integrate .. //depot/projects/smpng/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c#12 integrate .. //depot/projects/smpng/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#46 integrate .. //depot/projects/smpng/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c#17 integrate .. //depot/projects/smpng/sys/conf/files#305 integrate .. //depot/projects/smpng/sys/conf/files.amd64#107 integrate .. //depot/projects/smpng/sys/conf/files.i386#165 integrate .. //depot/projects/smpng/sys/dev/cxgbe/t4_main.c#26 integrate .. //depot/projects/smpng/sys/dev/fdt/fdt_pinctrl.c#1 branch .. //depot/projects/smpng/sys/dev/fdt/fdt_pinctrl.h#1 branch .. //depot/projects/smpng/sys/dev/fdt/fdt_pinctrl_if.m#1 branch .. //depot/projects/smpng/sys/dev/hwpmc/hwpmc_powerpc.c#13 integrate .. //depot/projects/smpng/sys/dev/hyperv/include/hyperv.h#3 integrate .. //depot/projects/smpng/sys/dev/hyperv/utilities/hv_kvp.c#1 branch .. //depot/projects/smpng/sys/dev/hyperv/utilities/hv_kvp.h#2 integrate .. //depot/projects/smpng/sys/dev/hyperv/utilities/hv_util.c#2 integrate .. //depot/projects/smpng/sys/dev/hyperv/utilities/unicode.h#1 branch .. //depot/projects/smpng/sys/dev/oce/oce_if.c#11 integrate .. //depot/projects/smpng/sys/dev/oce/oce_if.h#8 integrate .. //depot/projects/smpng/sys/dev/usb/serial/u3g.c#40 integrate .. //depot/projects/smpng/sys/dev/vmware/vmxnet3/if_vmx.c#6 integrate .. //depot/projects/smpng/sys/dev/vmware/vmxnet3/if_vmxvar.h#6 integrate .. //depot/projects/smpng/sys/dev/vt/vt_core.c#9 integrate .. //depot/projects/smpng/sys/dev/xen/netfront/netfront.c#27 integrate .. //depot/projects/smpng/sys/fs/ext2fs/ext2_vnops.c#15 integrate .. //depot/projects/smpng/sys/fs/nfsclient/nfs_clbio.c#23 integrate .. //depot/projects/smpng/sys/kern/kern_cpuset.c#20 integrate .. //depot/projects/smpng/sys/kern/sched_ule.c#134 integrate .. //depot/projects/smpng/sys/mips/cavium/octe/ethernet-mdio.c#6 integrate .. //depot/projects/smpng/sys/mips/cavium/octeon_ds1337.c#4 integrate .. //depot/projects/smpng/sys/modules/hyperv/utilities/Makefile#2 integrate .. //depot/projects/smpng/sys/net/if.c#161 integrate .. //depot/projects/smpng/sys/net/if_lagg.c#37 integrate .. //depot/projects/smpng/sys/net/if_var.h#94 integrate .. //depot/projects/smpng/sys/net/if_vlan.c#89 integrate .. //depot/projects/smpng/sys/netinet/ip_fastfwd.c#49 integrate .. //depot/projects/smpng/sys/netinet/ip_options.c#27 integrate .. //depot/projects/smpng/sys/netinet/ip_options.h#6 integrate .. //depot/projects/smpng/sys/netinet/tcp_output.c#87 integrate .. //depot/projects/smpng/sys/nfsclient/nfs_bio.c#76 integrate .. //depot/projects/smpng/sys/ofed/drivers/net/mlx4/en_netdev.c#12 integrate .. //depot/projects/smpng/sys/ufs/ffs/ffs_vnops.c#80 integrate .. //depot/projects/smpng/sys/vm/vm_mmap.c#111 integrate .. //depot/projects/smpng/sys/vm/vm_pager.c#36 integrate .. //depot/projects/smpng/sys/vm/vm_pager.h#26 integrate .. //depot/projects/smpng/sys/vm/vnode_pager.c#94 integrate .. //depot/projects/smpng/sys/vm/vnode_pager.h#11 integrate .. //depot/projects/smpng/sys/x86/xen/xen_intr.c#6 integrate Differences ... ==== //depot/projects/smpng/share/man/man9/sysctl.9#10 (text) ==== @@ -23,9 +23,9 @@ .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" $FreeBSD: head/share/man/man9/sysctl.9 271314 2014-09-09 14:31:56Z joel $ +.\" $FreeBSD: head/share/man/man9/sysctl.9 271615 2014-09-15 11:14:23Z glebius $ .\" -.Dd July 31, 2014 +.Dd September 15, 2014 .Dt SYSCTL 9 .Os .Sh NAME @@ -504,6 +504,8 @@ enviroment early during module load or system boot. .It Dv CTLFLAG_DYN Dynamically created OIDs automatically get this flag set. +.It Dv CTLFLAG_VNET +OID references a VIMAGE-enabled variable. .El .Sh EXAMPLES Sample use of ==== //depot/projects/smpng/sys/amd64/amd64/machdep.c#133 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: head/sys/amd64/amd64/machdep.c 271149 2014-09-05 01:06:45Z pfg $"); +__FBSDID("$FreeBSD: head/sys/amd64/amd64/machdep.c 271495 2014-09-13 03:10:02Z jhb $"); #include "opt_atpic.h" #include "opt_compat.h" ==== //depot/projects/smpng/sys/arm/arm/gic.c#10 (text+ko) ==== @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: head/sys/arm/arm/gic.c 271181 2014-09-05 19:00:30Z andrew $"); +__FBSDID("$FreeBSD: head/sys/arm/arm/gic.c 271630 2014-09-15 15:36:00Z ian $"); #include <sys/param.h> #include <sys/systm.h> @@ -83,7 +83,11 @@ #define GICC_ABPR 0x001C /* v1 ICCABPR */ #define GICC_IIDR 0x00FC /* v1 ICCIIDR*/ -#define GIC_LAST_IPI 15 /* Irqs 0-15 are IPIs. */ +#define GIC_FIRST_IPI 0 /* Irqs 0-15 are SGIs/IPIs. */ +#define GIC_LAST_IPI 15 +#define GIC_FIRST_PPI 16 /* Irqs 16-31 are private (per */ +#define GIC_LAST_PPI 31 /* core) peripheral interrupts. */ +#define GIC_FIRST_SPI 32 /* Irqs 32+ are shared peripherals. */ /* First bit is a polarity bit (0 - low, 1 - high) */ #define GICD_ICFGR_POL_LOW (0 << 0) @@ -127,6 +131,17 @@ enum intr_polarity pol); static void gic_post_filter(void *); +static struct ofw_compat_data compat_data[] = { + {"arm,gic", true}, /* Non-standard, used in FreeBSD dts. */ + {"arm,gic-400", true}, + {"arm,cortex-a15-gic", true}, + {"arm,cortex-a9-gic", true}, + {"arm,cortex-a7-gic", true}, + {"arm,arm11mp-gic", true}, + {"brcm,brahma-b15-gic", true}, + {NULL, false} +}; + static int arm_gic_probe(device_t dev) { @@ -134,7 +149,7 @@ if (!ofw_bus_status_okay(dev)) return (ENXIO); - if (!ofw_bus_is_compatible(dev, "arm,gic")) + if (!ofw_bus_search_compatible(dev, compat_data)->ocd_data) return (ENXIO); device_set_desc(dev, "ARM Generic Interrupt Controller"); return (BUS_PROBE_DEFAULT); @@ -174,6 +189,51 @@ gic_d_write_4(GICD_ISENABLER(30 >> 5), (1UL << (30 & 0x1F))); } +int +gic_decode_fdt(uint32_t iparent, uint32_t *intr, int *interrupt, + int *trig, int *pol) +{ + static u_int num_intr_cells; + + if (num_intr_cells == 0) { + if (OF_searchencprop(OF_node_from_xref(iparent), + "#interrupt-cells", &num_intr_cells, + sizeof(num_intr_cells)) == -1) { + num_intr_cells = 1; + } + } + + if (num_intr_cells == 1) { + *interrupt = fdt32_to_cpu(intr[0]); + *trig = INTR_TRIGGER_CONFORM; + *pol = INTR_POLARITY_CONFORM; + } else { + if (intr[0] == 0) + *interrupt = fdt32_to_cpu(intr[1]) + GIC_FIRST_SPI; + else + *interrupt = fdt32_to_cpu(intr[1]) + GIC_FIRST_PPI; + /* + * In intr[2], bits[3:0] are trigger type and level flags. + * 1 = low-to-high edge triggered + * 2 = high-to-low edge triggered + * 4 = active high level-sensitive + * 8 = active low level-sensitive + * The hardware only supports active-high-level or rising-edge. + */ + if (intr[2] & 0x0a) { + printf("unsupported trigger/polarity configuration " + "0x%2x\n", intr[2] & 0x0f); + return (ENOTSUP); + } + *pol = INTR_POLARITY_CONFORM; + if (intr[2] & 0x01) + *trig = INTR_TRIGGER_EDGE; + else + *trig = INTR_TRIGGER_LEVEL; + } + return (0); +} + static int arm_gic_attach(device_t dev) { @@ -269,6 +329,8 @@ EARLY_DRIVER_MODULE(gic, simplebus, arm_gic_driver, arm_gic_devclass, 0, 0, BUS_PASS_INTERRUPT + BUS_PASS_ORDER_MIDDLE); +EARLY_DRIVER_MODULE(gic, ofwbus, arm_gic_driver, arm_gic_devclass, 0, 0, + BUS_PASS_INTERRUPT + BUS_PASS_ORDER_MIDDLE); static void gic_post_filter(void *arg) ==== //depot/projects/smpng/sys/arm/arm/nexus.c#27 (text+ko) ==== @@ -40,7 +40,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: head/sys/arm/arm/nexus.c 271484 2014-09-12 20:34:19Z jhb $"); +__FBSDID("$FreeBSD: head/sys/arm/arm/nexus.c 271594 2014-09-14 17:36:57Z ian $"); #include <sys/param.h> #include <sys/systm.h> @@ -356,16 +356,16 @@ pcell_t *intr) { fdt_pic_decode_t intr_decode; - phandle_t intr_offset; + phandle_t intr_parent; int i, rv, interrupt, trig, pol; - intr_offset = OF_node_from_xref(iparent); + intr_parent = OF_node_from_xref(iparent); for (i = 0; i < icells; i++) intr[i] = cpu_to_fdt32(intr[i]); for (i = 0; fdt_pic_table[i] != NULL; i++) { intr_decode = fdt_pic_table[i]; - rv = intr_decode(intr_offset, intr, &interrupt, &trig, &pol); + rv = intr_decode(intr_parent, intr, &interrupt, &trig, &pol); if (rv == 0) { /* This was recognized as our PIC and decoded. */ ==== //depot/projects/smpng/sys/arm/at91/at91_pinctrl.c#3 (text+ko) ==== @@ -24,7 +24,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: head/sys/arm/at91/at91_pinctrl.c 271104 2014-09-04 16:40:54Z imp $"); +__FBSDID("$FreeBSD: head/sys/arm/at91/at91_pinctrl.c 271548 2014-09-13 19:59:16Z ian $"); #include <sys/param.h> #include <sys/bus.h> @@ -40,6 +40,7 @@ #include <arm/at91/at91_piovar.h> #include <dev/fdt/fdt_common.h> +#include <dev/fdt/fdt_pinctrl.h> #include <dev/ofw/openfirm.h> #include <dev/ofw/ofw_bus.h> #include <dev/ofw/ofw_bus_subr.h> @@ -250,6 +251,8 @@ device_set_ivars(cdev, di); } + fdt_pinctrl_register(dev, "atmel,pins"); + return (bus_generic_attach(dev)); } @@ -370,93 +373,70 @@ const char *periphs[] = {"gpio", "periph A", "periph B", "periph C", "periph D", "periph E" }; -static void -pinctrl_walk_tree(device_t bus, phandle_t node) +struct pincfg { + uint32_t unit; + uint32_t pin; + uint32_t periph; + uint32_t flags; +}; + +static int +pinctrl_configure_pins(device_t bus, phandle_t cfgxref) { struct pinctrl_softc *sc; - char status[10]; + struct pincfg *cfg, *cfgdata; char name[32]; - phandle_t pinctrl[32], pins[32 * 4], scratch; - ssize_t len, npins; - int i, j; + phandle_t node; + ssize_t npins; + int i; sc = device_get_softc(bus); - for (node = OF_child(node); node > 0; node = OF_peer(node)) { - pinctrl_walk_tree(bus, node); - memset(status, 0, sizeof(status)); - memset(name, 0, sizeof(name)); - OF_getprop(node, "status", status, sizeof(status)); - OF_getprop(node, "name", name, sizeof(name)); - if (strcmp(status, "okay") != 0) { -// printf("pinctrl: skipping node %s status %s\n", name, -// status); - continue; - } - len = OF_getencprop(node, "pinctrl-0", pinctrl, sizeof(pinctrl)); - if (len <= 0) { -// printf("pinctrl: skipping node %s no pinctrl-0\n", -// name, status); - continue; - } - len /= sizeof(phandle_t); - printf("pinctrl: Found active node %s\n", name); - for (i = 0; i < len; i++) { - scratch = OF_node_from_xref(pinctrl[i]); - npins = OF_getencprop(scratch, "atmel,pins", pins, - sizeof(pins)); - if (npins <= 0) { - printf("We're doing it wrong %s\n", name); - continue; - } - memset(name, 0, sizeof(name)); - OF_getprop(scratch, "name", name, sizeof(name)); - npins /= (4 * 4); - printf("----> need to cope with %d more pins for %s\n", - npins, name); - for (j = 0; j < npins; j++) { - uint32_t unit = pins[j * 4]; - uint32_t pin = pins[j * 4 + 1]; - uint32_t periph = pins[j * 4 + 2]; - uint32_t flags = pins[j * 4 + 3]; - uint32_t pio; - - pio = (0xfffffff & sc->ranges[0].bus) + - 0x200 * unit; - printf("P%c%d %s %#x\n", unit + 'A', pin, - periphs[periph], flags); - switch (periph) { - case 0: - at91_pio_use_gpio(pio, 1u << pin); - at91_pio_gpio_pullup(pio, 1u << pin, - !!(flags & 1)); - at91_pio_gpio_high_z(pio, 1u << pin, - !!(flags & 2)); - at91_pio_gpio_set_deglitch(pio, - 1u << pin, !!(flags & 4)); -// at91_pio_gpio_pulldown(pio, 1u << pin, -// !!(flags & 8)); -// at91_pio_gpio_dis_schmidt(pio, -// 1u << pin, !!(flags & 16)); - break; - case 1: - at91_pio_use_periph_a(pio, 1u << pin, - flags); - break; - case 2: - at91_pio_use_periph_b(pio, 1u << pin, - flags); - break; - } - } + node = OF_node_from_xref(cfgxref); + memset(name, 0, sizeof(name)); + OF_getprop(node, "name", name, sizeof(name)); + npins = OF_getencprop_alloc(node, "atmel,pins", sizeof(*cfgdata), + (void **)&cfgdata); + if (npins < 0) { + printf("We're doing it wrong %s\n", name); + return (ENXIO); + } + if (npins == 0) + return (0); + for (i = 0, cfg = cfgdata; i < npins; i++, cfg++) { + uint32_t pio; + pio = (0xfffffff & sc->ranges[0].bus) + 0x200 * cfg->unit; + printf("P%c%d %s %#x\n", cfg->unit + 'A', cfg->pin, + periphs[cfg->periph], cfg->flags); + switch (cfg->periph) { + case 0: + at91_pio_use_gpio(pio, 1u << cfg->pin); + at91_pio_gpio_pullup(pio, 1u << cfg->pin, + !!(cfg->flags & 1)); + at91_pio_gpio_high_z(pio, 1u << cfg->pin, + !!(cfg->flags & 2)); + at91_pio_gpio_set_deglitch(pio, + 1u << cfg->pin, !!(cfg->flags & 4)); +// at91_pio_gpio_pulldown(pio, 1u << cfg->pin, +// !!(cfg->flags & 8)); +// at91_pio_gpio_dis_schmidt(pio, +// 1u << cfg->pin, !!(cfg->flags & 16)); + break; + case 1: + at91_pio_use_periph_a(pio, 1u << cfg->pin, cfg->flags); + break; + case 2: + at91_pio_use_periph_b(pio, 1u << cfg->pin, cfg->flags); + break; } } + free(cfgdata, M_OFWPROP); + return (0); } static void pinctrl_new_pass(device_t bus) { struct pinctrl_softc *sc; - phandle_t node; sc = device_get_softc(bus); @@ -466,10 +446,7 @@ return; sc->done_pinmux++; - node = OF_peer(0); - if (node == -1) - return; - pinctrl_walk_tree(bus, node); + fdt_pinctrl_configure_tree(bus); } static device_method_t at91_pinctrl_methods[] = { @@ -496,6 +473,8 @@ DEVMETHOD(ofw_bus_get_node, ofw_bus_gen_get_node), DEVMETHOD(ofw_bus_get_type, ofw_bus_gen_get_type), + /* fdt_pintrl interface */ + DEVMETHOD(fdt_pinctrl_configure,pinctrl_configure_pins), DEVMETHOD_END }; ==== //depot/projects/smpng/sys/arm/at91/files.at91#18 (text) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: head/sys/arm/at91/files.at91 269957 2014-08-14 04:21:14Z imp $ +# $FreeBSD: head/sys/arm/at91/files.at91 271548 2014-09-13 19:59:16Z ian $ arm/arm/cpufunc_asm_arm9.S standard arm/at91/at91_machdep.c standard arm/at91/at91_aic.c standard @@ -10,7 +10,7 @@ arm/at91/at91_cfata.c optional at91_cfata arm/at91/at91_common.c optional fdt arm/at91/at91_mci.c optional at91_mci -arm/at91/at91_pinctrl.c optional fdt +arm/at91/at91_pinctrl.c optional fdt fdt_pinctrl arm/at91/at91_pit.c optional at91sam9 arm/at91/at91_reset.S optional at91sam9 arm/at91/at91_rst.c optional at91sam9 ==== //depot/projects/smpng/sys/arm/freescale/imx/files.imx51#8 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: head/sys/arm/freescale/imx/files.imx51 271198 2014-09-06 17:33:41Z andrew $ +# $FreeBSD: head/sys/arm/freescale/imx/files.imx51 271550 2014-09-13 20:09:34Z ian $ arm/arm/bus_space_asm_generic.S standard arm/arm/bus_space_generic.c standard arm/arm/cpufunc_asm_armv5.S standard @@ -19,7 +19,7 @@ arm/freescale/imx/tzic.c standard # IOMUX - external pins multiplexor -arm/freescale/imx/imx51_iomux.c standard +arm/freescale/imx/imx_iomux.c standard # GPIO arm/freescale/imx/imx_gpio.c optional gpio ==== //depot/projects/smpng/sys/arm/freescale/imx/files.imx53#8 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: head/sys/arm/freescale/imx/files.imx53 271100 2014-09-04 14:57:04Z ian $ +# $FreeBSD: head/sys/arm/freescale/imx/files.imx53 271550 2014-09-13 20:09:34Z ian $ arm/arm/bus_space_asm_generic.S standard arm/arm/bus_space_generic.c standard arm/arm/cpufunc_asm_armv5.S standard @@ -22,7 +22,7 @@ arm/freescale/imx/tzic.c standard # IOMUX - external pins multiplexor -arm/freescale/imx/imx51_iomux.c standard +arm/freescale/imx/imx_iomux.c standard # GPIO arm/freescale/imx/imx_gpio.c optional gpio ==== //depot/projects/smpng/sys/arm/freescale/imx/files.imx6#7 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: head/sys/arm/freescale/imx/files.imx6 271100 2014-09-04 14:57:04Z ian $ +# $FreeBSD: head/sys/arm/freescale/imx/files.imx6 271607 2014-09-14 23:48:18Z ian $ # # Standard ARM support. @@ -20,11 +20,10 @@ arm/freescale/fsl_ocotp.c standard arm/freescale/imx/imx6_anatop.c standard arm/freescale/imx/imx6_ccm.c standard -arm/freescale/imx/imx6_iomux.c standard arm/freescale/imx/imx6_machdep.c standard arm/freescale/imx/imx6_mp.c optional smp arm/freescale/imx/imx6_pl310.c standard -arm/freescale/imx/imx_common.c standard +arm/freescale/imx/imx_iomux.c standard arm/freescale/imx/imx_machdep.c standard arm/freescale/imx/imx_gpt.c standard arm/freescale/imx/imx_gpio.c optional gpio ==== //depot/projects/smpng/sys/arm/freescale/imx/imx6_machdep.c#5 (text+ko) ==== @@ -27,7 +27,7 @@ #include "opt_platform.h" #include <sys/cdefs.h> -__FBSDID("$FreeBSD: head/sys/arm/freescale/imx/imx6_machdep.c 269607 2014-08-05 19:10:53Z ian $"); +__FBSDID("$FreeBSD: head/sys/arm/freescale/imx/imx6_machdep.c 271607 2014-09-14 23:48:18Z ian $"); #include <sys/param.h> #include <sys/systm.h> @@ -38,6 +38,7 @@ #include <machine/bus.h> #include <machine/devmap.h> +#include <machine/intr.h> #include <machine/machdep.h> #include <machine/platform.h> @@ -46,6 +47,18 @@ #include <arm/freescale/imx/imx6_anatopvar.h> #include <arm/freescale/imx/imx_machdep.h> +#include <dev/fdt/fdt_common.h> +#include <dev/ofw/openfirm.h> + +struct fdt_fixup_entry fdt_fixup_table[] = { + { NULL, NULL } +}; + +fdt_pic_decode_t fdt_pic_table[] = { + &gic_decode_fdt, + NULL +}; + vm_offset_t platform_lastaddr(void) { ==== //depot/projects/smpng/sys/arm/freescale/imx/std.imx51#3 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: head/sys/arm/freescale/imx/std.imx51 261227 2014-01-28 09:12:04Z andrew $ +# $FreeBSD: head/sys/arm/freescale/imx/std.imx51 271550 2014-09-13 20:09:34Z ian $ machine arm armv6 cpu CPU_CORTEXA makeoptions ARM_LITTLE_ENDIAN @@ -10,5 +10,7 @@ makeoptions KERNPHYSADDR=0x90100000 options PHYSADDR=0x90000000 +device fdt_pinctrl + files "../freescale/imx/files.imx51" ==== //depot/projects/smpng/sys/arm/freescale/imx/std.imx53#3 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: head/sys/arm/freescale/imx/std.imx53 261227 2014-01-28 09:12:04Z andrew $ +# $FreeBSD: head/sys/arm/freescale/imx/std.imx53 271550 2014-09-13 20:09:34Z ian $ machine arm armv6 cpu CPU_CORTEXA makeoptions ARM_LITTLE_ENDIAN @@ -10,5 +10,7 @@ makeoptions KERNPHYSADDR=0x70100000 options PHYSADDR=0x70000000 +device fdt_pinctrl + files "../freescale/imx/files.imx53" ==== //depot/projects/smpng/sys/arm/freescale/imx/std.imx6#4 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: head/sys/arm/freescale/imx/std.imx6 262427 2014-02-24 03:51:31Z ian $ +# $FreeBSD: head/sys/arm/freescale/imx/std.imx6 271550 2014-09-13 20:09:34Z ian $ machine arm armv6 cpu CPU_CORTEXA makeoptions ARM_LITTLE_ENDIAN @@ -13,5 +13,7 @@ options IPI_IRQ_START=0 options IPI_IRQ_END=15 +device fdt_pinctrl + files "../freescale/imx/files.imx6" ==== //depot/projects/smpng/sys/arm/include/intr.h#22 (text+ko) ==== @@ -32,7 +32,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: head/sys/arm/include/intr.h 270884 2014-08-31 17:40:19Z br $ + * $FreeBSD: head/sys/arm/include/intr.h 271601 2014-09-14 21:21:03Z ian $ * */ @@ -82,5 +82,7 @@ void arm_irq_memory_barrier(uintptr_t); void gic_init_secondary(void); +int gic_decode_fdt(uint32_t iparentnode, uint32_t *intrcells, int *interrupt, + int *trig, int *pol); #endif /* _MACHINE_INTR_H */ ==== //depot/projects/smpng/sys/boot/common/Makefile.inc#22 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: head/sys/boot/common/Makefile.inc 269621 2014-08-06 00:36:04Z marcel $ +# $FreeBSD: head/sys/boot/common/Makefile.inc 271609 2014-09-15 06:21:28Z avg $ SRCS+= boot.c commands.c console.c devopen.c interp.c SRCS+= interp_backslash.c interp_parse.c ls.c misc.c @@ -78,3 +78,6 @@ .endif MAN+= loader.8 +.if ${MK_ZFS} != "no" +MAN+= zfsloader.8 +.endif ==== //depot/projects/smpng/sys/boot/i386/gptzfsboot/Makefile#13 (text+ko) ==== @@ -1,10 +1,11 @@ -# $FreeBSD: head/sys/boot/i386/gptzfsboot/Makefile 261567 2014-02-06 21:54:21Z emaste $ +# $FreeBSD: head/sys/boot/i386/gptzfsboot/Makefile 271609 2014-09-15 06:21:28Z avg $ .PATH: ${.CURDIR}/../boot2 ${.CURDIR}/../gptboot \ ${.CURDIR}/../zfsboot ${.CURDIR}/../common \ ${.CURDIR}/../../common FILES= gptzfsboot +MAN= gptzfsboot.8 NM?= nm ==== //depot/projects/smpng/sys/boot/i386/zfsboot/Makefile#15 (text+ko) ==== @@ -1,8 +1,9 @@ -# $FreeBSD: head/sys/boot/i386/zfsboot/Makefile 261567 2014-02-06 21:54:21Z emaste $ +# $FreeBSD: head/sys/boot/i386/zfsboot/Makefile 271609 2014-09-15 06:21:28Z avg $ .PATH: ${.CURDIR}/../boot2 ${.CURDIR}/../common ${.CURDIR}/../../common FILES= zfsboot +MAN= zfsboot.8 NM?= nm ==== //depot/projects/smpng/sys/cam/cam_ccb.h#33 (text+ko) ==== @@ -25,7 +25,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: head/sys/cam/cam_ccb.h 259397 2013-12-14 22:07:40Z nwhitehorn $ + * $FreeBSD: head/sys/cam/cam_ccb.h 271588 2014-09-14 11:59:49Z mav $ */ #ifndef _CAM_CAM_CCB_H @@ -347,8 +347,8 @@ struct ccb_hdr ccb_h; int dev_openings; /* Space left for more work on device*/ int dev_active; /* Transactions running on the device */ - int devq_openings; /* Space left for more queued work */ - int devq_queued; /* Transactions queued to be sent */ + int allocated; /* CCBs allocated for the device */ + int queued; /* CCBs queued to be sent to the device */ int held; /* * CCBs held by peripheral drivers * for this device ==== //depot/projects/smpng/sys/cam/cam_queue.c#13 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: head/sys/cam/cam_queue.c 256843 2013-10-21 12:00:26Z mav $"); +__FBSDID("$FreeBSD: head/sys/cam/cam_queue.c 271588 2014-09-14 11:59:49Z mav $"); #include <sys/param.h> #include <sys/systm.h> @@ -290,7 +290,6 @@ delta = new_size - (ccbq->dev_active + ccbq->dev_openings); ccbq->total_openings += delta; - ccbq->devq_openings += delta; ccbq->dev_openings += delta; new_size = imax(64, 1 << fls(new_size + new_size / 2)); @@ -308,7 +307,6 @@ imax(64, 1 << fls(openings + openings / 2))) != 0) return (1); ccbq->total_openings = openings; - ccbq->devq_openings = openings; ccbq->dev_openings = openings; return (0); } ==== //depot/projects/smpng/sys/cam/cam_queue.h#9 (text+ko) ==== @@ -25,7 +25,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: head/sys/cam/cam_queue.h 256843 2013-10-21 12:00:26Z mav $ + * $FreeBSD: head/sys/cam/cam_queue.h 271588 2014-09-14 11:59:49Z mav $ */ #ifndef _CAM_CAM_QUEUE_H @@ -62,10 +62,9 @@ struct ccb_hdr_tailq queue_extra_head; int queue_extra_entries; int total_openings; - int devq_openings; + int allocated; int dev_openings; int dev_active; - int held; }; struct cam_ed; @@ -188,8 +187,8 @@ static __inline void cam_ccbq_take_opening(struct cam_ccbq *ccbq) { - ccbq->devq_openings--; - ccbq->held++; + + ccbq->allocated++; } static __inline void @@ -198,8 +197,6 @@ struct ccb_hdr *old_ccb; struct camq *queue = &ccbq->queue; - ccbq->held--; - /* * If queue is already full, try to resize. * If resize fail, push CCB with lowest priority out to the TAILQ. @@ -264,7 +261,7 @@ send_ccb->ccb_h.pinfo.index = CAM_ACTIVE_INDEX; ccbq->dev_active++; - ccbq->dev_openings--; + ccbq->dev_openings--; } static __inline void @@ -272,15 +269,14 @@ { ccbq->dev_active--; - ccbq->dev_openings++; - ccbq->held++; + ccbq->dev_openings++; } static __inline void cam_ccbq_release_opening(struct cam_ccbq *ccbq) { - ccbq->held--; - ccbq->devq_openings++; + + ccbq->allocated--; } #endif /* _KERNEL */ ==== //depot/projects/smpng/sys/cam/cam_xpt.c#96 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include <sys/cdefs.h> -__FBSDID("$FreeBSD: head/sys/cam/cam_xpt.c 267992 2014-06-28 03:56:17Z hselasky $"); +__FBSDID("$FreeBSD: head/sys/cam/cam_xpt.c 271588 2014-09-14 11:59:49Z mav $"); #include <sys/param.h> #include <sys/bus.h> @@ -2648,20 +2648,25 @@ struct ccb_getdevstats *cgds; struct cam_eb *bus; struct cam_et *tar; + struct cam_devq *devq; cgds = &start_ccb->cgds; bus = path->bus; tar = path->target; + devq = bus->sim->devq; + mtx_lock(&devq->send_mtx); cgds->dev_openings = dev->ccbq.dev_openings; cgds->dev_active = dev->ccbq.dev_active; - cgds->devq_openings = dev->ccbq.devq_openings; - cgds->devq_queued = cam_ccbq_pending_ccb_count(&dev->ccbq); - cgds->held = dev->ccbq.held; + cgds->allocated = dev->ccbq.allocated; + cgds->queued = cam_ccbq_pending_ccb_count(&dev->ccbq); + cgds->held = cgds->allocated - cgds->dev_active - + cgds->queued; cgds->last_reset = tar->last_reset; cgds->maxtags = dev->maxtags; cgds->mintags = dev->mintags; if (timevalcmp(&tar->last_reset, &bus->last_reset, <)) cgds->last_reset = bus->last_reset; + mtx_unlock(&devq->send_mtx); cgds->ccb_h.status = CAM_REQ_CMP; } break; @@ -3004,7 +3009,6 @@ * can get it before us while we simulate interrupts. */ mtx_lock(&devq->send_mtx); - dev->ccbq.devq_openings--; dev->ccbq.dev_openings--; while((devq->send_openings <= 0 || dev->ccbq.dev_openings < 0) && (--timeout > 0)) { @@ -3016,7 +3020,6 @@ camisr_runqueue(); mtx_lock(&devq->send_mtx); } - dev->ccbq.devq_openings++; dev->ccbq.dev_openings++; mtx_unlock(&devq->send_mtx); ==== //depot/projects/smpng/sys/cam/ctl/ctl.c#14 (text+ko) ==== @@ -42,7 +42,7 @@ #define _CTL_C #include <sys/cdefs.h> -__FBSDID("$FreeBSD: head/sys/cam/ctl/ctl.c 271443 2014-09-11 22:40:11Z mav $"); +__FBSDID("$FreeBSD: head/sys/cam/ctl/ctl.c 271606 2014-09-14 23:39:13Z mav $"); #include <sys/param.h> #include <sys/systm.h> @@ -280,7 +280,7 @@ /*page_code*/SMS_CONTROL_MODE_PAGE, /*page_length*/sizeof(struct scsi_control_page) - 2, /*rlec*/0, - /*queue_flags*/0, + /*queue_flags*/SCP_QUEUE_ALG_RESTRICTED, /*eca_and_aen*/0, /*flags4*/SCP_TAS, /*aen_holdoff_period*/{0, 0}, @@ -292,7 +292,7 @@ /*page_code*/SMS_CONTROL_MODE_PAGE, /*page_length*/sizeof(struct scsi_control_page) - 2, /*rlec*/SCP_DSENSE, - /*queue_flags*/0, + /*queue_flags*/SCP_QUEUE_ALG_MASK, /*eca_and_aen*/0, /*flags4*/0, /*aen_holdoff_period*/{0, 0}, @@ -390,10 +390,10 @@ static int ctl_inquiry_evpd_lbp(struct ctl_scsiio *ctsio, int alloc_len); static int ctl_inquiry_evpd(struct ctl_scsiio *ctsio); static int ctl_inquiry_std(struct ctl_scsiio *ctsio); -static int ctl_get_lba_len(union ctl_io *io, uint64_t *lba, uint32_t *len); +static int ctl_get_lba_len(union ctl_io *io, uint64_t *lba, uint64_t *len); static ctl_action ctl_extent_check(union ctl_io *io1, union ctl_io *io2); -static ctl_action ctl_check_for_blockage(union ctl_io *pending_io, - union ctl_io *ooa_io); +static ctl_action ctl_check_for_blockage(struct ctl_lun *lun, + union ctl_io *pending_io, union ctl_io *ooa_io); static ctl_action ctl_check_ooa(struct ctl_lun *lun, union ctl_io *pending_io, union ctl_io *starting_io); static int ctl_check_blocked(struct ctl_lun *lun); @@ -4095,6 +4095,7 @@ int i; struct ctl_page_index *page_index; struct ctl_softc *softc; + const char *value; memcpy(&lun->mode_pages.index, page_index_template, sizeof(page_index_template)); @@ -4244,51 +4245,60 @@ break; } case SMS_CACHING_PAGE: { + struct scsi_caching_page *caching_page; if (page_index->subpage != SMS_SUBPAGE_PAGE_0) panic("invalid subpage value %d", page_index->subpage); - /* - * Defaults should be okay here, no calculations - * needed. - */ - memcpy(&lun->mode_pages.caching_page[CTL_PAGE_CURRENT], + memcpy(&lun->mode_pages.caching_page[CTL_PAGE_DEFAULT], &caching_page_default, sizeof(caching_page_default)); memcpy(&lun->mode_pages.caching_page[ CTL_PAGE_CHANGEABLE], &caching_page_changeable, sizeof(caching_page_changeable)); - memcpy(&lun->mode_pages.caching_page[CTL_PAGE_DEFAULT], + memcpy(&lun->mode_pages.caching_page[CTL_PAGE_SAVED], &caching_page_default, sizeof(caching_page_default)); - memcpy(&lun->mode_pages.caching_page[CTL_PAGE_SAVED], - &caching_page_default, + caching_page = &lun->mode_pages.caching_page[ + CTL_PAGE_SAVED]; + value = ctl_get_opt(&lun->be_lun->options, "writecache"); + if (value != NULL && strcmp(value, "off") == 0) + caching_page->flags1 &= ~SCP_WCE; + value = ctl_get_opt(&lun->be_lun->options, "readcache"); + if (value != NULL && strcmp(value, "off") == 0) + caching_page->flags1 |= SCP_RCD; + memcpy(&lun->mode_pages.caching_page[CTL_PAGE_CURRENT], + &lun->mode_pages.caching_page[CTL_PAGE_SAVED], sizeof(caching_page_default)); page_index->page_data = (uint8_t *)lun->mode_pages.caching_page; break; } case SMS_CONTROL_MODE_PAGE: { + struct scsi_control_page *control_page; if (page_index->subpage != SMS_SUBPAGE_PAGE_0) panic("invalid subpage value %d", page_index->subpage); - /* - * Defaults should be okay here, no calculations - * needed. - */ - memcpy(&lun->mode_pages.control_page[CTL_PAGE_CURRENT], + memcpy(&lun->mode_pages.control_page[CTL_PAGE_DEFAULT], &control_page_default, sizeof(control_page_default)); memcpy(&lun->mode_pages.control_page[ CTL_PAGE_CHANGEABLE], &control_page_changeable, sizeof(control_page_changeable)); - memcpy(&lun->mode_pages.control_page[CTL_PAGE_DEFAULT], + memcpy(&lun->mode_pages.control_page[CTL_PAGE_SAVED], &control_page_default, sizeof(control_page_default)); - memcpy(&lun->mode_pages.control_page[CTL_PAGE_SAVED], - &control_page_default, + control_page = &lun->mode_pages.control_page[ + CTL_PAGE_SAVED]; + value = ctl_get_opt(&lun->be_lun->options, "reordering"); >>> TRUNCATED FOR MAIL (1000 lines) <<<
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201409151757.s8FHvGqF037811>
