Date: Wed, 1 Mar 2017 21:55:49 +0000 (UTC) From: Dimitry Andric <dim@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r314523 - in projects/clang400-import: . contrib/dma sys/boot/arm/uboot sys/boot/fdt/dts/arm sys/boot/powerpc/kboot sys/boot/powerpc/ofw sys/boot/powerpc/ps3 sys/boot/powerpc/uboot sys/... Message-ID: <201703012155.v21LtnHZ035092@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: dim Date: Wed Mar 1 21:55:49 2017 New Revision: 314523 URL: https://svnweb.freebsd.org/changeset/base/314523 Log: Merge ^/head r314482 through r314522. Modified: projects/clang400-import/README.md projects/clang400-import/contrib/dma/dma.c projects/clang400-import/sys/boot/arm/uboot/Makefile projects/clang400-import/sys/boot/fdt/dts/arm/socfpga_arria10_socdk_sdmmc.dts projects/clang400-import/sys/boot/powerpc/kboot/Makefile projects/clang400-import/sys/boot/powerpc/ofw/Makefile projects/clang400-import/sys/boot/powerpc/ps3/Makefile projects/clang400-import/sys/boot/powerpc/uboot/Makefile projects/clang400-import/sys/boot/userboot/userboot/Makefile projects/clang400-import/sys/boot/zfs/zfsimpl.c projects/clang400-import/sys/cam/ctl/ctl.c projects/clang400-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c projects/clang400-import/sys/compat/ia32/ia32_sysvec.c projects/clang400-import/sys/dev/cxgbe/iw_cxgbe/mem.c projects/clang400-import/sys/dev/hyperv/netvsc/hn_nvs.c projects/clang400-import/sys/dev/hyperv/netvsc/hn_rndis.c projects/clang400-import/sys/dev/hyperv/netvsc/if_hn.c projects/clang400-import/sys/kern/imgact_elf.c projects/clang400-import/sys/kern/subr_gtaskqueue.c projects/clang400-import/sys/net/iflib.c projects/clang400-import/sys/netpfil/ipfw/ip_fw2.c projects/clang400-import/sys/netpfil/ipfw/nptv6/nptv6.c projects/clang400-import/sys/sys/gtaskqueue.h projects/clang400-import/sys/sys/sysent.h Directory Properties: projects/clang400-import/ (props changed) projects/clang400-import/contrib/dma/ (props changed) projects/clang400-import/sys/cddl/contrib/opensolaris/ (props changed) Modified: projects/clang400-import/README.md ============================================================================== --- projects/clang400-import/README.md Wed Mar 1 21:48:15 2017 (r314522) +++ projects/clang400-import/README.md Wed Mar 1 21:55:49 2017 (r314523) @@ -1,35 +1,35 @@ FreeBSD Source: --------------- -This is the top level of the FreeBSD source directory. This file -was last revised on: +This is the top level of the FreeBSD source directory. This file +was last revised on: $FreeBSD$ -For copyright information, please see the file COPYRIGHT in this -directory (additional copyright information also exists for some -sources in this tree - please see the specific source directories for +For copyright information, please see the file COPYRIGHT in this +directory (additional copyright information also exists for some +sources in this tree - please see the specific source directories for more information). -The Makefile in this directory supports a number of targets for -building components (or all) of the FreeBSD source tree. See build(7) -and http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html -for more information, including setting make(1) variables. - -The `buildkernel` and `installkernel` targets build and install -the kernel and the modules (see below). Please see the top of -the Makefile in this directory for more information on the +The Makefile in this directory supports a number of targets for +building components (or all) of the FreeBSD source tree. See build(7) +and http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html +for more information, including setting make(1) variables. + +The `buildkernel` and `installkernel` targets build and install +the kernel and the modules (see below). Please see the top of +the Makefile in this directory for more information on the standard build targets and compile-time flags. -Building a kernel is a somewhat more involved process. See build(7), config(8), -and http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html +Building a kernel is a somewhat more involved process. See build(7), config(8), +and http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html for more information. -Note: If you want to build and install the kernel with the -`buildkernel` and `installkernel` targets, you might need to build +Note: If you want to build and install the kernel with the +`buildkernel` and `installkernel` targets, you might need to build world before. More information is available in the handbook. -The kernel configuration files reside in the `sys/<arch>/conf` -sub-directory. GENERIC is the default configuration used in release builds. -NOTES contains entries and documentation for all possible +The kernel configuration files reside in the `sys/<arch>/conf` +sub-directory. GENERIC is the default configuration used in release builds. +NOTES contains entries and documentation for all possible devices, not just those commonly used. @@ -80,7 +80,7 @@ usr.bin User commands. usr.sbin System administration commands. ``` -For information on synchronizing your source tree with one or more of +For information on synchronizing your source tree with one or more of the FreeBSD Project's development branches, please see: http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/synching.html Modified: projects/clang400-import/contrib/dma/dma.c ============================================================================== --- projects/clang400-import/contrib/dma/dma.c Wed Mar 1 21:48:15 2017 (r314522) +++ projects/clang400-import/contrib/dma/dma.c Wed Mar 1 21:55:49 2017 (r314523) @@ -47,6 +47,7 @@ #include <errno.h> #include <fcntl.h> #include <inttypes.h> +#include <libgen.h> #include <paths.h> #include <pwd.h> #include <signal.h> @@ -457,7 +458,7 @@ main(int argc, char **argv) bzero(&queue, sizeof(queue)); LIST_INIT(&queue.queue); - if (strcmp(argv[0], "mailq") == 0) { + if (strcmp(basename(argv[0]), "mailq") == 0) { argv++; argc--; showq = 1; if (argc != 0) Modified: projects/clang400-import/sys/boot/arm/uboot/Makefile ============================================================================== --- projects/clang400-import/sys/boot/arm/uboot/Makefile Wed Mar 1 21:48:15 2017 (r314522) +++ projects/clang400-import/sys/boot/arm/uboot/Makefile Wed Mar 1 21:55:49 2017 (r314523) @@ -80,7 +80,8 @@ LIBFDT= ${.OBJDIR}/../../fdt/libfdt.a .if ${MK_FORTH} != "no" # Enable BootForth BOOT_FORTH= yes -CFLAGS+= -DBOOT_FORTH -I${.CURDIR}/../../ficl -I${.CURDIR}/../../ficl/arm +CFLAGS+= -DBOOT_FORTH -I${.CURDIR}/../../ficl +CFLAGS+= -I${.CURDIR}/../../ficl/arm LIBFICL= ${.OBJDIR}/../../ficl/libficl.a .endif Modified: projects/clang400-import/sys/boot/fdt/dts/arm/socfpga_arria10_socdk_sdmmc.dts ============================================================================== --- projects/clang400-import/sys/boot/fdt/dts/arm/socfpga_arria10_socdk_sdmmc.dts Wed Mar 1 21:48:15 2017 (r314522) +++ projects/clang400-import/sys/boot/fdt/dts/arm/socfpga_arria10_socdk_sdmmc.dts Wed Mar 1 21:55:49 2017 (r314523) @@ -80,3 +80,7 @@ reg = <0x28>; }; }; + +&usb0 { + dr_mode = "host"; +}; Modified: projects/clang400-import/sys/boot/powerpc/kboot/Makefile ============================================================================== --- projects/clang400-import/sys/boot/powerpc/kboot/Makefile Wed Mar 1 21:48:15 2017 (r314522) +++ projects/clang400-import/sys/boot/powerpc/kboot/Makefile Wed Mar 1 21:55:49 2017 (r314523) @@ -64,7 +64,8 @@ LIBFDT= ${.OBJDIR}/../../fdt/libfdt.a .if ${MK_FORTH} != "no" # Enable BootForth BOOT_FORTH= yes -CFLAGS+= -DBOOT_FORTH -I${.CURDIR}/../../ficl -I${.CURDIR}/../../ficl/powerpc +CFLAGS+= -DBOOT_FORTH -I${.CURDIR}/../../ficl +CFLAGS+= -I${.CURDIR}/../../ficl/powerpc LIBFICL= ${.OBJDIR}/../../ficl/libficl.a .endif Modified: projects/clang400-import/sys/boot/powerpc/ofw/Makefile ============================================================================== --- projects/clang400-import/sys/boot/powerpc/ofw/Makefile Wed Mar 1 21:48:15 2017 (r314522) +++ projects/clang400-import/sys/boot/powerpc/ofw/Makefile Wed Mar 1 21:55:49 2017 (r314523) @@ -63,7 +63,8 @@ LIBFDT= ${.OBJDIR}/../../fdt/libfdt.a .if ${MK_FORTH} != "no" # Enable BootForth BOOT_FORTH= yes -CFLAGS+= -DBOOT_FORTH -I${.CURDIR}/../../ficl -I${.CURDIR}/../../ficl/powerpc +CFLAGS+= -DBOOT_FORTH -I${.CURDIR}/../../ficl +CFLAGS+= -I${.CURDIR}/../../ficl/powerpc LIBFICL= ${.OBJDIR}/../../ficl/libficl.a .endif Modified: projects/clang400-import/sys/boot/powerpc/ps3/Makefile ============================================================================== --- projects/clang400-import/sys/boot/powerpc/ps3/Makefile Wed Mar 1 21:48:15 2017 (r314522) +++ projects/clang400-import/sys/boot/powerpc/ps3/Makefile Wed Mar 1 21:55:49 2017 (r314523) @@ -64,7 +64,8 @@ LIBFDT= ${.OBJDIR}/../../fdt/libfdt.a .if ${MK_FORTH} != "no" # Enable BootForth BOOT_FORTH= yes -CFLAGS+= -DBOOT_FORTH -I${.CURDIR}/../../ficl -I${.CURDIR}/../../ficl/powerpc +CFLAGS+= -DBOOT_FORTH -I${.CURDIR}/../../ficl +CFLAGS+= -I${.CURDIR}/../../ficl/powerpc LIBFICL= ${.OBJDIR}/../../ficl/libficl.a .endif Modified: projects/clang400-import/sys/boot/powerpc/uboot/Makefile ============================================================================== --- projects/clang400-import/sys/boot/powerpc/uboot/Makefile Wed Mar 1 21:48:15 2017 (r314522) +++ projects/clang400-import/sys/boot/powerpc/uboot/Makefile Wed Mar 1 21:55:49 2017 (r314523) @@ -69,7 +69,8 @@ LIBFDT= ${.OBJDIR}/../../fdt/libfdt.a .if ${MK_FORTH} != "no" # Enable BootForth BOOT_FORTH= yes -CFLAGS+= -DBOOT_FORTH -I${.CURDIR}/../../ficl -I${.CURDIR}/../../ficl/powerpc +CFLAGS+= -DBOOT_FORTH -I${.CURDIR}/../../ficl +CFLAGS+= -I${.CURDIR}/../../ficl/powerpc LIBFICL= ${.OBJDIR}/../../ficl/libficl.a .endif Modified: projects/clang400-import/sys/boot/userboot/userboot/Makefile ============================================================================== --- projects/clang400-import/sys/boot/userboot/userboot/Makefile Wed Mar 1 21:48:15 2017 (r314522) +++ projects/clang400-import/sys/boot/userboot/userboot/Makefile Wed Mar 1 21:55:49 2017 (r314523) @@ -43,7 +43,8 @@ NEWVERSWHAT= "User boot" ${MACHINE_CPUAR .if ${MK_FORTH} != "no" BOOT_FORTH= yes -CFLAGS+= -DBOOT_FORTH -I${.CURDIR}/../../ficl -I${.CURDIR}/../../ficl/i386 +CFLAGS+= -DBOOT_FORTH -I${.CURDIR}/../../ficl +CFLAGS+= -I${.CURDIR}/../../ficl/i386 CFLAGS+= -DBF_DICTSIZE=15000 LIBFICL= ${.OBJDIR}/../ficl/libficl.a .endif Modified: projects/clang400-import/sys/boot/zfs/zfsimpl.c ============================================================================== --- projects/clang400-import/sys/boot/zfs/zfsimpl.c Wed Mar 1 21:48:15 2017 (r314522) +++ projects/clang400-import/sys/boot/zfs/zfsimpl.c Wed Mar 1 21:55:49 2017 (r314523) @@ -2334,7 +2334,7 @@ zfs_lookup(const struct zfsmount *mount, char path[1024]; int symlinks_followed = 0; struct stat sb; - struct obj_list *entry; + struct obj_list *entry, *tentry; STAILQ_HEAD(, obj_list) on_cache = STAILQ_HEAD_INITIALIZER(on_cache); spa = mount->spa; @@ -2482,7 +2482,7 @@ zfs_lookup(const struct zfsmount *mount, *dnode = dn; done: - STAILQ_FOREACH(entry, &on_cache, entry) + STAILQ_FOREACH_SAFE(entry, &on_cache, entry, tentry) free(entry); return (rc); } Modified: projects/clang400-import/sys/cam/ctl/ctl.c ============================================================================== --- projects/clang400-import/sys/cam/ctl/ctl.c Wed Mar 1 21:48:15 2017 (r314522) +++ projects/clang400-import/sys/cam/ctl/ctl.c Wed Mar 1 21:55:49 2017 (r314523) @@ -9550,7 +9550,7 @@ ctl_inquiry_evpd_devid(struct ctl_scsiio if (port && port->port_type == CTL_PORT_FC) proto = SCSI_PROTO_FC << 4; - else if (port->port_type == CTL_PORT_SAS) + else if (port && port->port_type == CTL_PORT_SAS) proto = SCSI_PROTO_SAS << 4; else if (port && port->port_type == CTL_PORT_ISCSI) proto = SCSI_PROTO_ISCSI << 4; Modified: projects/clang400-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c ============================================================================== --- projects/clang400-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c Wed Mar 1 21:48:15 2017 (r314522) +++ projects/clang400-import/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c Wed Mar 1 21:55:49 2017 (r314523) @@ -278,7 +278,16 @@ zvol_size_changed(zvol_state_t *zv, uint if (pp == NULL) return; g_topology_lock(); - g_resize_provider(pp, zv->zv_volsize); + + /* + * Do not invoke resize event when initial size was zero. + * ZVOL initializes the size on first open, this is not + * real resizing. + */ + if (pp->mediasize == 0) + pp->mediasize = zv->zv_volsize; + else + g_resize_provider(pp, zv->zv_volsize); g_topology_unlock(); } #endif /* illumos */ Modified: projects/clang400-import/sys/compat/ia32/ia32_sysvec.c ============================================================================== --- projects/clang400-import/sys/compat/ia32/ia32_sysvec.c Wed Mar 1 21:48:15 2017 (r314522) +++ projects/clang400-import/sys/compat/ia32/ia32_sysvec.c Wed Mar 1 21:55:49 2017 (r314523) @@ -120,11 +120,8 @@ struct sysentvec ia32_freebsd_sysvec = { .sv_setregs = ia32_setregs, .sv_fixlimit = ia32_fixlimit, .sv_maxssiz = &ia32_maxssiz, - .sv_flags = -#ifdef __amd64__ - SV_SHP | SV_TIMEKEEP | -#endif - SV_ABI_FREEBSD | SV_IA32 | SV_ILP32, + .sv_flags = SV_ABI_FREEBSD | SV_IA32 | SV_ILP32 | + SV_SHP | SV_TIMEKEEP, .sv_set_syscall_retval = ia32_set_syscall_retval, .sv_fetch_syscall_args = ia32_fetch_syscall_args, .sv_syscallnames = freebsd32_syscallnames, Modified: projects/clang400-import/sys/dev/cxgbe/iw_cxgbe/mem.c ============================================================================== --- projects/clang400-import/sys/dev/cxgbe/iw_cxgbe/mem.c Wed Mar 1 21:48:15 2017 (r314522) +++ projects/clang400-import/sys/dev/cxgbe/iw_cxgbe/mem.c Wed Mar 1 21:55:49 2017 (r314523) @@ -341,9 +341,6 @@ static int build_phys_page_list(struct i PAGE_SIZE - 1) & PAGE_MASK; } - if (*total_size > 0xFFFFFFFFULL) - return -ENOMEM; - /* Find largest page shift we can use to cover buffers */ for (*shift = PAGE_SHIFT; *shift < 27; ++(*shift)) if ((1ULL << *shift) & mask) Modified: projects/clang400-import/sys/dev/hyperv/netvsc/hn_nvs.c ============================================================================== --- projects/clang400-import/sys/dev/hyperv/netvsc/hn_nvs.c Wed Mar 1 21:48:15 2017 (r314522) +++ projects/clang400-import/sys/dev/hyperv/netvsc/hn_nvs.c Wed Mar 1 21:55:49 2017 (r314523) @@ -272,12 +272,17 @@ hn_nvs_conn_chim(struct hn_softc *sc) error = EIO; goto cleanup; } - if (sectsz == 0) { + if (sectsz == 0 || sectsz % sizeof(uint32_t) != 0) { /* * Can't use chimney sending buffer; done! */ - if_printf(sc->hn_ifp, "zero chimney sending buffer " - "section size\n"); + if (sectsz == 0) { + if_printf(sc->hn_ifp, "zero chimney sending buffer " + "section size\n"); + } else { + if_printf(sc->hn_ifp, "misaligned chimney sending " + "buffers, section size: %u\n", sectsz); + } sc->hn_chim_szmax = 0; sc->hn_chim_cnt = 0; sc->hn_flags |= HN_FLAG_CHIM_CONNECTED; Modified: projects/clang400-import/sys/dev/hyperv/netvsc/hn_rndis.c ============================================================================== --- projects/clang400-import/sys/dev/hyperv/netvsc/hn_rndis.c Wed Mar 1 21:48:15 2017 (r314522) +++ projects/clang400-import/sys/dev/hyperv/netvsc/hn_rndis.c Wed Mar 1 21:55:49 2017 (r314523) @@ -841,9 +841,22 @@ hn_rndis_init(struct hn_softc *sc) sc->hn_rndis_agg_pkts = comp->rm_pktmaxcnt; sc->hn_rndis_agg_align = 1U << comp->rm_align; + if (sc->hn_rndis_agg_align < sizeof(uint32_t)) { + /* + * The RNDIS packet messsage encap assumes that the RNDIS + * packet message is at least 4 bytes aligned. Fix up the + * alignment here, if the remote side sets the alignment + * too low. + */ + if_printf(sc->hn_ifp, "fixup RNDIS aggpkt align: %u -> %zu\n", + sc->hn_rndis_agg_align, sizeof(uint32_t)); + sc->hn_rndis_agg_align = sizeof(uint32_t); + } + if (bootverbose) { - if_printf(sc->hn_ifp, "RNDIS ver %u.%u, pktsz %u, pktcnt %u, " - "align %u\n", comp->rm_ver_major, comp->rm_ver_minor, + if_printf(sc->hn_ifp, "RNDIS ver %u.%u, " + "aggpkt size %u, aggpkt cnt %u, aggpkt align %u\n", + comp->rm_ver_major, comp->rm_ver_minor, sc->hn_rndis_agg_size, sc->hn_rndis_agg_pkts, sc->hn_rndis_agg_align); } Modified: projects/clang400-import/sys/dev/hyperv/netvsc/if_hn.c ============================================================================== --- projects/clang400-import/sys/dev/hyperv/netvsc/if_hn.c Wed Mar 1 21:48:15 2017 (r314522) +++ projects/clang400-import/sys/dev/hyperv/netvsc/if_hn.c Wed Mar 1 21:55:49 2017 (r314523) @@ -1784,9 +1784,6 @@ hn_rndis_pktinfo_append(struct rndis_pac pi->rm_type = pi_type; pi->rm_pktinfooffset = RNDIS_PKTINFO_OFFSET; - /* Update RNDIS packet msg length */ - pkt->rm_len += pi_size; - return (pi->rm_data); } @@ -1928,7 +1925,7 @@ hn_encap(struct ifnet *ifp, struct hn_tx } pkt->rm_type = REMOTE_NDIS_PACKET_MSG; - pkt->rm_len = sizeof(*pkt) + m_head->m_pkthdr.len; + pkt->rm_len = m_head->m_pkthdr.len; pkt->rm_dataoffset = 0; pkt->rm_datalen = m_head->m_pkthdr.len; pkt->rm_oobdataoffset = 0; @@ -1999,6 +1996,8 @@ hn_encap(struct ifnet *ifp, struct hn_tx } pkt_hlen = pkt->rm_pktinfooffset + pkt->rm_pktinfolen; + /* Fixup RNDIS packet message total length */ + pkt->rm_len += pkt_hlen; /* Convert RNDIS packet message offsets */ pkt->rm_dataoffset = hn_rndis_pktmsg_offset(pkt_hlen); pkt->rm_pktinfooffset = hn_rndis_pktmsg_offset(pkt->rm_pktinfooffset); Modified: projects/clang400-import/sys/kern/imgact_elf.c ============================================================================== --- projects/clang400-import/sys/kern/imgact_elf.c Wed Mar 1 21:48:15 2017 (r314522) +++ projects/clang400-import/sys/kern/imgact_elf.c Wed Mar 1 21:55:49 2017 (r314523) @@ -422,13 +422,14 @@ __elfN(map_partial)(vm_map_t map, vm_obj } static int -__elfN(map_insert)(vm_map_t map, vm_object_t object, vm_ooffset_t offset, - vm_offset_t start, vm_offset_t end, vm_prot_t prot, int cow) +__elfN(map_insert)(struct image_params *imgp, vm_map_t map, vm_object_t object, + vm_ooffset_t offset, vm_offset_t start, vm_offset_t end, vm_prot_t prot, + int cow) { struct sf_buf *sf; vm_offset_t off; vm_size_t sz; - int error, rv; + int error, locked, rv; if (start != trunc_page(start)) { rv = __elfN(map_partial)(map, object, offset, start, @@ -451,9 +452,10 @@ __elfN(map_insert)(vm_map_t map, vm_obje * The mapping is not page aligned. This means we have * to copy the data. Sigh. */ - rv = vm_map_find(map, NULL, 0, &start, end - start, 0, - VMFS_NO_SPACE, prot | VM_PROT_WRITE, VM_PROT_ALL, - 0); + vm_map_lock(map); + rv = vm_map_insert(map, NULL, 0, start, end, + prot | VM_PROT_WRITE, VM_PROT_ALL, 0); + vm_map_unlock(map); if (rv != KERN_SUCCESS) return (rv); if (object == NULL) @@ -480,8 +482,12 @@ __elfN(map_insert)(vm_map_t map, vm_obje rv = vm_map_insert(map, object, offset, start, end, prot, VM_PROT_ALL, cow); vm_map_unlock(map); - if (rv != KERN_SUCCESS) + if (rv != KERN_SUCCESS) { + locked = VOP_ISLOCKED(imgp->vp); + VOP_UNLOCK(imgp->vp, 0); vm_object_deallocate(object); + vn_lock(imgp->vp, locked | LK_RETRY); + } } return (rv); } else { @@ -538,7 +544,7 @@ __elfN(load_section)(struct image_params cow = MAP_COPY_ON_WRITE | MAP_PREFAULT | (prot & VM_PROT_WRITE ? 0 : MAP_DISABLE_COREDUMP); - rv = __elfN(map_insert)(map, + rv = __elfN(map_insert)(imgp, map, object, file_addr, /* file offset */ map_addr, /* virtual start */ @@ -568,8 +574,8 @@ __elfN(load_section)(struct image_params /* This had damn well better be true! */ if (map_len != 0) { - rv = __elfN(map_insert)(map, NULL, 0, map_addr, map_addr + - map_len, VM_PROT_ALL, 0); + rv = __elfN(map_insert)(imgp, map, NULL, 0, map_addr, + map_addr + map_len, VM_PROT_ALL, 0); if (rv != KERN_SUCCESS) { return (EINVAL); } Modified: projects/clang400-import/sys/kern/subr_gtaskqueue.c ============================================================================== --- projects/clang400-import/sys/kern/subr_gtaskqueue.c Wed Mar 1 21:48:15 2017 (r314522) +++ projects/clang400-import/sys/kern/subr_gtaskqueue.c Wed Mar 1 21:55:49 2017 (r314523) @@ -52,6 +52,8 @@ static MALLOC_DEFINE(M_GTASKQUEUE, "task static void gtaskqueue_thread_enqueue(void *); static void gtaskqueue_thread_loop(void *arg); +TASKQGROUP_DEFINE(softirq, mp_ncpus, 1); + struct gtaskqueue_busy { struct gtask *tb_running; TAILQ_ENTRY(gtaskqueue_busy) tb_link; Modified: projects/clang400-import/sys/net/iflib.c ============================================================================== --- projects/clang400-import/sys/net/iflib.c Wed Mar 1 21:48:15 2017 (r314522) +++ projects/clang400-import/sys/net/iflib.c Wed Mar 1 21:55:49 2017 (r314523) @@ -480,7 +480,6 @@ MODULE_VERSION(iflib, 1); MODULE_DEPEND(iflib, pci, 1, 1, 1); MODULE_DEPEND(iflib, ether, 1, 1, 1); -TASKQGROUP_DEFINE(if_io_tqg, mp_ncpus, 1); TASKQGROUP_DEFINE(if_config_tqg, 1, 1); #ifndef IFLIB_DEBUG_COUNTERS @@ -3922,7 +3921,7 @@ iflib_device_deregister(if_ctx_t ctx) if (ctx->ifc_led_dev != NULL) led_destroy(ctx->ifc_led_dev); /* XXX drain any dependent tasks */ - tqg = qgroup_if_io_tqg; + tqg = qgroup_softirq; for (txq = ctx->ifc_txqs, i = 0; i < NTXQSETS(ctx); i++, txq++) { callout_drain(&txq->ift_timer); callout_drain(&txq->ift_db_check); @@ -4552,7 +4551,7 @@ iflib_irq_alloc_generic(if_ctx_t ctx, if q = &ctx->ifc_txqs[qid]; info = &ctx->ifc_txqs[qid].ift_filter_info; gtask = &ctx->ifc_txqs[qid].ift_task; - tqg = qgroup_if_io_tqg; + tqg = qgroup_softirq; fn = _task_fn_tx; GROUPTASK_INIT(gtask, 0, fn, q); break; @@ -4560,7 +4559,7 @@ iflib_irq_alloc_generic(if_ctx_t ctx, if q = &ctx->ifc_rxqs[qid]; info = &ctx->ifc_rxqs[qid].ifr_filter_info; gtask = &ctx->ifc_rxqs[qid].ifr_task; - tqg = qgroup_if_io_tqg; + tqg = qgroup_softirq; fn = _task_fn_rx; GROUPTASK_INIT(gtask, 0, fn, q); break; @@ -4611,13 +4610,13 @@ iflib_softirq_alloc_generic(if_ctx_t ctx case IFLIB_INTR_TX: q = &ctx->ifc_txqs[qid]; gtask = &ctx->ifc_txqs[qid].ift_task; - tqg = qgroup_if_io_tqg; + tqg = qgroup_softirq; fn = _task_fn_tx; break; case IFLIB_INTR_RX: q = &ctx->ifc_rxqs[qid]; gtask = &ctx->ifc_rxqs[qid].ifr_task; - tqg = qgroup_if_io_tqg; + tqg = qgroup_softirq; fn = _task_fn_rx; break; case IFLIB_INTR_IOV: @@ -4661,7 +4660,7 @@ iflib_legacy_setup(if_ctx_t ctx, driver_ q = &ctx->ifc_rxqs[0]; info = &rxq[0].ifr_filter_info; gtask = &rxq[0].ifr_task; - tqg = qgroup_if_io_tqg; + tqg = qgroup_softirq; tqrid = irq->ii_rid = *rid; fn = _task_fn_rx; @@ -4678,7 +4677,7 @@ iflib_legacy_setup(if_ctx_t ctx, driver_ taskqgroup_attach(tqg, gtask, q, tqrid, name); GROUPTASK_INIT(&txq->ift_task, 0, _task_fn_tx, txq); - taskqgroup_attach(qgroup_if_io_tqg, &txq->ift_task, txq, tqrid, "tx"); + taskqgroup_attach(qgroup_softirq, &txq->ift_task, txq, tqrid, "tx"); return (0); } @@ -4728,7 +4727,7 @@ void iflib_io_tqg_attach(struct grouptask *gt, void *uniq, int cpu, char *name) { - taskqgroup_attach_cpu(qgroup_if_io_tqg, gt, uniq, cpu, -1, name); + taskqgroup_attach_cpu(qgroup_softirq, gt, uniq, cpu, -1, name); } void Modified: projects/clang400-import/sys/netpfil/ipfw/ip_fw2.c ============================================================================== --- projects/clang400-import/sys/netpfil/ipfw/ip_fw2.c Wed Mar 1 21:48:15 2017 (r314522) +++ projects/clang400-import/sys/netpfil/ipfw/ip_fw2.c Wed Mar 1 21:55:49 2017 (r314523) @@ -2565,6 +2565,13 @@ do { \ l = 0; /* in any case exit inner loop */ retval = ipfw_run_eaction(chain, args, cmd, &done); + /* + * If both @retval and @done are zero, + * consider this as rule matching and + * update counters. + */ + if (retval == 0 && done == 0) + IPFW_INC_RULE_COUNTER(f, pktlen); break; default: Modified: projects/clang400-import/sys/netpfil/ipfw/nptv6/nptv6.c ============================================================================== --- projects/clang400-import/sys/netpfil/ipfw/nptv6/nptv6.c Wed Mar 1 21:48:15 2017 (r314522) +++ projects/clang400-import/sys/netpfil/ipfw/nptv6/nptv6.c Wed Mar 1 21:55:49 2017 (r314523) @@ -352,24 +352,24 @@ ipfw_nptv6(struct ip_fw_chain *chain, st int ret; *done = 0; /* try next rule if not matched */ + ret = IP_FW_DENY; icmd = cmd + 1; if (cmd->opcode != O_EXTERNAL_ACTION || cmd->arg1 != V_nptv6_eid || icmd->opcode != O_EXTERNAL_INSTANCE || (cfg = NPTV6_LOOKUP(chain, icmd)) == NULL) - return (0); + return (ret); /* * We need act as router, so when forwarding is disabled - * do nothing. */ if (V_ip6_forwarding == 0 || args->f_id.addr_type != 6) - return (0); + return (ret); /* * NOTE: we expect ipfw_chk() did m_pullup() up to upper level * protocol's headers. Also we skip some checks, that ip6_input(), * ip6_forward(), ip6_fastfwd() and ipfw_chk() already did. */ - ret = IP_FW_DENY; ip6 = mtod(args->m, struct ip6_hdr *); NPTV6_IPDEBUG("eid %u, oid %u, %s -> %s %d", cmd->arg1, icmd->arg1, @@ -384,15 +384,15 @@ ipfw_nptv6(struct ip_fw_chain *chain, st */ if (IN6_ARE_MASKED_ADDR_EQUAL(&ip6->ip6_dst, &cfg->internal, &cfg->mask)) - return (0); + return (ret); ret = nptv6_rewrite_internal(cfg, &args->m, 0); } else if (IN6_ARE_MASKED_ADDR_EQUAL(&ip6->ip6_dst, &cfg->external, &cfg->mask)) ret = nptv6_rewrite_external(cfg, &args->m, 0); else - return (0); + return (ret); /* - * If address wasn't rewrited - free mbuf. + * If address wasn't rewrited - free mbuf and terminate the search. */ if (ret != 0) { if (args->m != NULL) { @@ -400,14 +400,16 @@ ipfw_nptv6(struct ip_fw_chain *chain, st args->m = NULL; /* mark mbuf as consumed */ } NPTV6STAT_INC(cfg, dropped); - } - /* Terminate the search if one_pass is set */ - *done = V_fw_one_pass; - /* Update args->f_id when one_pass is off */ - if (*done == 0 && ret == 0) { - ip6 = mtod(args->m, struct ip6_hdr *); - args->f_id.src_ip6 = ip6->ip6_src; - args->f_id.dst_ip6 = ip6->ip6_dst; + *done = 1; + } else { + /* Terminate the search if one_pass is set */ + *done = V_fw_one_pass; + /* Update args->f_id when one_pass is off */ + if (*done == 0) { + ip6 = mtod(args->m, struct ip6_hdr *); + args->f_id.src_ip6 = ip6->ip6_src; + args->f_id.dst_ip6 = ip6->ip6_dst; + } } return (ret); } Modified: projects/clang400-import/sys/sys/gtaskqueue.h ============================================================================== --- projects/clang400-import/sys/sys/gtaskqueue.h Wed Mar 1 21:48:15 2017 (r314522) +++ projects/clang400-import/sys/sys/gtaskqueue.h Wed Mar 1 21:55:49 2017 (r314523) @@ -119,5 +119,6 @@ SYSINIT(taskqgroup_adj_##name, SI_SUB_SM #endif /* EARLY_AP_STARTUP */ TASKQGROUP_DECLARE(net); +TASKQGROUP_DECLARE(softirq); #endif /* !_SYS_GTASKQUEUE_H_ */ Modified: projects/clang400-import/sys/sys/sysent.h ============================================================================== --- projects/clang400-import/sys/sys/sysent.h Wed Mar 1 21:48:15 2017 (r314522) +++ projects/clang400-import/sys/sys/sysent.h Wed Mar 1 21:55:49 2017 (r314523) @@ -138,7 +138,7 @@ struct sysentvec { #define SV_AOUT 0x008000 /* a.out executable. */ #define SV_SHP 0x010000 /* Shared page. */ #define SV_CAPSICUM 0x020000 /* Force cap_enter() on startup. */ -#define SV_TIMEKEEP 0x040000 +#define SV_TIMEKEEP 0x040000 /* Shared page timehands. */ #define SV_ABI_MASK 0xff #define SV_ABI_ERRNO(p, e) ((p)->p_sysent->sv_errsize <= 0 ? e : \
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201703012155.v21LtnHZ035092>