From owner-svn-src-projects@FreeBSD.ORG Sun Dec 21 21:56:02 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 6BF79DFB; Sun, 21 Dec 2014 21:56:02 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 547F23A70; Sun, 21 Dec 2014 21:56:02 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id sBLLu2C1088976; Sun, 21 Dec 2014 21:56:02 GMT (envelope-from andrew@FreeBSD.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id sBLLtxax088939; Sun, 21 Dec 2014 21:55:59 GMT (envelope-from andrew@FreeBSD.org) Message-Id: <201412212155.sBLLtxax088939@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: andrew set sender to andrew@FreeBSD.org using -f From: Andrew Turner Date: Sun, 21 Dec 2014 21:55:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r276035 - in projects/arm_intrng: sys/arm/arm sys/arm/at91 sys/arm/include sys/arm/ti sys/boot/fdt/dts/arm sys/boot/uboot/common sys/dev/beri/virtio usr.sbin/bsdinstall/scripts X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 21 Dec 2014 21:56:02 -0000 Author: andrew Date: Sun Dec 21 21:55:58 2014 New Revision: 276035 URL: https://svnweb.freebsd.org/changeset/base/276035 Log: Merge to r276034 Modified: projects/arm_intrng/sys/arm/arm/db_trace.c projects/arm_intrng/sys/arm/arm/gic.c projects/arm_intrng/sys/arm/arm/intr.c projects/arm_intrng/sys/arm/arm/nexus.c projects/arm_intrng/sys/arm/at91/at91_machdep.c projects/arm_intrng/sys/arm/include/intr.h projects/arm_intrng/sys/arm/ti/ti_wdt.c projects/arm_intrng/sys/boot/fdt/dts/arm/pandaboard.dts projects/arm_intrng/sys/boot/uboot/common/main.c projects/arm_intrng/sys/dev/beri/virtio/virtio.c projects/arm_intrng/usr.sbin/bsdinstall/scripts/zfsboot Directory Properties: projects/arm_intrng/ (props changed) projects/arm_intrng/sys/ (props changed) projects/arm_intrng/sys/boot/ (props changed) Modified: projects/arm_intrng/sys/arm/arm/db_trace.c ============================================================================== --- projects/arm_intrng/sys/arm/arm/db_trace.c Sun Dec 21 21:47:57 2014 (r276034) +++ projects/arm_intrng/sys/arm/arm/db_trace.c Sun Dec 21 21:55:58 2014 (r276035) @@ -345,9 +345,16 @@ db_unwind_tab(struct unwind_state *state /* * The program counter was not updated, load it from the link register. */ - if (state->registers[PC] == 0) + if (state->registers[PC] == 0) { state->registers[PC] = state->registers[LR]; + /* + * If the program counter changed, flag it in the update mask. + */ + if (state->start_pc != state->registers[PC]) + state->update_mask |= 1 << PC; + } + return 0; } Modified: projects/arm_intrng/sys/arm/arm/gic.c ============================================================================== --- projects/arm_intrng/sys/arm/arm/gic.c Sun Dec 21 21:47:57 2014 (r276034) +++ projects/arm_intrng/sys/arm/arm/gic.c Sun Dec 21 21:55:58 2014 (r276035) @@ -361,6 +361,7 @@ arm_gic_config(device_t dev, int irq, en enum intr_polarity pol) { struct arm_gic_softc *sc = device_get_softc(dev); + device_t dev = sc->gic_dev; uint32_t reg; uint32_t mask; @@ -506,4 +507,3 @@ EARLY_DRIVER_MODULE(gic, simplebus, arm_ 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); - Modified: projects/arm_intrng/sys/arm/arm/intr.c ============================================================================== --- projects/arm_intrng/sys/arm/arm/intr.c Sun Dec 21 21:47:57 2014 (r276034) +++ projects/arm_intrng/sys/arm/arm/intr.c Sun Dec 21 21:55:58 2014 (r276035) @@ -36,8 +36,11 @@ * Soft interrupt and other generic interrupt functions. */ +#include "opt_platform.h" + #include __FBSDID("$FreeBSD$"); + #include #include #include @@ -47,10 +50,16 @@ __FBSDID("$FreeBSD$"); #include #include #include + #include #include #include +#ifdef FDT +#include +#include +#endif + #define INTRNAME_LEN (MAXCOMLEN + 1) typedef void (*mask_fn)(void *); @@ -89,6 +98,36 @@ intr_init(void *unused) SYSINIT(intr_init, SI_SUB_INTR, SI_ORDER_FIRST, intr_init, NULL); +#ifdef FDT +int +arm_fdt_map_irq(phandle_t iparent, pcell_t *intr, int icells) +{ + fdt_pic_decode_t intr_decode; + phandle_t intr_parent; + int i, rv, interrupt, trig, pol; + + 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_parent, intr, &interrupt, &trig, &pol); + + if (rv == 0) { + /* This was recognized as our PIC and decoded. */ + interrupt = FDT_MAP_IRQ(intr_parent, interrupt); + return (interrupt); + } + } + + /* Not in table, so guess */ + interrupt = FDT_MAP_IRQ(intr_parent, fdt32_to_cpu(intr[0])); + + return (interrupt); +} +#endif + const char * arm_describe_irq(int irq) { Modified: projects/arm_intrng/sys/arm/arm/nexus.c ============================================================================== --- projects/arm_intrng/sys/arm/arm/nexus.c Sun Dec 21 21:47:57 2014 (r276034) +++ projects/arm_intrng/sys/arm/arm/nexus.c Sun Dec 21 21:55:58 2014 (r276035) @@ -39,6 +39,8 @@ * and I/O memory address space. */ +#include "opt_platform.h" + #include __FBSDID("$FreeBSD$"); @@ -60,10 +62,7 @@ __FBSDID("$FreeBSD$"); #include #include -#include "opt_platform.h" - #ifdef FDT -#include #include #include "ofw_bus_if.h" #endif Modified: projects/arm_intrng/sys/arm/at91/at91_machdep.c ============================================================================== --- projects/arm_intrng/sys/arm/at91/at91_machdep.c Sun Dec 21 21:47:57 2014 (r276034) +++ projects/arm_intrng/sys/arm/at91/at91_machdep.c Sun Dec 21 21:55:58 2014 (r276035) @@ -117,8 +117,6 @@ extern struct bus_space at91_bs_tag; struct pv_addr kernel_pt_table[NUM_KERNEL_PTS]; -extern uint32_t at91_master_clock; - /* Static device mappings. */ const struct arm_devmap_entry at91_devmap[] = { /* Modified: projects/arm_intrng/sys/arm/include/intr.h ============================================================================== --- projects/arm_intrng/sys/arm/include/intr.h Sun Dec 21 21:47:57 2014 (r276034) +++ projects/arm_intrng/sys/arm/include/intr.h Sun Dec 21 21:55:58 2014 (r276035) @@ -57,7 +57,6 @@ /* Interrupt controller features used in arm_register_pic(): */ #define PIC_FEATURE_IPI 0x1 -int arm_fdt_map_irq(phandle_t ic, pcell_t *cells, int ncells); void arm_register_pic(device_t dev, int features); void arm_unregister_pic(device_t dev); void arm_dispatch_irq(device_t dev, struct trapframe *tf, int irq); @@ -124,4 +123,8 @@ void arm_irq_memory_barrier(uintptr_t); int gic_decode_fdt(uint32_t iparentnode, uint32_t *intrcells, int *interrupt, int *trig, int *pol); +#ifdef FDT +int arm_fdt_map_irq(phandle_t, pcell_t *, int); +#endif + #endif /* _MACHINE_INTR_H */ Modified: projects/arm_intrng/sys/arm/ti/ti_wdt.c ============================================================================== --- projects/arm_intrng/sys/arm/ti/ti_wdt.c Sun Dec 21 21:47:57 2014 (r276034) +++ projects/arm_intrng/sys/arm/ti/ti_wdt.c Sun Dec 21 21:55:58 2014 (r276035) @@ -95,7 +95,7 @@ static devclass_t ti_wdt_devclass; DRIVER_MODULE(ti_wdt, simplebus, ti_wdt_driver, ti_wdt_devclass, 0, 0); -static volatile __inline uint32_t +static __inline uint32_t ti_wdt_reg_read(struct ti_wdt_softc *sc, uint32_t reg) { Modified: projects/arm_intrng/sys/boot/fdt/dts/arm/pandaboard.dts ============================================================================== --- projects/arm_intrng/sys/boot/fdt/dts/arm/pandaboard.dts Sun Dec 21 21:47:57 2014 (r276034) +++ projects/arm_intrng/sys/boot/fdt/dts/arm/pandaboard.dts Sun Dec 21 21:55:58 2014 (r276035) @@ -58,7 +58,6 @@ interrupt-controller; #address-cells = <0>; #interrupt-cells = <1>; - interrupts = < 0 >; reg = < 0x48241000 0x1000 >, /* Distributor Registers */ < 0x48240100 0x0100 >; /* CPU Interface Registers */ }; Modified: projects/arm_intrng/sys/boot/uboot/common/main.c ============================================================================== --- projects/arm_intrng/sys/boot/uboot/common/main.c Sun Dec 21 21:47:57 2014 (r276034) +++ projects/arm_intrng/sys/boot/uboot/common/main.c Sun Dec 21 21:55:58 2014 (r276035) @@ -212,10 +212,11 @@ get_load_device(int *type, int *unit, in p = get_device_type(devstr, type); - /* - * Empty device string, or unknown device name, or a bare, known - * device name. - */ + /* Ignore optional spaces after the device name. */ + while (*p == ' ') + p++; + + /* Unknown device name, or a known name without unit number. */ if ((*type == -1) || (*p == '\0')) { return; } Modified: projects/arm_intrng/sys/dev/beri/virtio/virtio.c ============================================================================== --- projects/arm_intrng/sys/dev/beri/virtio/virtio.c Sun Dec 21 21:47:57 2014 (r276034) +++ projects/arm_intrng/sys/dev/beri/virtio/virtio.c Sun Dec 21 21:55:58 2014 (r276035) @@ -38,6 +38,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -156,7 +157,7 @@ vq_getchain(uint32_t offs, struct vqueue break; next = be16toh(vp->next); } - paddr_unmap((void *)vindir, be32toh(vdir->len)); + paddr_unmap(__DEVOLATILE(void *, vindir), be32toh(vdir->len)); } if ((be16toh(vdir->flags) & VRING_DESC_F_NEXT) == 0) Modified: projects/arm_intrng/usr.sbin/bsdinstall/scripts/zfsboot ============================================================================== --- projects/arm_intrng/usr.sbin/bsdinstall/scripts/zfsboot Sun Dec 21 21:47:57 2014 (r276034) +++ projects/arm_intrng/usr.sbin/bsdinstall/scripts/zfsboot Sun Dec 21 21:55:58 2014 (r276035) @@ -65,9 +65,9 @@ f_include $BSDCFG_SHARE/variable.subr : ${ZFSBOOT_VDEV_TYPE:=stripe} # -# Should we use gnop(8) to configure a transparent mapping to 4K sectors? +# Should we use sysctl(8) vfs.zfs.min_auto_ashift=12 to force 4K sectors? # -: ${ZFSBOOT_GNOP_4K_FORCE_ALIGN:=1} +: ${ZFSBOOT_FORCE_4K_SECTORS:=1} # # Should we use geli(8) to encrypt the drives? @@ -185,8 +185,6 @@ ECHO_APPEND='echo "%s" >> "%s"' GELI_ATTACH='geli attach -j - -k "%s" "%s"' GELI_DETACH_F='geli detach -f "%s"' GELI_PASSWORD_INIT='geli init -b -B "%s" -e %s -J - -K "%s" -l 256 -s 4096 "%s"' -GNOP_CREATE='gnop create -S 4096 "%s"' -GNOP_DESTROY='gnop destroy "%s"' GPART_ADD='gpart add -t %s "%s"' GPART_ADD_INDEX='gpart add -i %s -t %s "%s"' GPART_ADD_INDEX_WITH_SIZE='gpart add -i %s -t %s -s %s "%s"' @@ -205,6 +203,7 @@ PRINTF_CONF="printf '%s=\"%%s\"\\\n' %s PRINTF_FSTAB='printf "$FSTAB_FMT" "%s" "%s" "%s" "%s" "%s" "%s" >> "%s"' SHELL_TRUNCATE=':> "%s"' SWAP_GMIRROR_LABEL='gmirror label swap %s' +SYSCTL_ZFS_MIN_ASHIFT_12='sysctl vfs.zfs.min_auto_ashift=12' UMOUNT='umount "%s"' ZFS_CREATE_WITH_OPTIONS='zfs create %s "%s"' ZFS_SET='zfs set "%s" "%s"' @@ -236,7 +235,7 @@ msg_encrypt_disks="Encrypt Disks?" msg_encrypt_disks_help="Use geli(8) to encrypt all data partitions" msg_error="Error" msg_force_4k_sectors="Force 4K Sectors?" -msg_force_4k_sectors_help="Use gnop(8) to configure forced 4K sector alignment" +msg_force_4k_sectors_help="Use sysctl(8) vfs.zfs.min_auto_ashift=12 to force 4K sectors" msg_freebsd_installer="FreeBSD Installer" msg_geli_password="Enter a strong passphrase, used to protect your encryption keys. You will be required to enter this passphrase each time the system is booted" msg_geli_setup="Initializing encryption on selected disks,\n this will take several seconds per disk" @@ -315,7 +314,7 @@ dialog_menu_main() local usegeli="$msg_no" local swapgeli="$msg_no" local swapmirror="$msg_no" - [ "$ZFSBOOT_GNOP_4K_FORCE_ALIGN" ] && force4k="$msg_yes" + [ "$ZFSBOOT_FORCE_4K_SECTORS" ] && force4k="$msg_yes" [ "$ZFSBOOT_GELI_ENCRYPTION" ] && usegeli="$msg_yes" [ "$ZFSBOOT_SWAP_ENCRYPTION" ] && swapgeli="$msg_yes" [ "$ZFSBOOT_SWAP_MIRROR" ] && swapmirror="$msg_yes" @@ -1062,36 +1061,22 @@ zfs_create_boot() # Prepare the disks and build pool device list(s) # f_dprintf "$funcname: Preparing disk partitions for ZFS pool..." - [ "$ZFSBOOT_GNOP_4K_FORCE_ALIGN" ] && - f_dprintf "$funcname: With 4k alignment using gnop(8)..." + + # Force 4K sectors using vfs.zfs.min_auto_ashift=12 + if [ "$ZFSBOOT_FORCE_4K_SECTORS" ]; then + f_dprintf "$funcname: With 4K sectors..." + f_eval_catch $funcname sysctl "$SYSCTL_ZFS_MIN_ASHIFT_12" \ + || return $FAILURE + fi local n=0 for disk in $disks; do zfs_create_diskpart $disk $n || return $FAILURE # Now $bootpart, $targetpart, and $swappart are set (suffix # for $disk) - - # Forced 4k alignment support using Geom NOP (see gnop(8)) - if [ "$ZFSBOOT_GNOP_4K_FORCE_ALIGN" ]; then - if [ "$ZFSBOOT_BOOT_POOL" ]; then - boot_vdevs="$boot_vdevs $disk$bootpart.nop" - f_eval_catch $funcname gnop "$GNOP_CREATE" \ - $disk$bootpart || return $FAILURE - fi - # Don't gnop encrypted partition - if [ "$ZFSBOOT_GELI_ENCRYPTION" ]; then - zroot_vdevs="$zroot_vdevs $disk$targetpart.eli" - else - zroot_vdevs="$zroot_vdevs $disk$targetpart.nop" - f_eval_catch $funcname gnop "$GNOP_CREATE" \ - $disk$targetpart || - return $FAILURE - fi - else - if [ "$ZFSBOOT_BOOT_POOL" ]; then - boot_vdevs="$boot_vdevs $disk$bootpart" - fi - zroot_vdevs="$zroot_vdevs $disk$targetpart" + if [ "$ZFSBOOT_BOOT_POOL" ]; then + boot_vdevs="$boot_vdevs $disk$bootpart" fi + zroot_vdevs="$zroot_vdevs $disk$targetpart" n=$(( $n + 1 )) done # disks @@ -1266,18 +1251,6 @@ zfs_create_boot() "$bootpool_name" || return $FAILURE fi - # Destroy the gnop devices (if enabled) - for disk in ${ZFSBOOT_GNOP_4K_FORCE_ALIGN:+$disks}; do - if [ "$ZFSBOOT_BOOT_POOL" ]; then - f_eval_catch -d $funcname gnop "$GNOP_DESTROY" \ - $disk$bootpart.nop - fi - if [ ! "$ZFSBOOT_GELI_ENCRYPTION" ]; then - f_eval_catch -d $funcname gnop "$GNOP_DESTROY" \ - $disk$targetpart.nop - fi - done - # MBR boot loader touch-up if [ "$ZFSBOOT_PARTITION_SCHEME" = "MBR" ]; then f_dprintf "$funcname: Updating MBR boot loader on disks..." @@ -1544,10 +1517,10 @@ while :; do ;; ?" $msg_force_4k_sectors") # Toggle the variable referenced both by the menu and later - if [ "$ZFSBOOT_GNOP_4K_FORCE_ALIGN" ]; then - ZFSBOOT_GNOP_4K_FORCE_ALIGN= + if [ "$ZFSBOOT_FORCE_4K_SECTORS" ]; then + ZFSBOOT_FORCE_4K_SECTORS= else - ZFSBOOT_GNOP_4K_FORCE_ALIGN=1 + ZFSBOOT_FORCE_4K_SECTORS=1 fi ;; ?" $msg_encrypt_disks") @@ -1555,7 +1528,7 @@ while :; do if [ "$ZFSBOOT_GELI_ENCRYPTION" ]; then ZFSBOOT_GELI_ENCRYPTION= else - ZFSBOOT_GNOP_4K_FORCE_ALIGN=1 + ZFSBOOT_FORCE_4K_SECTORS=1 ZFSBOOT_GELI_ENCRYPTION=1 fi ;;