From owner-svn-src-user@FreeBSD.ORG Sun May 19 00:04:25 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 51368F69; Sun, 19 May 2013 00:04:25 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 28B2CA76; Sun, 19 May 2013 00:04:25 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r4J04PT1092646; Sun, 19 May 2013 00:04:25 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r4J04PvA092645; Sun, 19 May 2013 00:04:25 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201305190004.r4J04PvA092645@svn.freebsd.org> From: Attilio Rao Date: Sun, 19 May 2013 00:04:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250794 - user/attilio/vmobj-readlock/sys/vm X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 May 2013 00:04:25 -0000 Author: attilio Date: Sun May 19 00:04:24 2013 New Revision: 250794 URL: http://svnweb.freebsd.org/changeset/base/250794 Log: Revert previous patch and do what r250793 asks. Sponsored by: EMC / Isilon storage division Modified: user/attilio/vmobj-readlock/sys/vm/swap_pager.c Modified: user/attilio/vmobj-readlock/sys/vm/swap_pager.c ============================================================================== --- user/attilio/vmobj-readlock/sys/vm/swap_pager.c Sat May 18 23:49:45 2013 (r250793) +++ user/attilio/vmobj-readlock/sys/vm/swap_pager.c Sun May 19 00:04:24 2013 (r250794) @@ -128,21 +128,6 @@ __FBSDID("$FreeBSD$"); #endif /* - * Per-object swp_bcount must be protected by a write lock on the object - * itself or a read lock in combination with swhash_mtx held at the same time. - */ -#ifdef INVARIANTS -#define VM_OBJECT_BCOUNT_ASSERT_LOCKED(object) do { \ - if (mtx_owned(&swhash_mtx)) \ - VM_OBJECT_ASSERT_LOCKED(object); \ - else \ - VM_OBJECT_ASSERT_WLOCKED(object); \ -} while (0) -#else -#define VM_OBJECT_BCOUNT_ASSERT_LOCKED(object) -#endif - -/* * The swblock structure maps an object and a small, fixed-size range * of page indices to disk addresses within a swap area. * The collection of these mappings is implemented as a hash table. @@ -842,7 +827,6 @@ void swap_pager_freespace(vm_object_t object, vm_pindex_t start, vm_size_t size) { - VM_OBJECT_BCOUNT_ASSERT_LOCKED(object); swp_pager_meta_free(object, start, size); } @@ -1014,7 +998,7 @@ swap_pager_haspage(vm_object_t object, v { daddr_t blk0; - VM_OBJECT_BCOUNT_ASSERT_LOCKED(object) + VM_OBJECT_ASSERT_LOCKED(object); /* * do we have good backing store at the requested index ? */ @@ -1085,7 +1069,6 @@ static void swap_pager_unswapped(vm_page_t m) { - VM_OBJECT_BCOUNT_ASSERT_LOCKED(m->object); swp_pager_meta_ctl(m->object, m->pindex, SWM_FREE); } @@ -1939,7 +1922,7 @@ static void swp_pager_meta_free(vm_object_t object, vm_pindex_t index, daddr_t count) { - VM_OBJECT_BCOUNT_ASSERT_LOCKED(object); + VM_OBJECT_ASSERT_LOCKED(object); if (object->type != OBJT_SWAP) return; @@ -1985,7 +1968,7 @@ swp_pager_meta_free_all(vm_object_t obje { daddr_t index = 0; - VM_OBJECT_BCOUNT_ASSERT_LOCKED(object); + VM_OBJECT_ASSERT_WLOCKED(object); if (object->type != OBJT_SWAP) return; @@ -2044,7 +2027,7 @@ swp_pager_meta_ctl(vm_object_t object, v daddr_t r1; int idx; - VM_OBJECT_BCOUNT_ASSERT_LOCKED(object); + VM_OBJECT_ASSERT_LOCKED(object); /* * The meta data only exists of the object is OBJT_SWAP * and even then might not be allocated yet. From owner-svn-src-user@FreeBSD.ORG Sun May 19 02:58:05 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 40718C79; Sun, 19 May 2013 02:58:05 +0000 (UTC) (envelope-from bryanv@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 3146F181; Sun, 19 May 2013 02:58:05 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r4J2w5rq052373; Sun, 19 May 2013 02:58:05 GMT (envelope-from bryanv@svn.freebsd.org) Received: (from bryanv@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r4J2w5Mf052371; Sun, 19 May 2013 02:58:05 GMT (envelope-from bryanv@svn.freebsd.org) Message-Id: <201305190258.r4J2w5Mf052371@svn.freebsd.org> From: Bryan Venteicher Date: Sun, 19 May 2013 02:58:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250800 - user/bryanv/vtnetmq/sys/dev/virtio/network X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 May 2013 02:58:05 -0000 Author: bryanv Date: Sun May 19 02:58:04 2013 New Revision: 250800 URL: http://svnweb.freebsd.org/changeset/base/250800 Log: Add description of the CTRL_MAC_ADDR feature bit Modified: user/bryanv/vtnetmq/sys/dev/virtio/network/if_vtnet.c Modified: user/bryanv/vtnetmq/sys/dev/virtio/network/if_vtnet.c ============================================================================== --- user/bryanv/vtnetmq/sys/dev/virtio/network/if_vtnet.c Sun May 19 01:58:00 2013 (r250799) +++ user/bryanv/vtnetmq/sys/dev/virtio/network/if_vtnet.c Sun May 19 02:58:04 2013 (r250800) @@ -266,6 +266,7 @@ static struct virtio_feature_desc vtnet_ { VIRTIO_NET_F_CTRL_RX_EXTRA, "RxModeExtra" }, { VIRTIO_NET_F_GUEST_ANNOUNCE, "GuestAnnounce" }, { VIRTIO_NET_F_MQ, "Multiqueue" }, + { VIRTIO_NET_F_CTRL_MAC_ADDR, "SetMacAddress" }, { 0, NULL } }; From owner-svn-src-user@FreeBSD.ORG Sun May 19 03:01:34 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 98D54299; Sun, 19 May 2013 03:01:34 +0000 (UTC) (envelope-from bryanv@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 8B2C4329; Sun, 19 May 2013 03:01:34 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r4J31YeU055718; Sun, 19 May 2013 03:01:34 GMT (envelope-from bryanv@svn.freebsd.org) Received: (from bryanv@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r4J31YsG055715; Sun, 19 May 2013 03:01:34 GMT (envelope-from bryanv@svn.freebsd.org) Message-Id: <201305190301.r4J31YsG055715@svn.freebsd.org> From: Bryan Venteicher Date: Sun, 19 May 2013 03:01:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250801 - in user/bryanv/vtnetmq/sys/dev/virtio: . network X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 May 2013 03:01:34 -0000 Author: bryanv Date: Sun May 19 03:01:33 2013 New Revision: 250801 URL: http://svnweb.freebsd.org/changeset/base/250801 Log: Add support for the EVENT_IDX feature to the network driver This allows the driver to defer the Tx completion interrupt. Modified: user/bryanv/vtnetmq/sys/dev/virtio/network/if_vtnet.c user/bryanv/vtnetmq/sys/dev/virtio/virtqueue.c user/bryanv/vtnetmq/sys/dev/virtio/virtqueue.h Modified: user/bryanv/vtnetmq/sys/dev/virtio/network/if_vtnet.c ============================================================================== --- user/bryanv/vtnetmq/sys/dev/virtio/network/if_vtnet.c Sun May 19 02:58:04 2013 (r250800) +++ user/bryanv/vtnetmq/sys/dev/virtio/network/if_vtnet.c Sun May 19 03:01:33 2013 (r250801) @@ -3671,6 +3671,7 @@ static int vtnet_txq_enable_intr(struct vtnet_txq *txq) { + return (virtqueue_postpone_intr(txq->vtntx_vq, VQ_POSTPONE_LONG)); return (virtqueue_enable_intr(txq->vtntx_vq)); } Modified: user/bryanv/vtnetmq/sys/dev/virtio/virtqueue.c ============================================================================== --- user/bryanv/vtnetmq/sys/dev/virtio/virtqueue.c Sun May 19 02:58:04 2013 (r250800) +++ user/bryanv/vtnetmq/sys/dev/virtio/virtqueue.c Sun May 19 03:01:33 2013 (r250801) @@ -127,7 +127,7 @@ static uint16_t vq_ring_enqueue_segments static int vq_ring_use_indirect(struct virtqueue *, int); static void vq_ring_enqueue_indirect(struct virtqueue *, void *, struct sglist *, int, int); -static int vq_ring_enable_interrupt(struct virtqueue *, uint16_t); +static int vq_ring_enable_interrupt(struct virtqueue *, uint16_t); static int vq_ring_must_notify_host(struct virtqueue *); static void vq_ring_notify_host(struct virtqueue *); static void vq_ring_free_chain(struct virtqueue *, uint16_t); @@ -440,28 +440,38 @@ virtqueue_enable_intr(struct virtqueue * } int -virtqueue_postpone_intr(struct virtqueue *vq) +virtqueue_postpone_intr(struct virtqueue *vq, vq_postpone_t hint) { uint16_t ndesc, avail_idx; - /* - * Request the next interrupt be postponed until at least half - * of the available descriptors have been consumed. - */ avail_idx = vq->vq_ring.avail->idx; - ndesc = (uint16_t)(avail_idx - vq->vq_used_cons_idx) / 2; + ndesc = (uint16_t)(avail_idx - vq->vq_used_cons_idx); + + switch (hint) { + case VQ_POSTPONE_SHORT: + ndesc /= 4; + break; + case VQ_POSTPONE_LONG: + ndesc *= 3 / 4; + break; + case VQ_POSTPONE_EMPTIED: + break; + } return (vq_ring_enable_interrupt(vq, ndesc)); } +/* + * Note this is only considered a hint to the host. + */ void virtqueue_disable_intr(struct virtqueue *vq) { - /* - * Note this is only considered a hint to the host. - */ - if ((vq->vq_flags & VIRTQUEUE_FLAG_EVENT_IDX) == 0) + if (vq->vq_flags & VIRTQUEUE_FLAG_EVENT_IDX) { + vring_used_event(&vq->vq_ring) = vq->vq_used_cons_idx - + vq->vq_nentries - 1; + } else vq->vq_ring.avail->flags |= VRING_AVAIL_F_NO_INTERRUPT; } Modified: user/bryanv/vtnetmq/sys/dev/virtio/virtqueue.h ============================================================================== --- user/bryanv/vtnetmq/sys/dev/virtio/virtqueue.h Sun May 19 02:58:04 2013 (r250800) +++ user/bryanv/vtnetmq/sys/dev/virtio/virtqueue.h Sun May 19 03:01:33 2013 (r250801) @@ -41,6 +41,16 @@ struct sglist; /* Device callback for a virtqueue interrupt. */ typedef void virtqueue_intr_t(void *); +/* + * Hint on how long the next interrupt should be postponed. This is + * only used when the EVENT_IDX feature is negotiated. + */ +typedef enum { + VQ_POSTPONE_SHORT, + VQ_POSTPONE_LONG, + VQ_POSTPONE_EMPTIED /* Until all available desc are used. */ +} vq_postpone_t; + #define VIRTQUEUE_MAX_NAME_SZ 32 /* One for each virtqueue the device wishes to allocate. */ @@ -73,7 +83,7 @@ int virtqueue_reinit(struct virtqueue * int virtqueue_intr_filter(struct virtqueue *vq); void virtqueue_intr(struct virtqueue *vq); int virtqueue_enable_intr(struct virtqueue *vq); -int virtqueue_postpone_intr(struct virtqueue *vq); +int virtqueue_postpone_intr(struct virtqueue *vq, vq_postpone_t hint); void virtqueue_disable_intr(struct virtqueue *vq); /* Get physical address of the virtqueue ring. */ From owner-svn-src-user@FreeBSD.ORG Sun May 19 03:02:42 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 20FD7507; Sun, 19 May 2013 03:02:42 +0000 (UTC) (envelope-from bryanv@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 1310337E; Sun, 19 May 2013 03:02:42 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r4J32fVD056227; Sun, 19 May 2013 03:02:41 GMT (envelope-from bryanv@svn.freebsd.org) Received: (from bryanv@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r4J32fZO056226; Sun, 19 May 2013 03:02:41 GMT (envelope-from bryanv@svn.freebsd.org) Message-Id: <201305190302.r4J32fZO056226@svn.freebsd.org> From: Bryan Venteicher Date: Sun, 19 May 2013 03:02:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250802 - user/bryanv/vtnetmq/sys/dev/virtio/network X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 May 2013 03:02:42 -0000 Author: bryanv Date: Sun May 19 03:02:41 2013 New Revision: 250802 URL: http://svnweb.freebsd.org/changeset/base/250802 Log: Fix setting of the Rx filters QEMU 1.4 made the descriptor requirement stricter - the size of buffer descriptor must exactly match the number of MAC addresses provided. Modified: user/bryanv/vtnetmq/sys/dev/virtio/network/if_vtnet.c Modified: user/bryanv/vtnetmq/sys/dev/virtio/network/if_vtnet.c ============================================================================== --- user/bryanv/vtnetmq/sys/dev/virtio/network/if_vtnet.c Sun May 19 03:01:33 2013 (r250801) +++ user/bryanv/vtnetmq/sys/dev/virtio/network/if_vtnet.c Sun May 19 03:02:41 2013 (r250802) @@ -3218,9 +3218,9 @@ vtnet_rx_filter_mac(struct vtnet_softc * error = 0; error |= sglist_append(&sg, &hdr, sizeof(struct virtio_net_ctrl_hdr)); error |= sglist_append(&sg, &filter->vmf_unicast, - sizeof(struct vtnet_mac_table)); + sizeof(uint32_t) + filter->vmf_unicast.nentries * ETHER_ADDR_LEN); error |= sglist_append(&sg, &filter->vmf_multicast, - sizeof(struct vtnet_mac_table)); + sizeof(uint32_t) + filter->vmf_multicast.nentries * ETHER_ADDR_LEN); error |= sglist_append(&sg, &ack, sizeof(uint8_t)); KASSERT(error == 0 && sg.sg_nseg == 4, ("%s: error %d adding MAC filter msg to sglist", __func__, error)); From owner-svn-src-user@FreeBSD.ORG Sun May 19 03:04:35 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 39072804; Sun, 19 May 2013 03:04:35 +0000 (UTC) (envelope-from bryanv@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 1C258627; Sun, 19 May 2013 03:04:35 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r4J34Z9V056550; Sun, 19 May 2013 03:04:35 GMT (envelope-from bryanv@svn.freebsd.org) Received: (from bryanv@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r4J34YOU056545; Sun, 19 May 2013 03:04:34 GMT (envelope-from bryanv@svn.freebsd.org) Message-Id: <201305190304.r4J34YOU056545@svn.freebsd.org> From: Bryan Venteicher Date: Sun, 19 May 2013 03:04:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250803 - user/bryanv/vtnetmq/sys/dev/virtio/network X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 May 2013 03:04:35 -0000 Author: bryanv Date: Sun May 19 03:04:34 2013 New Revision: 250803 URL: http://svnweb.freebsd.org/changeset/base/250803 Log: Minor changes to the multiqueue driver - Fix statistics bugs - Add couple of asserts - Remove unused typedef Modified: user/bryanv/vtnetmq/sys/dev/virtio/network/if_vtnet.c user/bryanv/vtnetmq/sys/dev/virtio/network/if_vtnetvar.h user/bryanv/vtnetmq/sys/dev/virtio/network/virtio_net.h Modified: user/bryanv/vtnetmq/sys/dev/virtio/network/if_vtnet.c ============================================================================== --- user/bryanv/vtnetmq/sys/dev/virtio/network/if_vtnet.c Sun May 19 03:02:41 2013 (r250802) +++ user/bryanv/vtnetmq/sys/dev/virtio/network/if_vtnet.c Sun May 19 03:04:34 2013 (r250803) @@ -153,6 +153,11 @@ static void vtnet_qflush(struct ifnet *) #endif static int vtnet_watchdog(struct vtnet_txq *); +static void vtnet_rxq_accum_stats(struct vtnet_rxq *, + struct vtnet_rxq_stats *); +static void vtnet_txq_accum_stats(struct vtnet_txq *, + struct vtnet_txq_stats *); +static void vtnet_accumulate_stats(struct vtnet_softc *); static void vtnet_tick(void *); static void vtnet_start_taskqueues(struct vtnet_softc *); @@ -1067,9 +1072,9 @@ vtnet_ioctl(struct ifnet *ifp, u_long cm reinit = 1; /* - * Rx checksum is tricky: VirtIO does not distinguish - * between IPv4 and IPv6 checksum offloading. Both must - * be enabled for us to negotiate it with the host. + * VirtIO does not distinguish between IPv4 and IPv6 + * checksum offloading. Both must be enabled for us + * to negotiate it with the host. */ if (mask & IFCAP_RXCSUM) ifp->if_capenable ^= IFCAP_RXCSUM; @@ -1342,6 +1347,9 @@ vtnet_rxq_enqueue_buf(struct vtnet_rxq * VTNET_RXQ_LOCK_ASSERT(rxq); KASSERT(sc->vtnet_flags & VTNET_FLAG_LRO_NOMRG || m->m_next == NULL, ("%s: chained mbuf without LRO_NOMRG", __func__)); + KASSERT(m->m_len == sc->vtnet_rx_clsize, + ("%s: unexpected cluster size %d/%d", __func__, m->m_len, + sc->vtnet_rx_clsize)); sglist_init(&sg, VTNET_MAX_RX_SEGS, segs); if ((sc->vtnet_flags & VTNET_FLAG_MRG_RXBUFS) == 0) { @@ -1588,7 +1596,7 @@ vtnet_rxq_merged_eof(struct vtnet_rxq *r } if (vtnet_rxq_new_buf(rxq) != 0) { - rxq->vtnrx_stats.vrxs_discarded++; + rxq->vtnrx_stats.vrxs_iqdrops++; vtnet_rxq_discard_buf(rxq, m); if (nbufs > 1) vtnet_rxq_discard_merged_bufs(rxq, nbufs); @@ -1692,7 +1700,7 @@ vtnet_rxq_eof(struct vtnet_rxq *rxq) deq++; if (len < sc->vtnet_hdr_size + ETHER_HDR_LEN) { - rxq->vtnrx_stats.vrxs_discarded++; + rxq->vtnrx_stats.vrxs_ierrors++; vtnet_rxq_discard_buf(rxq, m); continue; } @@ -1712,7 +1720,7 @@ vtnet_rxq_eof(struct vtnet_rxq *rxq) } if (vtnet_rxq_replace_buf(rxq, m, len) != 0) { - rxq->vtnrx_stats.vrxs_discarded++; + rxq->vtnrx_stats.vrxs_iqdrops++; vtnet_rxq_discard_buf(rxq, m); if (nbufs > 1) vtnet_rxq_discard_merged_bufs(rxq, nbufs); @@ -1929,7 +1937,7 @@ vtnet_txq_offload_tso(struct vtnet_txq * if (tcp->th_flags & TH_CWR) { /* - * Drop if VIRTIO_NET_F_HOST_ECN was not negotiated. In FreeBSD + * Drop if VIRTIO_NET_F_HOST_ECN was not negotiated. In FreeBSD, * ECN support is not on a per-interface basis, but globally via * the net.inet.tcp.ecn.enable sysctl knob. The default is off. */ @@ -2065,9 +2073,10 @@ vtnet_txq_encap(struct vtnet_txq *txq, s } /* - * Always use the non-mergeable header (regardless if the feature - * was negotiated). For Tx, the num_buffers field is always zero. - * The vtnet_hdr_size is used to enqueue the correct header size. + * Always use the non-mergeable header, regardless if the feature + * was negotiated. For transmit, the num_buffers field is always + * zero. The vtnet_hdr_size is used to enqueue the correct header + * size. */ hdr = &txhdr->vth_uhdr.hdr; error = ENOBUFS; @@ -2426,7 +2435,6 @@ vtnet_rxq_accum_stats(struct vtnet_rxq * accum->vrxs_ipackets += st->vrxs_ipackets; accum->vrxs_ibytes += st->vrxs_ibytes; accum->vrxs_iqdrops += st->vrxs_iqdrops; - accum->vrxs_discarded += st->vrxs_discarded; accum->vrxs_csum += st->vrxs_csum; accum->vrxs_csum_failed += st->vrxs_csum_failed; accum->vrxs_rescheduled += st->vrxs_rescheduled; @@ -2466,9 +2474,6 @@ vtnet_accumulate_stats(struct vtnet_soft vtnet_txq_accum_stats(&sc->vtnet_txqs[i], &txaccum); } - /* - * Push some accumulated stats into the global stats. - */ st->rx_csum_offloaded = rxaccum.vrxs_csum; st->rx_csum_failed = rxaccum.vrxs_csum_failed; st->rx_task_rescheduled = rxaccum.vrxs_rescheduled; @@ -2476,11 +2481,16 @@ vtnet_accumulate_stats(struct vtnet_soft st->tx_tso_offloaded = txaccum.vtxs_tso; st->tx_task_rescheduled = txaccum.vtxs_rescheduled; + /* + * With the exception of if_ierrors, these ifnet statistics are + * only updated in the driver, so just set them to our accumulated + * values. if_ierrors is updated in ether_input() for malformed + * frames that we should have already discarded. + */ ifp->if_ipackets = rxaccum.vrxs_ipackets; - ifp->if_opackets = txaccum.vtxs_opackets; ifp->if_iqdrops = rxaccum.vrxs_iqdrops; ifp->if_ierrors = rxaccum.vrxs_ierrors; - ifp->if_iqdrops = rxaccum.vrxs_discarded; + ifp->if_opackets = txaccum.vtxs_opackets; #ifndef VTNET_LEGACY_TX ifp->if_obytes = txaccum.vtxs_obytes; ifp->if_omcasts = txaccum.vtxs_omcasts; @@ -2529,11 +2539,6 @@ vtnet_start_taskqueues(struct vtnet_soft * * Most drivers just ignore the return value - it only fails * with ENOMEM so an error is not likely. - * - * BMV: It may be better to just have one taskqueue with enough - * threads for the queues? Or on failure, we could just use a - * global taskqueue - or attempt to start the taskqueue later. - * No need to make this complicated yet. */ for (i = 0; i < sc->vtnet_max_vq_pairs; i++) { rxq = &sc->vtnet_rxqs[i]; @@ -2674,31 +2679,35 @@ vtnet_virtio_reinit(struct vtnet_softc * device_t dev; struct ifnet *ifp; uint64_t features; - int error; + int mask, error; dev = sc->vtnet_dev; ifp = sc->vtnet_ifp; features = sc->vtnet_features; + mask = 0; +#if defined(INET) + mask |= IFCAP_RXCSUM; +#endif +#if defined (INET6) + mask |= IFCAP_RXCSUM_IPV6; +#endif + /* * Re-negotiate with the host, removing any disabled receive * features. Transmit features are disabled only on our side * via if_capenable and if_hwassist. */ -#define _RXCSUM_IPV46 (IFCAP_RXCSUM | IFCAP_RXCSUM_IPV6) - if (ifp->if_capabilities & _RXCSUM_IPV46) { + if (ifp->if_capabilities & mask) { /* * We require both IPv4 and IPv6 offloading to be enabled * in order to negotiated it: VirtIO does not distinguish * between the two. - * - * BMV: What about when INET and/or INET6 is not defined? */ - if ((ifp->if_capenable & _RXCSUM_IPV46) != _RXCSUM_IPV46) + if ((ifp->if_capenable & mask) != mask) features &= ~VIRTIO_NET_F_GUEST_CSUM; } -#undef _RXCSUM_IPV46 if (ifp->if_capabilities & IFCAP_LRO) { if ((ifp->if_capenable & IFCAP_LRO) == 0) @@ -2800,7 +2809,6 @@ vtnet_init_tx_queues(struct vtnet_softc for (i = 0; i < sc->vtnet_act_vq_pairs; i++) { txq = &sc->vtnet_txqs[i]; - txq->vtntx_watchdog = 0; } @@ -2827,7 +2835,7 @@ static void vtnet_set_active_vq_pairs(struct vtnet_softc *sc) { device_t dev; - int npairs, error; + int npairs; dev = sc->vtnet_dev; @@ -2840,8 +2848,7 @@ vtnet_set_active_vq_pairs(struct vtnet_s /* BMV: Just use the maximum configured for now. */ npairs = sc->vtnet_max_vq_pairs; - error = vtnet_ctrl_mq_cmd(sc, npairs); - if (error) { + if (vtnet_ctrl_mq_cmd(sc, npairs) != 0) { device_printf(dev, "cannot set active queue pairs to %d\n", npairs); npairs = 1; @@ -2894,7 +2901,6 @@ vtnet_init_locked(struct vtnet_softc *sc { device_t dev; struct ifnet *ifp; - int error; dev = sc->vtnet_dev; ifp = sc->vtnet_ifp; @@ -2907,12 +2913,10 @@ vtnet_init_locked(struct vtnet_softc *sc vtnet_stop(sc); /* Reinitialize with the host. */ - error = vtnet_virtio_reinit(sc); - if (error) + if (vtnet_virtio_reinit(sc) != 0) goto fail; - error = vtnet_reinit(sc); - if (error) + if (vtnet_reinit(sc) != 0) goto fail; virtio_reinit_complete(dev); @@ -2948,8 +2952,8 @@ vtnet_free_ctrl_vq(struct vtnet_softc *s * The control virtqueue is only polled and therefore it should * already be empty. */ - if (!virtqueue_empty(vq)) - panic("%s: ctrl vq %p not empty", __func__, vq); + KASSERT(virtqueue_empty(vq), + ("%s: ctrl vq %p not empty", __func__, vq)); } static void @@ -3049,8 +3053,8 @@ vtnet_ctrl_rx_cmd(struct vtnet_softc *sc } s; int error; - if ((sc->vtnet_flags & VTNET_FLAG_CTRL_RX) == 0) - return (ENOTSUP); + KASSERT(sc->vtnet_flags & VTNET_FLAG_CTRL_RX, + ("%s: CTRL_RX feature not negotiated", __func__)); s.hdr.class = VIRTIO_NET_CTRL_RX; s.hdr.cmd = cmd; @@ -3123,8 +3127,6 @@ vtnet_rx_filter(struct vtnet_softc *sc) ifp = sc->vtnet_ifp; VTNET_CORE_LOCK_ASSERT(sc); - KASSERT(sc->vtnet_flags & VTNET_FLAG_CTRL_RX, - ("%s: CTRL_RX feature not negotiated", __func__)); if (vtnet_set_promisc(sc, ifp->if_flags & IFF_PROMISC) != 0) device_printf(dev, "cannot %s promiscuous mode\n", @@ -3501,8 +3503,6 @@ vtnet_setup_rxq_sysctl(struct sysctl_ctx &stats->vrxs_iqdrops, "Receive drops"); SYSCTL_ADD_UQUAD(ctx, list, OID_AUTO, "ierrors", CTLFLAG_RD, &stats->vrxs_ierrors, "Receive errors"); - SYSCTL_ADD_UQUAD(ctx, list, OID_AUTO, "discarded", CTLFLAG_RD, - &stats->vrxs_discarded, "Receive mbuf discarded"); SYSCTL_ADD_UQUAD(ctx, list, OID_AUTO, "csum", CTLFLAG_RD, &stats->vrxs_csum, "Receive checksum offloaded"); SYSCTL_ADD_UQUAD(ctx, list, OID_AUTO, "csum_failed", CTLFLAG_RD, @@ -3539,7 +3539,7 @@ vtnet_setup_txq_sysctl(struct sysctl_ctx SYSCTL_ADD_UQUAD(ctx, list, OID_AUTO, "tso", CTLFLAG_RD, &stats->vtxs_tso, "Transmit segmentation offloaded"); SYSCTL_ADD_UQUAD(ctx, list, OID_AUTO, "collapsed", CTLFLAG_RD, - &stats->vtxs_collapsed, "Trasmit mbufs required collapse"); + &stats->vtxs_collapsed, "Transmit mbufs collapsed"); SYSCTL_ADD_UQUAD(ctx, list, OID_AUTO, "rescheduled", CTLFLAG_RD, &stats->vtxs_rescheduled, "Transmit interrupt handler rescheduled"); Modified: user/bryanv/vtnetmq/sys/dev/virtio/network/if_vtnetvar.h ============================================================================== --- user/bryanv/vtnetmq/sys/dev/virtio/network/if_vtnetvar.h Sun May 19 03:02:41 2013 (r250802) +++ user/bryanv/vtnetmq/sys/dev/virtio/network/if_vtnetvar.h Sun May 19 03:04:34 2013 (r250803) @@ -61,7 +61,6 @@ struct vtnet_rxq_stats { uint64_t vrxs_ibytes; /* if_ibytes */ uint64_t vrxs_iqdrops; /* if_iqdrops */ uint64_t vrxs_ierrors; /* if_ierrors */ - uint64_t vrxs_discarded; uint64_t vrxs_csum; uint64_t vrxs_csum_failed; uint64_t vrxs_rescheduled; @@ -267,6 +266,8 @@ CTASSERT(sizeof(struct vtnet_mac_filter) VIRTIO_NET_F_GUEST_TSO6 | \ VIRTIO_NET_F_GUEST_ECN | \ VIRTIO_NET_F_MRG_RXBUF | \ + VIRTIO_NET_F_MQ | \ + VIRTIO_RING_F_EVENT_IDX | \ VIRTIO_RING_F_INDIRECT_DESC) /* Modified: user/bryanv/vtnetmq/sys/dev/virtio/network/virtio_net.h ============================================================================== --- user/bryanv/vtnetmq/sys/dev/virtio/network/virtio_net.h Sun May 19 03:02:41 2013 (r250802) +++ user/bryanv/vtnetmq/sys/dev/virtio/network/virtio_net.h Sun May 19 03:04:34 2013 (r250803) @@ -109,8 +109,6 @@ struct virtio_net_ctrl_hdr { uint8_t cmd; } __packed; -typedef uint8_t virtio_net_ctrl_ack; - #define VIRTIO_NET_OK 0 #define VIRTIO_NET_ERR 1 From owner-svn-src-user@FreeBSD.ORG Sun May 19 14:59:25 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 0BBF35DB; Sun, 19 May 2013 14:59:25 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id F2A87D62; Sun, 19 May 2013 14:59:24 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r4JExOpY007515; Sun, 19 May 2013 14:59:24 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r4JExOkh007506; Sun, 19 May 2013 14:59:24 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201305191459.r4JExOkh007506@svn.freebsd.org> From: Attilio Rao Date: Sun, 19 May 2013 14:59:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250807 - user/attilio/vmobj-readlock/sys/vm X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 May 2013 14:59:25 -0000 Author: attilio Date: Sun May 19 14:59:24 2013 New Revision: 250807 URL: http://svnweb.freebsd.org/changeset/base/250807 Log: Remove the necessity to define VM_OBJECT_LOCK_DOWNGRADE() and handle the race differently. Sponsored by: EMC / Isilon storage division Modified: user/attilio/vmobj-readlock/sys/vm/vm_map.c user/attilio/vmobj-readlock/sys/vm/vm_object.h Modified: user/attilio/vmobj-readlock/sys/vm/vm_map.c ============================================================================== --- user/attilio/vmobj-readlock/sys/vm/vm_map.c Sun May 19 07:44:01 2013 (r250806) +++ user/attilio/vmobj-readlock/sys/vm/vm_map.c Sun May 19 14:59:24 2013 (r250807) @@ -1806,6 +1806,7 @@ vm_map_pmap_enter(vm_map_t map, vm_offse if ((prot & (VM_PROT_READ | VM_PROT_EXECUTE)) == 0 || object == NULL) return; +relock: VM_OBJECT_RLOCK(object); if (object->type == OBJT_DEVICE || object->type == OBJT_SG) { VM_OBJECT_RUNLOCK(object); @@ -1816,7 +1817,8 @@ vm_map_pmap_enter(vm_map_t map, vm_offse VM_OBJECT_WUNLOCK(object); return; } - VM_OBJECT_LOCK_DOWNGRADE(object); + VM_OBJECT_WUNLOCK(object); + goto relock; } psize = atop(size); Modified: user/attilio/vmobj-readlock/sys/vm/vm_object.h ============================================================================== --- user/attilio/vmobj-readlock/sys/vm/vm_object.h Sun May 19 07:44:01 2013 (r250806) +++ user/attilio/vmobj-readlock/sys/vm/vm_object.h Sun May 19 14:59:24 2013 (r250807) @@ -223,8 +223,6 @@ extern struct vm_object kmem_object_stor rw_assert(&(object)->lock, RA_RLOCKED) #define VM_OBJECT_ASSERT_WLOCKED(object) \ rw_assert(&(object)->lock, RA_WLOCKED) -#define VM_OBJECT_LOCK_DOWNGRADE(object) \ - rw_downgrade(&(object)->lock) #define VM_OBJECT_RLOCK(object) \ rw_rlock(&(object)->lock) #define VM_OBJECT_RUNLOCK(object) \ From owner-svn-src-user@FreeBSD.ORG Sun May 19 15:26:18 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id B69DEBDC; Sun, 19 May 2013 15:26:18 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 97929DFD; Sun, 19 May 2013 15:26:18 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r4JFQIeX017940; Sun, 19 May 2013 15:26:18 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r4JFQG1X017928; Sun, 19 May 2013 15:26:16 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201305191526.r4JFQG1X017928@svn.freebsd.org> From: Attilio Rao Date: Sun, 19 May 2013 15:26:16 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250808 - in user/attilio/vmobj-readlock/sys: amd64/amd64 arm/arm i386/i386 i386/xen ia64/ia64 mips/mips powerpc/aim powerpc/booke sparc64/sparc64 X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 May 2013 15:26:18 -0000 Author: attilio Date: Sun May 19 15:26:15 2013 New Revision: 250808 URL: http://svnweb.freebsd.org/changeset/base/250808 Log: Add vm object lock assertions to pmap_copy_page() which must avoid mappings destruction and page freeing while performing the copy. (Documentation will be filled promptly later about this). Sponsored by: EMC / Isilon storage division Modified: user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c user/attilio/vmobj-readlock/sys/arm/arm/pmap-v6.c user/attilio/vmobj-readlock/sys/arm/arm/pmap.c user/attilio/vmobj-readlock/sys/i386/i386/pmap.c user/attilio/vmobj-readlock/sys/i386/xen/pmap.c user/attilio/vmobj-readlock/sys/ia64/ia64/pmap.c user/attilio/vmobj-readlock/sys/mips/mips/pmap.c user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea.c user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea64.c user/attilio/vmobj-readlock/sys/powerpc/booke/pmap.c user/attilio/vmobj-readlock/sys/sparc64/sparc64/pmap.c Modified: user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c Sun May 19 14:59:24 2013 (r250807) +++ user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c Sun May 19 15:26:15 2013 (r250808) @@ -4229,8 +4229,13 @@ pmap_zero_page_idle(vm_page_t m) void pmap_copy_page(vm_page_t msrc, vm_page_t mdst) { - vm_offset_t src = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(msrc)); - vm_offset_t dst = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(mdst)); + vm_offset_t dst, src; + + VM_OBJECT_ASSERT_LOCKED(msrc->object); + VM_OBJECT_ASSERT_LOCKED(mdst->object); + + src = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(msrc)); + dst = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(mdst)); pagecopy((void *)src, (void *)dst); } Modified: user/attilio/vmobj-readlock/sys/arm/arm/pmap-v6.c ============================================================================== --- user/attilio/vmobj-readlock/sys/arm/arm/pmap-v6.c Sun May 19 14:59:24 2013 (r250807) +++ user/attilio/vmobj-readlock/sys/arm/arm/pmap-v6.c Sun May 19 15:26:15 2013 (r250808) @@ -3729,6 +3729,9 @@ void pmap_copy_page(vm_page_t src, vm_page_t dst) { + VM_OBJECT_ASSERT_LOCKED(src->object); + VM_OBJECT_ASSERT_LOCKED(dst->object); + if (_arm_memcpy && PAGE_SIZE >= _min_memcpy_size && _arm_memcpy((void *)VM_PAGE_TO_PHYS(dst), (void *)VM_PAGE_TO_PHYS(src), PAGE_SIZE, IS_PHYSICAL) == 0) Modified: user/attilio/vmobj-readlock/sys/arm/arm/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/arm/arm/pmap.c Sun May 19 14:59:24 2013 (r250807) +++ user/attilio/vmobj-readlock/sys/arm/arm/pmap.c Sun May 19 15:26:15 2013 (r250808) @@ -4411,6 +4411,9 @@ pmap_copy_page(vm_page_t src, vm_page_t vm_offset_t srcpg, dstpg; #endif + VM_OBJECT_ASSERT_LOCKED(src->object); + VM_OBJECT_ASSERT_LOCKED(dst->object); + cpu_dcache_wbinv_all(); cpu_l2cache_wbinv_all(); if (_arm_memcpy && PAGE_SIZE >= _min_memcpy_size && Modified: user/attilio/vmobj-readlock/sys/i386/i386/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/i386/i386/pmap.c Sun May 19 14:59:24 2013 (r250807) +++ user/attilio/vmobj-readlock/sys/i386/i386/pmap.c Sun May 19 15:26:15 2013 (r250808) @@ -4185,6 +4185,9 @@ pmap_copy_page(vm_page_t src, vm_page_t { struct sysmaps *sysmaps; + VM_OBJECT_ASSERT_LOCKED(src->object); + VM_OBJECT_ASSERT_LOCKED(dst->object); + sysmaps = &sysmaps_pcpu[PCPU_GET(cpuid)]; mtx_lock(&sysmaps->lock); if (*sysmaps->CMAP1) Modified: user/attilio/vmobj-readlock/sys/i386/xen/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/i386/xen/pmap.c Sun May 19 14:59:24 2013 (r250807) +++ user/attilio/vmobj-readlock/sys/i386/xen/pmap.c Sun May 19 15:26:15 2013 (r250808) @@ -3432,6 +3432,9 @@ pmap_copy_page(vm_page_t src, vm_page_t { struct sysmaps *sysmaps; + VM_OBJECT_ASSERT_LOCKED(src->object); + VM_OBJECT_ASSERT_LOCKED(dst->object); + sysmaps = &sysmaps_pcpu[PCPU_GET(cpuid)]; mtx_lock(&sysmaps->lock); if (*sysmaps->CMAP1) Modified: user/attilio/vmobj-readlock/sys/ia64/ia64/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/ia64/ia64/pmap.c Sun May 19 14:59:24 2013 (r250807) +++ user/attilio/vmobj-readlock/sys/ia64/ia64/pmap.c Sun May 19 15:26:15 2013 (r250808) @@ -2009,6 +2009,9 @@ pmap_copy_page(vm_page_t msrc, vm_page_t { void *dst, *src; + VM_OBJECT_ASSERT_LOCKED(msrc->object); + VM_OBJECT_ASSERT_LOCKED(mdst->object); + src = (void *)pmap_page_to_va(msrc); dst = (void *)pmap_page_to_va(mdst); bcopy(src, dst, PAGE_SIZE); Modified: user/attilio/vmobj-readlock/sys/mips/mips/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/mips/mips/pmap.c Sun May 19 14:59:24 2013 (r250807) +++ user/attilio/vmobj-readlock/sys/mips/mips/pmap.c Sun May 19 15:26:15 2013 (r250808) @@ -2551,8 +2551,13 @@ void pmap_copy_page(vm_page_t src, vm_page_t dst) { vm_offset_t va_src, va_dst; - vm_paddr_t phys_src = VM_PAGE_TO_PHYS(src); - vm_paddr_t phys_dst = VM_PAGE_TO_PHYS(dst); + vm_paddr_t phys_dst, phys_src; + + VM_OBJECT_ASSERT_LOCKED(src->object); + VM_OBJECT_ASSERT_LOCKED(dst->object); + + phys_src = VM_PAGE_TO_PHYS(src); + phys_dst = VM_PAGE_TO_PHYS(dst); if (MIPS_DIRECT_MAPPABLE(phys_src) && MIPS_DIRECT_MAPPABLE(phys_dst)) { /* easy case, all can be accessed via KSEG0 */ Modified: user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea.c ============================================================================== --- user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea.c Sun May 19 14:59:24 2013 (r250807) +++ user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea.c Sun May 19 15:26:15 2013 (r250808) @@ -1050,6 +1050,9 @@ moea_copy_page(mmu_t mmu, vm_page_t msrc vm_offset_t dst; vm_offset_t src; + VM_OBJECT_ASSERT_LOCKED(msrc->object); + VM_OBJECT_ASSERT_LOCKED(mdst->object); + dst = VM_PAGE_TO_PHYS(mdst); src = VM_PAGE_TO_PHYS(msrc); Modified: user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea64.c ============================================================================== --- user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea64.c Sun May 19 14:59:24 2013 (r250807) +++ user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea64.c Sun May 19 15:26:15 2013 (r250808) @@ -1097,6 +1097,9 @@ moea64_copy_page(mmu_t mmu, vm_page_t ms vm_offset_t dst; vm_offset_t src; + VM_OBJECT_ASSERT_LOCKED(msrc->object); + VM_OBJECT_ASSERT_LOCKED(mdst->object); + dst = VM_PAGE_TO_PHYS(mdst); src = VM_PAGE_TO_PHYS(msrc); Modified: user/attilio/vmobj-readlock/sys/powerpc/booke/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/powerpc/booke/pmap.c Sun May 19 14:59:24 2013 (r250807) +++ user/attilio/vmobj-readlock/sys/powerpc/booke/pmap.c Sun May 19 15:26:15 2013 (r250808) @@ -2127,6 +2127,9 @@ mmu_booke_copy_page(mmu_t mmu, vm_page_t { vm_offset_t sva, dva; + VM_OBJECT_ASSERT_LOCKED(sm->object); + VM_OBJECT_ASSERT_LOCKED(dm->object); + sva = copy_page_src_va; dva = copy_page_dst_va; Modified: user/attilio/vmobj-readlock/sys/sparc64/sparc64/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/sparc64/sparc64/pmap.c Sun May 19 14:59:24 2013 (r250807) +++ user/attilio/vmobj-readlock/sys/sparc64/sparc64/pmap.c Sun May 19 15:26:15 2013 (r250808) @@ -1843,6 +1843,8 @@ pmap_copy_page(vm_page_t msrc, vm_page_t vm_paddr_t psrc; struct tte *tp; + VM_OBJECT_ASSERT_LOCKED(msrc->object); + VM_OBJECT_ASSERT_LOCKED(mdst->object); KASSERT((mdst->flags & PG_FICTITIOUS) == 0, ("pmap_copy_page: fake dst page")); KASSERT((msrc->flags & PG_FICTITIOUS) == 0, From owner-svn-src-user@FreeBSD.ORG Sun May 19 19:20:00 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 01A03732; Sun, 19 May 2013 19:19:59 +0000 (UTC) (envelope-from dchagin@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id CDE5A656; Sun, 19 May 2013 19:19:59 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r4JJJxB6001294; Sun, 19 May 2013 19:19:59 GMT (envelope-from dchagin@svn.freebsd.org) Received: (from dchagin@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r4JJJxnd001290; Sun, 19 May 2013 19:19:59 GMT (envelope-from dchagin@svn.freebsd.org) Message-Id: <201305191919.r4JJJxnd001290@svn.freebsd.org> From: Dmitry Chagin Date: Sun, 19 May 2013 19:19:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250814 - in user/dchagin/lemul/sys: amd64/linux amd64/linux32 i386/linux X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 19 May 2013 19:20:00 -0000 Author: dchagin Date: Sun May 19 19:19:58 2013 New Revision: 250814 URL: http://svnweb.freebsd.org/changeset/base/250814 Log: Being exported through vdso the note.Linux section used by glibc to determine the kernel version (this saves one uname call). Temporarily disable the export of a note.Linux section until I figured out how to change the kernel version in the note.Linux on the fly. Modified: user/dchagin/lemul/sys/amd64/linux/linux_locore.s user/dchagin/lemul/sys/amd64/linux32/linux32_locore.s user/dchagin/lemul/sys/i386/linux/linux_locore.s Modified: user/dchagin/lemul/sys/amd64/linux/linux_locore.s ============================================================================== --- user/dchagin/lemul/sys/amd64/linux/linux_locore.s Sun May 19 19:19:01 2013 (r250813) +++ user/dchagin/lemul/sys/amd64/linux/linux_locore.s Sun May 19 19:19:58 2013 (r250814) @@ -66,7 +66,7 @@ NON_GPROF_ENTRY(__vdso_getcpu) .weak getcpu .set getcpu, __vdso_getcpu - +#if 0 .section .note.Linux, "a",@note .long 2f - 1f /* namesz */ .balign 4 @@ -81,7 +81,7 @@ NON_GPROF_ENTRY(__vdso_getcpu) 4: .balign 4 .previous - +#endif #define do_cfa_expr(offset) \ .byte 0x0f; /* DW_CFA_def_cfa_expression */ \ Modified: user/dchagin/lemul/sys/amd64/linux32/linux32_locore.s ============================================================================== --- user/dchagin/lemul/sys/amd64/linux32/linux32_locore.s Sun May 19 19:19:01 2013 (r250813) +++ user/dchagin/lemul/sys/amd64/linux32/linux32_locore.s Sun May 19 19:19:58 2013 (r250814) @@ -55,7 +55,7 @@ NON_GPROF_ENTRY(linux32_vsyscall) ret .endvsyscall: - +#if 0 .section .note.Linux, "a",@note .long 2f - 1f /* namesz */ .balign 4 @@ -70,7 +70,7 @@ NON_GPROF_ENTRY(linux32_vsyscall) 4: .balign 4 .previous - +#endif #define do_cfa_expr(offset) \ .byte 0x0f; /* DW_CFA_def_cfa_expression */ \ Modified: user/dchagin/lemul/sys/i386/linux/linux_locore.s ============================================================================== --- user/dchagin/lemul/sys/i386/linux/linux_locore.s Sun May 19 19:19:01 2013 (r250813) +++ user/dchagin/lemul/sys/i386/linux/linux_locore.s Sun May 19 19:19:58 2013 (r250814) @@ -48,7 +48,7 @@ NON_GPROF_ENTRY(linux_vsyscall) ret .endvsyscall: - +#if 0 .section .note.Linux, "a",@note .long 2f - 1f /* namesz */ .balign 4 @@ -63,7 +63,7 @@ NON_GPROF_ENTRY(linux_vsyscall) 4: .balign 4 .previous - +#endif #define do_cfa_expr(offset) \ .byte 0x0f; /* DW_CFA_def_cfa_expression */ \ From owner-svn-src-user@FreeBSD.ORG Tue May 21 13:02:40 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 991D7B9A; Tue, 21 May 2013 13:02:40 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 7AF4EF66; Tue, 21 May 2013 13:02:40 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r4LD2exB088694; Tue, 21 May 2013 13:02:40 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r4LD2c5E088677; Tue, 21 May 2013 13:02:38 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201305211302.r4LD2c5E088677@svn.freebsd.org> From: Attilio Rao Date: Tue, 21 May 2013 13:02:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250855 - in user/attilio/vmobj-readlock/sys: amd64/amd64 arm/arm i386/i386 i386/xen ia64/ia64 mips/mips powerpc/aim powerpc/booke sparc64/sparc64 X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 May 2013 13:02:40 -0000 Author: attilio Date: Tue May 21 13:02:37 2013 New Revision: 250855 URL: http://svnweb.freebsd.org/changeset/base/250855 Log: o Take into account the possibility of busy pages. o Remove the asserts on the dest page. There could be some legittimate reasons that have the dst page out of whatever race for the time being. Sponsored by: EMC / Isilon storage division Modified: user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c user/attilio/vmobj-readlock/sys/arm/arm/pmap-v6.c user/attilio/vmobj-readlock/sys/arm/arm/pmap.c user/attilio/vmobj-readlock/sys/i386/i386/pmap.c user/attilio/vmobj-readlock/sys/i386/xen/pmap.c user/attilio/vmobj-readlock/sys/ia64/ia64/pmap.c user/attilio/vmobj-readlock/sys/mips/mips/pmap.c user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea.c user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea64.c user/attilio/vmobj-readlock/sys/powerpc/booke/pmap.c user/attilio/vmobj-readlock/sys/sparc64/sparc64/pmap.c Modified: user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c Tue May 21 11:41:08 2013 (r250854) +++ user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c Tue May 21 13:02:37 2013 (r250855) @@ -4231,8 +4231,8 @@ pmap_copy_page(vm_page_t msrc, vm_page_t { vm_offset_t dst, src; - VM_OBJECT_ASSERT_LOCKED(msrc->object); - VM_OBJECT_ASSERT_LOCKED(mdst->object); + if ((msrc->oflags & VPO_BUSY) == 0) + VM_OBJECT_ASSERT_LOCKED(msrc->object); src = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(msrc)); dst = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(mdst)); Modified: user/attilio/vmobj-readlock/sys/arm/arm/pmap-v6.c ============================================================================== --- user/attilio/vmobj-readlock/sys/arm/arm/pmap-v6.c Tue May 21 11:41:08 2013 (r250854) +++ user/attilio/vmobj-readlock/sys/arm/arm/pmap-v6.c Tue May 21 13:02:37 2013 (r250855) @@ -3729,8 +3729,8 @@ void pmap_copy_page(vm_page_t src, vm_page_t dst) { - VM_OBJECT_ASSERT_LOCKED(src->object); - VM_OBJECT_ASSERT_LOCKED(dst->object); + if ((src->oflags & VPO_BUSY) == 0) + VM_OBJECT_ASSERT_LOCKED(src->object); if (_arm_memcpy && PAGE_SIZE >= _min_memcpy_size && _arm_memcpy((void *)VM_PAGE_TO_PHYS(dst), Modified: user/attilio/vmobj-readlock/sys/arm/arm/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/arm/arm/pmap.c Tue May 21 11:41:08 2013 (r250854) +++ user/attilio/vmobj-readlock/sys/arm/arm/pmap.c Tue May 21 13:02:37 2013 (r250855) @@ -4411,8 +4411,8 @@ pmap_copy_page(vm_page_t src, vm_page_t vm_offset_t srcpg, dstpg; #endif - VM_OBJECT_ASSERT_LOCKED(src->object); - VM_OBJECT_ASSERT_LOCKED(dst->object); + if ((src->oflags & VPO_BUSY) == 0) + VM_OBJECT_ASSERT_LOCKED(src->object); cpu_dcache_wbinv_all(); cpu_l2cache_wbinv_all(); Modified: user/attilio/vmobj-readlock/sys/i386/i386/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/i386/i386/pmap.c Tue May 21 11:41:08 2013 (r250854) +++ user/attilio/vmobj-readlock/sys/i386/i386/pmap.c Tue May 21 13:02:37 2013 (r250855) @@ -4185,8 +4185,8 @@ pmap_copy_page(vm_page_t src, vm_page_t { struct sysmaps *sysmaps; - VM_OBJECT_ASSERT_LOCKED(src->object); - VM_OBJECT_ASSERT_LOCKED(dst->object); + if ((src->oflags & VPO_BUSY) == 0) + VM_OBJECT_ASSERT_LOCKED(src->object); sysmaps = &sysmaps_pcpu[PCPU_GET(cpuid)]; mtx_lock(&sysmaps->lock); Modified: user/attilio/vmobj-readlock/sys/i386/xen/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/i386/xen/pmap.c Tue May 21 11:41:08 2013 (r250854) +++ user/attilio/vmobj-readlock/sys/i386/xen/pmap.c Tue May 21 13:02:37 2013 (r250855) @@ -3432,8 +3432,8 @@ pmap_copy_page(vm_page_t src, vm_page_t { struct sysmaps *sysmaps; - VM_OBJECT_ASSERT_LOCKED(src->object); - VM_OBJECT_ASSERT_LOCKED(dst->object); + if ((src->oflags & VPO_BUSY) == 0) + VM_OBJECT_ASSERT_LOCKED(src->object); sysmaps = &sysmaps_pcpu[PCPU_GET(cpuid)]; mtx_lock(&sysmaps->lock); Modified: user/attilio/vmobj-readlock/sys/ia64/ia64/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/ia64/ia64/pmap.c Tue May 21 11:41:08 2013 (r250854) +++ user/attilio/vmobj-readlock/sys/ia64/ia64/pmap.c Tue May 21 13:02:37 2013 (r250855) @@ -2009,8 +2009,8 @@ pmap_copy_page(vm_page_t msrc, vm_page_t { void *dst, *src; - VM_OBJECT_ASSERT_LOCKED(msrc->object); - VM_OBJECT_ASSERT_LOCKED(mdst->object); + if ((msrc->oflags & VPO_BUSY) == 0) + VM_OBJECT_ASSERT_LOCKED(msrc->object); src = (void *)pmap_page_to_va(msrc); dst = (void *)pmap_page_to_va(mdst); Modified: user/attilio/vmobj-readlock/sys/mips/mips/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/mips/mips/pmap.c Tue May 21 11:41:08 2013 (r250854) +++ user/attilio/vmobj-readlock/sys/mips/mips/pmap.c Tue May 21 13:02:37 2013 (r250855) @@ -2553,8 +2553,8 @@ pmap_copy_page(vm_page_t src, vm_page_t vm_offset_t va_src, va_dst; vm_paddr_t phys_dst, phys_src; - VM_OBJECT_ASSERT_LOCKED(src->object); - VM_OBJECT_ASSERT_LOCKED(dst->object); + if ((src->oflags & VPO_BUSY) == 0) + VM_OBJECT_ASSERT_LOCKED(src->object); phys_src = VM_PAGE_TO_PHYS(src); phys_dst = VM_PAGE_TO_PHYS(dst); Modified: user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea.c ============================================================================== --- user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea.c Tue May 21 11:41:08 2013 (r250854) +++ user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea.c Tue May 21 13:02:37 2013 (r250855) @@ -1050,8 +1050,8 @@ moea_copy_page(mmu_t mmu, vm_page_t msrc vm_offset_t dst; vm_offset_t src; - VM_OBJECT_ASSERT_LOCKED(msrc->object); - VM_OBJECT_ASSERT_LOCKED(mdst->object); + if ((msrc->oflags & VPO_BUSY) == 0) + VM_OBJECT_ASSERT_LOCKED(msrc->object); dst = VM_PAGE_TO_PHYS(mdst); src = VM_PAGE_TO_PHYS(msrc); Modified: user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea64.c ============================================================================== --- user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea64.c Tue May 21 11:41:08 2013 (r250854) +++ user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea64.c Tue May 21 13:02:37 2013 (r250855) @@ -1097,8 +1097,8 @@ moea64_copy_page(mmu_t mmu, vm_page_t ms vm_offset_t dst; vm_offset_t src; - VM_OBJECT_ASSERT_LOCKED(msrc->object); - VM_OBJECT_ASSERT_LOCKED(mdst->object); + if ((msrc->oflags & VPO_BUSY) == 0) + VM_OBJECT_ASSERT_LOCKED(msrc->object); dst = VM_PAGE_TO_PHYS(mdst); src = VM_PAGE_TO_PHYS(msrc); Modified: user/attilio/vmobj-readlock/sys/powerpc/booke/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/powerpc/booke/pmap.c Tue May 21 11:41:08 2013 (r250854) +++ user/attilio/vmobj-readlock/sys/powerpc/booke/pmap.c Tue May 21 13:02:37 2013 (r250855) @@ -2127,8 +2127,8 @@ mmu_booke_copy_page(mmu_t mmu, vm_page_t { vm_offset_t sva, dva; - VM_OBJECT_ASSERT_LOCKED(sm->object); - VM_OBJECT_ASSERT_LOCKED(dm->object); + if ((ms->oflags & VPO_BUSY) == 0) + VM_OBJECT_ASSERT_LOCKED(ms->object); sva = copy_page_src_va; dva = copy_page_dst_va; Modified: user/attilio/vmobj-readlock/sys/sparc64/sparc64/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/sparc64/sparc64/pmap.c Tue May 21 11:41:08 2013 (r250854) +++ user/attilio/vmobj-readlock/sys/sparc64/sparc64/pmap.c Tue May 21 13:02:37 2013 (r250855) @@ -1843,8 +1843,8 @@ pmap_copy_page(vm_page_t msrc, vm_page_t vm_paddr_t psrc; struct tte *tp; - VM_OBJECT_ASSERT_LOCKED(msrc->object); - VM_OBJECT_ASSERT_LOCKED(mdst->object); + if ((msrc->oflags & VPO_BUSY) == 0) + VM_OBJECT_ASSERT_LOCKED(msrc->object); KASSERT((mdst->flags & PG_FICTITIOUS) == 0, ("pmap_copy_page: fake dst page")); KASSERT((msrc->flags & PG_FICTITIOUS) == 0, From owner-svn-src-user@FreeBSD.ORG Tue May 21 15:48:38 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 0D122946; Tue, 21 May 2013 15:48:38 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id F2358A8D; Tue, 21 May 2013 15:48:37 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r4LFmbPc046768; Tue, 21 May 2013 15:48:37 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r4LFmZZQ046757; Tue, 21 May 2013 15:48:35 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201305211548.r4LFmZZQ046757@svn.freebsd.org> From: Attilio Rao Date: Tue, 21 May 2013 15:48:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250857 - in user/attilio/vmobj-readlock/sys: amd64/amd64 arm/arm i386/i386 i386/xen ia64/ia64 mips/mips powerpc/aim powerpc/booke sparc64/sparc64 X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 May 2013 15:48:38 -0000 Author: attilio Date: Tue May 21 15:48:35 2013 New Revision: 250857 URL: http://svnweb.freebsd.org/changeset/base/250857 Log: Relax and complete object assert for pmap_enter_object(). Sponsored by: EMC / Isilon storage division Modified: user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c user/attilio/vmobj-readlock/sys/arm/arm/pmap-v6.c user/attilio/vmobj-readlock/sys/arm/arm/pmap.c user/attilio/vmobj-readlock/sys/i386/i386/pmap.c user/attilio/vmobj-readlock/sys/i386/xen/pmap.c user/attilio/vmobj-readlock/sys/ia64/ia64/pmap.c user/attilio/vmobj-readlock/sys/mips/mips/pmap.c user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea.c user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea64.c user/attilio/vmobj-readlock/sys/powerpc/booke/pmap.c user/attilio/vmobj-readlock/sys/sparc64/sparc64/pmap.c Modified: user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c Tue May 21 14:28:05 2013 (r250856) +++ user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c Tue May 21 15:48:35 2013 (r250857) @@ -3722,7 +3722,8 @@ pmap_enter_object(pmap_t pmap, vm_offset vm_page_t m, mpte; vm_pindex_t diff, psize; - VM_OBJECT_ASSERT_WLOCKED(m_start->object); + VM_OBJECT_ASSERT_LOCKED(m_start->object); + psize = atop(end - start); mpte = NULL; m = m_start; Modified: user/attilio/vmobj-readlock/sys/arm/arm/pmap-v6.c ============================================================================== --- user/attilio/vmobj-readlock/sys/arm/arm/pmap-v6.c Tue May 21 14:28:05 2013 (r250856) +++ user/attilio/vmobj-readlock/sys/arm/arm/pmap-v6.c Tue May 21 15:48:35 2013 (r250857) @@ -2931,6 +2931,8 @@ pmap_enter_object(pmap_t pmap, vm_offset vm_page_t m; vm_pindex_t diff, psize; + VM_OBJECT_ASSERT_LOCKED(m_start->object); + psize = atop(end - start); m = m_start; rw_wlock(&pvh_global_lock); Modified: user/attilio/vmobj-readlock/sys/arm/arm/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/arm/arm/pmap.c Tue May 21 14:28:05 2013 (r250856) +++ user/attilio/vmobj-readlock/sys/arm/arm/pmap.c Tue May 21 15:48:35 2013 (r250857) @@ -3587,6 +3587,8 @@ pmap_enter_object(pmap_t pmap, vm_offset vm_page_t m; vm_pindex_t diff, psize; + VM_OBJECT_ASSERT_LOCKED(m_start->object); + psize = atop(end - start); m = m_start; rw_wlock(&pvh_global_lock); Modified: user/attilio/vmobj-readlock/sys/i386/i386/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/i386/i386/pmap.c Tue May 21 14:28:05 2013 (r250856) +++ user/attilio/vmobj-readlock/sys/i386/i386/pmap.c Tue May 21 15:48:35 2013 (r250857) @@ -3677,7 +3677,8 @@ pmap_enter_object(pmap_t pmap, vm_offset vm_page_t m, mpte; vm_pindex_t diff, psize; - VM_OBJECT_ASSERT_WLOCKED(m_start->object); + VM_OBJECT_ASSERT_LOCKED(m_start->object); + psize = atop(end - start); mpte = NULL; m = m_start; Modified: user/attilio/vmobj-readlock/sys/i386/xen/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/i386/xen/pmap.c Tue May 21 14:28:05 2013 (r250856) +++ user/attilio/vmobj-readlock/sys/i386/xen/pmap.c Tue May 21 15:48:35 2013 (r250857) @@ -2871,7 +2871,8 @@ pmap_enter_object(pmap_t pmap, vm_offset multicall_entry_t *mclp = mcl; int error, count = 0; - VM_OBJECT_ASSERT_WLOCKED(m_start->object); + VM_OBJECT_ASSERT_LOCKED(m_start->object); + psize = atop(end - start); mpte = NULL; m = m_start; Modified: user/attilio/vmobj-readlock/sys/ia64/ia64/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/ia64/ia64/pmap.c Tue May 21 14:28:05 2013 (r250856) +++ user/attilio/vmobj-readlock/sys/ia64/ia64/pmap.c Tue May 21 15:48:35 2013 (r250857) @@ -1802,7 +1802,8 @@ pmap_enter_object(pmap_t pmap, vm_offset vm_page_t m; vm_pindex_t diff, psize; - VM_OBJECT_ASSERT_WLOCKED(m_start->object); + VM_OBJECT_ASSERT_LOCKED(m_start->object); + psize = atop(end - start); m = m_start; rw_wlock(&pvh_global_lock); Modified: user/attilio/vmobj-readlock/sys/mips/mips/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/mips/mips/pmap.c Tue May 21 14:28:05 2013 (r250856) +++ user/attilio/vmobj-readlock/sys/mips/mips/pmap.c Tue May 21 15:48:35 2013 (r250857) @@ -2399,7 +2399,8 @@ pmap_enter_object(pmap_t pmap, vm_offset vm_page_t m, mpte; vm_pindex_t diff, psize; - VM_OBJECT_ASSERT_WLOCKED(m_start->object); + VM_OBJECT_ASSERT_LOCKED(m_start->object); + psize = atop(end - start); mpte = NULL; m = m_start; Modified: user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea.c ============================================================================== --- user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea.c Tue May 21 14:28:05 2013 (r250856) +++ user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea.c Tue May 21 15:48:35 2013 (r250857) @@ -1220,6 +1220,8 @@ moea_enter_object(mmu_t mmu, pmap_t pm, vm_page_t m; vm_pindex_t diff, psize; + VM_OBJECT_ASSERT_LOCKED(m_start->object); + psize = atop(end - start); m = m_start; rw_wlock(&pvh_global_lock); Modified: user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea64.c ============================================================================== --- user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea64.c Tue May 21 14:28:05 2013 (r250856) +++ user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea64.c Tue May 21 15:48:35 2013 (r250857) @@ -1363,6 +1363,8 @@ moea64_enter_object(mmu_t mmu, pmap_t pm vm_page_t m; vm_pindex_t diff, psize; + VM_OBJECT_ASSERT_LOCKED(m_start->object); + psize = atop(end - start); m = m_start; while (m != NULL && (diff = m->pindex - m_start->pindex) < psize) { Modified: user/attilio/vmobj-readlock/sys/powerpc/booke/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/powerpc/booke/pmap.c Tue May 21 14:28:05 2013 (r250856) +++ user/attilio/vmobj-readlock/sys/powerpc/booke/pmap.c Tue May 21 15:48:35 2013 (r250857) @@ -1716,6 +1716,8 @@ mmu_booke_enter_object(mmu_t mmu, pmap_t vm_page_t m; vm_pindex_t diff, psize; + VM_OBJECT_ASSERT_LOCKED(m_start->object); + psize = atop(end - start); m = m_start; rw_wlock(&pvh_global_lock); Modified: user/attilio/vmobj-readlock/sys/sparc64/sparc64/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/sparc64/sparc64/pmap.c Tue May 21 14:28:05 2013 (r250856) +++ user/attilio/vmobj-readlock/sys/sparc64/sparc64/pmap.c Tue May 21 15:48:35 2013 (r250857) @@ -1632,6 +1632,8 @@ pmap_enter_object(pmap_t pm, vm_offset_t vm_page_t m; vm_pindex_t diff, psize; + VM_OBJECT_ASSERT_LOCKED(m_start->object); + psize = atop(end - start); m = m_start; rw_wlock(&tte_list_global_lock); From owner-svn-src-user@FreeBSD.ORG Tue May 21 16:34:45 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 7AE0D762; Tue, 21 May 2013 16:34:45 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 6D891D5D; Tue, 21 May 2013 16:34:45 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r4LGYj7m063533; Tue, 21 May 2013 16:34:45 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r4LGYj4x063532; Tue, 21 May 2013 16:34:45 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201305211634.r4LGYj4x063532@svn.freebsd.org> From: Attilio Rao Date: Tue, 21 May 2013 16:34:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250858 - user/attilio/vmobj-readlock/sys/kern X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 May 2013 16:34:45 -0000 Author: attilio Date: Tue May 21 16:34:44 2013 New Revision: 250858 URL: http://svnweb.freebsd.org/changeset/base/250858 Log: o Relax assert in vfs_buf_test_cache() (even if it is unlikely to be exploited, it is more fair). o Use read-locking in vfs_bio_bzero_buf() because it should be fine to do so. Sponsored by: EMC / Isilon storage division Modified: user/attilio/vmobj-readlock/sys/kern/vfs_bio.c Modified: user/attilio/vmobj-readlock/sys/kern/vfs_bio.c ============================================================================== --- user/attilio/vmobj-readlock/sys/kern/vfs_bio.c Tue May 21 15:48:35 2013 (r250857) +++ user/attilio/vmobj-readlock/sys/kern/vfs_bio.c Tue May 21 16:34:44 2013 (r250858) @@ -478,7 +478,7 @@ vfs_buf_test_cache(struct buf *bp, vm_page_t m) { - VM_OBJECT_ASSERT_WLOCKED(m->object); + VM_OBJECT_ASSERT_LOCKED(m->object); if (bp->b_flags & B_CACHE) { int base = (foff + off) & PAGE_MASK; if (vm_page_is_valid(m, base, size) == 0) @@ -4215,7 +4215,7 @@ vfs_bio_bzero_buf(struct buf *bp, int ba } else { BUF_CHECK_UNMAPPED(bp); n = PAGE_SIZE - (base & PAGE_MASK); - VM_OBJECT_WLOCK(bp->b_bufobj->bo_object); + VM_OBJECT_RLOCK(bp->b_bufobj->bo_object); for (i = base / PAGE_SIZE; size > 0 && i < bp->b_npages; ++i) { m = bp->b_pages[i]; if (n > size) @@ -4225,7 +4225,7 @@ vfs_bio_bzero_buf(struct buf *bp, int ba size -= n; n = PAGE_SIZE; } - VM_OBJECT_WUNLOCK(bp->b_bufobj->bo_object); + VM_OBJECT_RUNLOCK(bp->b_bufobj->bo_object); } } From owner-svn-src-user@FreeBSD.ORG Tue May 21 17:40:23 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 3BE905AE; Tue, 21 May 2013 17:40:23 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 2F056EE; Tue, 21 May 2013 17:40:23 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r4LHeNKU085281; Tue, 21 May 2013 17:40:23 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r4LHeMYV085277; Tue, 21 May 2013 17:40:22 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201305211740.r4LHeMYV085277@svn.freebsd.org> From: Attilio Rao Date: Tue, 21 May 2013 17:40:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250862 - user/attilio/vmobj-readlock/sys/vm X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 May 2013 17:40:23 -0000 Author: attilio Date: Tue May 21 17:40:22 2013 New Revision: 250862 URL: http://svnweb.freebsd.org/changeset/base/250862 Log: Reinsert VM_OBJECT_LOCK_DOWNGRADE(). Sponsored by: EMC / Isilon storage division Requested by: alc Modified: user/attilio/vmobj-readlock/sys/vm/vm_map.c user/attilio/vmobj-readlock/sys/vm/vm_object.h Modified: user/attilio/vmobj-readlock/sys/vm/vm_map.c ============================================================================== --- user/attilio/vmobj-readlock/sys/vm/vm_map.c Tue May 21 17:30:27 2013 (r250861) +++ user/attilio/vmobj-readlock/sys/vm/vm_map.c Tue May 21 17:40:22 2013 (r250862) @@ -1806,7 +1806,6 @@ vm_map_pmap_enter(vm_map_t map, vm_offse if ((prot & (VM_PROT_READ | VM_PROT_EXECUTE)) == 0 || object == NULL) return; -relock: VM_OBJECT_RLOCK(object); if (object->type == OBJT_DEVICE || object->type == OBJT_SG) { VM_OBJECT_RUNLOCK(object); @@ -1817,8 +1816,7 @@ relock: VM_OBJECT_WUNLOCK(object); return; } - VM_OBJECT_WUNLOCK(object); - goto relock; + VM_OBJECT_LOCK_DOWNGRADE(object); } psize = atop(size); Modified: user/attilio/vmobj-readlock/sys/vm/vm_object.h ============================================================================== --- user/attilio/vmobj-readlock/sys/vm/vm_object.h Tue May 21 17:30:27 2013 (r250861) +++ user/attilio/vmobj-readlock/sys/vm/vm_object.h Tue May 21 17:40:22 2013 (r250862) @@ -223,6 +223,8 @@ extern struct vm_object kmem_object_stor rw_assert(&(object)->lock, RA_RLOCKED) #define VM_OBJECT_ASSERT_WLOCKED(object) \ rw_assert(&(object)->lock, RA_WLOCKED) +#define VM_OBJECT_LOCK_DOWNGRADE(object) \ + rw_downgrade(&(object)->lock) #define VM_OBJECT_RLOCK(object) \ rw_rlock(&(object)->lock) #define VM_OBJECT_RUNLOCK(object) \ From owner-svn-src-user@FreeBSD.ORG Tue May 21 20:56:32 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 313171F4; Tue, 21 May 2013 20:56:32 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 21074DE7; Tue, 21 May 2013 20:56:32 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r4LKuWi2055421; Tue, 21 May 2013 20:56:32 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r4LKuSgG055402; Tue, 21 May 2013 20:56:28 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201305212056.r4LKuSgG055402@svn.freebsd.org> From: Attilio Rao Date: Tue, 21 May 2013 20:56:28 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250886 - in user/attilio/vmcontention: . cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/cg cddl/contrib/opensolaris/lib/libdtrace/common contrib/bmake contrib/bmake/mk contrib/fle... X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 May 2013 20:56:32 -0000 Author: attilio Date: Tue May 21 20:56:27 2013 New Revision: 250886 URL: http://svnweb.freebsd.org/changeset/base/250886 Log: MFC Added: user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/cg/ - copied from r250884, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/cg/ user/attilio/vmcontention/contrib/bmake/mk/stage-install.sh - copied unchanged from r250884, head/contrib/bmake/mk/stage-install.sh user/attilio/vmcontention/contrib/flex/ - copied from r250884, head/contrib/flex/ user/attilio/vmcontention/include/uchar.h - copied unchanged from r250884, head/include/uchar.h user/attilio/vmcontention/include/xlocale/_uchar.h - copied unchanged from r250884, head/include/xlocale/_uchar.h user/attilio/vmcontention/lib/csu/Makefile - copied unchanged from r250884, head/lib/csu/Makefile user/attilio/vmcontention/lib/libc/locale/c16rtomb.c - copied unchanged from r250884, head/lib/libc/locale/c16rtomb.c user/attilio/vmcontention/lib/libc/locale/c32rtomb.c - copied unchanged from r250884, head/lib/libc/locale/c32rtomb.c user/attilio/vmcontention/lib/libc/locale/mbrtoc16.c - copied unchanged from r250884, head/lib/libc/locale/mbrtoc16.c user/attilio/vmcontention/lib/libc/locale/mbrtoc32.c - copied unchanged from r250884, head/lib/libc/locale/mbrtoc32.c user/attilio/vmcontention/release/doc/ja_JP.eucJP/share/xml/dev-auto-ja.ent - copied unchanged from r250884, head/release/doc/ja_JP.eucJP/share/xml/dev-auto-ja.ent user/attilio/vmcontention/release/doc/ru_RU.KOI8-R/share/xml/dev-auto-ru.ent - copied unchanged from r250884, head/release/doc/ru_RU.KOI8-R/share/xml/dev-auto-ru.ent user/attilio/vmcontention/sys/amd64/include/fdt.h - copied unchanged from r250884, head/sys/amd64/include/fdt.h user/attilio/vmcontention/sys/amd64/include/ofw_machdep.h - copied unchanged from r250884, head/sys/amd64/include/ofw_machdep.h user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/asloptions.c - copied unchanged from r250884, head/sys/contrib/dev/acpica/compiler/asloptions.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/tables/tbprint.c - copied unchanged from r250884, head/sys/contrib/dev/acpica/components/tables/tbprint.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/utbuffer.c - copied unchanged from r250884, head/sys/contrib/dev/acpica/components/utilities/utbuffer.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/uterror.c - copied unchanged from r250884, head/sys/contrib/dev/acpica/components/utilities/uterror.c user/attilio/vmcontention/sys/dev/fdt/fdt_x86.c - copied unchanged from r250884, head/sys/dev/fdt/fdt_x86.c user/attilio/vmcontention/sys/dev/uart/uart_cpu_fdt.c - copied unchanged from r250884, head/sys/dev/uart/uart_cpu_fdt.c user/attilio/vmcontention/sys/i386/include/fdt.h - copied unchanged from r250884, head/sys/i386/include/fdt.h user/attilio/vmcontention/sys/i386/include/ofw_machdep.h - copied unchanged from r250884, head/sys/i386/include/ofw_machdep.h user/attilio/vmcontention/sys/x86/include/fdt.h - copied unchanged from r250884, head/sys/x86/include/fdt.h user/attilio/vmcontention/sys/x86/include/ofw_machdep.h - copied unchanged from r250884, head/sys/x86/include/ofw_machdep.h user/attilio/vmcontention/sys/x86/x86/fdt_machdep.c - copied unchanged from r250884, head/sys/x86/x86/fdt_machdep.c user/attilio/vmcontention/tools/build/options/WITHOUT_BMAKE - copied unchanged from r250884, head/tools/build/options/WITHOUT_BMAKE user/attilio/vmcontention/tools/regression/lib/libc/gen/test-popen.c - copied unchanged from r250884, head/tools/regression/lib/libc/gen/test-popen.c user/attilio/vmcontention/tools/regression/lib/libc/locale/test-c16rtomb.c - copied unchanged from r250884, head/tools/regression/lib/libc/locale/test-c16rtomb.c user/attilio/vmcontention/tools/regression/lib/libc/locale/test-mbrtoc16.c - copied unchanged from r250884, head/tools/regression/lib/libc/locale/test-mbrtoc16.c user/attilio/vmcontention/usr.bin/lex/initparse.c - copied unchanged from r250884, head/usr.bin/lex/initparse.c user/attilio/vmcontention/usr.bin/lex/initparse.h - copied unchanged from r250884, head/usr.bin/lex/initparse.h user/attilio/vmcontention/usr.bin/lex/initskel.c - copied unchanged from r250884, head/usr.bin/lex/initskel.c user/attilio/vmcontention/usr.bin/lex/version.awk - copied unchanged from r250884, head/usr.bin/lex/version.awk Deleted: user/attilio/vmcontention/release/doc/ja_JP.eucJP/share/xml/dev-auto-ja.xml user/attilio/vmcontention/release/doc/ru_RU.KOI8-R/share/xml/dev-auto-ru.xml user/attilio/vmcontention/tools/build/options/WITH_BMAKE user/attilio/vmcontention/usr.bin/lex/COPYING user/attilio/vmcontention/usr.bin/lex/FlexLexer.h user/attilio/vmcontention/usr.bin/lex/NEWS user/attilio/vmcontention/usr.bin/lex/README user/attilio/vmcontention/usr.bin/lex/ccl.c user/attilio/vmcontention/usr.bin/lex/dfa.c user/attilio/vmcontention/usr.bin/lex/ecs.c user/attilio/vmcontention/usr.bin/lex/flex.skl user/attilio/vmcontention/usr.bin/lex/flexdef.h user/attilio/vmcontention/usr.bin/lex/gen.c user/attilio/vmcontention/usr.bin/lex/lib/libmain.c user/attilio/vmcontention/usr.bin/lex/lib/libyywrap.c user/attilio/vmcontention/usr.bin/lex/main.c user/attilio/vmcontention/usr.bin/lex/misc.c user/attilio/vmcontention/usr.bin/lex/mkskel.sh user/attilio/vmcontention/usr.bin/lex/nfa.c user/attilio/vmcontention/usr.bin/lex/parse.y user/attilio/vmcontention/usr.bin/lex/scan.l user/attilio/vmcontention/usr.bin/lex/sym.c user/attilio/vmcontention/usr.bin/lex/tblcmp.c user/attilio/vmcontention/usr.bin/lex/version.h user/attilio/vmcontention/usr.bin/lex/yylex.c Modified: user/attilio/vmcontention/MAINTAINERS (contents, props changed) user/attilio/vmcontention/Makefile.inc1 user/attilio/vmcontention/ObsoleteFiles.inc user/attilio/vmcontention/UPDATING user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cg.c user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libdtrace/common/dt_dis.c user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libdtrace/common/dt_error.c user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libdtrace/common/dt_errtags.h user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libdtrace/common/dt_regset.c user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libdtrace/common/dt_regset.h user/attilio/vmcontention/contrib/bmake/ChangeLog user/attilio/vmcontention/contrib/bmake/FILES user/attilio/vmcontention/contrib/bmake/Makefile user/attilio/vmcontention/contrib/bmake/meta.c user/attilio/vmcontention/contrib/bmake/mk/ChangeLog user/attilio/vmcontention/contrib/bmake/mk/FILES user/attilio/vmcontention/contrib/bmake/mk/gendirdeps.mk user/attilio/vmcontention/contrib/bmake/mk/install-mk user/attilio/vmcontention/contrib/bmake/mk/meta.stage.mk user/attilio/vmcontention/contrib/bmake/mk/meta2deps.py user/attilio/vmcontention/contrib/bmake/mk/meta2deps.sh user/attilio/vmcontention/contrib/bmake/mk/options.mk user/attilio/vmcontention/contrib/bmake/mk/progs.mk user/attilio/vmcontention/contrib/bmake/suff.c user/attilio/vmcontention/contrib/bmake/var.c user/attilio/vmcontention/crypto/heimdal/lib/kadm5/ipropd_master.c user/attilio/vmcontention/etc/rc user/attilio/vmcontention/etc/rc.d/ipfw user/attilio/vmcontention/etc/rc.d/netif user/attilio/vmcontention/etc/rc.d/routing user/attilio/vmcontention/etc/rc.shutdown user/attilio/vmcontention/gnu/usr.bin/diff/Makefile user/attilio/vmcontention/gnu/usr.bin/grep/Makefile user/attilio/vmcontention/gnu/usr.bin/grep/dfa.c user/attilio/vmcontention/gnu/usr.bin/grep/grep.c user/attilio/vmcontention/gnu/usr.bin/grep/search.c user/attilio/vmcontention/include/Makefile user/attilio/vmcontention/include/stdatomic.h user/attilio/vmcontention/include/xlocale/Makefile user/attilio/vmcontention/lib/libc/gen/popen.3 user/attilio/vmcontention/lib/libc/gen/popen.c user/attilio/vmcontention/lib/libc/locale/Makefile.inc user/attilio/vmcontention/lib/libc/locale/Symbol.map user/attilio/vmcontention/lib/libc/locale/mbrtowc.3 user/attilio/vmcontention/lib/libc/locale/wcrtomb.3 user/attilio/vmcontention/lib/libc/locale/xlocale_private.h user/attilio/vmcontention/lib/libc/sys/setfib.2 user/attilio/vmcontention/release/doc/en_US.ISO8859-1/hardware/Makefile user/attilio/vmcontention/release/doc/ja_JP.eucJP/hardware/alpha/Makefile user/attilio/vmcontention/release/doc/ja_JP.eucJP/hardware/amd64/Makefile user/attilio/vmcontention/release/doc/ja_JP.eucJP/hardware/i386/Makefile user/attilio/vmcontention/release/doc/ja_JP.eucJP/hardware/ia64/Makefile user/attilio/vmcontention/release/doc/ja_JP.eucJP/hardware/pc98/Makefile user/attilio/vmcontention/release/doc/ja_JP.eucJP/hardware/sparc64/Makefile user/attilio/vmcontention/release/doc/ja_JP.eucJP/share/xml/catalog user/attilio/vmcontention/release/doc/ja_JP.eucJP/share/xml/catalog.xml user/attilio/vmcontention/release/doc/ru_RU.KOI8-R/hardware/alpha/Makefile user/attilio/vmcontention/release/doc/ru_RU.KOI8-R/hardware/amd64/Makefile user/attilio/vmcontention/release/doc/ru_RU.KOI8-R/hardware/i386/Makefile user/attilio/vmcontention/release/doc/ru_RU.KOI8-R/hardware/ia64/Makefile user/attilio/vmcontention/release/doc/ru_RU.KOI8-R/hardware/pc98/Makefile user/attilio/vmcontention/release/doc/ru_RU.KOI8-R/hardware/sparc64/Makefile user/attilio/vmcontention/release/doc/ru_RU.KOI8-R/share/xml/catalog user/attilio/vmcontention/release/doc/ru_RU.KOI8-R/share/xml/catalog.xml user/attilio/vmcontention/release/doc/zh_CN.GB2312/hardware/Makefile user/attilio/vmcontention/share/misc/bsd-family-tree user/attilio/vmcontention/sys/amd64/amd64/db_trace.c user/attilio/vmcontention/sys/amd64/amd64/machdep.c user/attilio/vmcontention/sys/amd64/amd64/mp_machdep.c user/attilio/vmcontention/sys/amd64/amd64/pmap.c user/attilio/vmcontention/sys/amd64/include/md_var.h user/attilio/vmcontention/sys/amd64/include/metadata.h user/attilio/vmcontention/sys/amd64/include/pcpu.h user/attilio/vmcontention/sys/arm/arm/pmap-v6.c user/attilio/vmcontention/sys/arm/arm/pmap.c user/attilio/vmcontention/sys/arm/arm/stack_machdep.c user/attilio/vmcontention/sys/arm/ti/ti_mmchs.c user/attilio/vmcontention/sys/cam/ata/ata_da.c user/attilio/vmcontention/sys/cam/cam_xpt.c user/attilio/vmcontention/sys/cam/cam_xpt_periph.h user/attilio/vmcontention/sys/cam/scsi/scsi_cd.c user/attilio/vmcontention/sys/cam/scsi/scsi_ch.c user/attilio/vmcontention/sys/cam/scsi/scsi_da.c user/attilio/vmcontention/sys/cam/scsi/scsi_sa.c user/attilio/vmcontention/sys/compat/freebsd32/freebsd32_misc.c user/attilio/vmcontention/sys/compat/freebsd32/freebsd32_proto.h user/attilio/vmcontention/sys/compat/freebsd32/freebsd32_syscall.h user/attilio/vmcontention/sys/compat/freebsd32/freebsd32_syscalls.c user/attilio/vmcontention/sys/compat/freebsd32/freebsd32_sysent.c user/attilio/vmcontention/sys/compat/freebsd32/freebsd32_systrace_args.c user/attilio/vmcontention/sys/compat/freebsd32/syscalls.master user/attilio/vmcontention/sys/conf/Makefile.amd64 user/attilio/vmcontention/sys/conf/Makefile.i386 user/attilio/vmcontention/sys/conf/files user/attilio/vmcontention/sys/conf/files.amd64 user/attilio/vmcontention/sys/conf/files.arm user/attilio/vmcontention/sys/conf/files.i386 user/attilio/vmcontention/sys/conf/files.mips user/attilio/vmcontention/sys/conf/files.powerpc user/attilio/vmcontention/sys/conf/kern.mk user/attilio/vmcontention/sys/contrib/dev/acpica/acpica_prep.sh user/attilio/vmcontention/sys/contrib/dev/acpica/changes.txt (contents, props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/common/adisasm.c user/attilio/vmcontention/sys/contrib/dev/acpica/common/adwalk.c user/attilio/vmcontention/sys/contrib/dev/acpica/common/dmextern.c user/attilio/vmcontention/sys/contrib/dev/acpica/common/dmrestag.c user/attilio/vmcontention/sys/contrib/dev/acpica/common/dmtable.c user/attilio/vmcontention/sys/contrib/dev/acpica/common/dmtbdump.c user/attilio/vmcontention/sys/contrib/dev/acpica/common/getopt.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslanalyze.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslbtypes.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslcodegen.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslcompile.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslcompiler.h user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslerror.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslfold.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslglobal.h user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslhex.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/asllength.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/asllisting.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/asllistsup.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslload.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/asllookup.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslmain.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslmessages.h user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslmethod.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslnamesp.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/asloffset.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslopcodes.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/asloperands.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslpredef.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslresource.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslrestype1i.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslrestype2s.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslstartup.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslsupport.l user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/asltransform.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/asltree.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/asltypes.h user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslutils.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslwalks.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/aslxref.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/dtexpress.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/dtfield.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/dtio.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/dtsubtable.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/dttable.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/dtutils.c user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/prscan.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/debugger/dbcmds.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/debugger/dbconvert.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/debugger/dbdisply.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/debugger/dbexec.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/debugger/dbhistry.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/debugger/dbinput.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/debugger/dbmethod.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/debugger/dbnames.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/debugger/dbstats.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/debugger/dbutils.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/debugger/dbxface.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/disassembler/dmbuffer.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/disassembler/dmdeferred.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/disassembler/dmnames.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/disassembler/dmobject.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/disassembler/dmopcode.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/disassembler/dmresrc.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/disassembler/dmresrcl.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/disassembler/dmresrcl2.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/disassembler/dmwalk.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/dispatcher/dscontrol.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/dispatcher/dsfield.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/dispatcher/dsinit.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/dispatcher/dsmthdat.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/dispatcher/dsobject.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/dispatcher/dsopcode.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/dispatcher/dsutils.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/dispatcher/dswexec.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/dispatcher/dswload.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/dispatcher/dswload2.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/events/evglock.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/events/evgpe.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/events/evgpeblk.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/events/evgpeinit.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/events/evhandler.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/events/evmisc.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/events/evrgnini.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/events/evxfgpe.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/events/evxfregn.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/exconfig.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/exconvrt.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/excreate.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/exdebug.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/exdump.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/exfield.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/exfldio.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/exmisc.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/exnames.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/exoparg1.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/exoparg2.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/exoparg3.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/exoparg6.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/exprep.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/exregion.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/exresnte.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/exresolv.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/exresop.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/exstore.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/exstoren.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/hardware/hwacpi.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/hardware/hwgpe.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/hardware/hwregs.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/hardware/hwxface.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/namespace/nsaccess.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/namespace/nsconvert.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/namespace/nsdump.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/namespace/nsinit.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/namespace/nspredef.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/namespace/nsprepkg.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/namespace/nsrepair.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/namespace/nsrepair2.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/namespace/nsutils.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/namespace/nsxfeval.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/parser/psargs.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/parser/psloop.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/parser/psobject.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/parser/psparse.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/parser/pstree.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/resources/rscalc.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/resources/rscreate.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/resources/rsdump.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/resources/rsmisc.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/resources/rsutils.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/resources/rsxface.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/tables/tbinstal.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/tables/tbutils.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/tables/tbxfload.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/utcopy.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/utdebug.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/utdelete.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/uteval.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/utexcep.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/utids.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/utmisc.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/utobject.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/utstring.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/uttrack.c user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/utxferror.c user/attilio/vmcontention/sys/contrib/dev/acpica/include/acapps.h user/attilio/vmcontention/sys/contrib/dev/acpica/include/acglobal.h user/attilio/vmcontention/sys/contrib/dev/acpica/include/acpiosxf.h user/attilio/vmcontention/sys/contrib/dev/acpica/include/acpixf.h user/attilio/vmcontention/sys/contrib/dev/acpica/include/actypes.h user/attilio/vmcontention/sys/contrib/dev/acpica/include/acutils.h user/attilio/vmcontention/sys/contrib/dev/acpica/include/platform/acenv.h user/attilio/vmcontention/sys/contrib/dev/acpica/os_specific/service_layers/osunixxf.c user/attilio/vmcontention/sys/dev/acpica/Osd/OsdTable.c user/attilio/vmcontention/sys/dev/ahci/ahci.c user/attilio/vmcontention/sys/dev/ath/ath_hal/ah.c user/attilio/vmcontention/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c user/attilio/vmcontention/sys/dev/ath/if_ath.c user/attilio/vmcontention/sys/dev/ath/if_ath_beacon.c user/attilio/vmcontention/sys/dev/ath/if_ath_misc.h user/attilio/vmcontention/sys/dev/ath/if_ath_sysctl.c user/attilio/vmcontention/sys/dev/ath/if_ath_tdma.c user/attilio/vmcontention/sys/dev/ath/if_ath_tx.c user/attilio/vmcontention/sys/dev/ath/if_ath_tx.h user/attilio/vmcontention/sys/dev/ath/if_athvar.h user/attilio/vmcontention/sys/dev/sound/pci/hda/hdaa_patches.c user/attilio/vmcontention/sys/dev/uart/uart_bus_fdt.c user/attilio/vmcontention/sys/dev/usb/quirk/usb_quirk.c user/attilio/vmcontention/sys/dev/usb/usbdevs user/attilio/vmcontention/sys/fs/nullfs/null_vfsops.c user/attilio/vmcontention/sys/geom/geom_dump.c user/attilio/vmcontention/sys/geom/raid/md_ddf.c user/attilio/vmcontention/sys/i386/i386/machdep.c user/attilio/vmcontention/sys/i386/i386/pmap.c user/attilio/vmcontention/sys/i386/include/metadata.h user/attilio/vmcontention/sys/i386/xen/pmap.c user/attilio/vmcontention/sys/ia64/ia64/pmap.c user/attilio/vmcontention/sys/kern/init_sysent.c user/attilio/vmcontention/sys/kern/kern_jail.c user/attilio/vmcontention/sys/kern/kern_priv.c user/attilio/vmcontention/sys/kern/syscalls.c user/attilio/vmcontention/sys/kern/syscalls.master user/attilio/vmcontention/sys/kern/systrace_args.c user/attilio/vmcontention/sys/kern/vfs_bio.c user/attilio/vmcontention/sys/mips/mips/pmap.c user/attilio/vmcontention/sys/modules/acpi/acpi/Makefile user/attilio/vmcontention/sys/netinet/sctp_os_bsd.h user/attilio/vmcontention/sys/netinet6/in6.c user/attilio/vmcontention/sys/powerpc/aim/mmu_oea.c user/attilio/vmcontention/sys/powerpc/aim/mmu_oea64.c user/attilio/vmcontention/sys/powerpc/booke/pmap.c user/attilio/vmcontention/sys/powerpc/include/gdb_machdep.h user/attilio/vmcontention/sys/powerpc/wii/wii_gpio.c user/attilio/vmcontention/sys/powerpc/wii/wii_gpioreg.h user/attilio/vmcontention/sys/sparc64/sparc64/pmap.c user/attilio/vmcontention/sys/sys/_types.h user/attilio/vmcontention/sys/sys/cdefs.h user/attilio/vmcontention/sys/sys/mbuf.h user/attilio/vmcontention/sys/sys/param.h user/attilio/vmcontention/sys/sys/sdt.h user/attilio/vmcontention/sys/sys/syscall.h user/attilio/vmcontention/sys/sys/syscall.mk user/attilio/vmcontention/sys/sys/sysproto.h user/attilio/vmcontention/sys/vm/vm_map.c user/attilio/vmcontention/sys/vm/vm_object.h user/attilio/vmcontention/sys/vm/vm_page.c user/attilio/vmcontention/tools/regression/lib/libc/gen/Makefile user/attilio/vmcontention/tools/regression/lib/libc/locale/Makefile user/attilio/vmcontention/tools/tools/makeroot/makeroot.8 user/attilio/vmcontention/usr.bin/bmake/Makefile user/attilio/vmcontention/usr.bin/lex/Makefile user/attilio/vmcontention/usr.bin/lex/config.h user/attilio/vmcontention/usr.bin/lex/initscan.c user/attilio/vmcontention/usr.bin/lex/lex.1 user/attilio/vmcontention/usr.bin/lex/lib/Makefile user/attilio/vmcontention/usr.bin/split/split.c user/attilio/vmcontention/usr.sbin/acpi/acpidb/Makefile user/attilio/vmcontention/usr.sbin/acpi/iasl/Makefile user/attilio/vmcontention/usr.sbin/pkg_install/version/pkg_version.1 Directory Properties: user/attilio/vmcontention/ (props changed) user/attilio/vmcontention/cddl/ (props changed) user/attilio/vmcontention/cddl/contrib/opensolaris/ (props changed) user/attilio/vmcontention/contrib/bmake/ (props changed) user/attilio/vmcontention/crypto/heimdal/ (props changed) user/attilio/vmcontention/lib/libc/ (props changed) user/attilio/vmcontention/sys/ (props changed) user/attilio/vmcontention/sys/conf/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/common/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/debugger/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/disassembler/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/dispatcher/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/events/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/executer/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/hardware/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/namespace/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/parser/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/resources/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/tables/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/include/ (props changed) user/attilio/vmcontention/sys/contrib/dev/acpica/os_specific/ (props changed) Modified: user/attilio/vmcontention/MAINTAINERS ============================================================================== --- user/attilio/vmcontention/MAINTAINERS Tue May 21 20:54:03 2013 (r250885) +++ user/attilio/vmcontention/MAINTAINERS Tue May 21 20:56:27 2013 (r250886) @@ -28,6 +28,7 @@ MAC Framework rwatson Pre-commit review MAC Modules rwatson Pre-commit review requested. contrib/openbsm rwatson Pre-commit review requested. sys/security/audit rwatson Pre-commit review requested. +ath(4) adrian Pre-commit review requested, send to freebsd-wireless@freebsd.org ahc(4) gibbs Pre-commit review requested. ahd(4) gibbs Pre-commit review requested. PC Card imp Pre-commit review requested. @@ -63,6 +64,7 @@ procfs des Pre-commit review requested. linprocfs des Pre-commit review requested. lpr gad Pre-commit review requested, particularly for lpd/recvjob.c and lpd/printjob.c. +net80211 adrian Pre-commit review requested, send to freebsd-wireless@freebsd.org nvi peter Try not to break it. libz peter Try not to break it. groff ru Recommends pre-commit review. Modified: user/attilio/vmcontention/Makefile.inc1 ============================================================================== --- user/attilio/vmcontention/Makefile.inc1 Tue May 21 20:54:03 2013 (r250885) +++ user/attilio/vmcontention/Makefile.inc1 Tue May 21 20:56:27 2013 (r250886) @@ -366,10 +366,12 @@ LIB32WMAKEFLAGS= \ LIB32FLAGS= -m32 ${LIB32CPUFLAGS} -DCOMPAT_32BIT \ - --sysroot=${WORLDTMP} \ -isystem ${LIB32TMP}/usr/include/ \ -L${LIB32TMP}/usr/lib32 \ -B${LIB32TMP}/usr/lib32 +.if ${XCC:M/*} +LIB32FLAGS+= --sysroot=${WORLDTMP} +.endif # Yes, the flags are redundant. LIB32WMAKEENV+= MAKEOBJDIRPREFIX=${OBJTREE}/lib32 \ @@ -1032,8 +1034,10 @@ distributekernel distributekernel.debug: ${IMAKE_MTREE} PATH=${TMPPATH} ${MAKE} KERNEL=${INSTKERNNAME} \ DESTDIR=${INSTALL_DDIR:S://:/:g:C:/$::}/kernel \ ${.TARGET:S/distributekernel/install/} +.if defined(NO_ROOT) sed -e 's|^./kernel|.|' ${DESTDIR}/${DISTDIR}/kernel.premeta > \ ${DESTDIR}/${DISTDIR}/kernel.meta +.endif .for _kernel in ${BUILDKERNELS:S/${INSTALLKERNEL}//} .if defined(NO_ROOT) echo "#${MTREE_MAGIC}" > ${DESTDIR}/${DISTDIR}/kernel.${_kernel}.premeta @@ -1202,6 +1206,10 @@ _sed= usr.bin/sed _lex= usr.bin/lex .endif +.if ${BOOTSTRAPPING} < 1000002 +_m4= usr.bin/m4 +.endif + .if ${BOOTSTRAPPING} < 1000013 _yacc= lib/liby \ usr.bin/yacc @@ -1279,6 +1287,7 @@ bootstrap-tools: usr.bin/rpcgen \ ${_sed} \ ${_yacc} \ + ${_m4} \ ${_lex} \ lib/libmd \ usr.bin/xinstall \ Modified: user/attilio/vmcontention/ObsoleteFiles.inc ============================================================================== --- user/attilio/vmcontention/ObsoleteFiles.inc Tue May 21 20:54:03 2013 (r250885) +++ user/attilio/vmcontention/ObsoleteFiles.inc Tue May 21 20:56:27 2013 (r250886) @@ -38,6 +38,8 @@ # xargs -n1 | sort | uniq -d; # done +# 20130417: nfs fha moved from nfsserver to nfs +OLD_FILES+=usr/include/nfsserver/nfs_fha.h # 20130411: new clang import which bumps version from 3.2 to 3.3. OLD_FILES+=usr/include/clang/3.2/__wmmintrin_aes.h OLD_FILES+=usr/include/clang/3.2/__wmmintrin_pclmul.h Modified: user/attilio/vmcontention/UPDATING ============================================================================== --- user/attilio/vmcontention/UPDATING Tue May 21 20:54:03 2013 (r250885) +++ user/attilio/vmcontention/UPDATING Tue May 21 20:56:27 2013 (r250886) @@ -31,6 +31,18 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10 disable the most expensive debugging functionality run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20130516: + Use bmake by default. + Whereas before one could choose to build with bmake via + -DWITH_BMAKE one must now use -DWITHOUT_BMAKE to use the old + make. The goal is to remove these knobs for 10-RELEASE. + + It is worth noting that bmake (like gmake) treats the command + line as the unit of failure, rather than statements within the + command line. Thus '(cd some/where && dosomething)' is safer + than 'cd some/where; dosomething'. The '()' allows consistent + behavior in parallel build. + 20130429: Fix a bug that allows NFS clients to issue READDIR on files. Modified: user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cg.c ============================================================================== --- user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cg.c Tue May 21 20:54:03 2013 (r250885) +++ user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cg.c Tue May 21 20:56:27 2013 (r250886) @@ -19,12 +19,15 @@ * * CDDL HEADER END */ + /* * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" +/* + * Copyright (c) 2012 by Delphix. All rights reserved. + */ #include #include @@ -193,9 +196,6 @@ dt_cg_ptrsize(dt_node_t *dnp, dt_irlist_ ssize_t size; int sreg; - if ((sreg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - type = ctf_type_resolve(ctfp, dnp->dn_type); kind = ctf_type_kind(ctfp, type); assert(kind == CTF_K_POINTER || kind == CTF_K_ARRAY); @@ -212,6 +212,7 @@ dt_cg_ptrsize(dt_node_t *dnp, dt_irlist_ if ((size = ctf_type_size(ctfp, type)) == 1) return; /* multiply or divide by one can be omitted */ + sreg = dt_regset_alloc(drp); dt_cg_setx(dlp, sreg, size); instr = DIF_INSTR_FMT(op, dreg, sreg, dreg); dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr)); @@ -251,9 +252,7 @@ dt_cg_field_get(dt_node_t *dnp, dt_irlis assert(dnp->dn_op == DT_TOK_PTR || dnp->dn_op == DT_TOK_DOT); r1 = dnp->dn_left->dn_reg; - - if ((r2 = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + r2 = dt_regset_alloc(drp); /* * On little-endian architectures, ctm_offset counts from the right so @@ -356,10 +355,9 @@ dt_cg_field_set(dt_node_t *src, dt_irlis "bits %u\n", m.ctm_offset, m.ctm_type, e.cte_bits); } - if ((r1 = dt_regset_alloc(drp)) == -1 || - (r2 = dt_regset_alloc(drp)) == -1 || - (r3 = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + r1 = dt_regset_alloc(drp); + r2 = dt_regset_alloc(drp); + r3 = dt_regset_alloc(drp); /* * Compute shifts and masks. We need to compute "shift" as the amount @@ -423,8 +421,7 @@ dt_cg_store(dt_node_t *src, dt_irlist_t size = dt_node_type_size(src); if (src->dn_flags & DT_NF_REF) { - if ((reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + reg = dt_regset_alloc(drp); dt_cg_setx(dlp, reg, size); instr = DIF_INSTR_COPYS(src->dn_reg, reg, dst->dn_reg); dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr)); @@ -474,30 +471,58 @@ dt_cg_typecast(const dt_node_t *src, con size_t dstsize = dt_node_type_size(dst); dif_instr_t instr; - int reg, n; + int rg; - if (dt_node_is_scalar(dst) && (dstsize < srcsize || - (src->dn_flags & DT_NF_SIGNED) ^ (dst->dn_flags & DT_NF_SIGNED))) { - if ((reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + if (!dt_node_is_scalar(dst)) + return; /* not a scalar */ + if (dstsize == srcsize && + ((src->dn_flags ^ dst->dn_flags) & DT_NF_SIGNED) != 0) + return; /* not narrowing or changing signed-ness */ + if (dstsize > srcsize && (src->dn_flags & DT_NF_SIGNED) == 0) + return; /* nothing to do in this case */ - if (dstsize < srcsize) - n = sizeof (uint64_t) * NBBY - dstsize * NBBY; - else - n = sizeof (uint64_t) * NBBY - srcsize * NBBY; + rg = dt_regset_alloc(drp); + + if (dstsize > srcsize) { + int n = sizeof (uint64_t) * NBBY - srcsize * NBBY; + int s = (dstsize - srcsize) * NBBY; - dt_cg_setx(dlp, reg, n); + dt_cg_setx(dlp, rg, n); - instr = DIF_INSTR_FMT(DIF_OP_SLL, - src->dn_reg, reg, dst->dn_reg); + instr = DIF_INSTR_FMT(DIF_OP_SLL, src->dn_reg, rg, dst->dn_reg); dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr)); - instr = DIF_INSTR_FMT((dst->dn_flags & DT_NF_SIGNED) ? - DIF_OP_SRA : DIF_OP_SRL, dst->dn_reg, reg, dst->dn_reg); + if ((dst->dn_flags & DT_NF_SIGNED) || n == s) { + instr = DIF_INSTR_FMT(DIF_OP_SRA, + dst->dn_reg, rg, dst->dn_reg); + dt_irlist_append(dlp, + dt_cg_node_alloc(DT_LBL_NONE, instr)); + } else { + dt_cg_setx(dlp, rg, s); + instr = DIF_INSTR_FMT(DIF_OP_SRA, + dst->dn_reg, rg, dst->dn_reg); + dt_irlist_append(dlp, + dt_cg_node_alloc(DT_LBL_NONE, instr)); + dt_cg_setx(dlp, rg, n - s); + instr = DIF_INSTR_FMT(DIF_OP_SRL, + dst->dn_reg, rg, dst->dn_reg); + dt_irlist_append(dlp, + dt_cg_node_alloc(DT_LBL_NONE, instr)); + } + } else if (dstsize != sizeof (uint64_t)) { + int n = sizeof (uint64_t) * NBBY - dstsize * NBBY; + + dt_cg_setx(dlp, rg, n); + instr = DIF_INSTR_FMT(DIF_OP_SLL, src->dn_reg, rg, dst->dn_reg); + dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr)); + + instr = DIF_INSTR_FMT((dst->dn_flags & DT_NF_SIGNED) ? + DIF_OP_SRA : DIF_OP_SRL, dst->dn_reg, rg, dst->dn_reg); dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr)); - dt_regset_free(drp, reg); } + + dt_regset_free(drp, rg); } /* @@ -523,8 +548,7 @@ dt_cg_arglist(dt_ident_t *idp, dt_node_t for (dnp = args; dnp != NULL; dnp = dnp->dn_list) dt_cg_node(dnp, dlp, drp); - dt_irlist_append(dlp, - dt_cg_node_alloc(DT_LBL_NONE, DIF_INSTR_FLUSHTS)); + dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, DIF_INSTR_FLUSHTS)); for (dnp = args; dnp != NULL; dnp = dnp->dn_list, i++) { dtrace_diftype_t t; @@ -538,17 +562,18 @@ dt_cg_arglist(dt_ident_t *idp, dt_node_t dt_cg_typecast(dnp, &isp->dis_args[i], dlp, drp); isp->dis_args[i].dn_reg = -1; - if (t.dtdt_flags & DIF_TF_BYREF) + if (t.dtdt_flags & DIF_TF_BYREF) { op = DIF_OP_PUSHTR; - else + if (t.dtdt_size != 0) { + reg = dt_regset_alloc(drp); + dt_cg_setx(dlp, reg, t.dtdt_size); + } else { + reg = DIF_REG_R0; + } + } else { op = DIF_OP_PUSHTV; - - if (t.dtdt_size != 0) { - if ((reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - dt_cg_setx(dlp, reg, t.dtdt_size); - } else reg = DIF_REG_R0; + } instr = DIF_INSTR_PUSHTS(op, t.dtdt_kind, reg, dnp->dn_reg); dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr)); @@ -629,9 +654,7 @@ dt_cg_prearith_op(dt_node_t *dnp, dt_irl dt_cg_node(dnp->dn_child, dlp, drp); dnp->dn_reg = dnp->dn_child->dn_reg; - if ((reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - + reg = dt_regset_alloc(drp); dt_cg_setx(dlp, reg, size); instr = DIF_INSTR_FMT(op, dnp->dn_reg, reg, dnp->dn_reg); @@ -688,9 +711,7 @@ dt_cg_postarith_op(dt_node_t *dnp, dt_ir dt_cg_node(dnp->dn_child, dlp, drp); dnp->dn_reg = dnp->dn_child->dn_reg; - if ((nreg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - + nreg = dt_regset_alloc(drp); dt_cg_setx(dlp, nreg, size); instr = DIF_INSTR_FMT(op, dnp->dn_reg, nreg, nreg); dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr)); @@ -1008,9 +1029,7 @@ dt_cg_asgn_op(dt_node_t *dnp, dt_irlist_ * set it to the size of our data structure, and then replace * it with the result of an allocs of the specified size. */ - if ((r1 = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - + r1 = dt_regset_alloc(drp); dt_cg_setx(dlp, r1, ctf_type_size(dxp->dx_dst_ctfp, dxp->dx_dst_base)); @@ -1054,8 +1073,7 @@ dt_cg_asgn_op(dt_node_t *dnp, dt_irlist_ * and add r1 to it before storing the result. */ if (ctm.ctm_offset != 0) { - if ((r2 = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + r2 = dt_regset_alloc(drp); /* * Add the member offset rounded down to the @@ -1142,8 +1160,7 @@ dt_cg_assoc_op(dt_node_t *dnp, dt_irlist dt_cg_arglist(dnp->dn_ident, dnp->dn_args, dlp, drp); - if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + dnp->dn_reg = dt_regset_alloc(drp); if (dnp->dn_ident->di_flags & DT_IDFLG_TLS) op = DIF_OP_LDTAA; @@ -1273,9 +1290,7 @@ dt_cg_array_op(dt_node_t *dnp, dt_irlist if ((size = dt_node_type_size(dnp)) == sizeof (uint64_t)) return; - if ((reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - + reg = dt_regset_alloc(drp); assert(size < sizeof (uint64_t)); n = sizeof (uint64_t) * NBBY - size * NBBY; @@ -1384,7 +1399,6 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * dt_ident_t *idp; ssize_t stroff; uint_t op; - int reg; switch (dnp->dn_op) { case DT_TOK_COMMA: @@ -1622,10 +1636,7 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * case DT_TOK_SIZEOF: { size_t size = dt_node_sizeof(dnp->dn_child); - - if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - + dnp->dn_reg = dt_regset_alloc(drp); assert(size != 0); dt_cg_setx(dlp, dnp->dn_reg, size); break; @@ -1650,8 +1661,7 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * assert(dxp->dx_ident->di_flags & DT_IDFLG_CGREG); assert(dxp->dx_ident->di_id != 0); - if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + dnp->dn_reg = dt_regset_alloc(drp); if (dxp->dx_arg == -1) { instr = DIF_INSTR_MOV( @@ -1735,8 +1745,9 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * } if (m.ctm_offset != 0) { - if ((reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + int reg; + + reg = dt_regset_alloc(drp); /* * If the offset is not aligned on a byte boundary, it @@ -1782,8 +1793,7 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * break; case DT_TOK_STRING: - if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + dnp->dn_reg = dt_regset_alloc(drp); assert(dnp->dn_kind == DT_NODE_STRING); stroff = dt_strtab_insert(yypcb->pcb_strtab, dnp->dn_string); @@ -1806,8 +1816,7 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * */ if (dnp->dn_kind == DT_NODE_VAR && (dnp->dn_ident->di_flags & DT_IDFLG_CGREG)) { - if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + dnp->dn_reg = dt_regset_alloc(drp); instr = DIF_INSTR_MOV(dnp->dn_ident->di_id, dnp->dn_reg); dt_irlist_append(dlp, @@ -1848,11 +1857,9 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * dt_cg_arglist(dnp->dn_ident, dnp->dn_args, dlp, drp); - if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - - instr = DIF_INSTR_CALL( - dnp->dn_ident->di_id, dnp->dn_reg); + dnp->dn_reg = dt_regset_alloc(drp); + instr = DIF_INSTR_CALL(dnp->dn_ident->di_id, + dnp->dn_reg); dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr)); @@ -1880,8 +1887,7 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * break; } - if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + dnp->dn_reg = dt_regset_alloc(drp); if (dnp->dn_ident->di_flags & DT_IDFLG_LOCAL) op = DIF_OP_LDLS; @@ -1911,9 +1917,7 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * dtrace_errmsg(dtp, dtrace_errno(dtp))); } - if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - + dnp->dn_reg = dt_regset_alloc(drp); dt_cg_xsetx(dlp, dnp->dn_ident, DT_LBL_NONE, dnp->dn_reg, sym.st_value); @@ -1933,9 +1937,7 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * break; case DT_TOK_INT: - if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - + dnp->dn_reg = dt_regset_alloc(drp); dt_cg_setx(dlp, dnp->dn_reg, dnp->dn_value); break; @@ -1950,6 +1952,7 @@ dt_cg(dt_pcb_t *pcb, dt_node_t *dnp) { dif_instr_t instr; dt_xlator_t *dxp; + dt_ident_t *idp; if (pcb->pcb_regs == NULL && (pcb->pcb_regs = dt_regset_create(pcb->pcb_hdl->dt_conf.dtc_difintregs)) == NULL) @@ -1976,9 +1979,9 @@ dt_cg(dt_pcb_t *pcb, dt_node_t *dnp) assert(pcb->pcb_dret == NULL); pcb->pcb_dret = dnp; - if (dt_node_is_dynamic(dnp)) { + if (dt_node_resolve(dnp, DT_IDENT_XLPTR) != NULL) { dnerror(dnp, D_CG_DYN, "expression cannot evaluate to result " - "of dynamic type\n"); + "of a translated pointer\n"); } /* @@ -1994,6 +1997,7 @@ dt_cg(dt_pcb_t *pcb, dt_node_t *dnp) } dt_cg_node(dnp, &pcb->pcb_ir, pcb->pcb_regs); + instr = DIF_INSTR_RET(dnp->dn_reg); dt_regset_free(pcb->pcb_regs, dnp->dn_reg); dt_irlist_append(&pcb->pcb_ir, dt_cg_node_alloc(DT_LBL_NONE, instr)); @@ -2003,4 +2007,7 @@ dt_cg(dt_pcb_t *pcb, dt_node_t *dnp) dxp->dx_ident->di_id = 0; dxp->dx_ident->di_flags &= ~DT_IDFLG_CGREG; } + + dt_regset_free(pcb->pcb_regs, 0); + dt_regset_assert_free(pcb->pcb_regs); } Modified: user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libdtrace/common/dt_dis.c ============================================================================== --- user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libdtrace/common/dt_dis.c Tue May 21 20:54:03 2013 (r250885) +++ user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libdtrace/common/dt_dis.c Tue May 21 20:56:27 2013 (r250886) @@ -19,12 +19,15 @@ * * CDDL HEADER END */ + /* * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" +/* + * Copyright (c) 2012 by Delphix. All rights reserved. + */ #include #include @@ -212,12 +215,22 @@ dt_dis_pushts(const dtrace_difo_t *dp, { static const char *const tnames[] = { "D type", "string" }; uint_t type = DIF_INSTR_TYPE(in); + const char *pad; - (void) fprintf(fp, "%-4s DT_TYPE(%u), %%r%u, %%r%u", - name, type, DIF_INSTR_R2(in), DIF_INSTR_RS(in)); + if (DIF_INSTR_OP(in) == DIF_OP_PUSHTV) { + (void) fprintf(fp, "%-4s DT_TYPE(%u), %%r%u", + name, type, DIF_INSTR_RS(in)); + pad = "\t\t"; + } else { + (void) fprintf(fp, "%-4s DT_TYPE(%u), %%r%u, %%r%u", + name, type, DIF_INSTR_R2(in), DIF_INSTR_RS(in)); + pad = "\t"; + } - if (type < sizeof (tnames) / sizeof (tnames[0])) - (void) fprintf(fp, "\t! DT_TYPE(%u) = %s", type, tnames[type]); + if (type < sizeof (tnames) / sizeof (tnames[0])) { + (void) fprintf(fp, "%s! DT_TYPE(%u) = %s", pad, + type, tnames[type]); + } } static void Modified: user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libdtrace/common/dt_error.c ============================================================================== --- user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libdtrace/common/dt_error.c Tue May 21 20:54:03 2013 (r250885) +++ user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libdtrace/common/dt_error.c Tue May 21 20:56:27 2013 (r250886) @@ -23,6 +23,10 @@ * Use is subject to license terms. */ +/* + * Copyright (c) 2012 by Delphix. All rights reserved. + */ + #include #include #include @@ -37,7 +41,6 @@ static const struct { { EDT_VERSREDUCED, "Requested version conflicts with earlier setting" }, { EDT_CTF, "Unexpected libctf error" }, { EDT_COMPILER, "Error in D program compilation" }, - { EDT_NOREG, "Insufficient registers to generate code" }, { EDT_NOTUPREG, "Insufficient tuple registers to generate code" }, { EDT_NOMEM, "Memory allocation failure" }, { EDT_INT2BIG, "Integer constant table limit exceeded" }, Modified: user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libdtrace/common/dt_errtags.h ============================================================================== --- user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libdtrace/common/dt_errtags.h Tue May 21 20:54:03 2013 (r250885) +++ user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libdtrace/common/dt_errtags.h Tue May 21 20:56:27 2013 (r250886) @@ -26,7 +26,7 @@ /* * Copyright (c) 2011, Joyent, Inc. All rights reserved. - * Copyright (c) 2011 by Delphix. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. */ #ifndef _DT_ERRTAGS_H @@ -260,6 +260,7 @@ typedef enum { D_LLQUANT_FACTOREVEN, /* llquantize() bad # steps/factor */ D_LLQUANT_FACTORSMALL, /* llquantize() magnitude too small */ D_LLQUANT_MAGTOOBIG, /* llquantize() high mag too large */ + D_NOREG, /* no available internal registers */ D_PRINTM_ADDR, /* printm() memref bad type */ D_PRINTM_SIZE, /* printm() size bad type */ D_PRINTT_ADDR, /* printt() typeref bad type */ Modified: user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libdtrace/common/dt_regset.c ============================================================================== --- user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libdtrace/common/dt_regset.c Tue May 21 20:54:03 2013 (r250885) +++ user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libdtrace/common/dt_regset.c Tue May 21 20:56:27 2013 (r250886) @@ -19,12 +19,15 @@ * * CDDL HEADER END */ + /* * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" +/* + * Copyright (c) 2012 by Delphix. All rights reserved. + */ #include #include @@ -33,18 +36,19 @@ #include #include +#include dt_regset_t * -dt_regset_create(ulong_t size) +dt_regset_create(ulong_t nregs) { - ulong_t n = BT_BITOUL(size + 1); /* + 1 for %r0 */ + ulong_t n = BT_BITOUL(nregs); dt_regset_t *drp = malloc(sizeof (dt_regset_t)); if (drp == NULL) return (NULL); drp->dr_bitmap = malloc(sizeof (ulong_t) * n); - drp->dr_size = size + 1; + drp->dr_size = nregs; if (drp->dr_bitmap == NULL) { dt_regset_destroy(drp); @@ -68,6 +72,25 @@ dt_regset_reset(dt_regset_t *drp) bzero(drp->dr_bitmap, sizeof (ulong_t) * BT_BITOUL(drp->dr_size)); } +void +dt_regset_assert_free(dt_regset_t *drp) +{ + int reg; + boolean_t fail = B_FALSE; + for (reg = 0; reg < drp->dr_size; reg++) { + if (BT_TEST(drp->dr_bitmap, reg) != 0) { + dt_dprintf("%%r%d was left allocated\n", reg); + fail = B_TRUE; + } + } + + /* + * We set this during dtest runs to check for register leaks. + */ + if (fail && getenv("DTRACE_DEBUG_REGSET") != NULL) + abort(); +} + int dt_regset_alloc(dt_regset_t *drp) { @@ -95,13 +118,15 @@ dt_regset_alloc(dt_regset_t *drp) } } - return (-1); /* no available registers */ + xyerror(D_NOREG, "Insufficient registers to generate code"); + /*NOTREACHED*/ + return (-1); } void dt_regset_free(dt_regset_t *drp, int reg) { - assert(reg > 0 && reg < drp->dr_size); + assert(reg >= 0 && reg < drp->dr_size); assert(BT_TEST(drp->dr_bitmap, reg) != 0); BT_CLEAR(drp->dr_bitmap, reg); } Modified: user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libdtrace/common/dt_regset.h ============================================================================== --- user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libdtrace/common/dt_regset.h Tue May 21 20:54:03 2013 (r250885) +++ user/attilio/vmcontention/cddl/contrib/opensolaris/lib/libdtrace/common/dt_regset.h Tue May 21 20:56:27 2013 (r250886) @@ -19,16 +19,19 @@ * * CDDL HEADER END */ + /* * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ +/* + * Copyright (c) 2012 by Delphix. All rights reserved. + */ + #ifndef _DT_REGSET_H #define _DT_REGSET_H -#pragma ident "%Z%%M% %I% %E% SMI" - #include #ifdef __cplusplus @@ -45,6 +48,7 @@ extern void dt_regset_destroy(dt_regset_ extern void dt_regset_reset(dt_regset_t *); extern int dt_regset_alloc(dt_regset_t *); extern void dt_regset_free(dt_regset_t *, int); +extern void dt_regset_assert_free(dt_regset_t *); #ifdef __cplusplus } Modified: user/attilio/vmcontention/contrib/bmake/ChangeLog ============================================================================== --- user/attilio/vmcontention/contrib/bmake/ChangeLog Tue May 21 20:54:03 2013 (r250885) +++ user/attilio/vmcontention/contrib/bmake/ChangeLog Tue May 21 20:56:27 2013 (r250886) @@ -1,3 +1,17 @@ +2013-05-20 Simon J. Gerraty + + * Makefile (MAKE_VERSION): 20130520 + generate manifest from component FILES rather than have to + update FILES when mk/FILES changes. + +2013-05-18 Simon J. Gerraty + + * Makefile (MAKE_VERSION): 20130518 + Merge with NetBSD make, pick up + o suff.c: don't skip all processsing for .PHONY targets + else wildcard srcs do not get expanded. + o var.c: expand name of variable to delete if necessary. + 2013-03-30 Simon J. Gerraty * Makefile (MAKE_VERSION): 20130330 Modified: user/attilio/vmcontention/contrib/bmake/FILES ============================================================================== --- user/attilio/vmcontention/contrib/bmake/FILES Tue May 21 20:54:03 2013 (r250885) +++ user/attilio/vmcontention/contrib/bmake/FILES Tue May 21 20:56:27 2013 (r250886) @@ -1,29 +1,26 @@ -FILES ChangeLog -bmake.cat1 -boot-strap -bsd.after-import.mk -os.sh -makefile.in +FILES Makefile Makefile.config.in PSD.doc/Makefile PSD.doc/tutorial.ms README +aclocal.m4 arch.c +bmake.1 +bmake.cat1 +boot-strap +bsd.after-import.mk buf.c buf.h compat.c cond.c -make-conf.h -make_malloc.c -make_malloc.h config.h.in configure -aclocal.m4 configure.in dir.c dir.h +dirname.c find_lib.sh for.c getopt.c @@ -32,16 +29,6 @@ hash.h install-sh job.c job.h -meta.c -meta.h -dirname.c -realpath.c -strlcpy.c -strlist.c -strlist.h -stresep.c -trace.c -trace.h lst.h lst.lib/Makefile lst.lib/lstAppend.c @@ -74,26 +61,36 @@ lst.lib/lstReplace.c lst.lib/lstSucc.c machine.sh main.c +make-bootstrap.sh.in +make-conf.h make.1 -bmake.1 make.c make.h -make-bootstrap.sh.in +make_malloc.c +make_malloc.h +makefile.in +meta.c +meta.h missing/sys/cdefs.h mkdeps.sh nonints.h +os.sh parse.c pathnames.h ranlib.h +realpath.c setenv.c sigcompat.c sprite.h str.c +stresep.c +strlcpy.c +strlist.c +strlist.h suff.c targ.c -util.c -var.c -wait.h +trace.c +trace.h unit-tests/Makefile.in unit-tests/comment unit-tests/cond1 @@ -123,63 +120,6 @@ unit-tests/test.exp unit-tests/unexport unit-tests/unexport-env unit-tests/varcmd -mk/ChangeLog -mk/FILES -mk/README -mk/auto.obj.mk -mk/autoconf.mk -mk/autodep.mk -mk/auto.dep.mk -mk/dep.mk -mk/doc.mk -mk/dpadd.mk -mk/final.mk -mk/host-target.mk -mk/host.libnames.mk -mk/inc.mk -mk/init.mk -mk/install-mk -mk/java.mk -mk/lib.mk -mk/libnames.mk -mk/libs.mk -mk/links.mk -mk/man.mk -mk/mk-files.txt -mk/nls.mk -mk/obj.mk -mk/options.mk -mk/own.mk -mk/prlist.mk -mk/prog.mk -mk/progs.mk -mk/rst2htm.mk -mk/scripts.mk -mk/srctop.mk -mk/subdir.mk -mk/sys.mk -mk/sys.clean-env.mk -mk/sys.dependfile.mk -mk/sys/AIX.mk -mk/sys/Darwin.mk -mk/sys/Generic.mk -mk/sys/HP-UX.mk -mk/sys/IRIX.mk -mk/sys/Linux.mk -mk/sys/NetBSD.mk -mk/sys/OSF1.mk -mk/sys/OpenBSD.mk -mk/sys/SunOS.mk -mk/sys/UnixWare.mk -mk/target-flags.mk -mk/warnings.mk -mk/yacc.mk -mk/dirdeps.mk -mk/gendirdeps.mk -mk/install-new.mk -mk/meta2deps.py -mk/meta2deps.sh -mk/meta.sys.mk -mk/meta.autodep.mk -mk/meta.stage.mk -mk/meta.subdir.mk +util.c +var.c +wait.h Modified: user/attilio/vmcontention/contrib/bmake/Makefile ============================================================================== --- user/attilio/vmcontention/contrib/bmake/Makefile Tue May 21 20:54:03 2013 (r250885) +++ user/attilio/vmcontention/contrib/bmake/Makefile Tue May 21 20:56:27 2013 (r250886) @@ -1,7 +1,7 @@ -# $Id: Makefile,v 1.10 2013/03/31 05:57:19 sjg Exp $ +# $Id: Makefile,v 1.12 2013/05/20 16:05:10 sjg Exp $ # Base version on src date -MAKE_VERSION= 20130330 +MAKE_VERSION= 20130520 PROG= bmake Modified: user/attilio/vmcontention/contrib/bmake/meta.c ============================================================================== --- user/attilio/vmcontention/contrib/bmake/meta.c Tue May 21 20:54:03 2013 (r250885) +++ user/attilio/vmcontention/contrib/bmake/meta.c Tue May 21 20:56:27 2013 (r250886) @@ -1,4 +1,4 @@ -/* $NetBSD: meta.c,v 1.29 2013/03/31 05:49:51 sjg Exp $ */ +/* $NetBSD: meta.c,v 1.30 2013/05/16 21:56:56 sjg Exp $ */ /* * Implement 'meta' mode. @@ -543,7 +543,7 @@ boolValue(char *s) * Initialization we need before reading makefiles. */ void -meta_init() +meta_init(void) { #ifdef USE_FILEMON /* this allows makefiles to test if we have filemon support */ Modified: user/attilio/vmcontention/contrib/bmake/mk/ChangeLog ============================================================================== --- user/attilio/vmcontention/contrib/bmake/mk/ChangeLog Tue May 21 20:54:03 2013 (r250885) +++ user/attilio/vmcontention/contrib/bmake/mk/ChangeLog Tue May 21 20:56:27 2013 (r250886) @@ -1,3 +1,23 @@ +2013-05-10 Simon J. Gerraty + + * install-mk (MK_VERSION): 20130505 + * gendirdeps.mk, meta2deps.py, meta2deps.sh: handle $TARGET_SPEC + for when $MACHINE isn't enough for objdir distinction. + Bring meta2deps.sh closer to par with meta2deps.py. + +2013-04-18 Simon J. Gerraty + + * meta.stage.mk: set INSTALL to STAGE_INSTALL when making 'all' + also if the target 'beforeinstall' exists, make it depend on + .dirdep (incase it uses STAGE_INSTALL). + +2013-04-17 Simon J. Gerraty + + * install-mk (MK_VERSION): 20130401 ;-) + * meta.stage.mk (STAGE_INSTALL_SH): add stage-install.sh as + wrapper around install(1). + * options.mk (OPTION_PREFIX): Allow a prefix other than MK_ + 2013-03-30 Simon J. Gerraty * meta2deps.py (MetaFile.__init__): ensure self.cwd is initialized. Modified: user/attilio/vmcontention/contrib/bmake/mk/FILES ============================================================================== --- user/attilio/vmcontention/contrib/bmake/mk/FILES Tue May 21 20:54:03 2013 (r250885) +++ user/attilio/vmcontention/contrib/bmake/mk/FILES Tue May 21 20:56:27 2013 (r250886) @@ -31,6 +31,7 @@ progs.mk rst2htm.mk scripts.mk srctop.mk +stage-install.sh subdir.mk sys.mk sys.clean-env.mk Modified: user/attilio/vmcontention/contrib/bmake/mk/gendirdeps.mk ============================================================================== --- user/attilio/vmcontention/contrib/bmake/mk/gendirdeps.mk Tue May 21 20:54:03 2013 (r250885) +++ user/attilio/vmcontention/contrib/bmake/mk/gendirdeps.mk Tue May 21 20:56:27 2013 (r250886) @@ -1,4 +1,4 @@ -# $Id: gendirdeps.mk,v 1.21 2013/03/28 20:01:05 sjg Exp $ +# $Id: gendirdeps.mk,v 1.22 2013/05/11 05:16:26 sjg Exp $ # Copyright (c) 2010-2013, Juniper Networks, Inc. # All rights reserved. @@ -111,13 +111,24 @@ _py_d = .if ${META2DEPS:E} == "py" # we can afford to do this all the time. DPDEPS ?= no -META2DEPS_CMD = ${_time} ${PYTHON} ${META2DEPS} ${_py_d} \ - -R ${RELDIR} -H ${HOST_TARGET} \ - ${M2D_OBJROOTS:O:u:@o@-O $o@} - +META2DEPS_CMD = ${_time} ${PYTHON} ${META2DEPS} ${_py_d} .if ${DPDEPS:tl} != "no" META2DEPS_CMD += -D ${DPDEPS} .endif +META2DEPS_FILTER = sed 's,^src:,${SRCTOP}/,;s,^\([^/]\),${OBJTOP}/\1,' | +.elif ${META2DEPS:E} == "sh" +META2DEPS_CMD = ${_time} ${_sh_x} ${META2DEPS} OBJTOP=${_OBJTOP} +.else +META2DEPS_CMD ?= ${META2DEPS} +.endif + +.if ${TARGET_OBJ_SPEC:U${MACHINE}} != ${MACHINE} +META2DEPS_CMD += -T ${TARGET_OBJ_SPEC} +.endif +META2DEPS_CMD += \ + -R ${RELDIR} -H ${HOST_TARGET} \ + ${M2D_OBJROOTS:O:u:@o@-O $o@} + M2D_OBJROOTS += ${OBJTOP} ${_OBJROOT} ${_objroot} .if defined(SB_OBJROOT) @@ -133,13 +144,6 @@ META2DEPS_ARGS += MACHINE=none META2DEPS_CMD += -S ${SB_BACKING_SB}/src M2D_OBJROOTS += ${SB_BACKING_SB}/${SB_OBJPREFIX} .endif -META2DEPS_FILTER = sed 's,^src:,${SRCTOP}/,;s,^\([^/]\),${OBJTOP}/\1,' | -.elif ${META2DEPS:E} == "sh" -META2DEPS_CMD = ${_time} ${_sh_x} ${META2DEPS} \ - OBJTOP=${_objtop} SB_OBJROOT=${_objroot} -.else -META2DEPS_CMD ?= ${META2DEPS} -.endif # we are only interested in the dirs # sepecifically those we read something from. Modified: user/attilio/vmcontention/contrib/bmake/mk/install-mk ============================================================================== --- user/attilio/vmcontention/contrib/bmake/mk/install-mk Tue May 21 20:54:03 2013 (r250885) +++ user/attilio/vmcontention/contrib/bmake/mk/install-mk Tue May 21 20:56:27 2013 (r250886) @@ -55,7 +55,7 @@ # Simon J. Gerraty # RCSid: -# $Id: install-mk,v 1.88 2013/03/31 22:31:59 sjg Exp $ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Wed May 22 00:55:01 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 6B6B7863; Wed, 22 May 2013 00:55:01 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 59DDDBD7; Wed, 22 May 2013 00:55:01 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r4M0t15K040438; Wed, 22 May 2013 00:55:01 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r4M0swOT040344; Wed, 22 May 2013 00:54:58 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201305220054.r4M0swOT040344@svn.freebsd.org> From: Adrian Chadd Date: Wed, 22 May 2013 00:54:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250896 - in user/adrian/net80211_tx: . bin/df bin/kenv cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/cg cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip cddl/contrib/openso... X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 22 May 2013 00:55:01 -0000 Author: adrian Date: Wed May 22 00:54:57 2013 New Revision: 250896 URL: http://svnweb.freebsd.org/changeset/base/250896 Log: Merge from HEAD Added: user/adrian/net80211_tx/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/cg/ - copied from r250895, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/cg/ user/adrian/net80211_tx/contrib/bmake/mk/stage-install.sh - copied unchanged from r250895, head/contrib/bmake/mk/stage-install.sh user/adrian/net80211_tx/contrib/flex/ - copied from r250895, head/contrib/flex/ user/adrian/net80211_tx/include/uchar.h - copied unchanged from r250895, head/include/uchar.h user/adrian/net80211_tx/include/xlocale/_uchar.h - copied unchanged from r250895, head/include/xlocale/_uchar.h user/adrian/net80211_tx/lib/csu/Makefile - copied unchanged from r250895, head/lib/csu/Makefile user/adrian/net80211_tx/lib/libc/locale/c16rtomb.c - copied unchanged from r250895, head/lib/libc/locale/c16rtomb.c user/adrian/net80211_tx/lib/libc/locale/c32rtomb.c - copied unchanged from r250895, head/lib/libc/locale/c32rtomb.c user/adrian/net80211_tx/lib/libc/locale/mbrtoc16.c - copied unchanged from r250895, head/lib/libc/locale/mbrtoc16.c user/adrian/net80211_tx/lib/libc/locale/mbrtoc32.c - copied unchanged from r250895, head/lib/libc/locale/mbrtoc32.c user/adrian/net80211_tx/release/doc/ja_JP.eucJP/share/xml/catalog.xml - copied unchanged from r250895, head/release/doc/ja_JP.eucJP/share/xml/catalog.xml user/adrian/net80211_tx/release/doc/ja_JP.eucJP/share/xml/dev-auto-ja.ent - copied unchanged from r250895, head/release/doc/ja_JP.eucJP/share/xml/dev-auto-ja.ent user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/share/xml/catalog.xml - copied unchanged from r250895, head/release/doc/ru_RU.KOI8-R/share/xml/catalog.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/share/xml/dev-auto-ru.ent - copied unchanged from r250895, head/release/doc/ru_RU.KOI8-R/share/xml/dev-auto-ru.ent user/adrian/net80211_tx/release/doc/share/xml/catalog.xml - copied unchanged from r250895, head/release/doc/share/xml/catalog.xml user/adrian/net80211_tx/share/man/man4/qlxgbe.4 - copied unchanged from r250895, head/share/man/man4/qlxgbe.4 user/adrian/net80211_tx/sys/amd64/include/fdt.h - copied unchanged from r250895, head/sys/amd64/include/fdt.h user/adrian/net80211_tx/sys/amd64/include/ofw_machdep.h - copied unchanged from r250895, head/sys/amd64/include/ofw_machdep.h user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/asloptions.c - copied unchanged from r250895, head/sys/contrib/dev/acpica/compiler/asloptions.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/tables/tbprint.c - copied unchanged from r250895, head/sys/contrib/dev/acpica/components/tables/tbprint.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/utilities/utbuffer.c - copied unchanged from r250895, head/sys/contrib/dev/acpica/components/utilities/utbuffer.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/utilities/uterror.c - copied unchanged from r250895, head/sys/contrib/dev/acpica/components/utilities/uterror.c user/adrian/net80211_tx/sys/dev/fdt/fdt_x86.c - copied unchanged from r250895, head/sys/dev/fdt/fdt_x86.c user/adrian/net80211_tx/sys/dev/qlxgbe/ - copied from r250895, head/sys/dev/qlxgbe/ user/adrian/net80211_tx/sys/dev/uart/uart_cpu_fdt.c - copied unchanged from r250895, head/sys/dev/uart/uart_cpu_fdt.c user/adrian/net80211_tx/sys/i386/include/fdt.h - copied unchanged from r250895, head/sys/i386/include/fdt.h user/adrian/net80211_tx/sys/i386/include/ofw_machdep.h - copied unchanged from r250895, head/sys/i386/include/ofw_machdep.h user/adrian/net80211_tx/sys/modules/qlxgbe/ - copied from r250895, head/sys/modules/qlxgbe/ user/adrian/net80211_tx/sys/x86/include/fdt.h - copied unchanged from r250895, head/sys/x86/include/fdt.h user/adrian/net80211_tx/sys/x86/include/ofw_machdep.h - copied unchanged from r250895, head/sys/x86/include/ofw_machdep.h user/adrian/net80211_tx/sys/x86/x86/fdt_machdep.c - copied unchanged from r250895, head/sys/x86/x86/fdt_machdep.c user/adrian/net80211_tx/tools/build/options/WITHOUT_BMAKE - copied unchanged from r250895, head/tools/build/options/WITHOUT_BMAKE user/adrian/net80211_tx/tools/build/options/WITHOUT_CROSS_COMPILER - copied unchanged from r250895, head/tools/build/options/WITHOUT_CROSS_COMPILER user/adrian/net80211_tx/tools/build/options/WITHOUT_FORMAT_EXTENSIONS - copied unchanged from r250895, head/tools/build/options/WITHOUT_FORMAT_EXTENSIONS user/adrian/net80211_tx/tools/regression/lib/libc/gen/test-popen.c - copied unchanged from r250895, head/tools/regression/lib/libc/gen/test-popen.c user/adrian/net80211_tx/tools/regression/lib/libc/locale/test-c16rtomb.c - copied unchanged from r250895, head/tools/regression/lib/libc/locale/test-c16rtomb.c user/adrian/net80211_tx/tools/regression/lib/libc/locale/test-mbrtoc16.c - copied unchanged from r250895, head/tools/regression/lib/libc/locale/test-mbrtoc16.c user/adrian/net80211_tx/tools/tools/makeroot/ - copied from r250895, head/tools/tools/makeroot/ user/adrian/net80211_tx/usr.bin/lex/initparse.c - copied unchanged from r250895, head/usr.bin/lex/initparse.c user/adrian/net80211_tx/usr.bin/lex/initparse.h - copied unchanged from r250895, head/usr.bin/lex/initparse.h user/adrian/net80211_tx/usr.bin/lex/initskel.c - copied unchanged from r250895, head/usr.bin/lex/initskel.c user/adrian/net80211_tx/usr.bin/lex/version.awk - copied unchanged from r250895, head/usr.bin/lex/version.awk Deleted: user/adrian/net80211_tx/release/doc/ja_JP.eucJP/share/xml/dev-auto-ja.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/share/xml/dev-auto-ru.xml user/adrian/net80211_tx/tools/build/options/WITH_BMAKE user/adrian/net80211_tx/usr.bin/lex/COPYING user/adrian/net80211_tx/usr.bin/lex/FlexLexer.h user/adrian/net80211_tx/usr.bin/lex/NEWS user/adrian/net80211_tx/usr.bin/lex/README user/adrian/net80211_tx/usr.bin/lex/ccl.c user/adrian/net80211_tx/usr.bin/lex/dfa.c user/adrian/net80211_tx/usr.bin/lex/ecs.c user/adrian/net80211_tx/usr.bin/lex/flex.skl user/adrian/net80211_tx/usr.bin/lex/flexdef.h user/adrian/net80211_tx/usr.bin/lex/gen.c user/adrian/net80211_tx/usr.bin/lex/lib/libmain.c user/adrian/net80211_tx/usr.bin/lex/lib/libyywrap.c user/adrian/net80211_tx/usr.bin/lex/main.c user/adrian/net80211_tx/usr.bin/lex/misc.c user/adrian/net80211_tx/usr.bin/lex/mkskel.sh user/adrian/net80211_tx/usr.bin/lex/nfa.c user/adrian/net80211_tx/usr.bin/lex/parse.y user/adrian/net80211_tx/usr.bin/lex/scan.l user/adrian/net80211_tx/usr.bin/lex/sym.c user/adrian/net80211_tx/usr.bin/lex/tblcmp.c user/adrian/net80211_tx/usr.bin/lex/version.h user/adrian/net80211_tx/usr.bin/lex/yylex.c Modified: user/adrian/net80211_tx/MAINTAINERS (contents, props changed) user/adrian/net80211_tx/Makefile user/adrian/net80211_tx/Makefile.inc1 user/adrian/net80211_tx/ObsoleteFiles.inc user/adrian/net80211_tx/UPDATING user/adrian/net80211_tx/bin/df/df.1 user/adrian/net80211_tx/bin/kenv/kenv.c user/adrian/net80211_tx/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/get.ipv4remote.pl user/adrian/net80211_tx/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/get.ipv6remote.pl user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cg.c user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libdtrace/common/dt_dis.c user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libdtrace/common/dt_error.c user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libdtrace/common/dt_errtags.h user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libdtrace/common/dt_regset.c user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libdtrace/common/dt_regset.h user/adrian/net80211_tx/contrib/bmake/ChangeLog user/adrian/net80211_tx/contrib/bmake/FILES user/adrian/net80211_tx/contrib/bmake/Makefile user/adrian/net80211_tx/contrib/bmake/main.c user/adrian/net80211_tx/contrib/bmake/meta.c user/adrian/net80211_tx/contrib/bmake/mk/ChangeLog user/adrian/net80211_tx/contrib/bmake/mk/FILES user/adrian/net80211_tx/contrib/bmake/mk/gendirdeps.mk user/adrian/net80211_tx/contrib/bmake/mk/install-mk user/adrian/net80211_tx/contrib/bmake/mk/meta.stage.mk user/adrian/net80211_tx/contrib/bmake/mk/meta2deps.py user/adrian/net80211_tx/contrib/bmake/mk/meta2deps.sh user/adrian/net80211_tx/contrib/bmake/mk/options.mk user/adrian/net80211_tx/contrib/bmake/mk/progs.mk user/adrian/net80211_tx/contrib/bmake/suff.c user/adrian/net80211_tx/contrib/bmake/var.c user/adrian/net80211_tx/contrib/libpcap/pcap-filter.manmisc user/adrian/net80211_tx/contrib/libpcap/pcap-filter.manmisc.in user/adrian/net80211_tx/contrib/libpcap/scanner.l user/adrian/net80211_tx/contrib/nvi/common/exf.c user/adrian/net80211_tx/contrib/nvi/common/options.c user/adrian/net80211_tx/contrib/nvi/include/options_def.h user/adrian/net80211_tx/crypto/heimdal/lib/kadm5/ipropd_master.c user/adrian/net80211_tx/crypto/openssh/ChangeLog user/adrian/net80211_tx/crypto/openssh/README user/adrian/net80211_tx/crypto/openssh/krl.c user/adrian/net80211_tx/crypto/openssh/openbsd-compat/bsd-cygwin_util.c user/adrian/net80211_tx/crypto/openssh/openbsd-compat/bsd-cygwin_util.h user/adrian/net80211_tx/crypto/openssh/packet.c user/adrian/net80211_tx/crypto/openssh/ssh_config user/adrian/net80211_tx/crypto/openssh/ssh_config.5 user/adrian/net80211_tx/crypto/openssh/sshconnect.c user/adrian/net80211_tx/crypto/openssh/sshd_config user/adrian/net80211_tx/crypto/openssh/sshd_config.5 user/adrian/net80211_tx/crypto/openssh/version.h user/adrian/net80211_tx/etc/rc user/adrian/net80211_tx/etc/rc.d/ipfw user/adrian/net80211_tx/etc/rc.d/netif user/adrian/net80211_tx/etc/rc.d/routing user/adrian/net80211_tx/etc/rc.shutdown user/adrian/net80211_tx/gnu/usr.bin/diff/Makefile user/adrian/net80211_tx/gnu/usr.bin/grep/Makefile user/adrian/net80211_tx/gnu/usr.bin/grep/dfa.c user/adrian/net80211_tx/gnu/usr.bin/grep/grep.c user/adrian/net80211_tx/gnu/usr.bin/grep/search.c user/adrian/net80211_tx/include/Makefile user/adrian/net80211_tx/include/arpa/tftp.h user/adrian/net80211_tx/include/fts.h user/adrian/net80211_tx/include/ifaddrs.h user/adrian/net80211_tx/include/protocols/rwhod.h user/adrian/net80211_tx/include/stdatomic.h user/adrian/net80211_tx/include/xlocale/Makefile user/adrian/net80211_tx/lib/libc/gen/fts.3 user/adrian/net80211_tx/lib/libc/gen/popen.3 user/adrian/net80211_tx/lib/libc/gen/popen.c user/adrian/net80211_tx/lib/libc/locale/Makefile.inc user/adrian/net80211_tx/lib/libc/locale/Symbol.map user/adrian/net80211_tx/lib/libc/locale/mbrtowc.3 user/adrian/net80211_tx/lib/libc/locale/wcrtomb.3 user/adrian/net80211_tx/lib/libc/locale/xlocale_private.h user/adrian/net80211_tx/lib/libc/net/getifaddrs.3 user/adrian/net80211_tx/lib/libc/net/getifmaddrs.3 user/adrian/net80211_tx/lib/libc/stdlib/atol.3 user/adrian/net80211_tx/lib/libc/sys/setfib.2 user/adrian/net80211_tx/lib/libthr/thread/thr_spec.c user/adrian/net80211_tx/release/doc/de_DE.ISO8859-1/early-adopter/article.xml user/adrian/net80211_tx/release/doc/de_DE.ISO8859-1/errata/article.xml user/adrian/net80211_tx/release/doc/de_DE.ISO8859-1/hardware/alpha/article.xml user/adrian/net80211_tx/release/doc/de_DE.ISO8859-1/hardware/alpha/proc-alpha.xml user/adrian/net80211_tx/release/doc/de_DE.ISO8859-1/hardware/common/dev.xml user/adrian/net80211_tx/release/doc/de_DE.ISO8859-1/hardware/i386/article.xml user/adrian/net80211_tx/release/doc/de_DE.ISO8859-1/hardware/ia64/article.xml user/adrian/net80211_tx/release/doc/de_DE.ISO8859-1/hardware/pc98/article.xml user/adrian/net80211_tx/release/doc/de_DE.ISO8859-1/hardware/sparc64/article.xml user/adrian/net80211_tx/release/doc/de_DE.ISO8859-1/installation/alpha/article.xml user/adrian/net80211_tx/release/doc/de_DE.ISO8859-1/installation/i386/article.xml user/adrian/net80211_tx/release/doc/de_DE.ISO8859-1/installation/ia64/article.xml user/adrian/net80211_tx/release/doc/de_DE.ISO8859-1/installation/pc98/article.xml user/adrian/net80211_tx/release/doc/de_DE.ISO8859-1/installation/sparc64/article.xml user/adrian/net80211_tx/release/doc/de_DE.ISO8859-1/readme/article.xml user/adrian/net80211_tx/release/doc/de_DE.ISO8859-1/relnotes/alpha/article.xml user/adrian/net80211_tx/release/doc/de_DE.ISO8859-1/relnotes/common/new.xml user/adrian/net80211_tx/release/doc/de_DE.ISO8859-1/relnotes/i386/article.xml user/adrian/net80211_tx/release/doc/de_DE.ISO8859-1/relnotes/ia64/article.xml user/adrian/net80211_tx/release/doc/de_DE.ISO8859-1/relnotes/pc98/article.xml user/adrian/net80211_tx/release/doc/de_DE.ISO8859-1/relnotes/sparc64/article.xml user/adrian/net80211_tx/release/doc/en_US.ISO8859-1/Makefile user/adrian/net80211_tx/release/doc/en_US.ISO8859-1/errata/article.xml user/adrian/net80211_tx/release/doc/en_US.ISO8859-1/hardware/Makefile user/adrian/net80211_tx/release/doc/en_US.ISO8859-1/hardware/article.xml user/adrian/net80211_tx/release/doc/en_US.ISO8859-1/readme/article.xml user/adrian/net80211_tx/release/doc/en_US.ISO8859-1/relnotes/article.xml user/adrian/net80211_tx/release/doc/fr_FR.ISO8859-1/early-adopter/article.xml user/adrian/net80211_tx/release/doc/fr_FR.ISO8859-1/errata/article.xml user/adrian/net80211_tx/release/doc/fr_FR.ISO8859-1/hardware/alpha/article.xml user/adrian/net80211_tx/release/doc/fr_FR.ISO8859-1/hardware/alpha/proc-alpha.xml user/adrian/net80211_tx/release/doc/fr_FR.ISO8859-1/hardware/common/dev.xml user/adrian/net80211_tx/release/doc/fr_FR.ISO8859-1/hardware/i386/article.xml user/adrian/net80211_tx/release/doc/fr_FR.ISO8859-1/hardware/i386/proc-i386.xml user/adrian/net80211_tx/release/doc/fr_FR.ISO8859-1/hardware/ia64/article.xml user/adrian/net80211_tx/release/doc/fr_FR.ISO8859-1/hardware/pc98/article.xml user/adrian/net80211_tx/release/doc/fr_FR.ISO8859-1/hardware/pc98/proc-pc98.xml user/adrian/net80211_tx/release/doc/fr_FR.ISO8859-1/hardware/sparc64/article.xml user/adrian/net80211_tx/release/doc/fr_FR.ISO8859-1/hardware/sparc64/proc-sparc64.xml user/adrian/net80211_tx/release/doc/fr_FR.ISO8859-1/installation/alpha/article.xml user/adrian/net80211_tx/release/doc/fr_FR.ISO8859-1/installation/common/install.xml user/adrian/net80211_tx/release/doc/fr_FR.ISO8859-1/installation/common/layout.xml user/adrian/net80211_tx/release/doc/fr_FR.ISO8859-1/installation/i386/article.xml user/adrian/net80211_tx/release/doc/fr_FR.ISO8859-1/installation/pc98/article.xml user/adrian/net80211_tx/release/doc/fr_FR.ISO8859-1/installation/sparc64/article.xml user/adrian/net80211_tx/release/doc/fr_FR.ISO8859-1/relnotes/alpha/article.xml user/adrian/net80211_tx/release/doc/fr_FR.ISO8859-1/relnotes/common/new.xml user/adrian/net80211_tx/release/doc/fr_FR.ISO8859-1/relnotes/i386/article.xml user/adrian/net80211_tx/release/doc/ja_JP.eucJP/errata/article.xml (contents, props changed) user/adrian/net80211_tx/release/doc/ja_JP.eucJP/hardware/alpha/Makefile user/adrian/net80211_tx/release/doc/ja_JP.eucJP/hardware/alpha/article.xml user/adrian/net80211_tx/release/doc/ja_JP.eucJP/hardware/amd64/Makefile user/adrian/net80211_tx/release/doc/ja_JP.eucJP/hardware/amd64/article.xml user/adrian/net80211_tx/release/doc/ja_JP.eucJP/hardware/amd64/proc-amd64.xml (contents, props changed) user/adrian/net80211_tx/release/doc/ja_JP.eucJP/hardware/common/artheader.xml user/adrian/net80211_tx/release/doc/ja_JP.eucJP/hardware/common/dev.xml user/adrian/net80211_tx/release/doc/ja_JP.eucJP/hardware/common/intro.xml (contents, props changed) user/adrian/net80211_tx/release/doc/ja_JP.eucJP/hardware/i386/Makefile user/adrian/net80211_tx/release/doc/ja_JP.eucJP/hardware/i386/article.xml user/adrian/net80211_tx/release/doc/ja_JP.eucJP/hardware/i386/proc-i386.xml (contents, props changed) user/adrian/net80211_tx/release/doc/ja_JP.eucJP/hardware/ia64/Makefile user/adrian/net80211_tx/release/doc/ja_JP.eucJP/hardware/ia64/article.xml user/adrian/net80211_tx/release/doc/ja_JP.eucJP/hardware/ia64/proc-ia64.xml (contents, props changed) user/adrian/net80211_tx/release/doc/ja_JP.eucJP/hardware/pc98/Makefile user/adrian/net80211_tx/release/doc/ja_JP.eucJP/hardware/pc98/article.xml user/adrian/net80211_tx/release/doc/ja_JP.eucJP/hardware/pc98/proc-pc98.xml (contents, props changed) user/adrian/net80211_tx/release/doc/ja_JP.eucJP/hardware/sparc64/Makefile user/adrian/net80211_tx/release/doc/ja_JP.eucJP/hardware/sparc64/article.xml user/adrian/net80211_tx/release/doc/ja_JP.eucJP/hardware/sparc64/proc-sparc64.xml user/adrian/net80211_tx/release/doc/ja_JP.eucJP/relnotes/alpha/article.xml user/adrian/net80211_tx/release/doc/ja_JP.eucJP/relnotes/amd64/article.xml user/adrian/net80211_tx/release/doc/ja_JP.eucJP/relnotes/common/new.xml user/adrian/net80211_tx/release/doc/ja_JP.eucJP/relnotes/common/relnotes.ent user/adrian/net80211_tx/release/doc/ja_JP.eucJP/relnotes/i386/article.xml user/adrian/net80211_tx/release/doc/ja_JP.eucJP/relnotes/ia64/article.xml user/adrian/net80211_tx/release/doc/ja_JP.eucJP/relnotes/pc98/article.xml user/adrian/net80211_tx/release/doc/ja_JP.eucJP/relnotes/sparc64/article.xml user/adrian/net80211_tx/release/doc/ja_JP.eucJP/share/xml/catalog user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/errata/article.xml (contents, props changed) user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/hardware/alpha/Makefile user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/hardware/alpha/article.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/hardware/amd64/Makefile user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/hardware/amd64/article.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/hardware/amd64/proc-amd64.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/hardware/common/artheader.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/hardware/common/dev.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/hardware/common/intro.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/hardware/i386/Makefile user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/hardware/i386/article.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/hardware/i386/proc-i386.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/hardware/ia64/Makefile user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/hardware/ia64/article.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/hardware/ia64/proc-ia64.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/hardware/pc98/Makefile user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/hardware/pc98/article.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/hardware/pc98/proc-pc98.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/hardware/sparc64/Makefile user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/hardware/sparc64/article.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/hardware/sparc64/proc-sparc64.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/installation/alpha/article.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/installation/amd64/article.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/installation/common/abstract.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/installation/common/artheader.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/installation/common/install.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/installation/common/layout.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/installation/common/trouble.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/installation/common/upgrade.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/installation/i386/article.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/installation/ia64/article.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/installation/pc98/article.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/installation/sparc64/article.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/readme/article.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/relnotes/alpha/article.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/relnotes/amd64/article.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/relnotes/common/new.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/relnotes/i386/article.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/relnotes/ia64/article.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/relnotes/pc98/article.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/relnotes/sparc64/article.xml user/adrian/net80211_tx/release/doc/ru_RU.KOI8-R/share/xml/catalog user/adrian/net80211_tx/release/doc/share/mk/doc.relnotes.mk user/adrian/net80211_tx/release/doc/share/xml/Makefile user/adrian/net80211_tx/release/doc/share/xml/release.ent user/adrian/net80211_tx/release/doc/zh_CN.GB2312/errata/article.xml user/adrian/net80211_tx/release/doc/zh_CN.GB2312/hardware/Makefile user/adrian/net80211_tx/release/doc/zh_CN.GB2312/hardware/article.xml user/adrian/net80211_tx/release/doc/zh_CN.GB2312/readme/article.xml user/adrian/net80211_tx/release/doc/zh_CN.GB2312/relnotes/article.xml user/adrian/net80211_tx/sbin/camcontrol/camcontrol.c user/adrian/net80211_tx/sbin/dumpfs/dumpfs.8 user/adrian/net80211_tx/sbin/dumpfs/dumpfs.c user/adrian/net80211_tx/sbin/ipfw/ipfw2.c user/adrian/net80211_tx/sbin/tunefs/tunefs.c user/adrian/net80211_tx/share/man/man4/Makefile user/adrian/net80211_tx/share/man/man5/src.conf.5 user/adrian/net80211_tx/share/misc/bsd-family-tree user/adrian/net80211_tx/share/mk/bsd.own.mk user/adrian/net80211_tx/sys/amd64/amd64/db_trace.c user/adrian/net80211_tx/sys/amd64/amd64/machdep.c user/adrian/net80211_tx/sys/amd64/amd64/mp_machdep.c user/adrian/net80211_tx/sys/amd64/amd64/pmap.c user/adrian/net80211_tx/sys/amd64/include/md_var.h user/adrian/net80211_tx/sys/amd64/include/metadata.h user/adrian/net80211_tx/sys/amd64/include/pcpu.h user/adrian/net80211_tx/sys/arm/arm/cpufunc_asm_sheeva.S user/adrian/net80211_tx/sys/arm/arm/pmap-v6.c user/adrian/net80211_tx/sys/arm/arm/pmap.c user/adrian/net80211_tx/sys/arm/arm/stack_machdep.c user/adrian/net80211_tx/sys/arm/conf/BEAGLEBONE user/adrian/net80211_tx/sys/arm/include/pmap.h user/adrian/net80211_tx/sys/boot/fdt/dts/beaglebone-black.dts user/adrian/net80211_tx/sys/cam/ata/ata_da.c user/adrian/net80211_tx/sys/cam/cam_xpt.c user/adrian/net80211_tx/sys/cam/cam_xpt_periph.h user/adrian/net80211_tx/sys/cam/scsi/scsi_cd.c user/adrian/net80211_tx/sys/cam/scsi/scsi_ch.c user/adrian/net80211_tx/sys/cam/scsi/scsi_da.c user/adrian/net80211_tx/sys/cam/scsi/scsi_sa.c user/adrian/net80211_tx/sys/compat/freebsd32/freebsd32_misc.c user/adrian/net80211_tx/sys/compat/freebsd32/freebsd32_proto.h user/adrian/net80211_tx/sys/compat/freebsd32/freebsd32_syscall.h user/adrian/net80211_tx/sys/compat/freebsd32/freebsd32_syscalls.c user/adrian/net80211_tx/sys/compat/freebsd32/freebsd32_sysent.c user/adrian/net80211_tx/sys/compat/freebsd32/freebsd32_systrace_args.c user/adrian/net80211_tx/sys/compat/freebsd32/syscalls.master user/adrian/net80211_tx/sys/conf/Makefile.amd64 user/adrian/net80211_tx/sys/conf/Makefile.i386 user/adrian/net80211_tx/sys/conf/NOTES user/adrian/net80211_tx/sys/conf/files user/adrian/net80211_tx/sys/conf/files.amd64 user/adrian/net80211_tx/sys/conf/files.arm user/adrian/net80211_tx/sys/conf/files.i386 user/adrian/net80211_tx/sys/conf/files.mips user/adrian/net80211_tx/sys/conf/files.powerpc user/adrian/net80211_tx/sys/conf/kern.mk user/adrian/net80211_tx/sys/conf/options.arm user/adrian/net80211_tx/sys/contrib/dev/acpica/acpica_prep.sh user/adrian/net80211_tx/sys/contrib/dev/acpica/changes.txt (contents, props changed) user/adrian/net80211_tx/sys/contrib/dev/acpica/common/adisasm.c user/adrian/net80211_tx/sys/contrib/dev/acpica/common/adwalk.c user/adrian/net80211_tx/sys/contrib/dev/acpica/common/dmextern.c user/adrian/net80211_tx/sys/contrib/dev/acpica/common/dmrestag.c user/adrian/net80211_tx/sys/contrib/dev/acpica/common/dmtable.c user/adrian/net80211_tx/sys/contrib/dev/acpica/common/dmtbdump.c user/adrian/net80211_tx/sys/contrib/dev/acpica/common/getopt.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/aslanalyze.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/aslbtypes.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/aslcodegen.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/aslcompile.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/aslcompiler.h user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/aslerror.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/aslfold.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/aslglobal.h user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/aslhex.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/asllength.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/asllisting.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/asllistsup.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/aslload.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/asllookup.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/aslmain.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/aslmessages.h user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/aslmethod.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/aslnamesp.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/asloffset.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/aslopcodes.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/asloperands.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/aslpredef.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/aslresource.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/aslrestype1i.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/aslrestype2s.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/aslstartup.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/aslsupport.l user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/asltransform.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/asltree.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/asltypes.h user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/aslutils.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/aslwalks.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/aslxref.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/dtexpress.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/dtfield.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/dtio.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/dtsubtable.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/dttable.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/dtutils.c user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/prscan.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/debugger/dbcmds.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/debugger/dbconvert.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/debugger/dbdisply.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/debugger/dbexec.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/debugger/dbhistry.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/debugger/dbinput.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/debugger/dbmethod.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/debugger/dbnames.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/debugger/dbstats.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/debugger/dbutils.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/debugger/dbxface.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/disassembler/dmbuffer.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/disassembler/dmdeferred.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/disassembler/dmnames.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/disassembler/dmobject.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/disassembler/dmopcode.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/disassembler/dmresrc.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/disassembler/dmresrcl.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/disassembler/dmresrcl2.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/disassembler/dmwalk.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/dispatcher/dscontrol.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/dispatcher/dsfield.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/dispatcher/dsinit.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/dispatcher/dsmthdat.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/dispatcher/dsobject.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/dispatcher/dsopcode.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/dispatcher/dsutils.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/dispatcher/dswexec.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/dispatcher/dswload.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/dispatcher/dswload2.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/events/evglock.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/events/evgpe.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/events/evgpeblk.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/events/evgpeinit.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/events/evhandler.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/events/evmisc.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/events/evrgnini.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/events/evxfgpe.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/events/evxfregn.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/executer/exconfig.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/executer/exconvrt.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/executer/excreate.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/executer/exdebug.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/executer/exdump.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/executer/exfield.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/executer/exfldio.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/executer/exmisc.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/executer/exnames.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/executer/exoparg1.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/executer/exoparg2.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/executer/exoparg3.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/executer/exoparg6.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/executer/exprep.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/executer/exregion.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/executer/exresnte.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/executer/exresolv.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/executer/exresop.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/executer/exstore.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/executer/exstoren.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/hardware/hwacpi.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/hardware/hwgpe.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/hardware/hwregs.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/hardware/hwxface.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/namespace/nsaccess.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/namespace/nsconvert.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/namespace/nsdump.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/namespace/nsinit.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/namespace/nspredef.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/namespace/nsprepkg.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/namespace/nsrepair.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/namespace/nsrepair2.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/namespace/nsutils.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/namespace/nsxfeval.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/parser/psargs.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/parser/psloop.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/parser/psobject.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/parser/psparse.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/parser/pstree.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/resources/rscalc.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/resources/rscreate.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/resources/rsdump.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/resources/rsmisc.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/resources/rsutils.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/resources/rsxface.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/tables/tbinstal.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/tables/tbutils.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/tables/tbxfload.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/utilities/utcopy.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/utilities/utdebug.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/utilities/utdelete.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/utilities/uteval.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/utilities/utexcep.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/utilities/utids.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/utilities/utmisc.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/utilities/utobject.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/utilities/utstring.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/utilities/uttrack.c user/adrian/net80211_tx/sys/contrib/dev/acpica/components/utilities/utxferror.c user/adrian/net80211_tx/sys/contrib/dev/acpica/include/acapps.h user/adrian/net80211_tx/sys/contrib/dev/acpica/include/acglobal.h user/adrian/net80211_tx/sys/contrib/dev/acpica/include/acpiosxf.h user/adrian/net80211_tx/sys/contrib/dev/acpica/include/acpixf.h user/adrian/net80211_tx/sys/contrib/dev/acpica/include/actypes.h user/adrian/net80211_tx/sys/contrib/dev/acpica/include/acutils.h user/adrian/net80211_tx/sys/contrib/dev/acpica/include/platform/acenv.h user/adrian/net80211_tx/sys/contrib/dev/acpica/os_specific/service_layers/osunixxf.c user/adrian/net80211_tx/sys/dev/acpica/Osd/OsdTable.c user/adrian/net80211_tx/sys/dev/ahci/ahci.c user/adrian/net80211_tx/sys/dev/ath/ath_hal/ah.c user/adrian/net80211_tx/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c user/adrian/net80211_tx/sys/dev/ath/if_ath.c user/adrian/net80211_tx/sys/dev/ath/if_ath_beacon.c user/adrian/net80211_tx/sys/dev/ath/if_ath_misc.h user/adrian/net80211_tx/sys/dev/ath/if_ath_sysctl.c user/adrian/net80211_tx/sys/dev/ath/if_ath_tdma.c user/adrian/net80211_tx/sys/dev/ath/if_ath_tx.c user/adrian/net80211_tx/sys/dev/ath/if_ath_tx.h user/adrian/net80211_tx/sys/dev/ath/if_athvar.h user/adrian/net80211_tx/sys/dev/cxgb/cxgb_main.c user/adrian/net80211_tx/sys/dev/cxgbe/t4_main.c user/adrian/net80211_tx/sys/dev/mmc/mmcsd.c user/adrian/net80211_tx/sys/dev/pci/pcireg.h user/adrian/net80211_tx/sys/dev/sound/pci/hda/hdaa_patches.c user/adrian/net80211_tx/sys/dev/sound/usb/uaudio.c user/adrian/net80211_tx/sys/dev/uart/uart_bus_fdt.c user/adrian/net80211_tx/sys/dev/usb/quirk/usb_quirk.c user/adrian/net80211_tx/sys/dev/usb/serial/uslcom.c user/adrian/net80211_tx/sys/dev/usb/usb_freebsd.h user/adrian/net80211_tx/sys/dev/usb/usbdevs user/adrian/net80211_tx/sys/fs/nfsserver/nfs_nfsdport.c user/adrian/net80211_tx/sys/fs/nullfs/null_vfsops.c user/adrian/net80211_tx/sys/geom/geom_dump.c user/adrian/net80211_tx/sys/geom/raid/md_ddf.c user/adrian/net80211_tx/sys/i386/i386/machdep.c user/adrian/net80211_tx/sys/i386/i386/pmap.c user/adrian/net80211_tx/sys/i386/include/metadata.h user/adrian/net80211_tx/sys/i386/xen/pmap.c user/adrian/net80211_tx/sys/ia64/ia64/pmap.c user/adrian/net80211_tx/sys/kern/init_sysent.c user/adrian/net80211_tx/sys/kern/kern_jail.c user/adrian/net80211_tx/sys/kern/kern_priv.c user/adrian/net80211_tx/sys/kern/subr_sbuf.c user/adrian/net80211_tx/sys/kern/syscalls.c user/adrian/net80211_tx/sys/kern/syscalls.master user/adrian/net80211_tx/sys/kern/systrace_args.c user/adrian/net80211_tx/sys/kern/uipc_usrreq.c user/adrian/net80211_tx/sys/kern/vfs_bio.c user/adrian/net80211_tx/sys/mips/mips/pmap.c user/adrian/net80211_tx/sys/modules/Makefile user/adrian/net80211_tx/sys/modules/acpi/acpi/Makefile user/adrian/net80211_tx/sys/net/if_ethersubr.c user/adrian/net80211_tx/sys/net/ppp_defs.h user/adrian/net80211_tx/sys/net/route.c user/adrian/net80211_tx/sys/netinet/sctp_os_bsd.h user/adrian/net80211_tx/sys/netinet/sctp_output.c user/adrian/net80211_tx/sys/netinet/sctputil.c user/adrian/net80211_tx/sys/netinet6/in6.c user/adrian/net80211_tx/sys/netinet6/ip6_output.c user/adrian/net80211_tx/sys/powerpc/aim/mmu_oea.c user/adrian/net80211_tx/sys/powerpc/aim/mmu_oea64.c user/adrian/net80211_tx/sys/powerpc/booke/pmap.c user/adrian/net80211_tx/sys/powerpc/include/gdb_machdep.h user/adrian/net80211_tx/sys/powerpc/wii/wii_gpio.c user/adrian/net80211_tx/sys/powerpc/wii/wii_gpioreg.h user/adrian/net80211_tx/sys/sparc64/sparc64/pmap.c user/adrian/net80211_tx/sys/sys/_types.h user/adrian/net80211_tx/sys/sys/cdefs.h user/adrian/net80211_tx/sys/sys/mbuf.h user/adrian/net80211_tx/sys/sys/param.h user/adrian/net80211_tx/sys/sys/sdt.h user/adrian/net80211_tx/sys/sys/syscall.h user/adrian/net80211_tx/sys/sys/syscall.mk user/adrian/net80211_tx/sys/sys/sysproto.h user/adrian/net80211_tx/sys/sys/timex.h user/adrian/net80211_tx/sys/ufs/ffs/ffs_softdep.c user/adrian/net80211_tx/sys/vm/vm_fault.c user/adrian/net80211_tx/sys/vm/vm_map.c user/adrian/net80211_tx/sys/vm/vm_object.h user/adrian/net80211_tx/sys/vm/vm_page.c user/adrian/net80211_tx/tools/regression/lib/libc/gen/Makefile user/adrian/net80211_tx/tools/regression/lib/libc/locale/Makefile user/adrian/net80211_tx/usr.bin/bmake/Makefile user/adrian/net80211_tx/usr.bin/bmake/Makefile.inc user/adrian/net80211_tx/usr.bin/lex/Makefile user/adrian/net80211_tx/usr.bin/lex/config.h user/adrian/net80211_tx/usr.bin/lex/initscan.c user/adrian/net80211_tx/usr.bin/lex/lex.1 user/adrian/net80211_tx/usr.bin/lex/lib/Makefile user/adrian/net80211_tx/usr.bin/make/Makefile user/adrian/net80211_tx/usr.bin/split/split.c user/adrian/net80211_tx/usr.sbin/acpi/acpidb/Makefile user/adrian/net80211_tx/usr.sbin/acpi/iasl/Makefile user/adrian/net80211_tx/usr.sbin/bsdconfig/bsdconfig user/adrian/net80211_tx/usr.sbin/bsdconfig/console/console user/adrian/net80211_tx/usr.sbin/bsdconfig/console/font user/adrian/net80211_tx/usr.sbin/bsdconfig/console/keymap user/adrian/net80211_tx/usr.sbin/bsdconfig/console/repeat user/adrian/net80211_tx/usr.sbin/bsdconfig/console/saver user/adrian/net80211_tx/usr.sbin/bsdconfig/console/screenmap user/adrian/net80211_tx/usr.sbin/bsdconfig/console/ttys user/adrian/net80211_tx/usr.sbin/bsdconfig/diskmgmt/diskmgmt user/adrian/net80211_tx/usr.sbin/bsdconfig/docsinstall/docsinstall user/adrian/net80211_tx/usr.sbin/bsdconfig/mouse/disable user/adrian/net80211_tx/usr.sbin/bsdconfig/mouse/enable user/adrian/net80211_tx/usr.sbin/bsdconfig/mouse/flags user/adrian/net80211_tx/usr.sbin/bsdconfig/mouse/mouse user/adrian/net80211_tx/usr.sbin/bsdconfig/mouse/port user/adrian/net80211_tx/usr.sbin/bsdconfig/mouse/type user/adrian/net80211_tx/usr.sbin/bsdconfig/networking/defaultrouter user/adrian/net80211_tx/usr.sbin/bsdconfig/networking/devices user/adrian/net80211_tx/usr.sbin/bsdconfig/networking/hostname user/adrian/net80211_tx/usr.sbin/bsdconfig/networking/nameservers user/adrian/net80211_tx/usr.sbin/bsdconfig/networking/networking user/adrian/net80211_tx/usr.sbin/bsdconfig/packages/packages user/adrian/net80211_tx/usr.sbin/bsdconfig/password/password user/adrian/net80211_tx/usr.sbin/bsdconfig/security/kern_securelevel user/adrian/net80211_tx/usr.sbin/bsdconfig/security/security user/adrian/net80211_tx/usr.sbin/bsdconfig/share/common.subr user/adrian/net80211_tx/usr.sbin/bsdconfig/share/dialog.subr user/adrian/net80211_tx/usr.sbin/bsdconfig/share/strings.subr user/adrian/net80211_tx/usr.sbin/bsdconfig/startup/misc user/adrian/net80211_tx/usr.sbin/bsdconfig/startup/rcadd user/adrian/net80211_tx/usr.sbin/bsdconfig/startup/rcconf user/adrian/net80211_tx/usr.sbin/bsdconfig/startup/rcdelete user/adrian/net80211_tx/usr.sbin/bsdconfig/startup/rcedit user/adrian/net80211_tx/usr.sbin/bsdconfig/startup/rcvar user/adrian/net80211_tx/usr.sbin/bsdconfig/startup/startup user/adrian/net80211_tx/usr.sbin/bsdconfig/timezone/timezone user/adrian/net80211_tx/usr.sbin/bsdconfig/ttys/ttys user/adrian/net80211_tx/usr.sbin/bsdconfig/usermgmt/groupadd user/adrian/net80211_tx/usr.sbin/bsdconfig/usermgmt/groupdel user/adrian/net80211_tx/usr.sbin/bsdconfig/usermgmt/groupedit user/adrian/net80211_tx/usr.sbin/bsdconfig/usermgmt/useradd user/adrian/net80211_tx/usr.sbin/bsdconfig/usermgmt/userdel user/adrian/net80211_tx/usr.sbin/bsdconfig/usermgmt/useredit user/adrian/net80211_tx/usr.sbin/bsdconfig/usermgmt/usermgmt user/adrian/net80211_tx/usr.sbin/jls/jls.8 user/adrian/net80211_tx/usr.sbin/jls/jls.c user/adrian/net80211_tx/usr.sbin/pciconf/cap.c user/adrian/net80211_tx/usr.sbin/pkg_install/version/pkg_version.1 Directory Properties: user/adrian/net80211_tx/ (props changed) user/adrian/net80211_tx/cddl/ (props changed) user/adrian/net80211_tx/cddl/contrib/opensolaris/ (props changed) user/adrian/net80211_tx/contrib/bmake/ (props changed) user/adrian/net80211_tx/contrib/libpcap/ (props changed) user/adrian/net80211_tx/crypto/heimdal/ (props changed) user/adrian/net80211_tx/crypto/openssh/ (props changed) user/adrian/net80211_tx/lib/libc/ (props changed) user/adrian/net80211_tx/sbin/ (props changed) user/adrian/net80211_tx/sbin/ipfw/ (props changed) user/adrian/net80211_tx/share/man/man4/ (props changed) user/adrian/net80211_tx/sys/ (props changed) user/adrian/net80211_tx/sys/boot/ (props changed) user/adrian/net80211_tx/sys/conf/ (props changed) user/adrian/net80211_tx/sys/contrib/dev/acpica/ (props changed) user/adrian/net80211_tx/sys/contrib/dev/acpica/common/ (props changed) user/adrian/net80211_tx/sys/contrib/dev/acpica/compiler/ (props changed) user/adrian/net80211_tx/sys/contrib/dev/acpica/components/debugger/ (props changed) user/adrian/net80211_tx/sys/contrib/dev/acpica/components/disassembler/ (props changed) user/adrian/net80211_tx/sys/contrib/dev/acpica/components/dispatcher/ (props changed) user/adrian/net80211_tx/sys/contrib/dev/acpica/components/events/ (props changed) user/adrian/net80211_tx/sys/contrib/dev/acpica/components/executer/ (props changed) user/adrian/net80211_tx/sys/contrib/dev/acpica/components/hardware/ (props changed) user/adrian/net80211_tx/sys/contrib/dev/acpica/components/namespace/ (props changed) user/adrian/net80211_tx/sys/contrib/dev/acpica/components/parser/ (props changed) user/adrian/net80211_tx/sys/contrib/dev/acpica/components/resources/ (props changed) user/adrian/net80211_tx/sys/contrib/dev/acpica/components/tables/ (props changed) user/adrian/net80211_tx/sys/contrib/dev/acpica/components/utilities/ (props changed) user/adrian/net80211_tx/sys/contrib/dev/acpica/include/ (props changed) user/adrian/net80211_tx/sys/contrib/dev/acpica/os_specific/ (props changed) Modified: user/adrian/net80211_tx/MAINTAINERS ============================================================================== --- user/adrian/net80211_tx/MAINTAINERS Wed May 22 00:48:24 2013 (r250895) +++ user/adrian/net80211_tx/MAINTAINERS Wed May 22 00:54:57 2013 (r250896) @@ -28,6 +28,7 @@ MAC Framework rwatson Pre-commit review MAC Modules rwatson Pre-commit review requested. contrib/openbsm rwatson Pre-commit review requested. sys/security/audit rwatson Pre-commit review requested. +ath(4) adrian Pre-commit review requested, send to freebsd-wireless@freebsd.org ahc(4) gibbs Pre-commit review requested. ahd(4) gibbs Pre-commit review requested. PC Card imp Pre-commit review requested. @@ -63,7 +64,7 @@ procfs des Pre-commit review requested. linprocfs des Pre-commit review requested. lpr gad Pre-commit review requested, particularly for lpd/recvjob.c and lpd/printjob.c. -newsyslog(8) gad Heads-up appreciated. I'm going thru the PR's for it. +net80211 adrian Pre-commit review requested, send to freebsd-wireless@freebsd.org nvi peter Try not to break it. libz peter Try not to break it. groff ru Recommends pre-commit review. Modified: user/adrian/net80211_tx/Makefile ============================================================================== --- user/adrian/net80211_tx/Makefile Wed May 22 00:48:24 2013 (r250895) +++ user/adrian/net80211_tx/Makefile Wed May 22 00:54:57 2013 (r250896) @@ -281,7 +281,7 @@ kernel: buildkernel installkernel # upgrade_checks: .if !defined(.PARSEDIR) -.if defined(WITH_BMAKE) +.if !defined(WITHOUT_BMAKE) (cd ${.CURDIR} && ${MAKE} bmake) .else @if ! (cd ${.CURDIR}/tools/build/make_check && \ Modified: user/adrian/net80211_tx/Makefile.inc1 ============================================================================== --- user/adrian/net80211_tx/Makefile.inc1 Wed May 22 00:48:24 2013 (r250895) +++ user/adrian/net80211_tx/Makefile.inc1 Wed May 22 00:54:57 2013 (r250896) @@ -273,15 +273,67 @@ WMAKEENV= ${CROSSENV} \ .if ${MK_CDDL} == "no" WMAKEENV+= NO_CTF=1 .endif -.if ${CC:T:Mgcc} == "gcc" + +.if defined(CROSS_TOOLCHAIN_PREFIX) +CROSS_COMPILER_PREFIX?=${CROSS_TOOLCHAIN_PREFIX} +CROSS_BINUTILS_PREFIX?=${CROSS_TOOLCHAIN_PREFIX} +.endif +XCOMPILERS= CC CXX CPP +.for COMPILER in ${XCOMPILERS} +.if defined(CROSS_COMPILER_PREFIX) +X${COMPILER}?= ${CROSS_COMPILER_PREFIX}${${COMPILER}} +.else +X${COMPILER}?= ${${COMPILER}} +.endif +.endfor +XBINUTILS= AS AR LD NM OBJDUMP RANLIB STRINGS +.for BINUTIL in ${XBINUTILS} +.if defined(CROSS_BINUTILS_PREFIX) +X${BINUTIL}?= ${CROSS_BINUTILS_PREFIX}${${BINUTIL}} +.else +X${BINUTIL}?= ${${BINUTIL}} +.endif +.endfor +WMAKEENV+= CC="${XCC} ${XFLAGS}" CXX="${XCXX} ${XFLAGS}" \ + CPP="${XCPP} ${XFLAGS}" \ + AS="${XAS}" AR="${XAR}" LD="${XLD}" NM=${XNM} \ + OBJDUMP=${XOBJDUMP} RANLIB=${XRANLIB} STRINGS=${XSTRINGS} + +.if ${XCC:T:Mgcc} == "gcc" WMAKE_COMPILER_TYPE= gcc -.elif ${CC:T:Mclang} == "clang" +.elif ${XCC:T:Mclang} == "clang" WMAKE_COMPILER_TYPE= clang .elif ${MK_CLANG_IS_CC} == "no" WMAKE_COMPILER_TYPE= gcc .else WMAKE_COMPILER_TYPE= clang .endif +IMAKE_COMPILER_TYPE= COMPILER_TYPE=${WMAKE_COMPILER_TYPE} + +.if ${XCC:M/*} +XFLAGS= --sysroot=${WORLDTMP} +.if defined(CROSS_BINUTILS_PREFIX) +# In the case of xdev-build tools, CROSS_BINUTILS_PREFIX won't be a +# directory, but the compiler will look in the right place for it's +# tools so we don't need to tell it where to look. +.if exists(${CROSS_BINUTILS_PREFIX}) +XFLAGS+= -B${CROSS_BINUTILS_PREFIX} +.endif +.else +XFLAGS+= -B${WORLDTMP}/usr/bin +.endif +.if ${TARGET_ARCH} != ${MACHINE_ARCH} && ${WMAKE_COMPILER_TYPE} == "clang" +.if (${TARGET_ARCH} == "arm" || ${TARGET_ARCH} == "armv6") && \ +${MK_ARM_EABI} != "no" +TARGET_ABI= gnueabi +.else +TARGET_ABI= unknown +.endif +TARGET_TRIPLE?= ${TARGET_ARCH:C/amd64/x86_64/}-${TARGET_ABI}-freebsd10.0 +XFLAGS+= -target ${TARGET_TRIPLE} +.endif +.endif + WMAKEENV+= COMPILER_TYPE=${WMAKE_COMPILER_TYPE} WMAKE= ${WMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 DESTDIR=${WORLDTMP} @@ -317,6 +369,9 @@ LIB32FLAGS= -m32 ${LIB32CPUFLAGS} -DCOMP -isystem ${LIB32TMP}/usr/include/ \ -L${LIB32TMP}/usr/lib32 \ -B${LIB32TMP}/usr/lib32 +.if ${XCC:M/*} +LIB32FLAGS+= --sysroot=${WORLDTMP} +.endif # Yes, the flags are redundant. LIB32WMAKEENV+= MAKEOBJDIRPREFIX=${OBJTREE}/lib32 \ @@ -329,8 +384,8 @@ LIB32WMAKEENV+= MAKEOBJDIRPREFIX=${OBJTR SHLIBDIR=/usr/lib32 \ COMPILER_TYPE=${WMAKE_COMPILER_TYPE} LIB32WMAKEFLAGS+= \ - CC="${CC} ${LIB32FLAGS}" \ - CXX="${CXX} ${LIB32FLAGS}" \ + CC="${XCC} ${LIB32FLAGS}" \ + CXX="${XCXX} ${LIB32FLAGS}" \ DESTDIR=${LIB32TMP} \ -DCOMPAT_32BIT \ -DLIBRARIES_ONLY \ @@ -346,7 +401,7 @@ LIB32IMAKE= ${LIB32WMAKE:NINSTALL=*:NDES IMAKEENV= ${CROSSENV:N_LDSCRIPTROOT=*} IMAKE= ${IMAKEENV} ${MAKE} -f Makefile.inc1 \ - ${IMAKE_INSTALL} ${IMAKE_MTREE} + ${IMAKE_INSTALL} ${IMAKE_MTREE} ${IMAKE_COMPILER_TYPE} .if empty(.MAKEFLAGS:M-n) IMAKEENV+= PATH=${STRICTTMPPATH}:${INSTALLTMP} \ LD_LIBRARY_PATH=${INSTALLTMP} \ @@ -970,25 +1025,52 @@ distributekernel distributekernel.debug: @echo "ERROR: No kernel \"${KERNCONF}\" to install."; \ false .endif + mkdir -p ${DESTDIR}/${DISTDIR} +.if defined(NO_ROOT) + echo "#${MTREE_MAGIC}" > ${DESTDIR}/${DISTDIR}/kernel.premeta +.endif cd ${KRNLOBJDIR}/${INSTALLKERNEL}; \ - ${CROSSENV} PATH=${TMPPATH} ${MAKE} KERNEL=${INSTKERNNAME} \ - DESTDIR=${DESTDIR}/${DISTDIR}/kernel \ + ${IMAKEENV} ${IMAKE_INSTALL:S/METALOG/kernel.premeta/} \ + ${IMAKE_MTREE} PATH=${TMPPATH} ${MAKE} KERNEL=${INSTKERNNAME} \ + DESTDIR=${INSTALL_DDIR:S://:/:g:C:/$::}/kernel \ ${.TARGET:S/distributekernel/install/} +.if defined(NO_ROOT) + sed -e 's|^./kernel|.|' ${DESTDIR}/${DISTDIR}/kernel.premeta > \ + ${DESTDIR}/${DISTDIR}/kernel.meta +.endif .for _kernel in ${BUILDKERNELS:S/${INSTALLKERNEL}//} +.if defined(NO_ROOT) + echo "#${MTREE_MAGIC}" > ${DESTDIR}/${DISTDIR}/kernel.${_kernel}.premeta +.endif cd ${KRNLOBJDIR}/${_kernel}; \ - ${CROSSENV} PATH=${TMPPATH} ${MAKE} \ + ${IMAKEENV} ${IMAKE_INSTALL:S/METALOG/kernel.${_kernel}.premeta/} \ + ${IMAKE_MTREE} PATH=${TMPPATH} ${MAKE} \ KERNEL=${INSTKERNNAME}.${_kernel} \ - DESTDIR=${DESTDIR}/${DISTDIR}/kernel.${_kernel} \ + DESTDIR=${INSTALL_DDIR:S://:/:g:C:/$::}/kernel.${_kernel} \ ${.TARGET:S/distributekernel/install/} + sed -e 's|^./kernel|.|' \ + ${DESTDIR}/${DISTDIR}/kernel.${_kernel}.premeta > \ + ${DESTDIR}/${DISTDIR}/kernel.${_kernel}.meta .endfor packagekernel: +.if defined(NO_ROOT) + cd ${DESTDIR}/${DISTDIR}/kernel; \ + tar cvJf ${DESTDIR}/${DISTDIR}/kernel.txz \ + @${DESTDIR}/${DISTDIR}/kernel.meta +.for _kernel in ${BUILDKERNELS:S/${INSTALLKERNEL}//} + cd ${DESTDIR}/${DISTDIR}/kernel.${_kernel}; \ + tar cvJf ${DESTDIR}/${DISTDIR}/kernel.${_kernel}.txz \ + @${DESTDIR}/${DISTDIR}/kernel.${_kernel}.meta +.endfor +.else cd ${DESTDIR}/${DISTDIR}/kernel; \ tar cvJf ${DESTDIR}/${DISTDIR}/kernel.txz . .for _kernel in ${BUILDKERNELS:S/${INSTALLKERNEL}//} cd ${DESTDIR}/${DISTDIR}/kernel.${_kernel}; \ tar cvJf ${DESTDIR}/${DISTDIR}/kernel.${_kernel}.txz . .endfor +.endif # # doxygen @@ -1124,6 +1206,10 @@ _sed= usr.bin/sed _lex= usr.bin/lex .endif +.if ${BOOTSTRAPPING} < 1000002 +_m4= usr.bin/m4 +.endif + .if ${BOOTSTRAPPING} < 1000013 _yacc= lib/liby \ usr.bin/yacc @@ -1201,6 +1287,7 @@ bootstrap-tools: usr.bin/rpcgen \ ${_sed} \ ${_yacc} \ + ${_m4} \ ${_lex} \ lib/libmd \ usr.bin/xinstall \ @@ -1279,10 +1366,13 @@ _kgzip= usr.sbin/kgzip .endif .endif -.if ${MK_BINUTILS} != "no" +.if ${XAS:M/*} == "" && ${MK_BINUTILS} != "no" _binutils= gnu/usr.bin/binutils .endif +# If an full path to an external cross compiler is given, don't build +# a cross compiler. +.if ${XCC:M/*} == "" && ${MK_CROSS_COMPILER} != "no" .if ${MK_CLANG} != "no" && (${MK_CLANG_IS_CC} != "no" || ${CC:T:Mclang} == "clang") _clang= usr.bin/clang _clang_libs= lib/clang @@ -1291,6 +1381,7 @@ _clang_libs= lib/clang .if ${MK_GCC} != "no" && (${MK_CLANG_IS_CC} == "no" || ${TARGET} == "pc98") _cc= gnu/usr.bin/cc .endif +.endif cross-tools: .for _tool in \ Modified: user/adrian/net80211_tx/ObsoleteFiles.inc ============================================================================== --- user/adrian/net80211_tx/ObsoleteFiles.inc Wed May 22 00:48:24 2013 (r250895) +++ user/adrian/net80211_tx/ObsoleteFiles.inc Wed May 22 00:54:57 2013 (r250896) @@ -38,6 +38,8 @@ # xargs -n1 | sort | uniq -d; # done +# 20130417: nfs fha moved from nfsserver to nfs +OLD_FILES+=usr/include/nfsserver/nfs_fha.h # 20130411: new clang import which bumps version from 3.2 to 3.3. OLD_FILES+=usr/include/clang/3.2/__wmmintrin_aes.h OLD_FILES+=usr/include/clang/3.2/__wmmintrin_pclmul.h Modified: user/adrian/net80211_tx/UPDATING ============================================================================== --- user/adrian/net80211_tx/UPDATING Wed May 22 00:48:24 2013 (r250895) +++ user/adrian/net80211_tx/UPDATING Wed May 22 00:54:57 2013 (r250896) @@ -31,6 +31,18 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10 disable the most expensive debugging functionality run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20130516: + Use bmake by default. + Whereas before one could choose to build with bmake via + -DWITH_BMAKE one must now use -DWITHOUT_BMAKE to use the old + make. The goal is to remove these knobs for 10-RELEASE. + + It is worth noting that bmake (like gmake) treats the command + line as the unit of failure, rather than statements within the + command line. Thus '(cd some/where && dosomething)' is safer + than 'cd some/where; dosomething'. The '()' allows consistent + behavior in parallel build. + 20130429: Fix a bug that allows NFS clients to issue READDIR on files. Modified: user/adrian/net80211_tx/bin/df/df.1 ============================================================================== --- user/adrian/net80211_tx/bin/df/df.1 Wed May 22 00:48:24 2013 (r250895) +++ user/adrian/net80211_tx/bin/df/df.1 Wed May 22 00:54:57 2013 (r250896) @@ -196,7 +196,9 @@ If the value is outside, it will be set .Xr localeconv 3 , .Xr fstab 5 , .Xr mount 8 , -.Xr quot 8 . +.Xr pstat 8 , +.Xr quot 8 , +.Xr swapinfo 8 . .Sh STANDARDS With the exception of most options, the Modified: user/adrian/net80211_tx/bin/kenv/kenv.c ============================================================================== --- user/adrian/net80211_tx/bin/kenv/kenv.c Wed May 22 00:48:24 2013 (r250895) +++ user/adrian/net80211_tx/bin/kenv/kenv.c Wed May 22 00:54:57 2013 (r250896) @@ -37,9 +37,9 @@ __FBSDID("$FreeBSD$"); static void usage(void); static int kdumpenv(void); -static int kgetenv(char *); -static int ksetenv(char *, char *); -static int kunsetenv(char *); +static int kgetenv(const char *); +static int ksetenv(const char *, char *); +static int kunsetenv(const char *); static int hflag = 0; static int Nflag = 0; @@ -170,7 +170,7 @@ kdumpenv(void) } static int -kgetenv(char *env) +kgetenv(const char *env) { char buf[1024]; int ret; @@ -186,7 +186,7 @@ kgetenv(char *env) } static int -ksetenv(char *env, char *val) +ksetenv(const char *env, char *val) { int ret; @@ -197,7 +197,7 @@ ksetenv(char *env, char *val) } static int -kunsetenv(char *env) +kunsetenv(const char *env) { int ret; Modified: user/adrian/net80211_tx/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/get.ipv4remote.pl ============================================================================== --- user/adrian/net80211_tx/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/get.ipv4remote.pl Wed May 22 00:48:24 2013 (r250895) +++ user/adrian/net80211_tx/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/get.ipv4remote.pl Wed May 22 00:54:57 2013 (r250896) @@ -73,7 +73,7 @@ die "Could not determine local IP addres # Find the first remote host that responds to an icmp echo, # which isn't a local address. # -open PING, "/sbin/ping -ns $Broadcast{$local} 56 $MAXHOSTS |" or +open PING, "/sbin/ping -n -s 56 -c $MAXHOSTS $Broadcast{$local} |" or die "Couldn't run ping: $!\n"; while () { if (/bytes from (.*): / and not defined $Broadcast{$1}) { Modified: user/adrian/net80211_tx/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/get.ipv6remote.pl ============================================================================== --- user/adrian/net80211_tx/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/get.ipv6remote.pl Wed May 22 00:48:24 2013 (r250895) +++ user/adrian/net80211_tx/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/ip/get.ipv6remote.pl Wed May 22 00:54:57 2013 (r250896) @@ -48,7 +48,9 @@ my $MULTICAST = "FF02::1"; # IPv6 multi # my $local = ""; my $remote = ""; +my $interf = ""; my %Local; +my %Addr; my $up; open IFCONFIG, '/sbin/ifconfig -a inet6 |' or die "Couldn't run ifconfig: $!\n"; @@ -59,27 +61,34 @@ while () { $up = 1 if /^[a-z].*) { - if (/bytes from (.*): / and not defined $Local{$1}) { - $remote = $1; - last; +foreach $interf (split(' ', `ifconfig -l -u inet6`)) { + next if $interf =~ /lo[0-9]+/; + open PING, "/sbin/ping6 -n -s 56 -c $MAXHOSTS $MULTICAST\%$interf |" or next; + while () { + if (/bytes from (.*), / and not defined $Local{$1}) { + $remote = $1; + $local = $Addr{$interf}; + last; + } } } close PING; Modified: user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cg.c ============================================================================== --- user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cg.c Wed May 22 00:48:24 2013 (r250895) +++ user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cg.c Wed May 22 00:54:57 2013 (r250896) @@ -19,12 +19,15 @@ * * CDDL HEADER END */ + /* * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" +/* + * Copyright (c) 2012 by Delphix. All rights reserved. + */ #include #include @@ -193,9 +196,6 @@ dt_cg_ptrsize(dt_node_t *dnp, dt_irlist_ ssize_t size; int sreg; - if ((sreg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - type = ctf_type_resolve(ctfp, dnp->dn_type); kind = ctf_type_kind(ctfp, type); assert(kind == CTF_K_POINTER || kind == CTF_K_ARRAY); @@ -212,6 +212,7 @@ dt_cg_ptrsize(dt_node_t *dnp, dt_irlist_ if ((size = ctf_type_size(ctfp, type)) == 1) return; /* multiply or divide by one can be omitted */ + sreg = dt_regset_alloc(drp); dt_cg_setx(dlp, sreg, size); instr = DIF_INSTR_FMT(op, dreg, sreg, dreg); dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr)); @@ -251,9 +252,7 @@ dt_cg_field_get(dt_node_t *dnp, dt_irlis assert(dnp->dn_op == DT_TOK_PTR || dnp->dn_op == DT_TOK_DOT); r1 = dnp->dn_left->dn_reg; - - if ((r2 = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + r2 = dt_regset_alloc(drp); /* * On little-endian architectures, ctm_offset counts from the right so @@ -356,10 +355,9 @@ dt_cg_field_set(dt_node_t *src, dt_irlis "bits %u\n", m.ctm_offset, m.ctm_type, e.cte_bits); } - if ((r1 = dt_regset_alloc(drp)) == -1 || - (r2 = dt_regset_alloc(drp)) == -1 || - (r3 = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + r1 = dt_regset_alloc(drp); + r2 = dt_regset_alloc(drp); + r3 = dt_regset_alloc(drp); /* * Compute shifts and masks. We need to compute "shift" as the amount @@ -423,8 +421,7 @@ dt_cg_store(dt_node_t *src, dt_irlist_t size = dt_node_type_size(src); if (src->dn_flags & DT_NF_REF) { - if ((reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + reg = dt_regset_alloc(drp); dt_cg_setx(dlp, reg, size); instr = DIF_INSTR_COPYS(src->dn_reg, reg, dst->dn_reg); dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr)); @@ -474,30 +471,58 @@ dt_cg_typecast(const dt_node_t *src, con size_t dstsize = dt_node_type_size(dst); dif_instr_t instr; - int reg, n; + int rg; - if (dt_node_is_scalar(dst) && (dstsize < srcsize || - (src->dn_flags & DT_NF_SIGNED) ^ (dst->dn_flags & DT_NF_SIGNED))) { - if ((reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + if (!dt_node_is_scalar(dst)) + return; /* not a scalar */ + if (dstsize == srcsize && + ((src->dn_flags ^ dst->dn_flags) & DT_NF_SIGNED) != 0) + return; /* not narrowing or changing signed-ness */ + if (dstsize > srcsize && (src->dn_flags & DT_NF_SIGNED) == 0) + return; /* nothing to do in this case */ - if (dstsize < srcsize) - n = sizeof (uint64_t) * NBBY - dstsize * NBBY; - else - n = sizeof (uint64_t) * NBBY - srcsize * NBBY; + rg = dt_regset_alloc(drp); + + if (dstsize > srcsize) { + int n = sizeof (uint64_t) * NBBY - srcsize * NBBY; + int s = (dstsize - srcsize) * NBBY; - dt_cg_setx(dlp, reg, n); + dt_cg_setx(dlp, rg, n); - instr = DIF_INSTR_FMT(DIF_OP_SLL, - src->dn_reg, reg, dst->dn_reg); + instr = DIF_INSTR_FMT(DIF_OP_SLL, src->dn_reg, rg, dst->dn_reg); dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr)); - instr = DIF_INSTR_FMT((dst->dn_flags & DT_NF_SIGNED) ? - DIF_OP_SRA : DIF_OP_SRL, dst->dn_reg, reg, dst->dn_reg); + if ((dst->dn_flags & DT_NF_SIGNED) || n == s) { + instr = DIF_INSTR_FMT(DIF_OP_SRA, + dst->dn_reg, rg, dst->dn_reg); + dt_irlist_append(dlp, + dt_cg_node_alloc(DT_LBL_NONE, instr)); + } else { + dt_cg_setx(dlp, rg, s); + instr = DIF_INSTR_FMT(DIF_OP_SRA, + dst->dn_reg, rg, dst->dn_reg); + dt_irlist_append(dlp, + dt_cg_node_alloc(DT_LBL_NONE, instr)); + dt_cg_setx(dlp, rg, n - s); + instr = DIF_INSTR_FMT(DIF_OP_SRL, + dst->dn_reg, rg, dst->dn_reg); + dt_irlist_append(dlp, + dt_cg_node_alloc(DT_LBL_NONE, instr)); + } + } else if (dstsize != sizeof (uint64_t)) { + int n = sizeof (uint64_t) * NBBY - dstsize * NBBY; + + dt_cg_setx(dlp, rg, n); + instr = DIF_INSTR_FMT(DIF_OP_SLL, src->dn_reg, rg, dst->dn_reg); + dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr)); + + instr = DIF_INSTR_FMT((dst->dn_flags & DT_NF_SIGNED) ? + DIF_OP_SRA : DIF_OP_SRL, dst->dn_reg, rg, dst->dn_reg); dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr)); - dt_regset_free(drp, reg); } + + dt_regset_free(drp, rg); } /* @@ -523,8 +548,7 @@ dt_cg_arglist(dt_ident_t *idp, dt_node_t for (dnp = args; dnp != NULL; dnp = dnp->dn_list) dt_cg_node(dnp, dlp, drp); - dt_irlist_append(dlp, - dt_cg_node_alloc(DT_LBL_NONE, DIF_INSTR_FLUSHTS)); + dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, DIF_INSTR_FLUSHTS)); for (dnp = args; dnp != NULL; dnp = dnp->dn_list, i++) { dtrace_diftype_t t; @@ -538,17 +562,18 @@ dt_cg_arglist(dt_ident_t *idp, dt_node_t dt_cg_typecast(dnp, &isp->dis_args[i], dlp, drp); isp->dis_args[i].dn_reg = -1; - if (t.dtdt_flags & DIF_TF_BYREF) + if (t.dtdt_flags & DIF_TF_BYREF) { op = DIF_OP_PUSHTR; - else + if (t.dtdt_size != 0) { + reg = dt_regset_alloc(drp); + dt_cg_setx(dlp, reg, t.dtdt_size); + } else { + reg = DIF_REG_R0; + } + } else { op = DIF_OP_PUSHTV; - - if (t.dtdt_size != 0) { - if ((reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - dt_cg_setx(dlp, reg, t.dtdt_size); - } else reg = DIF_REG_R0; + } instr = DIF_INSTR_PUSHTS(op, t.dtdt_kind, reg, dnp->dn_reg); dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr)); @@ -629,9 +654,7 @@ dt_cg_prearith_op(dt_node_t *dnp, dt_irl dt_cg_node(dnp->dn_child, dlp, drp); dnp->dn_reg = dnp->dn_child->dn_reg; - if ((reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - + reg = dt_regset_alloc(drp); dt_cg_setx(dlp, reg, size); instr = DIF_INSTR_FMT(op, dnp->dn_reg, reg, dnp->dn_reg); @@ -688,9 +711,7 @@ dt_cg_postarith_op(dt_node_t *dnp, dt_ir dt_cg_node(dnp->dn_child, dlp, drp); dnp->dn_reg = dnp->dn_child->dn_reg; - if ((nreg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - + nreg = dt_regset_alloc(drp); dt_cg_setx(dlp, nreg, size); instr = DIF_INSTR_FMT(op, dnp->dn_reg, nreg, nreg); dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr)); @@ -1008,9 +1029,7 @@ dt_cg_asgn_op(dt_node_t *dnp, dt_irlist_ * set it to the size of our data structure, and then replace * it with the result of an allocs of the specified size. */ - if ((r1 = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - + r1 = dt_regset_alloc(drp); dt_cg_setx(dlp, r1, ctf_type_size(dxp->dx_dst_ctfp, dxp->dx_dst_base)); @@ -1054,8 +1073,7 @@ dt_cg_asgn_op(dt_node_t *dnp, dt_irlist_ * and add r1 to it before storing the result. */ if (ctm.ctm_offset != 0) { - if ((r2 = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + r2 = dt_regset_alloc(drp); /* * Add the member offset rounded down to the @@ -1142,8 +1160,7 @@ dt_cg_assoc_op(dt_node_t *dnp, dt_irlist dt_cg_arglist(dnp->dn_ident, dnp->dn_args, dlp, drp); - if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + dnp->dn_reg = dt_regset_alloc(drp); if (dnp->dn_ident->di_flags & DT_IDFLG_TLS) op = DIF_OP_LDTAA; @@ -1273,9 +1290,7 @@ dt_cg_array_op(dt_node_t *dnp, dt_irlist if ((size = dt_node_type_size(dnp)) == sizeof (uint64_t)) return; - if ((reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - + reg = dt_regset_alloc(drp); assert(size < sizeof (uint64_t)); n = sizeof (uint64_t) * NBBY - size * NBBY; @@ -1384,7 +1399,6 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * dt_ident_t *idp; ssize_t stroff; uint_t op; - int reg; switch (dnp->dn_op) { case DT_TOK_COMMA: @@ -1622,10 +1636,7 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * case DT_TOK_SIZEOF: { size_t size = dt_node_sizeof(dnp->dn_child); - - if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - + dnp->dn_reg = dt_regset_alloc(drp); assert(size != 0); dt_cg_setx(dlp, dnp->dn_reg, size); break; @@ -1650,8 +1661,7 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * assert(dxp->dx_ident->di_flags & DT_IDFLG_CGREG); assert(dxp->dx_ident->di_id != 0); - if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + dnp->dn_reg = dt_regset_alloc(drp); if (dxp->dx_arg == -1) { instr = DIF_INSTR_MOV( @@ -1735,8 +1745,9 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * } if (m.ctm_offset != 0) { - if ((reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + int reg; + + reg = dt_regset_alloc(drp); /* * If the offset is not aligned on a byte boundary, it @@ -1782,8 +1793,7 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * break; case DT_TOK_STRING: - if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + dnp->dn_reg = dt_regset_alloc(drp); assert(dnp->dn_kind == DT_NODE_STRING); stroff = dt_strtab_insert(yypcb->pcb_strtab, dnp->dn_string); @@ -1806,8 +1816,7 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * */ if (dnp->dn_kind == DT_NODE_VAR && (dnp->dn_ident->di_flags & DT_IDFLG_CGREG)) { - if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + dnp->dn_reg = dt_regset_alloc(drp); instr = DIF_INSTR_MOV(dnp->dn_ident->di_id, dnp->dn_reg); dt_irlist_append(dlp, @@ -1848,11 +1857,9 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * dt_cg_arglist(dnp->dn_ident, dnp->dn_args, dlp, drp); - if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - - instr = DIF_INSTR_CALL( - dnp->dn_ident->di_id, dnp->dn_reg); + dnp->dn_reg = dt_regset_alloc(drp); + instr = DIF_INSTR_CALL(dnp->dn_ident->di_id, + dnp->dn_reg); dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr)); @@ -1880,8 +1887,7 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * break; } - if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + dnp->dn_reg = dt_regset_alloc(drp); if (dnp->dn_ident->di_flags & DT_IDFLG_LOCAL) op = DIF_OP_LDLS; @@ -1911,9 +1917,7 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * dtrace_errmsg(dtp, dtrace_errno(dtp))); } - if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - + dnp->dn_reg = dt_regset_alloc(drp); dt_cg_xsetx(dlp, dnp->dn_ident, DT_LBL_NONE, dnp->dn_reg, sym.st_value); @@ -1933,9 +1937,7 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * break; case DT_TOK_INT: - if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - + dnp->dn_reg = dt_regset_alloc(drp); dt_cg_setx(dlp, dnp->dn_reg, dnp->dn_value); break; @@ -1950,6 +1952,7 @@ dt_cg(dt_pcb_t *pcb, dt_node_t *dnp) { dif_instr_t instr; dt_xlator_t *dxp; + dt_ident_t *idp; if (pcb->pcb_regs == NULL && (pcb->pcb_regs = dt_regset_create(pcb->pcb_hdl->dt_conf.dtc_difintregs)) == NULL) @@ -1976,9 +1979,9 @@ dt_cg(dt_pcb_t *pcb, dt_node_t *dnp) assert(pcb->pcb_dret == NULL); pcb->pcb_dret = dnp; - if (dt_node_is_dynamic(dnp)) { + if (dt_node_resolve(dnp, DT_IDENT_XLPTR) != NULL) { dnerror(dnp, D_CG_DYN, "expression cannot evaluate to result " - "of dynamic type\n"); + "of a translated pointer\n"); } /* @@ -1994,6 +1997,7 @@ dt_cg(dt_pcb_t *pcb, dt_node_t *dnp) } dt_cg_node(dnp, &pcb->pcb_ir, pcb->pcb_regs); + instr = DIF_INSTR_RET(dnp->dn_reg); dt_regset_free(pcb->pcb_regs, dnp->dn_reg); dt_irlist_append(&pcb->pcb_ir, dt_cg_node_alloc(DT_LBL_NONE, instr)); @@ -2003,4 +2007,7 @@ dt_cg(dt_pcb_t *pcb, dt_node_t *dnp) dxp->dx_ident->di_id = 0; dxp->dx_ident->di_flags &= ~DT_IDFLG_CGREG; } + + dt_regset_free(pcb->pcb_regs, 0); + dt_regset_assert_free(pcb->pcb_regs); } Modified: user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libdtrace/common/dt_dis.c ============================================================================== --- user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libdtrace/common/dt_dis.c Wed May 22 00:48:24 2013 (r250895) +++ user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libdtrace/common/dt_dis.c Wed May 22 00:54:57 2013 (r250896) @@ -19,12 +19,15 @@ * * CDDL HEADER END */ + /* * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" +/* + * Copyright (c) 2012 by Delphix. All rights reserved. + */ #include #include @@ -212,12 +215,22 @@ dt_dis_pushts(const dtrace_difo_t *dp, { static const char *const tnames[] = { "D type", "string" }; uint_t type = DIF_INSTR_TYPE(in); + const char *pad; - (void) fprintf(fp, "%-4s DT_TYPE(%u), %%r%u, %%r%u", - name, type, DIF_INSTR_R2(in), DIF_INSTR_RS(in)); + if (DIF_INSTR_OP(in) == DIF_OP_PUSHTV) { + (void) fprintf(fp, "%-4s DT_TYPE(%u), %%r%u", + name, type, DIF_INSTR_RS(in)); + pad = "\t\t"; + } else { + (void) fprintf(fp, "%-4s DT_TYPE(%u), %%r%u, %%r%u", + name, type, DIF_INSTR_R2(in), DIF_INSTR_RS(in)); + pad = "\t"; + } - if (type < sizeof (tnames) / sizeof (tnames[0])) - (void) fprintf(fp, "\t! DT_TYPE(%u) = %s", type, tnames[type]); + if (type < sizeof (tnames) / sizeof (tnames[0])) { + (void) fprintf(fp, "%s! DT_TYPE(%u) = %s", pad, + type, tnames[type]); + } } static void Modified: user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libdtrace/common/dt_error.c ============================================================================== --- user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libdtrace/common/dt_error.c Wed May 22 00:48:24 2013 (r250895) +++ user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libdtrace/common/dt_error.c Wed May 22 00:54:57 2013 (r250896) @@ -23,6 +23,10 @@ * Use is subject to license terms. */ +/* + * Copyright (c) 2012 by Delphix. All rights reserved. + */ + #include #include #include @@ -37,7 +41,6 @@ static const struct { { EDT_VERSREDUCED, "Requested version conflicts with earlier setting" }, { EDT_CTF, "Unexpected libctf error" }, { EDT_COMPILER, "Error in D program compilation" }, - { EDT_NOREG, "Insufficient registers to generate code" }, { EDT_NOTUPREG, "Insufficient tuple registers to generate code" }, { EDT_NOMEM, "Memory allocation failure" }, { EDT_INT2BIG, "Integer constant table limit exceeded" }, Modified: user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libdtrace/common/dt_errtags.h ============================================================================== --- user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libdtrace/common/dt_errtags.h Wed May 22 00:48:24 2013 (r250895) +++ user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libdtrace/common/dt_errtags.h Wed May 22 00:54:57 2013 (r250896) @@ -26,7 +26,7 @@ /* * Copyright (c) 2011, Joyent, Inc. All rights reserved. - * Copyright (c) 2011 by Delphix. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. */ #ifndef _DT_ERRTAGS_H @@ -260,6 +260,7 @@ typedef enum { D_LLQUANT_FACTOREVEN, /* llquantize() bad # steps/factor */ D_LLQUANT_FACTORSMALL, /* llquantize() magnitude too small */ D_LLQUANT_MAGTOOBIG, /* llquantize() high mag too large */ + D_NOREG, /* no available internal registers */ D_PRINTM_ADDR, /* printm() memref bad type */ D_PRINTM_SIZE, /* printm() size bad type */ D_PRINTT_ADDR, /* printt() typeref bad type */ Modified: user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libdtrace/common/dt_regset.c ============================================================================== --- user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libdtrace/common/dt_regset.c Wed May 22 00:48:24 2013 (r250895) +++ user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libdtrace/common/dt_regset.c Wed May 22 00:54:57 2013 (r250896) @@ -19,12 +19,15 @@ * * CDDL HEADER END */ + /* * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" +/* + * Copyright (c) 2012 by Delphix. All rights reserved. + */ #include #include @@ -33,18 +36,19 @@ #include #include +#include dt_regset_t * -dt_regset_create(ulong_t size) +dt_regset_create(ulong_t nregs) { - ulong_t n = BT_BITOUL(size + 1); /* + 1 for %r0 */ + ulong_t n = BT_BITOUL(nregs); dt_regset_t *drp = malloc(sizeof (dt_regset_t)); if (drp == NULL) return (NULL); drp->dr_bitmap = malloc(sizeof (ulong_t) * n); - drp->dr_size = size + 1; + drp->dr_size = nregs; if (drp->dr_bitmap == NULL) { dt_regset_destroy(drp); @@ -68,6 +72,25 @@ dt_regset_reset(dt_regset_t *drp) bzero(drp->dr_bitmap, sizeof (ulong_t) * BT_BITOUL(drp->dr_size)); } +void +dt_regset_assert_free(dt_regset_t *drp) +{ + int reg; + boolean_t fail = B_FALSE; + for (reg = 0; reg < drp->dr_size; reg++) { + if (BT_TEST(drp->dr_bitmap, reg) != 0) { + dt_dprintf("%%r%d was left allocated\n", reg); + fail = B_TRUE; + } + } + + /* + * We set this during dtest runs to check for register leaks. + */ + if (fail && getenv("DTRACE_DEBUG_REGSET") != NULL) + abort(); +} + int dt_regset_alloc(dt_regset_t *drp) { @@ -95,13 +118,15 @@ dt_regset_alloc(dt_regset_t *drp) } } - return (-1); /* no available registers */ + xyerror(D_NOREG, "Insufficient registers to generate code"); + /*NOTREACHED*/ + return (-1); } void dt_regset_free(dt_regset_t *drp, int reg) { - assert(reg > 0 && reg < drp->dr_size); + assert(reg >= 0 && reg < drp->dr_size); assert(BT_TEST(drp->dr_bitmap, reg) != 0); BT_CLEAR(drp->dr_bitmap, reg); } Modified: user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libdtrace/common/dt_regset.h ============================================================================== --- user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libdtrace/common/dt_regset.h Wed May 22 00:48:24 2013 (r250895) +++ user/adrian/net80211_tx/cddl/contrib/opensolaris/lib/libdtrace/common/dt_regset.h Wed May 22 00:54:57 2013 (r250896) @@ -19,16 +19,19 @@ * * CDDL HEADER END */ + /* * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ +/* + * Copyright (c) 2012 by Delphix. All rights reserved. + */ + #ifndef _DT_REGSET_H #define _DT_REGSET_H -#pragma ident "%Z%%M% %I% %E% SMI" - #include #ifdef __cplusplus @@ -45,6 +48,7 @@ extern void dt_regset_destroy(dt_regset_ extern void dt_regset_reset(dt_regset_t *); extern int dt_regset_alloc(dt_regset_t *); extern void dt_regset_free(dt_regset_t *, int); +extern void dt_regset_assert_free(dt_regset_t *); #ifdef __cplusplus } Modified: user/adrian/net80211_tx/contrib/bmake/ChangeLog ============================================================================== --- user/adrian/net80211_tx/contrib/bmake/ChangeLog Wed May 22 00:48:24 2013 (r250895) +++ user/adrian/net80211_tx/contrib/bmake/ChangeLog Wed May 22 00:54:57 2013 (r250896) @@ -1,3 +1,17 @@ +2013-05-20 Simon J. Gerraty + + * Makefile (MAKE_VERSION): 20130520 + generate manifest from component FILES rather than have to + update FILES when mk/FILES changes. + +2013-05-18 Simon J. Gerraty + + * Makefile (MAKE_VERSION): 20130518 + Merge with NetBSD make, pick up + o suff.c: don't skip all processsing for .PHONY targets + else wildcard srcs do not get expanded. + o var.c: expand name of variable to delete if necessary. + 2013-03-30 Simon J. Gerraty *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Wed May 22 00:58:05 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 095F4B10; Wed, 22 May 2013 00:58:05 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id DF925BEB; Wed, 22 May 2013 00:58:04 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r4M0w4BW041042; Wed, 22 May 2013 00:58:04 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r4M0w48H041037; Wed, 22 May 2013 00:58:04 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201305220058.r4M0w48H041037@svn.freebsd.org> From: Adrian Chadd Date: Wed, 22 May 2013 00:58:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250898 - user/adrian/net80211_tx/sys/dev/ath X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 22 May 2013 00:58:05 -0000 Author: adrian Date: Wed May 22 00:58:03 2013 New Revision: 250898 URL: http://svnweb.freebsd.org/changeset/base/250898 Log: Re-sync against -HEAD. Modified: user/adrian/net80211_tx/sys/dev/ath/if_ath.c user/adrian/net80211_tx/sys/dev/ath/if_ath_sysctl.c user/adrian/net80211_tx/sys/dev/ath/if_ath_tx.c user/adrian/net80211_tx/sys/dev/ath/if_athvar.h Modified: user/adrian/net80211_tx/sys/dev/ath/if_ath.c ============================================================================== --- user/adrian/net80211_tx/sys/dev/ath/if_ath.c Wed May 22 00:57:22 2013 (r250897) +++ user/adrian/net80211_tx/sys/dev/ath/if_ath.c Wed May 22 00:58:03 2013 (r250898) @@ -689,7 +689,6 @@ ath_attach(u_int16_t devid, struct ath_s * otherwise) to be transmitted. */ sc->sc_txq_data_minfree = 10; - /* * Leave this as default to maintain legacy behaviour. * Shortening the cabq/mcastq may end up causing some @@ -4020,9 +4019,6 @@ ath_tx_processq(struct ath_softc *sc, st #endif /* IEEE80211_SUPPORT_SUPERG */ int nacked; HAL_STATUS status; -#ifdef IEEE80211_SUPPORT_TDMA - int qbusy; -#endif /* IEEE80211_SUPPORT_TDMA */ DPRINTF(sc, ATH_DEBUG_TX_PROC, "%s: tx queue %u head %p link %p\n", __func__, txq->axq_qnum, @@ -4149,41 +4145,13 @@ ath_tx_processq(struct ath_softc *sc, st ieee80211_ff_flush(ic, txq->axq_ac); #endif - ATH_TX_LOCK(sc); - - /* - * Check whether the queue is currently waiting for - * a buffer push and if so, push it. - * - * Since we now limit how deep the TXQ can get, - * we may reach a point where we can't make further - * progress even though there's frames in the - * queue to be scheduled. If we hit this highly - * unlikely case, let's print out a warning and - * restart transmit. - */ -#ifdef IEEE80211_SUPPORT_TDMA - qbusy = ath_hal_txqenabled(ah, txq->axq_qnum); - /* - * If the queue is no longer busy yet there's a - * pending push, make sure it's done. - */ - if ((txq->axq_flags & ATH_TXQ_PUTPENDING) && !qbusy) { - device_printf(sc->sc_dev, - "%s: TXQ %d: PUTPENDING!\n", - __func__, - txq->axq_qnum); - ath_tx_push_pending(sc, txq); - } -#endif - /* Kick the software TXQ scheduler */ if (dosched) { + ATH_TX_LOCK(sc); ath_txq_sched(sc, txq); + ATH_TX_UNLOCK(sc); } - ATH_TX_UNLOCK(sc); - ATH_KTR(sc, ATH_KTR_TXCOMP, 1, "ath_tx_processq: txq=%u: done", txq->axq_qnum); @@ -6275,13 +6243,6 @@ ath_tx_update_tim(struct ath_softc *sc, ATH_TX_LOCK_ASSERT(sc); if (enable) { - /* - * Don't bother grabbing the lock unless the queue is not - * empty. - */ - if (an->an_swq_depth == 0) - return; - if (an->an_is_powersave && an->an_tim_set == 0 && an->an_swq_depth != 0) { @@ -6294,6 +6255,12 @@ ath_tx_update_tim(struct ath_softc *sc, (void) avp->av_set_tim(ni, 1); } } else { + /* + * Don't bother grabbing the lock unless the queue is empty. + */ + if (&an->an_swq_depth != 0) + return; + if (an->an_is_powersave && an->an_stack_psq == 0 && an->an_tim_set == 1 && Modified: user/adrian/net80211_tx/sys/dev/ath/if_ath_sysctl.c ============================================================================== --- user/adrian/net80211_tx/sys/dev/ath/if_ath_sysctl.c Wed May 22 00:57:22 2013 (r250897) +++ user/adrian/net80211_tx/sys/dev/ath/if_ath_sysctl.c Wed May 22 00:58:03 2013 (r250898) @@ -760,11 +760,6 @@ ath_sysctlattach(struct ath_softc *sc) &sc->sc_txq_node_maxdepth, 0, "Maximum buffer depth for a single node"); - SYSCTL_ADD_INT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, - "sc_txq_node_psq_maxdepth", CTLFLAG_RW, - &sc->sc_txq_node_psq_maxdepth, 0, - "Maximum queue depth for a node in powersave"); - #if 0 SYSCTL_ADD_INT(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, "cabq_enable", CTLFLAG_RW, @@ -1084,9 +1079,6 @@ ath_sysctl_stats_attach(struct ath_softc &sc->sc_stats.ast_rx_keymiss, 0, ""); SYSCTL_ADD_UINT(ctx, child, OID_AUTO, "ast_tx_swfiltered", CTLFLAG_RD, &sc->sc_stats.ast_tx_swfiltered, 0, ""); - SYSCTL_ADD_UINT(ctx, child, OID_AUTO, "ast_tx_node_psq_overflow", - CTLFLAG_RD, &sc->sc_stats.ast_tx_node_psq_overflow, 0, - "Number of frames dropped because the node was in powersave"); SYSCTL_ADD_UINT(ctx, child, OID_AUTO, "ast_rx_stbc", CTLFLAG_RD, &sc->sc_stats.ast_rx_stbc, 0, "Number of STBC frames received"); Modified: user/adrian/net80211_tx/sys/dev/ath/if_ath_tx.c ============================================================================== --- user/adrian/net80211_tx/sys/dev/ath/if_ath_tx.c Wed May 22 00:57:22 2013 (r250897) +++ user/adrian/net80211_tx/sys/dev/ath/if_ath_tx.c Wed May 22 00:58:03 2013 (r250898) @@ -736,43 +736,6 @@ ath_tx_handoff_mcast(struct ath_softc *s ATH_TXQ_UNLOCK(txq); } -void -ath_tx_push_pending(struct ath_softc *sc, struct ath_txq *txq) -{ - struct ath_hal *ah = sc->sc_ah; - struct ath_buf *bf; - - /* - * The q was busy when we previously tried - * to write the address of the first buffer - * in the chain. Since it's not busy now - * handle this chore. We are certain the - * buffer at the front is the right one since - * axq_link is NULL only when the buffer list - * is/was empty. - */ - bf = TAILQ_FIRST(&txq->axq_q); - if (bf == NULL) { - device_printf(sc->sc_dev, - "%s: TXQ %d: called, but no buf?\n", - __func__, - txq->axq_qnum); - return; - } - ath_hal_puttxbuf(ah, txq->axq_qnum, bf->bf_daddr); - txq->axq_flags &= ~ATH_TXQ_PUTPENDING; - DPRINTF(sc, ATH_DEBUG_TDMA | ATH_DEBUG_XMIT, - "%s: Q%u restarted\n", __func__, - txq->axq_qnum); - ATH_KTR(sc, ATH_KTR_TX, 4, - "ath_tx_handoff: txq[%d] restarted, bf=%p " - "daddr=%p ds=%p", - txq->axq_qnum, - bf, - (caddr_t)bf->bf_daddr, - bf->bf_desc); -} - /* * Hand-off packet to a hardware queue. */ @@ -3808,12 +3771,10 @@ ath_tx_tid_drain_print(struct ath_softc tid->baw_tail, tap == NULL ? -1 : tap->txa_start, ni->ni_txseqs[tid->tid]); -#if 0 /* XXX Dump the frame, see what it is? */ ieee80211_dump_pkt(ni->ni_ic, mtod(bf->bf_m, const uint8_t *), bf->bf_m->m_len, 0, -1); -#endif } /* @@ -3854,7 +3815,7 @@ ath_tx_tid_drain(struct ath_softc *sc, s if (t == 0) { ath_tx_tid_drain_print(sc, an, "norm", tid, bf); -// t = 1; + t = 1; } ATH_TID_REMOVE(tid, bf, bf_list); @@ -3870,7 +3831,7 @@ ath_tx_tid_drain(struct ath_softc *sc, s if (t == 0) { ath_tx_tid_drain_print(sc, an, "filt", tid, bf); -// t = 1; + t = 1; } ATH_TID_FILT_REMOVE(tid, bf, bf_list); @@ -5269,6 +5230,7 @@ ath_tx_tid_hw_queue_aggr(struct ath_soft ath_tx_rate_fill_rcflags(sc, bf); ath_tx_setds(sc, bf); ath_hal_clr11n_aggr(sc->sc_ah, bf->bf_desc); + sc->sc_aggr_stats.aggr_nonbaw_pkt++; /* Queue the packet; continue */ @@ -5367,6 +5329,7 @@ ath_tx_tid_hw_queue_aggr(struct ath_soft * already points to the rest in the chain. */ ath_tx_setds_11n(sc, bf); + } queuepkt: /* Set completion handler, multi-frame aggregate or not */ Modified: user/adrian/net80211_tx/sys/dev/ath/if_athvar.h ============================================================================== --- user/adrian/net80211_tx/sys/dev/ath/if_athvar.h Wed May 22 00:57:22 2013 (r250897) +++ user/adrian/net80211_tx/sys/dev/ath/if_athvar.h Wed May 22 00:58:03 2013 (r250898) @@ -386,6 +386,7 @@ struct ath_txq { #define ATH_TXQ_UNLOCK_ASSERT(_tq) mtx_assert(&(_tq)->axq_lock, \ MA_NOTOWNED) + #define ATH_NODE_LOCK(_an) mtx_lock(&(_an)->an_mtx) #define ATH_NODE_UNLOCK(_an) mtx_unlock(&(_an)->an_mtx) #define ATH_NODE_LOCK_ASSERT(_an) mtx_assert(&(_an)->an_mtx, MA_OWNED) From owner-svn-src-user@FreeBSD.ORG Wed May 22 05:43:16 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 87C781FD; Wed, 22 May 2013 05:43:16 +0000 (UTC) (envelope-from adrian@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 7A1259FF; Wed, 22 May 2013 05:43:16 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r4M5hGr9042184; Wed, 22 May 2013 05:43:16 GMT (envelope-from adrian@svn.freebsd.org) Received: (from adrian@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r4M5hFJo042176; Wed, 22 May 2013 05:43:15 GMT (envelope-from adrian@svn.freebsd.org) Message-Id: <201305220543.r4M5hFJo042176@svn.freebsd.org> From: Adrian Chadd Date: Wed, 22 May 2013 05:43:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250904 - user/adrian/net80211_tx/sys/net80211 X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 22 May 2013 05:43:16 -0000 Author: adrian Date: Wed May 22 05:43:14 2013 New Revision: 250904 URL: http://svnweb.freebsd.org/changeset/base/250904 Log: First cut at deferred transmit for the VAP path. The aim here is to eventually do a hybrid direct dispatch if there's no transmitter, or a deferred dispatch if the transmitter is currently busy. But for now this will just have to do. It'll add a little more latency on top of things but it'll at least make things a bit more sane. * Create a new vap task for transmit * Add transmit and qflush for the vap interface; kill the if_start() version of the method. * The transmit/qflush routines still use the vap ifp if_snd queue, but they themselves do the packet setup, enqueue and dequeue/dispatch. Things are nicely separated enough to hopefully make it easier for me to figure out a better, flexible queue+dispatch framework. What's next: * Create a different taskqueue, one for each VAP, that handles transmit. Sticking it in the ic queue unfortunately serialises the VAP transmit with the ic transmit and stops multiple, overlapping VAPs from transmitting. This makes things much easier but it also hides a bunch of potential race conditions. So, let's break things out into a race-prone setup which somewhat matches the existing scenario in -HEAD - indepedent VAP and driver transmit threads. * .. it may be that instead of doing per-VAP methods, we do a per-IC transmit taskqueue but create a separate one just for transmit. That way if the driver wishes to serialise its own software queue mechanism with the net80211 transmit path - eg because it wishes to allocate its own sequence numbers w/ A-MPDU - then the driver code can just keep the global ic vap transmit lock held, rather than trying to keep some per-VAP transmit lock held. * .. and it's still not clear how to setup the TX, node (comlock) and driver locking in a way that isn't ugly and/or cause LORs. * Push frames from the raw transmit path into the VAP path directly, rather than doing a call to ic_raw_xmit() from here. Then the dispatch task can decide whether to call the vap transmit method or the device ic_raw_xmit method. Serialising both of these calls together will go a long way towards ensuring the driver state is kept sane. * Figure out how to shoehorn management traffic frame generation into this. Right now it grabs the TX path lock and then sets up the frame state independent of the VAP transmit path. It then calls ic_raw_xmit(). There's LOR problems doing it this way; it would just plain be nicer if we could setup these frames in the caller context and then assign 802.11 state (eg sequence number, tag with power save info, feed into FF/AMSDU/powersave/etc) state from inside the serialised VAP transmit path. Anyway, still lots to do. Modified: user/adrian/net80211_tx/sys/net80211/ieee80211.c user/adrian/net80211_tx/sys/net80211/ieee80211_freebsd.c user/adrian/net80211_tx/sys/net80211/ieee80211_output.c user/adrian/net80211_tx/sys/net80211/ieee80211_proto.c user/adrian/net80211_tx/sys/net80211/ieee80211_proto.h user/adrian/net80211_tx/sys/net80211/ieee80211_var.h Modified: user/adrian/net80211_tx/sys/net80211/ieee80211.c ============================================================================== --- user/adrian/net80211_tx/sys/net80211/ieee80211.c Wed May 22 05:21:19 2013 (r250903) +++ user/adrian/net80211_tx/sys/net80211/ieee80211.c Wed May 22 05:43:14 2013 (r250904) @@ -433,7 +433,8 @@ ieee80211_vap_setup(struct ieee80211com if_initname(ifp, name, unit); ifp->if_softc = vap; /* back pointer */ ifp->if_flags = IFF_SIMPLEX | IFF_BROADCAST | IFF_MULTICAST; - ifp->if_start = ieee80211_start; + ifp->if_transmit = ieee80211_vap_if_transmit; + ifp->if_qflush = ieee80211_vap_if_qflush; ifp->if_ioctl = ieee80211_ioctl; ifp->if_init = ieee80211_init; /* NB: input+output filled in by ether_ifattach */ @@ -628,6 +629,7 @@ ieee80211_vap_detach(struct ieee80211vap */ ieee80211_draintask(ic, &vap->iv_nstate_task); ieee80211_draintask(ic, &vap->iv_swbmiss_task); + ieee80211_draintask(ic, &vap->iv_tx_task); /* XXX band-aid until ifnet handles this for us */ taskqueue_drain(taskqueue_swi, &ifp->if_linktask); Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_freebsd.c ============================================================================== --- user/adrian/net80211_tx/sys/net80211/ieee80211_freebsd.c Wed May 22 05:21:19 2013 (r250903) +++ user/adrian/net80211_tx/sys/net80211/ieee80211_freebsd.c Wed May 22 05:43:14 2013 (r250904) @@ -809,7 +809,7 @@ static void bpf_track(void *arg, struct ifnet *ifp, int dlt, int attach) { /* NB: identify vap's by if_start */ - if (dlt == DLT_IEEE802_11_RADIO && ifp->if_start == ieee80211_start) { + if (dlt == DLT_IEEE802_11_RADIO && ifp->if_transmit == ieee80211_vap_if_transmit) { struct ieee80211vap *vap = ifp->if_softc; /* * Track bpf radiotap listener state. We mark the vap Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_output.c ============================================================================== --- user/adrian/net80211_tx/sys/net80211/ieee80211_output.c Wed May 22 05:21:19 2013 (r250903) +++ user/adrian/net80211_tx/sys/net80211/ieee80211_output.c Wed May 22 05:43:14 2013 (r250904) @@ -120,7 +120,7 @@ doprint(struct ieee80211vap *vap, int su * do this first. */ static int -ieee80211_start_pkt(struct ieee80211vap *vap, struct mbuf *m) +ieee80211_vap_start_pkt(struct ieee80211vap *vap, struct mbuf *m) { #define IS_DWDS(vap) \ (vap->iv_opmode == IEEE80211_M_WDS && \ @@ -359,16 +359,90 @@ ieee80211_start_pkt(struct ieee80211vap } /* - * Start method for vap's. All packets from the stack come - * through here. We handle common processing of the packets - * before dispatching them to the underlying device. + * Entry point for transmission for all VAPs. + * + * This sanitises the mbuf flags and queues it into the transmit + * queue. */ -void -ieee80211_start(struct ifnet *ifp) +int +ieee80211_vap_if_transmit(struct ifnet *ifp, struct mbuf *m) { struct ieee80211vap *vap = ifp->if_softc; struct ieee80211com *ic = vap->iv_ic; struct ifnet *parent = ic->ic_ifp; + + /* NB: parent must be up and running */ + if (!IFNET_IS_UP_RUNNING(parent)) { + IEEE80211_DPRINTF(vap, IEEE80211_MSG_OUTPUT, + "%s: ignore queue, parent %s not up+running\n", + __func__, parent->if_xname); + /* XXX stat */ + m_free(m); + return (EINVAL);/* XXX errno? */ + } + + IF_LOCK(&ifp->if_snd); + + /* Enforce queue limits */ + if (_IF_QFULL(&ifp->if_snd)) { + IF_UNLOCK(&ifp->if_snd); + m_free(m); + return (ENOBUFS); /* XXX errno? */ + } + + /* + * Sanitize mbuf flags for net80211 use. We cannot + * clear M_PWR_SAV or M_MORE_DATA because these may + * be set for frames that are re-submitted from the + * power save queue. + * + * NB: This must be done before ieee80211_classify as + * it marks EAPOL in frames with M_EAPOL. + * + * XXX TODO: for VAP frames coming in from the stack + * itself, we should just inject them directly into + * the vap rather than via ieee80211_vap_transmit(). + * Yes, they still need to go into the ifnet queue + * and be dequeued, but we can skip this particular + * check as they're already "in" the net80211 layer. + */ + m->m_flags &= ~(M_80211_TX - M_PWR_SAV - M_MORE_DATA); + _IF_ENQUEUE(&ifp->if_snd, m); + IF_UNLOCK(&ifp->if_snd); + + /* Schedule the deferred TX task */ + ieee80211_runtask(ic, &vap->iv_tx_task); + + return (0); +} + +void +ieee80211_vap_if_qflush(struct ifnet *ifp) +{ + struct mbuf *m; + + IF_LOCK(&ifp->if_snd); + do { + _IF_DEQUEUE(&ifp->if_snd, m); + if (m != NULL) + m_free(m); + } while (m != NULL); + IF_UNLOCK(&ifp->if_snd); +} + +/* + * Do deferred VAP transmit. + * + * This walks the ifnet send queue and dispatches whichever frames + * require it. + */ +void +ieee80211_vap_tx_task(void *arg, int npending) +{ + struct ieee80211vap *vap = (struct ieee80211vap *) arg; + struct ifnet *ifp = vap->iv_ifp; + struct ieee80211com *ic = vap->iv_ic; + struct ifnet *parent = ic->ic_ifp; struct mbuf *m; /* NB: parent must be up and running */ @@ -409,24 +483,20 @@ ieee80211_start(struct ifnet *ifp) IEEE80211_UNLOCK(ic); } + /* + * Dispatch frames to the VAP packet processing routine. + * + * Since this is the only place (in theory!) which is actually + * dispatching frames for this VAP, there shouldn't be any races + * between dispatch threads. So it's OK to not hold a lock across + * the dequeue. If multiple places could dequeue+dispatch we'd + * need a lock to ensure they were dispatched in the correct order + */ for (;;) { IFQ_DEQUEUE(&ifp->if_snd, m); if (m == NULL) break; - /* - * Sanitize mbuf flags for net80211 use. We cannot - * clear M_PWR_SAV or M_MORE_DATA because these may - * be set for frames that are re-submitted from the - * power save queue. - * - * NB: This must be done before ieee80211_classify as - * it marks EAPOL in frames with M_EAPOL. - */ - m->m_flags &= ~(M_80211_TX - M_PWR_SAV - M_MORE_DATA); - /* - * Bump to the packet transmission path. - */ - (void) ieee80211_start_pkt(vap, m); + (void) ieee80211_vap_start_pkt(vap, m); /* mbuf is consumed here */ } } Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_proto.c ============================================================================== --- user/adrian/net80211_tx/sys/net80211/ieee80211_proto.c Wed May 22 05:21:19 2013 (r250903) +++ user/adrian/net80211_tx/sys/net80211/ieee80211_proto.c Wed May 22 05:43:14 2013 (r250904) @@ -199,6 +199,7 @@ ieee80211_proto_vattach(struct ieee80211 callout_init(&vap->iv_mgtsend, CALLOUT_MPSAFE); TASK_INIT(&vap->iv_nstate_task, 0, ieee80211_newstate_cb, vap); TASK_INIT(&vap->iv_swbmiss_task, 0, beacon_swmiss, vap); + TASK_INIT(&vap->iv_tx_task, 0, ieee80211_vap_tx_task, vap); /* * Install default tx rate handling: no fixed rate, lowest * supported rate for mgmt and multicast frames. Default @@ -1792,7 +1793,7 @@ ieee80211_newstate_cb(void *xvap, int np * XXX Kick-start a VAP queue - this should be a method, * not if_start()! */ - if_start(vap->iv_ifp); + ieee80211_runtask(ic, &vap->iv_tx_task); /* bring up any vaps waiting on us */ wakeupwaiting(vap); Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_proto.h ============================================================================== --- user/adrian/net80211_tx/sys/net80211/ieee80211_proto.h Wed May 22 05:21:19 2013 (r250903) +++ user/adrian/net80211_tx/sys/net80211/ieee80211_proto.h Wed May 22 05:43:14 2013 (r250904) @@ -108,7 +108,9 @@ int ieee80211_raw_output(struct ieee8021 void ieee80211_send_setup(struct ieee80211_node *, struct mbuf *, int, int, const uint8_t [IEEE80211_ADDR_LEN], const uint8_t [IEEE80211_ADDR_LEN], const uint8_t [IEEE80211_ADDR_LEN]); -void ieee80211_start(struct ifnet *ifp); +int ieee80211_vap_if_transmit(struct ifnet *ifp, struct mbuf *m); +void ieee80211_vap_if_qflush(struct ifnet *ifp); +void ieee80211_vap_tx_task(void *, int); int ieee80211_send_nulldata(struct ieee80211_node *); int ieee80211_classify(struct ieee80211_node *, struct mbuf *m); struct mbuf *ieee80211_mbuf_adjust(struct ieee80211vap *, int, Modified: user/adrian/net80211_tx/sys/net80211/ieee80211_var.h ============================================================================== --- user/adrian/net80211_tx/sys/net80211/ieee80211_var.h Wed May 22 05:21:19 2013 (r250903) +++ user/adrian/net80211_tx/sys/net80211/ieee80211_var.h Wed May 22 05:43:14 2013 (r250904) @@ -362,6 +362,7 @@ struct ieee80211vap { int iv_nstate_arg; /* pending state arg */ struct task iv_nstate_task; /* deferred state processing */ struct task iv_swbmiss_task;/* deferred iv_bmiss call */ + struct task iv_tx_task; /* VAP deferred TX task */ struct callout iv_mgtsend; /* mgmt frame response timer */ /* inactivity timer settings */ int iv_inact_init; /* setting for new station */ From owner-svn-src-user@FreeBSD.ORG Wed May 22 12:59:39 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id AF71E9DF; Wed, 22 May 2013 12:59:39 +0000 (UTC) (envelope-from pho@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 885D4DF2; Wed, 22 May 2013 12:59:39 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r4MCxdpI093502; Wed, 22 May 2013 12:59:39 GMT (envelope-from pho@svn.freebsd.org) Received: (from pho@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r4MCxdts093501; Wed, 22 May 2013 12:59:39 GMT (envelope-from pho@svn.freebsd.org) Message-Id: <201305221259.r4MCxdts093501@svn.freebsd.org> From: Peter Holm Date: Wed, 22 May 2013 12:59:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250908 - user/pho/stress2/misc X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 22 May 2013 12:59:39 -0000 Author: pho Date: Wed May 22 12:59:39 2013 New Revision: 250908 URL: http://svnweb.freebsd.org/changeset/base/250908 Log: Added a nullfs regression test. Added: user/pho/stress2/misc/nullfs15.sh (contents, props changed) Added: user/pho/stress2/misc/nullfs15.sh ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/pho/stress2/misc/nullfs15.sh Wed May 22 12:59:39 2013 (r250908) @@ -0,0 +1,66 @@ +#!/bin/sh + +# +# Copyright (c) 2013 Peter Holm +# 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$ +# + +[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 + +. ../default.cfg + +# panic: lockmgr still held. Fixed in r250852. +# Test scenario by antoine@ + +nullfsmp=${mntpoint}2 +mount | grep -q "$nullfsmp " && umount $nullfsmp + +[ -d $nullfsmp ] || mkdir $nullfsmp +mount | grep "$mntpoint " | grep -q /dev/md && umount -f $mntpoint +mdconfig -l | grep -q md$mdstart && mdconfig -d -u $mdstart +mdconfig -a -t swap -s 1g -u $mdstart +bsdlabel -w md$mdstart auto +newfs -U md${mdstart}$part > /dev/null +mount /dev/md${mdstart}$part $mntpoint +mount -t nullfs $mntpoint $nullfsmp + +mkdir ${mntpoint}/.new_packages ${nullfsmp}/new_packages +mount -t nullfs ${mntpoint}/.new_packages ${nullfsmp}/new_packages +dd if=/dev/zero of=${nullfsmp}/new_packages/bar count=20000 2>&1 | + egrep -v "records|transferred" +mv ${mntpoint}/.new_packages/bar /tmp/ +rm -rf ${mntpoint}/.new_packages +umount -f ${nullfsmp}/new_packages + +while mount | grep -q "$nullfsmp "; do + umount $nullfsmp || sleep 1 +done + +while mount | grep -q "$mntpoint "; do + umount $mntpoint || sleep 1 +done +mdconfig -d -u $mdstart +rm -f /tmp/bar From owner-svn-src-user@FreeBSD.ORG Wed May 22 15:15:12 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 34D4A622; Wed, 22 May 2013 15:15:12 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 1DACAC35; Wed, 22 May 2013 15:15:12 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r4MFFCnZ042226; Wed, 22 May 2013 15:15:12 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r4MFF62E042188; Wed, 22 May 2013 15:15:06 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201305221515.r4MFF62E042188@svn.freebsd.org> From: Attilio Rao Date: Wed, 22 May 2013 15:15:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250910 - in user/attilio/vmobj-readlock/sys: amd64/amd64 amd64/include arm/arm arm/ti cam cam/ata cam/scsi compat/freebsd32 conf contrib/dev/acpica contrib/dev/acpica/common contrib/de... X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 22 May 2013 15:15:12 -0000 Author: attilio Date: Wed May 22 15:15:05 2013 New Revision: 250910 URL: http://svnweb.freebsd.org/changeset/base/250910 Log: MFC Added: user/attilio/vmobj-readlock/sys/amd64/include/fdt.h - copied unchanged from r250886, user/attilio/vmcontention/sys/amd64/include/fdt.h user/attilio/vmobj-readlock/sys/amd64/include/ofw_machdep.h - copied unchanged from r250886, user/attilio/vmcontention/sys/amd64/include/ofw_machdep.h user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/asloptions.c - copied unchanged from r250886, user/attilio/vmcontention/sys/contrib/dev/acpica/compiler/asloptions.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/tables/tbprint.c - copied unchanged from r250886, user/attilio/vmcontention/sys/contrib/dev/acpica/components/tables/tbprint.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/utilities/utbuffer.c - copied unchanged from r250886, user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/utbuffer.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/utilities/uterror.c - copied unchanged from r250886, user/attilio/vmcontention/sys/contrib/dev/acpica/components/utilities/uterror.c user/attilio/vmobj-readlock/sys/dev/fdt/fdt_x86.c - copied unchanged from r250886, user/attilio/vmcontention/sys/dev/fdt/fdt_x86.c user/attilio/vmobj-readlock/sys/dev/uart/uart_cpu_fdt.c - copied unchanged from r250886, user/attilio/vmcontention/sys/dev/uart/uart_cpu_fdt.c user/attilio/vmobj-readlock/sys/i386/include/fdt.h - copied unchanged from r250886, user/attilio/vmcontention/sys/i386/include/fdt.h user/attilio/vmobj-readlock/sys/i386/include/ofw_machdep.h - copied unchanged from r250886, user/attilio/vmcontention/sys/i386/include/ofw_machdep.h user/attilio/vmobj-readlock/sys/x86/include/fdt.h - copied unchanged from r250886, user/attilio/vmcontention/sys/x86/include/fdt.h user/attilio/vmobj-readlock/sys/x86/include/ofw_machdep.h - copied unchanged from r250886, user/attilio/vmcontention/sys/x86/include/ofw_machdep.h user/attilio/vmobj-readlock/sys/x86/x86/fdt_machdep.c - copied unchanged from r250886, user/attilio/vmcontention/sys/x86/x86/fdt_machdep.c Modified: user/attilio/vmobj-readlock/sys/amd64/amd64/db_trace.c user/attilio/vmobj-readlock/sys/amd64/amd64/machdep.c user/attilio/vmobj-readlock/sys/amd64/amd64/mp_machdep.c user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c user/attilio/vmobj-readlock/sys/amd64/include/md_var.h user/attilio/vmobj-readlock/sys/amd64/include/metadata.h user/attilio/vmobj-readlock/sys/amd64/include/pcpu.h user/attilio/vmobj-readlock/sys/arm/arm/pmap-v6.c user/attilio/vmobj-readlock/sys/arm/arm/pmap.c user/attilio/vmobj-readlock/sys/arm/arm/stack_machdep.c user/attilio/vmobj-readlock/sys/arm/ti/ti_mmchs.c user/attilio/vmobj-readlock/sys/cam/ata/ata_da.c user/attilio/vmobj-readlock/sys/cam/cam_xpt.c user/attilio/vmobj-readlock/sys/cam/cam_xpt_periph.h user/attilio/vmobj-readlock/sys/cam/scsi/scsi_cd.c user/attilio/vmobj-readlock/sys/cam/scsi/scsi_ch.c user/attilio/vmobj-readlock/sys/cam/scsi/scsi_da.c user/attilio/vmobj-readlock/sys/cam/scsi/scsi_sa.c user/attilio/vmobj-readlock/sys/compat/freebsd32/freebsd32_misc.c user/attilio/vmobj-readlock/sys/compat/freebsd32/freebsd32_proto.h user/attilio/vmobj-readlock/sys/compat/freebsd32/freebsd32_syscall.h user/attilio/vmobj-readlock/sys/compat/freebsd32/freebsd32_syscalls.c user/attilio/vmobj-readlock/sys/compat/freebsd32/freebsd32_sysent.c user/attilio/vmobj-readlock/sys/compat/freebsd32/freebsd32_systrace_args.c user/attilio/vmobj-readlock/sys/compat/freebsd32/syscalls.master user/attilio/vmobj-readlock/sys/conf/Makefile.amd64 user/attilio/vmobj-readlock/sys/conf/Makefile.i386 user/attilio/vmobj-readlock/sys/conf/files user/attilio/vmobj-readlock/sys/conf/files.amd64 user/attilio/vmobj-readlock/sys/conf/files.arm user/attilio/vmobj-readlock/sys/conf/files.i386 user/attilio/vmobj-readlock/sys/conf/files.mips user/attilio/vmobj-readlock/sys/conf/files.powerpc user/attilio/vmobj-readlock/sys/conf/kern.mk user/attilio/vmobj-readlock/sys/contrib/dev/acpica/acpica_prep.sh user/attilio/vmobj-readlock/sys/contrib/dev/acpica/changes.txt (contents, props changed) user/attilio/vmobj-readlock/sys/contrib/dev/acpica/common/adisasm.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/common/adwalk.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/common/dmextern.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/common/dmrestag.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/common/dmtable.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/common/dmtbdump.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/common/getopt.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/aslanalyze.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/aslbtypes.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/aslcodegen.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/aslcompile.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/aslcompiler.h user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/aslerror.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/aslfold.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/aslglobal.h user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/aslhex.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/asllength.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/asllisting.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/asllistsup.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/aslload.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/asllookup.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/aslmain.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/aslmessages.h user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/aslmethod.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/aslnamesp.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/asloffset.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/aslopcodes.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/asloperands.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/aslpredef.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/aslresource.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/aslrestype1i.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/aslrestype2s.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/aslstartup.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/aslsupport.l user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/asltransform.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/asltree.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/asltypes.h user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/aslutils.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/aslwalks.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/aslxref.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/dtexpress.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/dtfield.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/dtio.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/dtsubtable.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/dttable.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/dtutils.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/prscan.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/debugger/dbcmds.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/debugger/dbconvert.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/debugger/dbdisply.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/debugger/dbexec.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/debugger/dbhistry.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/debugger/dbinput.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/debugger/dbmethod.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/debugger/dbnames.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/debugger/dbstats.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/debugger/dbutils.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/debugger/dbxface.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/disassembler/dmbuffer.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/disassembler/dmdeferred.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/disassembler/dmnames.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/disassembler/dmobject.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/disassembler/dmopcode.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/disassembler/dmresrc.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/disassembler/dmresrcl.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/disassembler/dmresrcl2.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/disassembler/dmwalk.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/dispatcher/dscontrol.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/dispatcher/dsfield.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/dispatcher/dsinit.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/dispatcher/dsmthdat.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/dispatcher/dsobject.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/dispatcher/dsopcode.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/dispatcher/dsutils.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/dispatcher/dswexec.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/dispatcher/dswload.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/dispatcher/dswload2.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/events/evglock.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/events/evgpe.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/events/evgpeblk.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/events/evgpeinit.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/events/evhandler.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/events/evmisc.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/events/evrgnini.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/events/evxfgpe.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/events/evxfregn.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/executer/exconfig.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/executer/exconvrt.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/executer/excreate.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/executer/exdebug.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/executer/exdump.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/executer/exfield.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/executer/exfldio.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/executer/exmisc.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/executer/exnames.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/executer/exoparg1.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/executer/exoparg2.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/executer/exoparg3.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/executer/exoparg6.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/executer/exprep.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/executer/exregion.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/executer/exresnte.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/executer/exresolv.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/executer/exresop.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/executer/exstore.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/executer/exstoren.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/hardware/hwacpi.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/hardware/hwgpe.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/hardware/hwregs.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/hardware/hwxface.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/hardware/hwxfsleep.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/namespace/nsaccess.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/namespace/nsconvert.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/namespace/nsdump.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/namespace/nsinit.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/namespace/nspredef.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/namespace/nsprepkg.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/namespace/nsrepair.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/namespace/nsrepair2.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/namespace/nsutils.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/namespace/nsxfeval.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/parser/psargs.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/parser/psloop.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/parser/psobject.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/parser/psparse.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/parser/pstree.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/resources/rscalc.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/resources/rscreate.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/resources/rsdump.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/resources/rsmisc.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/resources/rsutils.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/resources/rsxface.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/tables/tbinstal.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/tables/tbutils.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/tables/tbxfload.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/utilities/utcopy.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/utilities/utdebug.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/utilities/utdelete.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/utilities/uteval.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/utilities/utexcep.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/utilities/utids.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/utilities/utmisc.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/utilities/utobject.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/utilities/utstring.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/utilities/uttrack.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/utilities/utxferror.c user/attilio/vmobj-readlock/sys/contrib/dev/acpica/include/acapps.h user/attilio/vmobj-readlock/sys/contrib/dev/acpica/include/acglobal.h user/attilio/vmobj-readlock/sys/contrib/dev/acpica/include/acpiosxf.h user/attilio/vmobj-readlock/sys/contrib/dev/acpica/include/acpixf.h user/attilio/vmobj-readlock/sys/contrib/dev/acpica/include/actypes.h user/attilio/vmobj-readlock/sys/contrib/dev/acpica/include/acutils.h user/attilio/vmobj-readlock/sys/contrib/dev/acpica/include/platform/acenv.h user/attilio/vmobj-readlock/sys/contrib/dev/acpica/os_specific/service_layers/osunixxf.c user/attilio/vmobj-readlock/sys/dev/acpica/Osd/OsdTable.c user/attilio/vmobj-readlock/sys/dev/ahci/ahci.c user/attilio/vmobj-readlock/sys/dev/ath/ath_hal/ah.c user/attilio/vmobj-readlock/sys/dev/ath/ath_hal/ar5416/ar5416_misc.c user/attilio/vmobj-readlock/sys/dev/ath/if_ath.c user/attilio/vmobj-readlock/sys/dev/ath/if_ath_beacon.c user/attilio/vmobj-readlock/sys/dev/ath/if_ath_misc.h user/attilio/vmobj-readlock/sys/dev/ath/if_ath_sysctl.c user/attilio/vmobj-readlock/sys/dev/ath/if_ath_tdma.c user/attilio/vmobj-readlock/sys/dev/ath/if_ath_tx.c user/attilio/vmobj-readlock/sys/dev/ath/if_ath_tx.h user/attilio/vmobj-readlock/sys/dev/ath/if_athvar.h user/attilio/vmobj-readlock/sys/dev/sound/pci/hda/hdaa_patches.c user/attilio/vmobj-readlock/sys/dev/uart/uart_bus_fdt.c user/attilio/vmobj-readlock/sys/dev/usb/quirk/usb_quirk.c user/attilio/vmobj-readlock/sys/dev/usb/usbdevs user/attilio/vmobj-readlock/sys/fs/nullfs/null_vfsops.c user/attilio/vmobj-readlock/sys/geom/geom_dump.c user/attilio/vmobj-readlock/sys/geom/raid/md_ddf.c user/attilio/vmobj-readlock/sys/i386/i386/machdep.c user/attilio/vmobj-readlock/sys/i386/i386/pmap.c user/attilio/vmobj-readlock/sys/i386/include/metadata.h user/attilio/vmobj-readlock/sys/i386/xen/pmap.c user/attilio/vmobj-readlock/sys/ia64/ia64/pmap.c user/attilio/vmobj-readlock/sys/kern/init_sysent.c user/attilio/vmobj-readlock/sys/kern/kern_jail.c user/attilio/vmobj-readlock/sys/kern/kern_priv.c user/attilio/vmobj-readlock/sys/kern/syscalls.c user/attilio/vmobj-readlock/sys/kern/syscalls.master user/attilio/vmobj-readlock/sys/kern/systrace_args.c user/attilio/vmobj-readlock/sys/kern/vfs_bio.c user/attilio/vmobj-readlock/sys/mips/mips/pmap.c user/attilio/vmobj-readlock/sys/modules/acpi/acpi/Makefile user/attilio/vmobj-readlock/sys/netinet/sctp_os_bsd.h user/attilio/vmobj-readlock/sys/netinet6/in6.c user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea.c user/attilio/vmobj-readlock/sys/powerpc/aim/mmu_oea64.c user/attilio/vmobj-readlock/sys/powerpc/booke/pmap.c user/attilio/vmobj-readlock/sys/powerpc/include/gdb_machdep.h user/attilio/vmobj-readlock/sys/powerpc/wii/wii_gpio.c user/attilio/vmobj-readlock/sys/powerpc/wii/wii_gpioreg.h user/attilio/vmobj-readlock/sys/sparc64/sparc64/pmap.c user/attilio/vmobj-readlock/sys/sys/_types.h user/attilio/vmobj-readlock/sys/sys/cdefs.h user/attilio/vmobj-readlock/sys/sys/mbuf.h user/attilio/vmobj-readlock/sys/sys/param.h user/attilio/vmobj-readlock/sys/sys/sdt.h user/attilio/vmobj-readlock/sys/sys/syscall.h user/attilio/vmobj-readlock/sys/sys/syscall.mk user/attilio/vmobj-readlock/sys/sys/sysproto.h user/attilio/vmobj-readlock/sys/vm/vm_page.c Directory Properties: user/attilio/vmobj-readlock/sys/ (props changed) user/attilio/vmobj-readlock/sys/conf/ (props changed) user/attilio/vmobj-readlock/sys/contrib/dev/acpica/ (props changed) user/attilio/vmobj-readlock/sys/contrib/dev/acpica/common/ (props changed) user/attilio/vmobj-readlock/sys/contrib/dev/acpica/compiler/ (props changed) user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/debugger/ (props changed) user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/disassembler/ (props changed) user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/dispatcher/ (props changed) user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/events/ (props changed) user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/executer/ (props changed) user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/hardware/ (props changed) user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/namespace/ (props changed) user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/parser/ (props changed) user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/resources/ (props changed) user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/tables/ (props changed) user/attilio/vmobj-readlock/sys/contrib/dev/acpica/components/utilities/ (props changed) user/attilio/vmobj-readlock/sys/contrib/dev/acpica/include/ (props changed) user/attilio/vmobj-readlock/sys/contrib/dev/acpica/os_specific/ (props changed) Modified: user/attilio/vmobj-readlock/sys/amd64/amd64/db_trace.c ============================================================================== --- user/attilio/vmobj-readlock/sys/amd64/amd64/db_trace.c Wed May 22 15:11:00 2013 (r250909) +++ user/attilio/vmobj-readlock/sys/amd64/amd64/db_trace.c Wed May 22 15:15:05 2013 (r250910) @@ -33,6 +33,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -63,6 +64,8 @@ static db_varfcn_t db_frame; static db_varfcn_t db_rsp; static db_varfcn_t db_ss; +CTASSERT(sizeof(struct dbreg) == sizeof(((struct pcpu *)NULL)->pc_dbreg)); + /* * Machine register set. */ @@ -591,64 +594,82 @@ db_md_set_watchpoint(addr, size) db_expr_t addr; db_expr_t size; { - struct dbreg d; - int avail, i, wsize; + struct dbreg *d; + struct pcpu *pc; + int avail, c, cpu, i, wsize; - fill_dbregs(NULL, &d); + d = (struct dbreg *)PCPU_PTR(dbreg); + cpu = PCPU_GET(cpuid); + fill_dbregs(NULL, d); avail = 0; - for(i = 0; i < 4; i++) { - if (!DBREG_DR7_ENABLED(d.dr[7], i)) + for (i = 0; i < 4; i++) { + if (!DBREG_DR7_ENABLED(d->dr[7], i)) avail++; } if (avail * 8 < size) return (-1); - for (i = 0; i < 4 && (size > 0); i++) { - if (!DBREG_DR7_ENABLED(d.dr[7], i)) { + for (i = 0; i < 4 && size > 0; i++) { + if (!DBREG_DR7_ENABLED(d->dr[7], i)) { if (size >= 8 || (avail == 1 && size > 4)) wsize = 8; else if (size > 2) wsize = 4; else wsize = size; - amd64_set_watch(i, addr, wsize, - DBREG_DR7_WRONLY, &d); + amd64_set_watch(i, addr, wsize, DBREG_DR7_WRONLY, d); addr += wsize; size -= wsize; avail--; } } - set_dbregs(NULL, &d); + set_dbregs(NULL, d); + CPU_FOREACH(c) { + if (c == cpu) + continue; + pc = pcpu_find(c); + memcpy(pc->pc_dbreg, d, sizeof(*d)); + pc->pc_dbreg_cmd = PC_DBREG_CMD_LOAD; + } - return(0); + return (0); } - int db_md_clr_watchpoint(addr, size) db_expr_t addr; db_expr_t size; { - struct dbreg d; - int i; + struct dbreg *d; + struct pcpu *pc; + int i, c, cpu; - fill_dbregs(NULL, &d); + d = (struct dbreg *)PCPU_PTR(dbreg); + cpu = PCPU_GET(cpuid); + fill_dbregs(NULL, d); - for(i = 0; i < 4; i++) { - if (DBREG_DR7_ENABLED(d.dr[7], i)) { - if ((DBREG_DRX((&d), i) >= addr) && - (DBREG_DRX((&d), i) < addr+size)) - amd64_clr_watch(i, &d); + for (i = 0; i < 4; i++) { + if (DBREG_DR7_ENABLED(d->dr[7], i)) { + if (DBREG_DRX((d), i) >= addr && + DBREG_DRX((d), i) < addr + size) + amd64_clr_watch(i, d); } } - set_dbregs(NULL, &d); + set_dbregs(NULL, d); + CPU_FOREACH(c) { + if (c == cpu) + continue; + pc = pcpu_find(c); + memcpy(pc->pc_dbreg, d, sizeof(*d)); + pc->pc_dbreg_cmd = PC_DBREG_CMD_LOAD; + } - return(0); + return (0); } @@ -699,3 +720,17 @@ db_md_list_watchpoints() } db_printf("\n"); } + +void +amd64_db_resume_dbreg(void) +{ + struct dbreg *d; + + switch (PCPU_GET(dbreg_cmd)) { + case PC_DBREG_CMD_LOAD: + d = (struct dbreg *)PCPU_PTR(dbreg); + set_dbregs(NULL, d); + PCPU_SET(dbreg_cmd, PC_DBREG_CMD_NONE); + break; + } +} Modified: user/attilio/vmobj-readlock/sys/amd64/amd64/machdep.c ============================================================================== --- user/attilio/vmobj-readlock/sys/amd64/amd64/machdep.c Wed May 22 15:11:00 2013 (r250909) +++ user/attilio/vmobj-readlock/sys/amd64/amd64/machdep.c Wed May 22 15:15:05 2013 (r250910) @@ -53,6 +53,7 @@ __FBSDID("$FreeBSD$"); #include "opt_maxmem.h" #include "opt_mp_watchdog.h" #include "opt_perfmon.h" +#include "opt_platform.h" #include "opt_sched.h" #include "opt_kdtrace.h" @@ -133,6 +134,9 @@ __FBSDID("$FreeBSD$"); #ifdef SMP #include #endif +#ifdef FDT +#include +#endif #ifdef DEV_ATPIC #include @@ -1886,6 +1890,10 @@ hammer_time(u_int64_t modulep, u_int64_t cpu_probe_amdc1e(); +#ifdef FDT + x86_init_fdt(); +#endif + /* Location of kernel stack for locore */ return ((u_int64_t)thread0.td_pcb); } Modified: user/attilio/vmobj-readlock/sys/amd64/amd64/mp_machdep.c ============================================================================== --- user/attilio/vmobj-readlock/sys/amd64/amd64/mp_machdep.c Wed May 22 15:11:00 2013 (r250909) +++ user/attilio/vmobj-readlock/sys/amd64/amd64/mp_machdep.c Wed May 22 15:15:05 2013 (r250910) @@ -28,6 +28,7 @@ __FBSDID("$FreeBSD$"); #include "opt_cpu.h" +#include "opt_ddb.h" #include "opt_kstack_pages.h" #include "opt_sched.h" #include "opt_smp.h" @@ -1396,6 +1397,10 @@ cpustop_handler(void) CPU_CLR_ATOMIC(cpu, &started_cpus); CPU_CLR_ATOMIC(cpu, &stopped_cpus); +#ifdef DDB + amd64_db_resume_dbreg(); +#endif + if (cpu == 0 && cpustop_restartfunc != NULL) { cpustop_restartfunc(); cpustop_restartfunc = NULL; Modified: user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c Wed May 22 15:11:00 2013 (r250909) +++ user/attilio/vmobj-readlock/sys/amd64/amd64/pmap.c Wed May 22 15:15:05 2013 (r250910) @@ -4230,13 +4230,8 @@ pmap_zero_page_idle(vm_page_t m) void pmap_copy_page(vm_page_t msrc, vm_page_t mdst) { - vm_offset_t dst, src; - - if ((msrc->oflags & VPO_BUSY) == 0) - VM_OBJECT_ASSERT_LOCKED(msrc->object); - - src = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(msrc)); - dst = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(mdst)); + vm_offset_t src = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(msrc)); + vm_offset_t dst = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(mdst)); pagecopy((void *)src, (void *)dst); } @@ -5541,4 +5536,16 @@ DB_SHOW_COMMAND(pte, pmap_print_pte) pte = pmap_pde_to_pte(pde, va); db_printf(" pte %#016lx\n", *pte); } + +DB_SHOW_COMMAND(phys2dmap, pmap_phys2dmap) +{ + vm_paddr_t a; + + if (have_addr) { + a = (vm_paddr_t)addr; + db_printf("0x%jx\n", (uintmax_t)PHYS_TO_DMAP(a)); + } else { + db_printf("show phys2dmap addr\n"); + } +} #endif Copied: user/attilio/vmobj-readlock/sys/amd64/include/fdt.h (from r250886, user/attilio/vmcontention/sys/amd64/include/fdt.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/attilio/vmobj-readlock/sys/amd64/include/fdt.h Wed May 22 15:15:05 2013 (r250910, copy of r250886, user/attilio/vmcontention/sys/amd64/include/fdt.h) @@ -0,0 +1,6 @@ +/*- + * This file is in the public domain. + */ +/* $FreeBSD$ */ + +#include Modified: user/attilio/vmobj-readlock/sys/amd64/include/md_var.h ============================================================================== --- user/attilio/vmobj-readlock/sys/amd64/include/md_var.h Wed May 22 15:11:00 2013 (r250909) +++ user/attilio/vmobj-readlock/sys/amd64/include/md_var.h Wed May 22 15:15:05 2013 (r250910) @@ -117,5 +117,6 @@ void minidumpsys(struct dumperinfo *); struct savefpu *get_pcb_user_save_td(struct thread *td); struct savefpu *get_pcb_user_save_pcb(struct pcb *pcb); struct pcb *get_pcb_td(struct thread *td); +void amd64_db_resume_dbreg(void); #endif /* !_MACHINE_MD_VAR_H_ */ Modified: user/attilio/vmobj-readlock/sys/amd64/include/metadata.h ============================================================================== --- user/attilio/vmobj-readlock/sys/amd64/include/metadata.h Wed May 22 15:11:00 2013 (r250909) +++ user/attilio/vmobj-readlock/sys/amd64/include/metadata.h Wed May 22 15:15:05 2013 (r250910) @@ -31,5 +31,6 @@ #define MODINFOMD_SMAP 0x1001 #define MODINFOMD_SMAP_XATTR 0x1002 +#define MODINFOMD_DTBP 0x1003 #endif /* !_MACHINE_METADATA_H_ */ Copied: user/attilio/vmobj-readlock/sys/amd64/include/ofw_machdep.h (from r250886, user/attilio/vmcontention/sys/amd64/include/ofw_machdep.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/attilio/vmobj-readlock/sys/amd64/include/ofw_machdep.h Wed May 22 15:15:05 2013 (r250910, copy of r250886, user/attilio/vmcontention/sys/amd64/include/ofw_machdep.h) @@ -0,0 +1,6 @@ +/*- + * This file is in the public domain. + */ +/* $FreeBSD$ */ + +#include Modified: user/attilio/vmobj-readlock/sys/amd64/include/pcpu.h ============================================================================== --- user/attilio/vmobj-readlock/sys/amd64/include/pcpu.h Wed May 22 15:11:00 2013 (r250909) +++ user/attilio/vmobj-readlock/sys/amd64/include/pcpu.h Wed May 22 15:15:05 2013 (r250910) @@ -78,9 +78,14 @@ struct system_segment_descriptor *pc_tss; \ u_int pc_cmci_mask /* MCx banks for CMCI */ \ PCPU_XEN_FIELDS; \ - char __pad[293] /* be divisor of PAGE_SIZE \ + uint64_t pc_dbreg[16]; /* ddb debugging regs */ \ + int pc_dbreg_cmd; /* ddb debugging reg cmd */ \ + char __pad[161] /* be divisor of PAGE_SIZE \ after cache alignment */ +#define PC_DBREG_CMD_NONE 0 +#define PC_DBREG_CMD_LOAD 1 + #ifdef _KERNEL #ifdef lint Modified: user/attilio/vmobj-readlock/sys/arm/arm/pmap-v6.c ============================================================================== --- user/attilio/vmobj-readlock/sys/arm/arm/pmap-v6.c Wed May 22 15:11:00 2013 (r250909) +++ user/attilio/vmobj-readlock/sys/arm/arm/pmap-v6.c Wed May 22 15:15:05 2013 (r250910) @@ -3731,9 +3731,6 @@ void pmap_copy_page(vm_page_t src, vm_page_t dst) { - if ((src->oflags & VPO_BUSY) == 0) - VM_OBJECT_ASSERT_LOCKED(src->object); - if (_arm_memcpy && PAGE_SIZE >= _min_memcpy_size && _arm_memcpy((void *)VM_PAGE_TO_PHYS(dst), (void *)VM_PAGE_TO_PHYS(src), PAGE_SIZE, IS_PHYSICAL) == 0) Modified: user/attilio/vmobj-readlock/sys/arm/arm/pmap.c ============================================================================== --- user/attilio/vmobj-readlock/sys/arm/arm/pmap.c Wed May 22 15:11:00 2013 (r250909) +++ user/attilio/vmobj-readlock/sys/arm/arm/pmap.c Wed May 22 15:15:05 2013 (r250910) @@ -4413,9 +4413,6 @@ pmap_copy_page(vm_page_t src, vm_page_t vm_offset_t srcpg, dstpg; #endif - if ((src->oflags & VPO_BUSY) == 0) - VM_OBJECT_ASSERT_LOCKED(src->object); - cpu_dcache_wbinv_all(); cpu_l2cache_wbinv_all(); if (_arm_memcpy && PAGE_SIZE >= _min_memcpy_size && Modified: user/attilio/vmobj-readlock/sys/arm/arm/stack_machdep.c ============================================================================== --- user/attilio/vmobj-readlock/sys/arm/arm/stack_machdep.c Wed May 22 15:11:00 2013 (r250909) +++ user/attilio/vmobj-readlock/sys/arm/arm/stack_machdep.c Wed May 22 15:15:05 2013 (r250910) @@ -36,6 +36,13 @@ __FBSDID("$FreeBSD$"); #include #include +/* + * This code makes assumptions about the stack layout. These are correct + * when using APCS (the old ABI), but are no longer true with AAPCS and the + * ARM EABI. There is also an issue with clang and llvm when building for + * APCS where it lays out the stack incorrectly. Because of this we disable + * this when building for ARM EABI or when building with clang. + */ static void stack_capture(struct stack *st, u_int32_t *frame) { @@ -61,6 +68,11 @@ stack_save_td(struct stack *st, struct t if (TD_IS_RUNNING(td)) panic("stack_save_td: running"); + /* + * This register, the frame pointer, is incorrect for the ARM EABI + * as it doesn't have a frame pointer, however it's value is not used + * when building for EABI. + */ frame = (u_int32_t *)td->td_pcb->un_32.pcb32_r11; stack_zero(st); stack_capture(st, frame); Modified: user/attilio/vmobj-readlock/sys/arm/ti/ti_mmchs.c ============================================================================== --- user/attilio/vmobj-readlock/sys/arm/ti/ti_mmchs.c Wed May 22 15:11:00 2013 (r250909) +++ user/attilio/vmobj-readlock/sys/arm/ti/ti_mmchs.c Wed May 22 15:15:05 2013 (r250910) @@ -1747,7 +1747,7 @@ ti_mmchs_attach(device_t dev) sc->host.host_ocr = MMC_OCR_290_300 | MMC_OCR_300_310; sc->host.caps = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA; - device_add_child(dev, "mmc", sc->device_id); + device_add_child(dev, "mmc", 0); device_set_ivars(dev, &sc->host); err = bus_generic_attach(dev); Modified: user/attilio/vmobj-readlock/sys/cam/ata/ata_da.c ============================================================================== --- user/attilio/vmobj-readlock/sys/cam/ata/ata_da.c Wed May 22 15:11:00 2013 (r250909) +++ user/attilio/vmobj-readlock/sys/cam/ata/ata_da.c Wed May 22 15:15:05 2013 (r250910) @@ -93,6 +93,10 @@ typedef enum { ADA_Q_4K = 0x01, } ada_quirks; +#define ADA_Q_BIT_STRING \ + "\020" \ + "\0014K" + typedef enum { ADA_CCB_RAHEAD = 0x01, ADA_CCB_WCACHE = 0x02, @@ -1278,6 +1282,7 @@ adaregister(struct cam_periph *periph, v dp->secsize, dp->heads, dp->secs_per_track, dp->cylinders); xpt_announce_periph(periph, announce_buf); + xpt_announce_quirks(periph, softc->quirks, ADA_Q_BIT_STRING); if (legacy_id >= 0) printf("%s%d: Previously was known as ad%d\n", periph->periph_name, periph->unit_number, legacy_id); Modified: user/attilio/vmobj-readlock/sys/cam/cam_xpt.c ============================================================================== --- user/attilio/vmobj-readlock/sys/cam/cam_xpt.c Wed May 22 15:11:00 2013 (r250909) +++ user/attilio/vmobj-readlock/sys/cam/cam_xpt.c Wed May 22 15:15:05 2013 (r250910) @@ -1084,6 +1084,15 @@ xpt_announce_periph(struct cam_periph *p periph->unit_number, announce_string); } +void +xpt_announce_quirks(struct cam_periph *periph, int quirks, char *bit_string) +{ + if (quirks != 0) { + printf("%s%d: quirks=0x%b\n", periph->periph_name, + periph->unit_number, quirks, bit_string); + } +} + int xpt_getattr(char *buf, size_t len, const char *attr, struct cam_path *path) { Modified: user/attilio/vmobj-readlock/sys/cam/cam_xpt_periph.h ============================================================================== --- user/attilio/vmobj-readlock/sys/cam/cam_xpt_periph.h Wed May 22 15:11:00 2013 (r250909) +++ user/attilio/vmobj-readlock/sys/cam/cam_xpt_periph.h Wed May 22 15:15:05 2013 (r250910) @@ -46,6 +46,8 @@ void xpt_remove_periph(struct cam_perip int topology_lock_held); void xpt_announce_periph(struct cam_periph *periph, char *announce_string); +void xpt_announce_quirks(struct cam_periph *periph, + int quirks, char *bit_string); #endif #endif /* _CAM_CAM_XPT_PERIPH_H */ Modified: user/attilio/vmobj-readlock/sys/cam/scsi/scsi_cd.c ============================================================================== --- user/attilio/vmobj-readlock/sys/cam/scsi/scsi_cd.c Wed May 22 15:11:00 2013 (r250909) +++ user/attilio/vmobj-readlock/sys/cam/scsi/scsi_cd.c Wed May 22 15:15:05 2013 (r250910) @@ -92,6 +92,14 @@ typedef enum { CD_Q_10_BYTE_ONLY = 0x10 } cd_quirks; +#define CD_Q_BIT_STRING \ + "\020" \ + "\001NO_TOUCH" \ + "\002BCD_TRACKS" \ + "\003NO_CHANGER" \ + "\004CHANGER" \ + "\00510_BYTE_ONLY" + typedef enum { CD_FLAG_INVALID = 0x0001, CD_FLAG_NEW_DISC = 0x0002, @@ -1867,6 +1875,8 @@ cddone(struct cam_periph *periph, union free(rdcap, M_SCSICD); if (announce_buf[0] != '\0') { xpt_announce_periph(periph, announce_buf); + xpt_announce_quirks(periph, softc->quirks, + CD_Q_BIT_STRING); if (softc->flags & CD_FLAG_CHANGER) cdchangerschedule(softc); /* Modified: user/attilio/vmobj-readlock/sys/cam/scsi/scsi_ch.c ============================================================================== --- user/attilio/vmobj-readlock/sys/cam/scsi/scsi_ch.c Wed May 22 15:11:00 2013 (r250909) +++ user/attilio/vmobj-readlock/sys/cam/scsi/scsi_ch.c Wed May 22 15:15:05 2013 (r250910) @@ -125,6 +125,10 @@ typedef enum { CH_Q_NO_DBD = 0x01 } ch_quirks; +#define CH_Q_BIT_STRING \ + "\020" \ + "\001NO_DBD" + #define ccb_state ppriv_field0 #define ccb_bp ppriv_ptr1 @@ -706,8 +710,11 @@ chdone(struct cam_periph *periph, union announce_buf[0] = '\0'; } } - if (announce_buf[0] != '\0') + if (announce_buf[0] != '\0') { xpt_announce_periph(periph, announce_buf); + xpt_announce_quirks(periph, softc->quirks, + CH_Q_BIT_STRING); + } softc->state = CH_STATE_NORMAL; free(mode_header, M_SCSICH); /* Modified: user/attilio/vmobj-readlock/sys/cam/scsi/scsi_da.c ============================================================================== --- user/attilio/vmobj-readlock/sys/cam/scsi/scsi_da.c Wed May 22 15:11:00 2013 (r250909) +++ user/attilio/vmobj-readlock/sys/cam/scsi/scsi_da.c Wed May 22 15:15:05 2013 (r250910) @@ -99,6 +99,13 @@ typedef enum { DA_Q_4K = 0x08 } da_quirks; +#define DA_Q_BIT_STRING \ + "\020" \ + "\001NO_SYNC_CACHE" \ + "\002NO_6_BYTE" \ + "\003NO_PREVENT" \ + "\0044K" + typedef enum { DA_CCB_PROBE_RC = 0x01, DA_CCB_PROBE_RC16 = 0x02, @@ -2957,7 +2964,8 @@ dadone(struct cam_periph *periph, union taskqueue_enqueue(taskqueue_thread, &softc->sysctl_task); xpt_announce_periph(periph, announce_buf); - + xpt_announce_quirks(periph, softc->quirks, + DA_Q_BIT_STRING); } else { xpt_print(periph->path, "fatal error, " "could not acquire reference count\n"); Modified: user/attilio/vmobj-readlock/sys/cam/scsi/scsi_sa.c ============================================================================== --- user/attilio/vmobj-readlock/sys/cam/scsi/scsi_sa.c Wed May 22 15:11:00 2013 (r250909) +++ user/attilio/vmobj-readlock/sys/cam/scsi/scsi_sa.c Wed May 22 15:15:05 2013 (r250910) @@ -173,6 +173,17 @@ typedef enum { SA_QUIRK_NO_CPAGE = 0x80 /* Don't use DEVICE COMPRESSION page */ } sa_quirks; +#define SA_QUIRK_BIT_STRING \ + "\020" \ + "\001NOCOMP" \ + "\002FIXED" \ + "\003VARIABLE" \ + "\0042FM" \ + "\0051FM" \ + "\006NODREAD" \ + "\007NO_MODESEL" \ + "\010NO_CPAGE" + #define SAMODE(z) (dev2unit(z) & 0x3) #define SADENSITY(z) ((dev2unit(z) >> 2) & 0x3) #define SA_IS_CTRL(z) (dev2unit(z) & (1 << 4)) @@ -1546,6 +1557,7 @@ saregister(struct cam_periph *periph, vo xpt_register_async(AC_LOST_DEVICE, saasync, periph, periph->path); xpt_announce_periph(periph, NULL); + xpt_announce_quirks(periph, softc->quirks, SA_QUIRK_BIT_STRING); return (CAM_REQ_CMP); } Modified: user/attilio/vmobj-readlock/sys/compat/freebsd32/freebsd32_misc.c ============================================================================== --- user/attilio/vmobj-readlock/sys/compat/freebsd32/freebsd32_misc.c Wed May 22 15:11:00 2013 (r250909) +++ user/attilio/vmobj-readlock/sys/compat/freebsd32/freebsd32_misc.c Wed May 22 15:15:05 2013 (r250910) @@ -198,8 +198,8 @@ freebsd32_wait6(struct thread *td, struc bzero(sip, sizeof(*sip)); } else sip = NULL; - error = kern_wait6(td, uap->idtype, uap->id, &status, uap->options, - wrup, sip); + error = kern_wait6(td, uap->idtype, PAIR32TO64(id_t, uap->id), + &status, uap->options, wrup, sip); if (error != 0) return (error); if (uap->status != NULL) Modified: user/attilio/vmobj-readlock/sys/compat/freebsd32/freebsd32_proto.h ============================================================================== --- user/attilio/vmobj-readlock/sys/compat/freebsd32/freebsd32_proto.h Wed May 22 15:11:00 2013 (r250909) +++ user/attilio/vmobj-readlock/sys/compat/freebsd32/freebsd32_proto.h Wed May 22 15:15:05 2013 (r250910) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 250159 2013-05-01 22:42:42Z jilles + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 250853 2013-05-21 11:40:16Z kib */ #ifndef _FREEBSD32_SYSPROTO_H_ @@ -574,8 +574,10 @@ struct freebsd32_pselect_args { char ts_l_[PADL_(const struct timespec32 *)]; const struct timespec32 * ts; char ts_r_[PADR_(const struct timespec32 *)]; char sm_l_[PADL_(const sigset_t *)]; const sigset_t * sm; char sm_r_[PADR_(const sigset_t *)]; }; +#ifdef PAD64_REQUIRED struct freebsd32_posix_fallocate_args { char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)]; + char pad_l_[PADL_(int)]; int pad; char pad_r_[PADR_(int)]; char offset1_l_[PADL_(uint32_t)]; uint32_t offset1; char offset1_r_[PADR_(uint32_t)]; char offset2_l_[PADL_(uint32_t)]; uint32_t offset2; char offset2_r_[PADR_(uint32_t)]; char len1_l_[PADL_(uint32_t)]; uint32_t len1; char len1_r_[PADR_(uint32_t)]; @@ -583,6 +585,7 @@ struct freebsd32_posix_fallocate_args { }; struct freebsd32_posix_fadvise_args { char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)]; + char pad_l_[PADL_(int)]; int pad; char pad_r_[PADR_(int)]; char offset1_l_[PADL_(uint32_t)]; uint32_t offset1; char offset1_r_[PADR_(uint32_t)]; char offset2_l_[PADL_(uint32_t)]; uint32_t offset2; char offset2_r_[PADR_(uint32_t)]; char len1_l_[PADL_(uint32_t)]; uint32_t len1; char len1_r_[PADR_(uint32_t)]; @@ -591,12 +594,40 @@ struct freebsd32_posix_fadvise_args { }; struct freebsd32_wait6_args { char idtype_l_[PADL_(int)]; int idtype; char idtype_r_[PADR_(int)]; - char id_l_[PADL_(int)]; int id; char id_r_[PADR_(int)]; + char pad_l_[PADL_(int)]; int pad; char pad_r_[PADR_(int)]; + char id1_l_[PADL_(uint32_t)]; uint32_t id1; char id1_r_[PADR_(uint32_t)]; + char id2_l_[PADL_(uint32_t)]; uint32_t id2; char id2_r_[PADR_(uint32_t)]; char status_l_[PADL_(int *)]; int * status; char status_r_[PADR_(int *)]; char options_l_[PADL_(int)]; int options; char options_r_[PADR_(int)]; char wrusage_l_[PADL_(struct wrusage32 *)]; struct wrusage32 * wrusage; char wrusage_r_[PADR_(struct wrusage32 *)]; char info_l_[PADL_(siginfo_t *)]; siginfo_t * info; char info_r_[PADR_(siginfo_t *)]; }; +#else +struct freebsd32_posix_fallocate_args { + char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)]; + char offset1_l_[PADL_(uint32_t)]; uint32_t offset1; char offset1_r_[PADR_(uint32_t)]; + char offset2_l_[PADL_(uint32_t)]; uint32_t offset2; char offset2_r_[PADR_(uint32_t)]; + char len1_l_[PADL_(uint32_t)]; uint32_t len1; char len1_r_[PADR_(uint32_t)]; + char len2_l_[PADL_(uint32_t)]; uint32_t len2; char len2_r_[PADR_(uint32_t)]; +}; +struct freebsd32_posix_fadvise_args { + char fd_l_[PADL_(int)]; int fd; char fd_r_[PADR_(int)]; + char offset1_l_[PADL_(uint32_t)]; uint32_t offset1; char offset1_r_[PADR_(uint32_t)]; + char offset2_l_[PADL_(uint32_t)]; uint32_t offset2; char offset2_r_[PADR_(uint32_t)]; + char len1_l_[PADL_(uint32_t)]; uint32_t len1; char len1_r_[PADR_(uint32_t)]; + char len2_l_[PADL_(uint32_t)]; uint32_t len2; char len2_r_[PADR_(uint32_t)]; + char advice_l_[PADL_(int)]; int advice; char advice_r_[PADR_(int)]; +}; +struct freebsd32_wait6_args { + char idtype_l_[PADL_(int)]; int idtype; char idtype_r_[PADR_(int)]; + char id1_l_[PADL_(uint32_t)]; uint32_t id1; char id1_r_[PADR_(uint32_t)]; + char id2_l_[PADL_(uint32_t)]; uint32_t id2; char id2_r_[PADR_(uint32_t)]; + char status_l_[PADL_(int *)]; int * status; char status_r_[PADR_(int *)]; + char options_l_[PADL_(int)]; int options; char options_r_[PADR_(int)]; + char wrusage_l_[PADL_(struct wrusage32 *)]; struct wrusage32 * wrusage; char wrusage_r_[PADR_(struct wrusage32 *)]; + char info_l_[PADL_(siginfo_t *)]; siginfo_t * info; char info_r_[PADR_(siginfo_t *)]; +}; +#endif #if !defined(PAD64_REQUIRED) && (defined(__powerpc__) || defined(__mips__)) #define PAD64_REQUIRED #endif @@ -706,9 +737,15 @@ int freebsd32_semctl(struct thread *, st int freebsd32_msgctl(struct thread *, struct freebsd32_msgctl_args *); int freebsd32_shmctl(struct thread *, struct freebsd32_shmctl_args *); int freebsd32_pselect(struct thread *, struct freebsd32_pselect_args *); +#ifdef PAD64_REQUIRED int freebsd32_posix_fallocate(struct thread *, struct freebsd32_posix_fallocate_args *); int freebsd32_posix_fadvise(struct thread *, struct freebsd32_posix_fadvise_args *); int freebsd32_wait6(struct thread *, struct freebsd32_wait6_args *); +#else +int freebsd32_posix_fallocate(struct thread *, struct freebsd32_posix_fallocate_args *); +int freebsd32_posix_fadvise(struct thread *, struct freebsd32_posix_fadvise_args *); +int freebsd32_wait6(struct thread *, struct freebsd32_wait6_args *); +#endif #ifdef COMPAT_43 @@ -777,6 +814,9 @@ struct ofreebsd32_getdirentries_args { #ifdef PAD64_REQUIRED #else #endif +#ifdef PAD64_REQUIRED +#else +#endif int ofreebsd32_lseek(struct thread *, struct ofreebsd32_lseek_args *); int ofreebsd32_stat(struct thread *, struct ofreebsd32_stat_args *); int ofreebsd32_lstat(struct thread *, struct ofreebsd32_lstat_args *); @@ -842,6 +882,9 @@ struct freebsd4_freebsd32_sigreturn_args #ifdef PAD64_REQUIRED #else #endif +#ifdef PAD64_REQUIRED +#else +#endif int freebsd4_freebsd32_getfsstat(struct thread *, struct freebsd4_freebsd32_getfsstat_args *); int freebsd4_freebsd32_statfs(struct thread *, struct freebsd4_freebsd32_statfs_args *); int freebsd4_freebsd32_fstatfs(struct thread *, struct freebsd4_freebsd32_fstatfs_args *); @@ -909,6 +952,9 @@ struct freebsd6_freebsd32_ftruncate_args #ifdef PAD64_REQUIRED #else #endif +#ifdef PAD64_REQUIRED +#else +#endif int freebsd6_freebsd32_pread(struct thread *, struct freebsd6_freebsd32_pread_args *); int freebsd6_freebsd32_pwrite(struct thread *, struct freebsd6_freebsd32_pwrite_args *); int freebsd6_freebsd32_mmap(struct thread *, struct freebsd6_freebsd32_mmap_args *); @@ -946,6 +992,9 @@ struct freebsd7_freebsd32_shmctl_args { #ifdef PAD64_REQUIRED #else #endif +#ifdef PAD64_REQUIRED +#else +#endif int freebsd7_freebsd32_semctl(struct thread *, struct freebsd7_freebsd32_semctl_args *); int freebsd7_freebsd32_msgctl(struct thread *, struct freebsd7_freebsd32_msgctl_args *); int freebsd7_freebsd32_shmctl(struct thread *, struct freebsd7_freebsd32_shmctl_args *); @@ -1086,6 +1135,9 @@ int freebsd7_freebsd32_shmctl(struct thr #define FREEBSD32_SYS_AUE_freebsd32_posix_fallocate AUE_NULL #define FREEBSD32_SYS_AUE_freebsd32_posix_fadvise AUE_NULL #define FREEBSD32_SYS_AUE_freebsd32_wait6 AUE_WAIT6 +#define FREEBSD32_SYS_AUE_freebsd32_posix_fallocate AUE_NULL +#define FREEBSD32_SYS_AUE_freebsd32_posix_fadvise AUE_NULL +#define FREEBSD32_SYS_AUE_freebsd32_wait6 AUE_WAIT6 #undef PAD_ #undef PADL_ Modified: user/attilio/vmobj-readlock/sys/compat/freebsd32/freebsd32_syscall.h ============================================================================== --- user/attilio/vmobj-readlock/sys/compat/freebsd32/freebsd32_syscall.h Wed May 22 15:11:00 2013 (r250909) +++ user/attilio/vmobj-readlock/sys/compat/freebsd32/freebsd32_syscall.h Wed May 22 15:15:05 2013 (r250910) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 250159 2013-05-01 22:42:42Z jilles + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 250853 2013-05-21 11:40:16Z kib */ #define FREEBSD32_SYS_syscall 0 @@ -430,6 +430,9 @@ #define FREEBSD32_SYS_freebsd32_posix_fallocate 530 #define FREEBSD32_SYS_freebsd32_posix_fadvise 531 #define FREEBSD32_SYS_freebsd32_wait6 532 +#define FREEBSD32_SYS_freebsd32_posix_fallocate 530 +#define FREEBSD32_SYS_freebsd32_posix_fadvise 531 +#define FREEBSD32_SYS_freebsd32_wait6 532 #define FREEBSD32_SYS_cap_rights_limit 533 #define FREEBSD32_SYS_cap_ioctls_limit 534 #define FREEBSD32_SYS_cap_ioctls_get 535 Modified: user/attilio/vmobj-readlock/sys/compat/freebsd32/freebsd32_syscalls.c ============================================================================== --- user/attilio/vmobj-readlock/sys/compat/freebsd32/freebsd32_syscalls.c Wed May 22 15:11:00 2013 (r250909) +++ user/attilio/vmobj-readlock/sys/compat/freebsd32/freebsd32_syscalls.c Wed May 22 15:15:05 2013 (r250910) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 250159 2013-05-01 22:42:42Z jilles + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 250853 2013-05-21 11:40:16Z kib */ const char *freebsd32_syscallnames[] = { @@ -553,9 +553,15 @@ const char *freebsd32_syscallnames[] = { "rctl_get_limits", /* 527 = rctl_get_limits */ "rctl_add_rule", /* 528 = rctl_add_rule */ "rctl_remove_rule", /* 529 = rctl_remove_rule */ +#ifdef PAD64_REQUIRED + "freebsd32_posix_fallocate", /* 530 = freebsd32_posix_fallocate */ + "freebsd32_posix_fadvise", /* 531 = freebsd32_posix_fadvise */ + "freebsd32_wait6", /* 532 = freebsd32_wait6 */ +#else "freebsd32_posix_fallocate", /* 530 = freebsd32_posix_fallocate */ "freebsd32_posix_fadvise", /* 531 = freebsd32_posix_fadvise */ "freebsd32_wait6", /* 532 = freebsd32_wait6 */ +#endif "cap_rights_limit", /* 533 = cap_rights_limit */ "cap_ioctls_limit", /* 534 = cap_ioctls_limit */ "cap_ioctls_get", /* 535 = cap_ioctls_get */ Modified: user/attilio/vmobj-readlock/sys/compat/freebsd32/freebsd32_sysent.c ============================================================================== --- user/attilio/vmobj-readlock/sys/compat/freebsd32/freebsd32_sysent.c Wed May 22 15:11:00 2013 (r250909) +++ user/attilio/vmobj-readlock/sys/compat/freebsd32/freebsd32_sysent.c Wed May 22 15:15:05 2013 (r250910) @@ -3,7 +3,7 @@ * * DO NOT EDIT-- this file is automatically generated. * $FreeBSD$ - * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 250159 2013-05-01 22:42:42Z jilles + * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 250853 2013-05-21 11:40:16Z kib */ #include "opt_compat.h" @@ -590,9 +590,15 @@ struct sysent freebsd32_sysent[] = { { AS(rctl_get_limits_args), (sy_call_t *)sys_rctl_get_limits, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 527 = rctl_get_limits */ { AS(rctl_add_rule_args), (sy_call_t *)sys_rctl_add_rule, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 528 = rctl_add_rule */ { AS(rctl_remove_rule_args), (sy_call_t *)sys_rctl_remove_rule, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 529 = rctl_remove_rule */ +#ifdef PAD64_REQUIRED + { AS(freebsd32_posix_fallocate_args), (sy_call_t *)freebsd32_posix_fallocate, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 530 = freebsd32_posix_fallocate */ + { AS(freebsd32_posix_fadvise_args), (sy_call_t *)freebsd32_posix_fadvise, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 531 = freebsd32_posix_fadvise */ + { AS(freebsd32_wait6_args), (sy_call_t *)freebsd32_wait6, AUE_WAIT6, NULL, 0, 0, 0, SY_THR_STATIC }, /* 532 = freebsd32_wait6 */ +#else { AS(freebsd32_posix_fallocate_args), (sy_call_t *)freebsd32_posix_fallocate, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 530 = freebsd32_posix_fallocate */ { AS(freebsd32_posix_fadvise_args), (sy_call_t *)freebsd32_posix_fadvise, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC }, /* 531 = freebsd32_posix_fadvise */ { AS(freebsd32_wait6_args), (sy_call_t *)freebsd32_wait6, AUE_WAIT6, NULL, 0, 0, 0, SY_THR_STATIC }, /* 532 = freebsd32_wait6 */ +#endif { AS(cap_rights_limit_args), (sy_call_t *)sys_cap_rights_limit, AUE_CAP_RIGHTS_LIMIT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 533 = cap_rights_limit */ { AS(cap_ioctls_limit_args), (sy_call_t *)sys_cap_ioctls_limit, AUE_CAP_IOCTLS_LIMIT, NULL, 0, 0, 0, SY_THR_STATIC }, /* 534 = cap_ioctls_limit */ { AS(cap_ioctls_get_args), (sy_call_t *)sys_cap_ioctls_get, AUE_CAP_IOCTLS_GET, NULL, 0, 0, 0, SY_THR_STATIC }, /* 535 = cap_ioctls_get */ Modified: user/attilio/vmobj-readlock/sys/compat/freebsd32/freebsd32_systrace_args.c ============================================================================== --- user/attilio/vmobj-readlock/sys/compat/freebsd32/freebsd32_systrace_args.c Wed May 22 15:11:00 2013 (r250909) +++ user/attilio/vmobj-readlock/sys/compat/freebsd32/freebsd32_systrace_args.c Wed May 22 15:15:05 2013 (r250910) @@ -3053,6 +3053,47 @@ systrace_args(int sysnum, void *params, *n_args = 4; break; } +#ifdef PAD64_REQUIRED + /* freebsd32_posix_fallocate */ + case 530: { + struct freebsd32_posix_fallocate_args *p = params; + iarg[0] = p->fd; /* int */ + iarg[1] = p->pad; /* int */ + uarg[2] = p->offset1; /* uint32_t */ + uarg[3] = p->offset2; /* uint32_t */ + uarg[4] = p->len1; /* uint32_t */ + uarg[5] = p->len2; /* uint32_t */ + *n_args = 6; + break; + } + /* freebsd32_posix_fadvise */ + case 531: { + struct freebsd32_posix_fadvise_args *p = params; + iarg[0] = p->fd; /* int */ + iarg[1] = p->pad; /* int */ + uarg[2] = p->offset1; /* uint32_t */ + uarg[3] = p->offset2; /* uint32_t */ + uarg[4] = p->len1; /* uint32_t */ + uarg[5] = p->len2; /* uint32_t */ + iarg[6] = p->advice; /* int */ + *n_args = 7; + break; + } + /* freebsd32_wait6 */ + case 532: { + struct freebsd32_wait6_args *p = params; + iarg[0] = p->idtype; /* int */ + iarg[1] = p->pad; /* int */ + uarg[2] = p->id1; /* uint32_t */ + uarg[3] = p->id2; /* uint32_t */ + uarg[4] = (intptr_t) p->status; /* int * */ + iarg[5] = p->options; /* int */ + uarg[6] = (intptr_t) p->wrusage; /* struct wrusage32 * */ + uarg[7] = (intptr_t) p->info; /* siginfo_t * */ + *n_args = 8; + break; + } +#else /* freebsd32_posix_fallocate */ case 530: { struct freebsd32_posix_fallocate_args *p = params; @@ -3080,14 +3121,16 @@ systrace_args(int sysnum, void *params, case 532: { struct freebsd32_wait6_args *p = params; iarg[0] = p->idtype; /* int */ - iarg[1] = p->id; /* int */ - uarg[2] = (intptr_t) p->status; /* int * */ - iarg[3] = p->options; /* int */ - uarg[4] = (intptr_t) p->wrusage; /* struct wrusage32 * */ - uarg[5] = (intptr_t) p->info; /* siginfo_t * */ - *n_args = 6; + uarg[1] = p->id1; /* uint32_t */ + uarg[2] = p->id2; /* uint32_t */ + uarg[3] = (intptr_t) p->status; /* int * */ + iarg[4] = p->options; /* int */ + uarg[5] = (intptr_t) p->wrusage; /* struct wrusage32 * */ + uarg[6] = (intptr_t) p->info; /* siginfo_t * */ + *n_args = 7; break; } +#endif /* cap_rights_limit */ case 533: { struct cap_rights_limit_args *p = params; @@ -8261,6 +8304,7 @@ systrace_entry_setargdesc(int sysnum, in break; }; break; +#ifdef PAD64_REQUIRED /* freebsd32_posix_fallocate */ case 530: switch(ndx) { @@ -8268,7 +8312,7 @@ systrace_entry_setargdesc(int sysnum, in p = "int"; break; case 1: - p = "uint32_t"; + p = "int"; break; case 2: p = "uint32_t"; @@ -8279,6 +8323,9 @@ systrace_entry_setargdesc(int sysnum, in case 4: p = "uint32_t"; break; + case 5: + p = "uint32_t"; + break; default: break; }; @@ -8290,7 +8337,7 @@ systrace_entry_setargdesc(int sysnum, in p = "int"; break; case 1: - p = "uint32_t"; + p = "int"; break; case 2: p = "uint32_t"; @@ -8302,6 +8349,9 @@ systrace_entry_setargdesc(int sysnum, in p = "uint32_t"; break; case 5: + p = "uint32_t"; + break; + case 6: p = "int"; break; default: @@ -8318,21 +8368,104 @@ systrace_entry_setargdesc(int sysnum, in p = "int"; break; case 2: + p = "uint32_t"; + break; + case 3: + p = "uint32_t"; + break; + case 4: p = "int *"; break; + case 5: + p = "int"; + break; + case 6: + p = "struct wrusage32 *"; + break; + case 7: + p = "siginfo_t *"; + break; + default: + break; + }; + break; +#else + /* freebsd32_posix_fallocate */ + case 530: + switch(ndx) { + case 0: + p = "int"; + break; + case 1: + p = "uint32_t"; + break; + case 2: + p = "uint32_t"; + break; case 3: + p = "uint32_t"; + break; + case 4: + p = "uint32_t"; + break; + default: + break; + }; + break; + /* freebsd32_posix_fadvise */ + case 531: + switch(ndx) { + case 0: p = "int"; break; + case 1: + p = "uint32_t"; + break; + case 2: + p = "uint32_t"; + break; + case 3: + p = "uint32_t"; + break; case 4: - p = "struct wrusage32 *"; + p = "uint32_t"; + break; + case 5: + p = "int"; + break; + default: + break; + }; + break; + /* freebsd32_wait6 */ + case 532: + switch(ndx) { + case 0: + p = "int"; + break; + case 1: + p = "uint32_t"; + break; + case 2: + p = "uint32_t"; + break; + case 3: + p = "int *"; + break; + case 4: + p = "int"; break; case 5: + p = "struct wrusage32 *"; + break; + case 6: p = "siginfo_t *"; break; default: break; }; break; +#endif /* cap_rights_limit */ case 533: switch(ndx) { @@ -10240,6 +10373,23 @@ systrace_return_setargdesc(int sysnum, i if (ndx == 0 || ndx == 1) p = "int"; break; +#ifdef PAD64_REQUIRED + /* freebsd32_posix_fallocate */ + case 530: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* freebsd32_posix_fadvise */ + case 531: + if (ndx == 0 || ndx == 1) + p = "int"; + break; + /* freebsd32_wait6 */ + case 532: + if (ndx == 0 || ndx == 1) + p = "int"; + break; +#else /* freebsd32_posix_fallocate */ case 530: if (ndx == 0 || ndx == 1) @@ -10255,6 +10405,7 @@ systrace_return_setargdesc(int sysnum, i if (ndx == 0 || ndx == 1) p = "int"; break; +#endif /* cap_rights_limit */ case 533: if (ndx == 0 || ndx == 1) Modified: user/attilio/vmobj-readlock/sys/compat/freebsd32/syscalls.master ============================================================================== --- user/attilio/vmobj-readlock/sys/compat/freebsd32/syscalls.master Wed May 22 15:11:00 2013 (r250909) +++ user/attilio/vmobj-readlock/sys/compat/freebsd32/syscalls.master Wed May 22 15:15:05 2013 (r250910) @@ -994,6 +994,22 @@ 529 AUE_NULL NOPROTO { int rctl_remove_rule(const void *inbufp, \ size_t inbuflen, void *outbufp, \ size_t outbuflen); } +#ifdef PAD64_REQUIRED +530 AUE_NULL STD { int freebsd32_posix_fallocate(int fd, \ + int pad, \ + uint32_t offset1, uint32_t offset2,\ + uint32_t len1, uint32_t len2); } +531 AUE_NULL STD { int freebsd32_posix_fadvise(int fd, \ + int pad, \ + uint32_t offset1, uint32_t offset2,\ + uint32_t len1, uint32_t len2, \ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Thu May 23 00:49:58 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 2040A9DA; Thu, 23 May 2013 00:49:58 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 0F3ED3A6; Thu, 23 May 2013 00:49:58 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r4N0nwvG044448; Thu, 23 May 2013 00:49:58 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r4N0nqTa044409; Thu, 23 May 2013 00:49:52 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201305230049.r4N0nqTa044409@svn.freebsd.org> From: Attilio Rao Date: Thu, 23 May 2013 00:49:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250922 - in user/attilio/vmcontention: include include/arpa include/protocols lib/libc/gen lib/libc/net sbin/hastd share/i18n/csmapper share/i18n/esdb share/man/man5 share/man/man9 sys... X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 May 2013 00:49:58 -0000 Author: attilio Date: Thu May 23 00:49:52 2013 New Revision: 250922 URL: http://svnweb.freebsd.org/changeset/base/250922 Log: MFC Modified: user/attilio/vmcontention/include/arpa/tftp.h user/attilio/vmcontention/include/fts.h user/attilio/vmcontention/include/ifaddrs.h user/attilio/vmcontention/include/protocols/rwhod.h user/attilio/vmcontention/lib/libc/gen/fts.3 user/attilio/vmcontention/lib/libc/net/getifaddrs.3 user/attilio/vmcontention/lib/libc/net/getifmaddrs.3 user/attilio/vmcontention/sbin/hastd/hast.h user/attilio/vmcontention/sbin/hastd/parse.y user/attilio/vmcontention/sbin/hastd/token.l user/attilio/vmcontention/share/i18n/csmapper/Makefile user/attilio/vmcontention/share/i18n/esdb/Makefile user/attilio/vmcontention/share/man/man5/src.conf.5 user/attilio/vmcontention/share/man/man9/locking.9 user/attilio/vmcontention/sys/dev/mps/mps_user.c user/attilio/vmcontention/sys/dev/xen/netfront/netfront.c user/attilio/vmcontention/sys/kern/kern_poll.c user/attilio/vmcontention/sys/kern/uipc_usrreq.c user/attilio/vmcontention/sys/net/ppp_defs.h user/attilio/vmcontention/sys/sys/timex.h user/attilio/vmcontention/sys/ufs/ffs/ffs_softdep.c user/attilio/vmcontention/sys/vm/vm_fault.c user/attilio/vmcontention/sys/xen/xenbus/xenbusb.c user/attilio/vmcontention/tools/tools/ath/athalq/main.c user/attilio/vmcontention/usr.sbin/mergemaster/mergemaster.sh Directory Properties: user/attilio/vmcontention/ (props changed) user/attilio/vmcontention/lib/libc/ (props changed) user/attilio/vmcontention/sbin/ (props changed) user/attilio/vmcontention/sys/ (props changed) Modified: user/attilio/vmcontention/include/arpa/tftp.h ============================================================================== --- user/attilio/vmcontention/include/arpa/tftp.h Thu May 23 00:21:43 2013 (r250921) +++ user/attilio/vmcontention/include/arpa/tftp.h Thu May 23 00:49:52 2013 (r250922) @@ -33,6 +33,8 @@ #ifndef _ARPA_TFTP_H_ #define _ARPA_TFTP_H_ +#include + /* * Trivial File Transfer Protocol (IEN-133) */ Modified: user/attilio/vmcontention/include/fts.h ============================================================================== --- user/attilio/vmcontention/include/fts.h Thu May 23 00:21:43 2013 (r250921) +++ user/attilio/vmcontention/include/fts.h Thu May 23 00:49:52 2013 (r250922) @@ -33,15 +33,17 @@ #ifndef _FTS_H_ #define _FTS_H_ +#include + typedef struct { struct _ftsent *fts_cur; /* current node */ struct _ftsent *fts_child; /* linked list of children */ struct _ftsent **fts_array; /* sort array */ - dev_t fts_dev; /* starting device # */ + __dev_t fts_dev; /* starting device # */ char *fts_path; /* path for this descent */ int fts_rfd; /* fd for root */ - size_t fts_pathlen; /* sizeof(path) */ - size_t fts_nitems; /* elements in the sort array */ + __size_t fts_pathlen; /* sizeof(path) */ + __size_t fts_nitems; /* elements in the sort array */ int (*fts_compar) /* compare function */ (const struct _ftsent * const *, const struct _ftsent * const *); @@ -72,12 +74,12 @@ typedef struct _ftsent { char *fts_path; /* root path */ int fts_errno; /* errno for this node */ int fts_symfd; /* fd for symlink */ - size_t fts_pathlen; /* strlen(fts_path) */ - size_t fts_namelen; /* strlen(fts_name) */ + __size_t fts_pathlen; /* strlen(fts_path) */ + __size_t fts_namelen; /* strlen(fts_name) */ - ino_t fts_ino; /* inode */ - dev_t fts_dev; /* device */ - nlink_t fts_nlink; /* link count */ + __ino_t fts_ino; /* inode */ + __dev_t fts_dev; /* device */ + __nlink_t fts_nlink; /* link count */ #define FTS_ROOTPARENTLEVEL -1 #define FTS_ROOTLEVEL 0 Modified: user/attilio/vmcontention/include/ifaddrs.h ============================================================================== --- user/attilio/vmcontention/include/ifaddrs.h Thu May 23 00:21:43 2013 (r250921) +++ user/attilio/vmcontention/include/ifaddrs.h Thu May 23 00:49:52 2013 (r250922) @@ -31,7 +31,7 @@ struct ifaddrs { struct ifaddrs *ifa_next; char *ifa_name; - u_int ifa_flags; + unsigned int ifa_flags; struct sockaddr *ifa_addr; struct sockaddr *ifa_netmask; struct sockaddr *ifa_dstaddr; Modified: user/attilio/vmcontention/include/protocols/rwhod.h ============================================================================== --- user/attilio/vmcontention/include/protocols/rwhod.h Thu May 23 00:21:43 2013 (r250921) +++ user/attilio/vmcontention/include/protocols/rwhod.h Thu May 23 00:49:52 2013 (r250922) @@ -34,13 +34,15 @@ #ifndef _PROTOCOLS_RWHOD_H_ #define _PROTOCOLS_RWHOD_H_ +#include + /* * rwho protocol packet format. */ struct outmp { char out_line[8]; /* tty name */ char out_name[8]; /* user id */ - int32_t out_time; /* time on */ + __int32_t out_time; /* time on */ }; struct whod { Modified: user/attilio/vmcontention/lib/libc/gen/fts.3 ============================================================================== --- user/attilio/vmcontention/lib/libc/gen/fts.3 Thu May 23 00:21:43 2013 (r250921) +++ user/attilio/vmcontention/lib/libc/gen/fts.3 Thu May 23 00:49:52 2013 (r250922) @@ -28,7 +28,7 @@ .\" @(#)fts.3 8.5 (Berkeley) 4/16/94 .\" $FreeBSD$ .\" -.Dd March 18, 2012 +.Dd May 21, 2013 .Dt FTS 3 .Os .Sh NAME @@ -37,8 +37,6 @@ .Sh LIBRARY .Lb libc .Sh SYNOPSIS -.In sys/types.h -.In sys/stat.h .In fts.h .Ft FTS * .Fn fts_open "char * const *path_argv" "int options" "int (*compar)(const FTSENT * const *, const FTSENT * const *)" Modified: user/attilio/vmcontention/lib/libc/net/getifaddrs.3 ============================================================================== --- user/attilio/vmcontention/lib/libc/net/getifaddrs.3 Thu May 23 00:21:43 2013 (r250921) +++ user/attilio/vmcontention/lib/libc/net/getifaddrs.3 Thu May 23 00:49:52 2013 (r250922) @@ -24,15 +24,13 @@ .\" .\" $FreeBSD$ .\" -.Dd October 12, 1995 +.Dd May 21, 2013 .Dt GETIFADDRS 3 .Os .Sh NAME .Nm getifaddrs .Nd get interface addresses .Sh SYNOPSIS -.In sys/types.h -.In sys/socket.h .In ifaddrs.h .Ft int .Fn getifaddrs "struct ifaddrs **ifap" Modified: user/attilio/vmcontention/lib/libc/net/getifmaddrs.3 ============================================================================== --- user/attilio/vmcontention/lib/libc/net/getifmaddrs.3 Thu May 23 00:21:43 2013 (r250921) +++ user/attilio/vmcontention/lib/libc/net/getifmaddrs.3 Thu May 23 00:49:52 2013 (r250922) @@ -20,15 +20,13 @@ .\" .\" $FreeBSD$ .\" -.Dd November 14, 2003 +.Dd May 21, 2013 .Dt GETIFMADDRS 3 .Os .Sh NAME .Nm getifmaddrs .Nd get multicast group memberships .Sh SYNOPSIS -.In sys/types.h -.In sys/socket.h .In ifaddrs.h .Ft int .Fn getifmaddrs "struct ifmaddrs **ifmap" Modified: user/attilio/vmcontention/sbin/hastd/hast.h ============================================================================== --- user/attilio/vmcontention/sbin/hastd/hast.h Thu May 23 00:21:43 2013 (r250921) +++ user/attilio/vmcontention/sbin/hastd/hast.h Thu May 23 00:49:52 2013 (r250922) @@ -259,7 +259,4 @@ struct hast_resource { struct hastd_config *yy_config_parse(const char *config, bool exitonerror); void yy_config_free(struct hastd_config *config); -void yyerror(const char *); -int yylex(void); - #endif /* !_HAST_H_ */ Modified: user/attilio/vmcontention/sbin/hastd/parse.y ============================================================================== --- user/attilio/vmcontention/sbin/hastd/parse.y Thu May 23 00:21:43 2013 (r250921) +++ user/attilio/vmcontention/sbin/hastd/parse.y Thu May 23 00:49:52 2013 (r250922) @@ -75,6 +75,8 @@ static char depth1_provname[PATH_MAX]; static char depth1_localpath[PATH_MAX]; static int depth1_metaflush; +extern void yyerror(const char *); +extern int yylex(void); extern void yyrestart(FILE *); static int isitme(const char *name); Modified: user/attilio/vmcontention/sbin/hastd/token.l ============================================================================== --- user/attilio/vmcontention/sbin/hastd/token.l Thu May 23 00:21:43 2013 (r250921) +++ user/attilio/vmcontention/sbin/hastd/token.l Thu May 23 00:49:52 2013 (r250922) @@ -42,6 +42,9 @@ int depth; int lineno; #define DP do { } while (0) +#define YY_DECL int yylex(void) + +extern int yylex(void); %} %option noinput Modified: user/attilio/vmcontention/share/i18n/csmapper/Makefile ============================================================================== --- user/attilio/vmcontention/share/i18n/csmapper/Makefile Thu May 23 00:21:43 2013 (r250921) +++ user/attilio/vmcontention/share/i18n/csmapper/Makefile Thu May 23 00:49:52 2013 (r250922) @@ -7,7 +7,7 @@ SUBDIR= APPLE AST BIG5 CNS CP EBCDIC GB KAZAKH KOI KS MISC TCVN mapper.dir: ${SUBDIR} - touch ${.TARGET} + > ${.TARGET} .for i in ${SUBDIR} cat ${i}/mapper.dir.${i} >> ${.TARGET} .endfor @@ -18,7 +18,7 @@ FILES+= mapper.dir mapper.dir.db CLEANFILES+= mapper.dir mapper.dir.db charset.pivot: ${SUBDIR} - touch ${.TARGET} + > ${.TARGET} .for i in ${SUBDIR} cat ${i}/charset.pivot.${i} >> ${.TARGET} .endfor Modified: user/attilio/vmcontention/share/i18n/esdb/Makefile ============================================================================== --- user/attilio/vmcontention/share/i18n/esdb/Makefile Thu May 23 00:21:43 2013 (r250921) +++ user/attilio/vmcontention/share/i18n/esdb/Makefile Thu May 23 00:49:52 2013 (r250922) @@ -10,7 +10,7 @@ FILES+= esdb.dir esdb.dir.db esdb.alias CLEANFILES= ${FILES} esdb.dir: ${SUBDIR} - touch $@ + > $@ .for i in ${SUBDIR} cat ${i}/esdb.dir.${i} >>${.TARGET} .endfor @@ -18,7 +18,7 @@ esdb.dir.db: esdb.dir ${MKESDB} -m -o ${.TARGET} ${.ALLSRC} esdb.alias: ${SUBDIR} - touch $@ + > $@ .for i in ${SUBDIR} cat ${i}/esdb.alias.${i} >>${.TARGET} .endfor Modified: user/attilio/vmcontention/share/man/man5/src.conf.5 ============================================================================== --- user/attilio/vmcontention/share/man/man5/src.conf.5 Thu May 23 00:21:43 2013 (r250921) +++ user/attilio/vmcontention/share/man/man5/src.conf.5 Thu May 23 00:49:52 2013 (r250922) @@ -1,7 +1,7 @@ .\" DO NOT EDIT-- this file is automatically generated. .\" from FreeBSD: head/tools/build/options/makeman 236279 2012-05-30 02:37:20Z gjb .\" $FreeBSD$ -.Dd February 15, 2013 +.Dd May 21, 2013 .Dt SRC.CONF 5 .Os .Sh NAME @@ -223,9 +223,9 @@ toolchain is enabled. .It Va WITHOUT_BLUETOOTH .\" from FreeBSD: head/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 WITH_BMAKE -.\" from FreeBSD: head/tools/build/options/WITH_BMAKE 241279 2012-10-06 19:19:21Z marcel -Build and install the portable BSD make (bmake) as +.It Va WITHOUT_BMAKE +.\" from FreeBSD: head/tools/build/options/WITHOUT_BMAKE 250839 2013-05-21 00:41:49Z delphij +Set to not build and install the portable BSD make (bmake) as .Xr make 1 instead of the traditional FreeBSD make. This build option is temporary. @@ -302,6 +302,12 @@ When set, it also enforces the following .It .Va WITHOUT_CLANG_IS_CC .El +.It Va WITH_CLANG +.\" from FreeBSD: head/tools/build/options/WITH_CLANG 221730 2011-05-10 11:14:40Z ru +Set to build the Clang C/C++ compiler. +.Pp +It is a default setting on +amd64/amd64, arm/arm, arm/armv6, i386/i386, pc98/i386, powerpc/powerpc and powerpc/powerpc64. .It Va WITH_CLANG_EXTRAS .\" from FreeBSD: head/tools/build/options/WITH_CLANG_EXTRAS 231057 2012-02-05 23:56:22Z dim Set to build additional clang and llvm tools, such as bugpoint. @@ -328,7 +334,7 @@ and .Pa /usr/bin/cpp . .Pp It is a default setting on -arm/arm, arm/armeb, arm/armv6, arm/armv6eb, ia64/ia64, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, powerpc/powerpc, powerpc/powerpc64 and sparc64/sparc64. +arm/armeb, arm/armv6eb, ia64/ia64, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, powerpc/powerpc, powerpc/powerpc64 and sparc64/sparc64. .It Va WITH_CLANG_IS_CC .\" from FreeBSD: head/tools/build/options/WITH_CLANG_IS_CC 235342 2012-05-12 16:12:36Z gjb Set to install the Clang C/C++ compiler as @@ -338,7 +344,7 @@ and .Pa /usr/bin/cpp . .Pp It is a default setting on -amd64/amd64, i386/i386 and pc98/i386. +amd64/amd64, arm/arm, arm/armv6, i386/i386 and pc98/i386. .It Va WITHOUT_CPP .\" from FreeBSD: head/tools/build/options/WITHOUT_CPP 156932 2006-03-21 07:50:50Z ru Set to not build @@ -433,6 +439,13 @@ This includes the device tree compiler ( .Pp It is a default setting on amd64/amd64, i386/i386, ia64/ia64, pc98/i386 and sparc64/sparc64. +.It Va WITH_FDT +.\" from FreeBSD: head/tools/build/options/WITH_FDT 221730 2011-05-10 11:14:40Z ru +Set to build Flattened Device Tree support as part of the base system. +This includes the device tree compiler (dtc) and libfdt support library. +.Pp +It is a default setting on +arm/arm, arm/armeb, arm/armv6, arm/armv6eb, mips/mipsel, mips/mips, mips/mips64el, mips/mips64, mips/mipsn32, powerpc/powerpc and powerpc/powerpc64. .It Va WITHOUT_FLOPPY .\" from FreeBSD: head/tools/build/options/WITHOUT_FLOPPY 221540 2011-05-06 19:13:03Z ru Set to not build or install programs @@ -523,13 +536,6 @@ Set to not build HTML docs. .It Va WITH_ICONV .\" from FreeBSD: head/tools/build/options/WITH_ICONV 219020 2011-02-25 00:10:26Z gabor Set to build iconv as part of libc. -.It Va WITH_IDEA -.\" from FreeBSD: head/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_INET .\" from FreeBSD: head/tools/build/options/WITHOUT_INET 221266 2011-04-30 17:58:28Z bz Set to not build programs and libraries related to IPv4 networking. @@ -595,8 +601,8 @@ When set, it also enforces the following .\" from FreeBSD: head/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: head/tools/build/options/WITHOUT_JAIL 183242 2008-09-21 22:02:26Z sam -Set to not build tools for the support of jails; e.g. +.\" from FreeBSD: head/tools/build/options/WITHOUT_JAIL 249966 2013-04-27 04:09:09Z eadler +Set to not build tools for the support of jails; e.g., .Xr jail 8 . .It Va WITHOUT_KDUMP .\" from FreeBSD: head/tools/build/options/WITHOUT_KDUMP 240690 2012-09-19 11:38:37Z zeising @@ -677,8 +683,8 @@ When set, the following options are also .It Va WITHOUT_BIND_UTILS .El .It Va WITHOUT_LEGACY_CONSOLE -.\" from FreeBSD: head/tools/build/options/WITHOUT_LEGACY_CONSOLE 183242 2008-09-21 22:02:26Z sam -Set to not build programs that support a legacy PC console; e.g. +.\" from FreeBSD: head/tools/build/options/WITHOUT_LEGACY_CONSOLE 249966 2013-04-27 04:09:09Z eadler +Set to not build programs that support a legacy PC console; e.g., .Xr kbdcontrol 8 and .Xr vidcontrol 8 . Modified: user/attilio/vmcontention/share/man/man9/locking.9 ============================================================================== --- user/attilio/vmcontention/share/man/man9/locking.9 Thu May 23 00:21:43 2013 (r250921) +++ user/attilio/vmcontention/share/man/man9/locking.9 Thu May 23 00:49:52 2013 (r250922) @@ -24,7 +24,7 @@ .\" .\" $FreeBSD$ .\" -.Dd May 25, 2012 +.Dd May 22, 2013 .Dt LOCKING 9 .Os .Sh NAME @@ -167,7 +167,7 @@ Giant is an instance of a mutex, with so .It It is recursive. .It -Drivers and filesystems can request that Giant be locked around them +Drivers can request that Giant be locked around them by not marking themselves MPSAFE. Note that infrastructure to do this is slowly going away as non-MPSAFE drivers either became properly locked or disappear. Modified: user/attilio/vmcontention/sys/dev/mps/mps_user.c ============================================================================== --- user/attilio/vmcontention/sys/dev/mps/mps_user.c Thu May 23 00:21:43 2013 (r250921) +++ user/attilio/vmcontention/sys/dev/mps/mps_user.c Thu May 23 00:49:52 2013 (r250922) @@ -208,8 +208,8 @@ mps_detach_user(struct mps_softc *sc) { /* XXX: do a purge of pending requests? */ - destroy_dev(sc->mps_cdev); - + if (sc->mps_cdev != NULL) + destroy_dev(sc->mps_cdev); } static int Modified: user/attilio/vmcontention/sys/dev/xen/netfront/netfront.c ============================================================================== --- user/attilio/vmcontention/sys/dev/xen/netfront/netfront.c Thu May 23 00:21:43 2013 (r250921) +++ user/attilio/vmcontention/sys/dev/xen/netfront/netfront.c Thu May 23 00:49:52 2013 (r250922) @@ -2171,10 +2171,14 @@ netfront_detach(device_t dev) static void netif_free(struct netfront_info *info) { + XN_LOCK(info); + xn_stop(info); + XN_UNLOCK(info); + callout_drain(&info->xn_stat_ch); netif_disconnect_backend(info); -#if 0 - close_netdev(info); -#endif + ifmedia_removeall(&info->sc_media); + ether_ifdetach(info->xn_ifp); + if_free(info->xn_ifp); } static void Modified: user/attilio/vmcontention/sys/kern/kern_poll.c ============================================================================== --- user/attilio/vmcontention/sys/kern/kern_poll.c Thu May 23 00:21:43 2013 (r250921) +++ user/attilio/vmcontention/sys/kern/kern_poll.c Thu May 23 00:49:52 2013 (r250922) @@ -87,12 +87,11 @@ static struct mtx poll_mtx; * The following constraints hold * * 1 <= poll_each_burst <= poll_burst <= poll_burst_max - * 0 <= poll_each_burst * MIN_POLL_BURST_MAX <= poll_burst_max <= MAX_POLL_BURST_MAX */ #define MIN_POLL_BURST_MAX 10 -#define MAX_POLL_BURST_MAX 1000 +#define MAX_POLL_BURST_MAX 20000 static uint32_t poll_burst = 5; static uint32_t poll_burst_max = 150; /* good for 100Mbit net and HZ=1000 */ Modified: user/attilio/vmcontention/sys/kern/uipc_usrreq.c ============================================================================== --- user/attilio/vmcontention/sys/kern/uipc_usrreq.c Thu May 23 00:21:43 2013 (r250921) +++ user/attilio/vmcontention/sys/kern/uipc_usrreq.c Thu May 23 00:49:52 2013 (r250922) @@ -1686,6 +1686,8 @@ unp_freerights(struct filedescent **fdep struct file *fp; int i; + if (fdcount == 0) + return; for (i = 0; i < fdcount; i++) { fp = fdep[i]->fde_file; filecaps_free(&fdep[i]->fde_caps); @@ -1768,7 +1770,8 @@ unp_externalize(struct mbuf *control, st unp_externalize_fp(fde->fde_file); } FILEDESC_XUNLOCK(fdesc); - free(fdep[0], M_FILECAPS); + if (newfds != 0) + free(fdep[0], M_FILECAPS); } else { /* We can just copy anything else across. */ if (error || controlp == NULL) @@ -1925,6 +1928,10 @@ unp_internalize(struct mbuf **controlp, error = E2BIG; goto out; } + if (oldfds == 0) { + FILEDESC_SUNLOCK(fdesc); + break; + } fdp = data; fdep = (struct filedescent **) CMSG_DATA(mtod(*controlp, struct cmsghdr *)); Modified: user/attilio/vmcontention/sys/net/ppp_defs.h ============================================================================== --- user/attilio/vmcontention/sys/net/ppp_defs.h Thu May 23 00:21:43 2013 (r250921) +++ user/attilio/vmcontention/sys/net/ppp_defs.h Thu May 23 00:49:52 2013 (r250922) @@ -31,6 +31,8 @@ #ifndef _PPP_DEFS_H_ #define _PPP_DEFS_H_ +#include + /* * The basic PPP frame. */ @@ -83,7 +85,7 @@ /* * Extended asyncmap - allows any character to be escaped. */ -typedef u_int32_t ext_accm[8]; +typedef __uint32_t ext_accm[8]; /* * What to do with network protocol (NP) packets. @@ -143,8 +145,8 @@ struct ppp_comp_stats { * the last NP packet was sent or received. */ struct ppp_idle { - time_t xmit_idle; /* time since last NP packet sent */ - time_t recv_idle; /* time since last NP packet received */ + __time_t xmit_idle; /* time since last NP packet sent */ + __time_t recv_idle; /* time since last NP packet received */ }; #ifndef __P Modified: user/attilio/vmcontention/sys/sys/timex.h ============================================================================== --- user/attilio/vmcontention/sys/sys/timex.h Thu May 23 00:21:43 2013 (r250921) +++ user/attilio/vmcontention/sys/sys/timex.h Thu May 23 00:49:52 2013 (r250922) @@ -97,6 +97,9 @@ #define _SYS_TIMEX_H_ 1 #define NTP_API 4 /* NTP API version */ +#ifdef __FreeBSD__ +#include +#endif /* __FreeBSD__ */ #ifndef MSDOS /* Microsoft specific */ #include #endif /* MSDOS */ Modified: user/attilio/vmcontention/sys/ufs/ffs/ffs_softdep.c ============================================================================== --- user/attilio/vmcontention/sys/ufs/ffs/ffs_softdep.c Thu May 23 00:21:43 2013 (r250921) +++ user/attilio/vmcontention/sys/ufs/ffs/ffs_softdep.c Thu May 23 00:49:52 2013 (r250922) @@ -656,8 +656,8 @@ FEATURE(softupdates, "FFS soft-updates s #define D_SBDEP 24 #define D_JTRUNC 25 #define D_JFSYNC 26 -#define D_SENTINAL 27 -#define D_LAST D_SENTINAL +#define D_SENTINEL 27 +#define D_LAST D_SENTINEL unsigned long dep_current[D_LAST + 1]; unsigned long dep_total[D_LAST + 1]; @@ -711,6 +711,8 @@ SOFTDEP_TYPE(SBDEP, sbdep, "Superblock w SOFTDEP_TYPE(JTRUNC, jtrunc, "Journal inode truncation"); SOFTDEP_TYPE(JFSYNC, jfsync, "Journal fsync complete"); +static MALLOC_DEFINE(M_SENTINEL, "sentinel", "Worklist sentinel"); + static MALLOC_DEFINE(M_SAVEDINO, "savedino", "Saved inodes"); static MALLOC_DEFINE(M_JBLOCKS, "jblocks", "Journal block locations"); @@ -745,7 +747,8 @@ static struct malloc_type *memtype[] = { M_JSEGDEP, M_SBDEP, M_JTRUNC, - M_JFSYNC + M_JFSYNC, + M_SENTINEL }; static LIST_HEAD(mkdirlist, mkdir) mkdirlisthd; @@ -1718,7 +1721,7 @@ process_worklist_item(mp, target, flags) int target; int flags; { - struct worklist sintenel; + struct worklist sentinel; struct worklist *wk; struct ufsmount *ump; int matchcnt; @@ -1736,14 +1739,14 @@ process_worklist_item(mp, target, flags) PHOLD(curproc); /* Don't let the stack go away. */ ump = VFSTOUFS(mp); matchcnt = 0; - sintenel.wk_mp = NULL; - sintenel.wk_type = D_SENTINAL; - LIST_INSERT_HEAD(&ump->softdep_workitem_pending, &sintenel, wk_list); - for (wk = LIST_NEXT(&sintenel, wk_list); wk != NULL; - wk = LIST_NEXT(&sintenel, wk_list)) { - if (wk->wk_type == D_SENTINAL) { - LIST_REMOVE(&sintenel, wk_list); - LIST_INSERT_AFTER(wk, &sintenel, wk_list); + sentinel.wk_mp = NULL; + sentinel.wk_type = D_SENTINEL; + LIST_INSERT_HEAD(&ump->softdep_workitem_pending, &sentinel, wk_list); + for (wk = LIST_NEXT(&sentinel, wk_list); wk != NULL; + wk = LIST_NEXT(&sentinel, wk_list)) { + if (wk->wk_type == D_SENTINEL) { + LIST_REMOVE(&sentinel, wk_list); + LIST_INSERT_AFTER(wk, &sentinel, wk_list); continue; } if (wk->wk_state & INPROGRESS) @@ -1800,11 +1803,11 @@ process_worklist_item(mp, target, flags) wake_worklist(wk); add_to_worklist(wk, WK_HEAD); } - LIST_REMOVE(&sintenel, wk_list); + LIST_REMOVE(&sentinel, wk_list); /* Sentinal could've become the tail from remove_from_worklist. */ - if (ump->softdep_worklist_tail == &sintenel) + if (ump->softdep_worklist_tail == &sentinel) ump->softdep_worklist_tail = - (struct worklist *)sintenel.wk_list.le_prev; + (struct worklist *)sentinel.wk_list.le_prev; PRELE(curproc); return (matchcnt); } @@ -4984,13 +4987,14 @@ bmsafemap_lookup(mp, bp, cg, newbmsafema struct fs *fs; mtx_assert(&lk, MA_OWNED); - if (bp) - LIST_FOREACH(wk, &bp->b_dep, wk_list) - if (wk->wk_type == D_BMSAFEMAP) { - if (newbmsafemap) - WORKITEM_FREE(newbmsafemap,D_BMSAFEMAP); - return (WK_BMSAFEMAP(wk)); - } + KASSERT(bp != NULL, ("bmsafemap_lookup: missing buffer")); + LIST_FOREACH(wk, &bp->b_dep, wk_list) { + if (wk->wk_type == D_BMSAFEMAP) { + if (newbmsafemap) + WORKITEM_FREE(newbmsafemap, D_BMSAFEMAP); + return (WK_BMSAFEMAP(wk)); + } + } fs = VFSTOUFS(mp)->um_fs; bmsafemaphd = BMSAFEMAP_HASH(fs, cg); if (bmsafemap_find(bmsafemaphd, mp, cg, &bmsafemap) == 1) { @@ -8149,6 +8153,7 @@ setup_newdir(dap, newinum, dinum, newdir (inodedep->id_state & ALLCOMPLETE) == ALLCOMPLETE) { dap->da_state &= ~MKDIR_PARENT; WORKITEM_FREE(mkdir2, D_MKDIR); + mkdir2 = NULL; } else { LIST_INSERT_HEAD(&mkdirlisthd, mkdir2, md_mkdirs); WORKLIST_INSERT(&inodedep->id_bufwait, &mkdir2->md_list); @@ -9357,13 +9362,16 @@ clear_unlinked_inodedep(inodedep) if (idp && (idp->id_state & UNLINKNEXT)) pino = idp->id_ino; FREE_LOCK(&lk); - if (pino == 0) + if (pino == 0) { bp = getblk(ump->um_devvp, btodb(fs->fs_sblockloc), (int)fs->fs_sbsize, 0, 0, 0); - else + } else { error = bread(ump->um_devvp, fsbtodb(fs, ino_to_fsba(fs, pino)), (int)fs->fs_bsize, NOCRED, &bp); + if (error) + brelse(bp); + } ACQUIRE_LOCK(&lk); if (error) break; @@ -12127,7 +12135,7 @@ restart: /* * Sync all cylinder groups that were dirty at the time this function is - * called. Newly dirtied cgs will be inserted before the sintenel. This + * called. Newly dirtied cgs will be inserted before the sentinel. This * is used to flush freedep activity that may be holding up writes to a * indirect block. */ @@ -12137,25 +12145,25 @@ sync_cgs(mp, waitfor) int waitfor; { struct bmsafemap *bmsafemap; - struct bmsafemap *sintenel; + struct bmsafemap *sentinel; struct ufsmount *ump; struct buf *bp; int error; - sintenel = malloc(sizeof(*sintenel), M_BMSAFEMAP, M_ZERO | M_WAITOK); - sintenel->sm_cg = -1; + sentinel = malloc(sizeof(*sentinel), M_BMSAFEMAP, M_ZERO | M_WAITOK); + sentinel->sm_cg = -1; ump = VFSTOUFS(mp); error = 0; ACQUIRE_LOCK(&lk); - LIST_INSERT_HEAD(&ump->softdep_dirtycg, sintenel, sm_next); - for (bmsafemap = LIST_NEXT(sintenel, sm_next); bmsafemap != NULL; - bmsafemap = LIST_NEXT(sintenel, sm_next)) { - /* Skip sintenels and cgs with no work to release. */ + LIST_INSERT_HEAD(&ump->softdep_dirtycg, sentinel, sm_next); + for (bmsafemap = LIST_NEXT(sentinel, sm_next); bmsafemap != NULL; + bmsafemap = LIST_NEXT(sentinel, sm_next)) { + /* Skip sentinels and cgs with no work to release. */ if (bmsafemap->sm_cg == -1 || (LIST_EMPTY(&bmsafemap->sm_freehd) && LIST_EMPTY(&bmsafemap->sm_freewr))) { - LIST_REMOVE(sintenel, sm_next); - LIST_INSERT_AFTER(bmsafemap, sintenel, sm_next); + LIST_REMOVE(sentinel, sm_next); + LIST_INSERT_AFTER(bmsafemap, sentinel, sm_next); continue; } /* @@ -12165,8 +12173,8 @@ sync_cgs(mp, waitfor) bp = getdirtybuf(bmsafemap->sm_buf, &lk, waitfor); if (bp == NULL && waitfor == MNT_WAIT) continue; - LIST_REMOVE(sintenel, sm_next); - LIST_INSERT_AFTER(bmsafemap, sintenel, sm_next); + LIST_REMOVE(sentinel, sm_next); + LIST_INSERT_AFTER(bmsafemap, sentinel, sm_next); if (bp == NULL) continue; FREE_LOCK(&lk); @@ -12178,9 +12186,9 @@ sync_cgs(mp, waitfor) if (error) break; } - LIST_REMOVE(sintenel, sm_next); + LIST_REMOVE(sentinel, sm_next); FREE_LOCK(&lk); - free(sintenel, M_BMSAFEMAP); + free(sentinel, M_BMSAFEMAP); return (error); } @@ -13178,6 +13186,7 @@ softdep_inode_append(ip, cred, wkhd) error = bread(ip->i_devvp, fsbtodb(fs, ino_to_fsba(fs, ip->i_number)), (int)fs->fs_bsize, cred, &bp); if (error) { + bqrelse(bp); softdep_freework(wkhd); return; } Modified: user/attilio/vmcontention/sys/vm/vm_fault.c ============================================================================== --- user/attilio/vmcontention/sys/vm/vm_fault.c Thu May 23 00:21:43 2013 (r250921) +++ user/attilio/vmcontention/sys/vm/vm_fault.c Thu May 23 00:49:52 2013 (r250922) @@ -1318,7 +1318,7 @@ vm_fault_copy_entry(vm_map_t dst_map, vm * (Because the source is wired down, the page will be in * memory.) */ - VM_OBJECT_WLOCK(src_object); + VM_OBJECT_RLOCK(src_object); object = src_object; pindex = src_pindex + dst_pindex; while ((src_m = vm_page_lookup(object, pindex)) == NULL && @@ -1327,15 +1327,15 @@ vm_fault_copy_entry(vm_map_t dst_map, vm /* * Allow fallback to backing objects if we are reading. */ - VM_OBJECT_WLOCK(backing_object); + VM_OBJECT_RLOCK(backing_object); pindex += OFF_TO_IDX(object->backing_object_offset); - VM_OBJECT_WUNLOCK(object); + VM_OBJECT_RUNLOCK(object); object = backing_object; } if (src_m == NULL) panic("vm_fault_copy_wired: page missing"); pmap_copy_page(src_m, dst_m); - VM_OBJECT_WUNLOCK(object); + VM_OBJECT_RUNLOCK(object); dst_m->valid = VM_PAGE_BITS_ALL; dst_m->dirty = VM_PAGE_BITS_ALL; VM_OBJECT_WUNLOCK(dst_object); Modified: user/attilio/vmcontention/sys/xen/xenbus/xenbusb.c ============================================================================== --- user/attilio/vmcontention/sys/xen/xenbus/xenbusb.c Thu May 23 00:21:43 2013 (r250921) +++ user/attilio/vmcontention/sys/xen/xenbus/xenbusb.c Thu May 23 00:49:52 2013 (r250922) @@ -404,6 +404,31 @@ xenbusb_device_sysctl_init(device_t dev) } /** + * \brief Decrement the number of XenBus child devices in the + * connecting state by one and release the xbs_attch_ch + * interrupt configuration hook if the connecting count + * drops to zero. + * + * \param xbs XenBus Bus device softc of the owner of the bus to enumerate. + */ +static void +xenbusb_release_confighook(struct xenbusb_softc *xbs) +{ + mtx_lock(&xbs->xbs_lock); + KASSERT(xbs->xbs_connecting_children > 0, + ("Connecting device count error\n")); + xbs->xbs_connecting_children--; + if (xbs->xbs_connecting_children == 0 + && (xbs->xbs_flags & XBS_ATTACH_CH_ACTIVE) != 0) { + xbs->xbs_flags &= ~XBS_ATTACH_CH_ACTIVE; + mtx_unlock(&xbs->xbs_lock); + config_intrhook_disestablish(&xbs->xbs_attach_ch); + } else { + mtx_unlock(&xbs->xbs_lock); + } +} + +/** * \brief Verify the existance of attached device instances and perform * probe/attach processing for newly arrived devices. * @@ -417,7 +442,7 @@ xenbusb_probe_children(device_t dev) { device_t *kids; struct xenbus_device_ivars *ivars; - int i, count; + int i, count, error; if (device_get_children(dev, &kids, &count) == 0) { for (i = 0; i < count; i++) { @@ -430,7 +455,30 @@ xenbusb_probe_children(device_t dev) continue; } - if (device_probe_and_attach(kids[i])) { + error = device_probe_and_attach(kids[i]); + if (error == ENXIO) { + struct xenbusb_softc *xbs; + + /* + * We don't have a PV driver for this device. + * However, an emulated device we do support + * may share this backend. Hide the node from + * XenBus until the next rescan, but leave it's + * state unchanged so we don't inadvertently + * prevent attachment of any emulated device. + */ + xenbusb_delete_child(dev, kids[i]); + + /* + * Since the XenStore state of this device + * still indicates a pending attach, manually + * release it's hold on the boot process. + */ + xbs = device_get_softc(dev); + xenbusb_release_confighook(xbs); + + continue; + } else if (error) { /* * Transition device to the closed state * so the world knows that attachment will @@ -579,31 +627,6 @@ xenbusb_nop_confighook_cb(void *arg __un { } -/** - * \brief Decrement the number of XenBus child devices in the - * connecting state by one and release the xbs_attch_ch - * interrupt configuration hook if the connecting count - * drops to zero. - * - * \param xbs XenBus Bus device softc of the owner of the bus to enumerate. - */ -static void -xenbusb_release_confighook(struct xenbusb_softc *xbs) -{ - mtx_lock(&xbs->xbs_lock); - KASSERT(xbs->xbs_connecting_children > 0, - ("Connecting device count error\n")); - xbs->xbs_connecting_children--; - if (xbs->xbs_connecting_children == 0 - && (xbs->xbs_flags & XBS_ATTACH_CH_ACTIVE) != 0) { - xbs->xbs_flags &= ~XBS_ATTACH_CH_ACTIVE; - mtx_unlock(&xbs->xbs_lock); - config_intrhook_disestablish(&xbs->xbs_attach_ch); - } else { - mtx_unlock(&xbs->xbs_lock); - } -} - /*--------------------------- Public Functions -------------------------------*/ /*--------- API comments for these methods can be found in xenbusb.h ---------*/ void Modified: user/attilio/vmcontention/tools/tools/ath/athalq/main.c ============================================================================== --- user/attilio/vmcontention/tools/tools/ath/athalq/main.c Thu May 23 00:21:43 2013 (r250921) +++ user/attilio/vmcontention/tools/tools/ath/athalq/main.c Thu May 23 00:49:52 2013 (r250922) @@ -75,6 +75,36 @@ ath_alq_print_intr_status(struct if_ath_ be32toh(is.intr_status)); } +static void +ath_alq_print_beacon_miss(struct if_ath_alq_payload *a) +{ + + printf("[%u.%06u] [%llu] BMISS\n", + (unsigned int) be32toh(a->hdr.tstamp_sec), + (unsigned int) be32toh(a->hdr.tstamp_usec), + (unsigned long long) be64toh(a->hdr.threadid)); +} + +static void +ath_alq_print_beacon_stuck(struct if_ath_alq_payload *a) +{ + + printf("[%u.%06u] [%llu] BSTUCK\n", + (unsigned int) be32toh(a->hdr.tstamp_sec), + (unsigned int) be32toh(a->hdr.tstamp_usec), + (unsigned long long) be64toh(a->hdr.threadid)); +} + +static void +ath_alq_print_beacon_resume(struct if_ath_alq_payload *a) +{ + + printf("[%u.%06u] [%llu] BRESUME\n", + (unsigned int) be32toh(a->hdr.tstamp_sec), + (unsigned int) be32toh(a->hdr.tstamp_usec), + (unsigned long long) be64toh(a->hdr.threadid)); +} + int main(int argc, const char *argv[]) { @@ -147,6 +177,15 @@ main(int argc, const char *argv[]) case ATH_ALQ_INTR_STATUS: ath_alq_print_intr_status(a); break; + case ATH_ALQ_MISSED_BEACON: + ath_alq_print_beacon_miss(a); + break; + case ATH_ALQ_STUCK_BEACON: + ath_alq_print_beacon_stuck(a); + break; + case ATH_ALQ_RESUME_BEACON: + ath_alq_print_beacon_resume(a); + break; default: if (be32toh(hdr.sc_hal_magic) == AR5210_MAGIC) ar5210_alq_payload(a); Modified: user/attilio/vmcontention/usr.sbin/mergemaster/mergemaster.sh ============================================================================== --- user/attilio/vmcontention/usr.sbin/mergemaster/mergemaster.sh Thu May 23 00:21:43 2013 (r250921) +++ user/attilio/vmcontention/usr.sbin/mergemaster/mergemaster.sh Thu May 23 00:49:52 2013 (r250922) @@ -1327,7 +1327,7 @@ case "${NEED_PWD_MKDB}" in ;; esac -if [ -e "${DESTDIR}/etc/localtime" -a -z "${PRE_WORLD}" ]; then # Ignore if TZ == UTC +if [ -e "${DESTDIR}/etc/localtime" -a ! -L "${DESTDIR}/etc/localtime" -a -z "${PRE_WORLD}" ]; then # Ignore if TZ == UTC echo '' [ -n "${DESTDIR}" ] && tzs_args="-C ${DESTDIR}" if [ -f "${DESTDIR}/var/db/zoneinfo" ]; then From owner-svn-src-user@FreeBSD.ORG Thu May 23 00:52:52 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 5D769B87; Thu, 23 May 2013 00:52:52 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 4B6B43DA; Thu, 23 May 2013 00:52:52 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r4N0qqZj046600; Thu, 23 May 2013 00:52:52 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r4N0qmDW046573; Thu, 23 May 2013 00:52:48 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201305230052.r4N0qmDW046573@svn.freebsd.org> From: Attilio Rao Date: Thu, 23 May 2013 00:52:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250923 - in user/attilio/vmobj-readlock: . cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/cg cddl/contrib/opensolaris/lib/libdtrace/common contrib/bmake contrib/bmake/mk contrib/f... X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 May 2013 00:52:52 -0000 Author: attilio Date: Thu May 23 00:52:48 2013 New Revision: 250923 URL: http://svnweb.freebsd.org/changeset/base/250923 Log: Merge from vmcontention. Added: user/attilio/vmobj-readlock/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/cg/ - copied from r250886, user/attilio/vmcontention/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/cg/ user/attilio/vmobj-readlock/contrib/bmake/mk/stage-install.sh - copied unchanged from r250886, user/attilio/vmcontention/contrib/bmake/mk/stage-install.sh user/attilio/vmobj-readlock/contrib/flex/ - copied from r250886, user/attilio/vmcontention/contrib/flex/ user/attilio/vmobj-readlock/include/uchar.h - copied unchanged from r250886, user/attilio/vmcontention/include/uchar.h user/attilio/vmobj-readlock/include/xlocale/_uchar.h - copied unchanged from r250886, user/attilio/vmcontention/include/xlocale/_uchar.h user/attilio/vmobj-readlock/lib/csu/Makefile - copied unchanged from r250886, user/attilio/vmcontention/lib/csu/Makefile user/attilio/vmobj-readlock/lib/libc/locale/c16rtomb.c - copied unchanged from r250886, user/attilio/vmcontention/lib/libc/locale/c16rtomb.c user/attilio/vmobj-readlock/lib/libc/locale/c32rtomb.c - copied unchanged from r250886, user/attilio/vmcontention/lib/libc/locale/c32rtomb.c user/attilio/vmobj-readlock/lib/libc/locale/mbrtoc16.c - copied unchanged from r250886, user/attilio/vmcontention/lib/libc/locale/mbrtoc16.c user/attilio/vmobj-readlock/lib/libc/locale/mbrtoc32.c - copied unchanged from r250886, user/attilio/vmcontention/lib/libc/locale/mbrtoc32.c user/attilio/vmobj-readlock/release/doc/ja_JP.eucJP/share/xml/dev-auto-ja.ent - copied unchanged from r250886, user/attilio/vmcontention/release/doc/ja_JP.eucJP/share/xml/dev-auto-ja.ent user/attilio/vmobj-readlock/release/doc/ru_RU.KOI8-R/share/xml/dev-auto-ru.ent - copied unchanged from r250886, user/attilio/vmcontention/release/doc/ru_RU.KOI8-R/share/xml/dev-auto-ru.ent user/attilio/vmobj-readlock/tools/build/options/WITHOUT_BMAKE - copied unchanged from r250886, user/attilio/vmcontention/tools/build/options/WITHOUT_BMAKE user/attilio/vmobj-readlock/tools/regression/lib/libc/gen/test-popen.c - copied unchanged from r250886, user/attilio/vmcontention/tools/regression/lib/libc/gen/test-popen.c user/attilio/vmobj-readlock/tools/regression/lib/libc/locale/test-c16rtomb.c - copied unchanged from r250886, user/attilio/vmcontention/tools/regression/lib/libc/locale/test-c16rtomb.c user/attilio/vmobj-readlock/tools/regression/lib/libc/locale/test-mbrtoc16.c - copied unchanged from r250886, user/attilio/vmcontention/tools/regression/lib/libc/locale/test-mbrtoc16.c user/attilio/vmobj-readlock/usr.bin/lex/initparse.c - copied unchanged from r250886, user/attilio/vmcontention/usr.bin/lex/initparse.c user/attilio/vmobj-readlock/usr.bin/lex/initparse.h - copied unchanged from r250886, user/attilio/vmcontention/usr.bin/lex/initparse.h user/attilio/vmobj-readlock/usr.bin/lex/initskel.c - copied unchanged from r250886, user/attilio/vmcontention/usr.bin/lex/initskel.c user/attilio/vmobj-readlock/usr.bin/lex/version.awk - copied unchanged from r250886, user/attilio/vmcontention/usr.bin/lex/version.awk Deleted: user/attilio/vmobj-readlock/release/doc/ja_JP.eucJP/share/xml/dev-auto-ja.xml user/attilio/vmobj-readlock/release/doc/ru_RU.KOI8-R/share/xml/dev-auto-ru.xml user/attilio/vmobj-readlock/tools/build/options/WITH_BMAKE user/attilio/vmobj-readlock/usr.bin/lex/COPYING user/attilio/vmobj-readlock/usr.bin/lex/FlexLexer.h user/attilio/vmobj-readlock/usr.bin/lex/NEWS user/attilio/vmobj-readlock/usr.bin/lex/README user/attilio/vmobj-readlock/usr.bin/lex/ccl.c user/attilio/vmobj-readlock/usr.bin/lex/dfa.c user/attilio/vmobj-readlock/usr.bin/lex/ecs.c user/attilio/vmobj-readlock/usr.bin/lex/flex.skl user/attilio/vmobj-readlock/usr.bin/lex/flexdef.h user/attilio/vmobj-readlock/usr.bin/lex/gen.c user/attilio/vmobj-readlock/usr.bin/lex/lib/libmain.c user/attilio/vmobj-readlock/usr.bin/lex/lib/libyywrap.c user/attilio/vmobj-readlock/usr.bin/lex/main.c user/attilio/vmobj-readlock/usr.bin/lex/misc.c user/attilio/vmobj-readlock/usr.bin/lex/mkskel.sh user/attilio/vmobj-readlock/usr.bin/lex/nfa.c user/attilio/vmobj-readlock/usr.bin/lex/parse.y user/attilio/vmobj-readlock/usr.bin/lex/scan.l user/attilio/vmobj-readlock/usr.bin/lex/sym.c user/attilio/vmobj-readlock/usr.bin/lex/tblcmp.c user/attilio/vmobj-readlock/usr.bin/lex/version.h user/attilio/vmobj-readlock/usr.bin/lex/yylex.c Modified: user/attilio/vmobj-readlock/MAINTAINERS (contents, props changed) user/attilio/vmobj-readlock/Makefile.inc1 user/attilio/vmobj-readlock/ObsoleteFiles.inc user/attilio/vmobj-readlock/UPDATING user/attilio/vmobj-readlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cg.c user/attilio/vmobj-readlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_dis.c user/attilio/vmobj-readlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_error.c user/attilio/vmobj-readlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_errtags.h user/attilio/vmobj-readlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_regset.c user/attilio/vmobj-readlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_regset.h user/attilio/vmobj-readlock/contrib/bmake/ChangeLog user/attilio/vmobj-readlock/contrib/bmake/FILES user/attilio/vmobj-readlock/contrib/bmake/Makefile user/attilio/vmobj-readlock/contrib/bmake/meta.c user/attilio/vmobj-readlock/contrib/bmake/mk/ChangeLog user/attilio/vmobj-readlock/contrib/bmake/mk/FILES user/attilio/vmobj-readlock/contrib/bmake/mk/gendirdeps.mk user/attilio/vmobj-readlock/contrib/bmake/mk/install-mk user/attilio/vmobj-readlock/contrib/bmake/mk/meta.stage.mk user/attilio/vmobj-readlock/contrib/bmake/mk/meta2deps.py user/attilio/vmobj-readlock/contrib/bmake/mk/meta2deps.sh user/attilio/vmobj-readlock/contrib/bmake/mk/options.mk user/attilio/vmobj-readlock/contrib/bmake/mk/progs.mk user/attilio/vmobj-readlock/contrib/bmake/suff.c user/attilio/vmobj-readlock/contrib/bmake/var.c user/attilio/vmobj-readlock/crypto/heimdal/lib/kadm5/ipropd_master.c user/attilio/vmobj-readlock/etc/rc user/attilio/vmobj-readlock/etc/rc.d/ipfw user/attilio/vmobj-readlock/etc/rc.d/netif user/attilio/vmobj-readlock/etc/rc.d/routing user/attilio/vmobj-readlock/etc/rc.shutdown user/attilio/vmobj-readlock/gnu/usr.bin/diff/Makefile user/attilio/vmobj-readlock/gnu/usr.bin/grep/Makefile user/attilio/vmobj-readlock/gnu/usr.bin/grep/dfa.c user/attilio/vmobj-readlock/gnu/usr.bin/grep/grep.c user/attilio/vmobj-readlock/gnu/usr.bin/grep/search.c user/attilio/vmobj-readlock/include/Makefile user/attilio/vmobj-readlock/include/arpa/tftp.h user/attilio/vmobj-readlock/include/fts.h user/attilio/vmobj-readlock/include/ifaddrs.h user/attilio/vmobj-readlock/include/protocols/rwhod.h user/attilio/vmobj-readlock/include/stdatomic.h user/attilio/vmobj-readlock/include/xlocale/Makefile user/attilio/vmobj-readlock/lib/libc/gen/fts.3 user/attilio/vmobj-readlock/lib/libc/gen/popen.3 user/attilio/vmobj-readlock/lib/libc/gen/popen.c user/attilio/vmobj-readlock/lib/libc/locale/Makefile.inc user/attilio/vmobj-readlock/lib/libc/locale/Symbol.map user/attilio/vmobj-readlock/lib/libc/locale/mbrtowc.3 user/attilio/vmobj-readlock/lib/libc/locale/wcrtomb.3 user/attilio/vmobj-readlock/lib/libc/locale/xlocale_private.h user/attilio/vmobj-readlock/lib/libc/net/getifaddrs.3 user/attilio/vmobj-readlock/lib/libc/net/getifmaddrs.3 user/attilio/vmobj-readlock/lib/libc/sys/setfib.2 user/attilio/vmobj-readlock/release/doc/en_US.ISO8859-1/hardware/Makefile user/attilio/vmobj-readlock/release/doc/ja_JP.eucJP/hardware/alpha/Makefile user/attilio/vmobj-readlock/release/doc/ja_JP.eucJP/hardware/amd64/Makefile user/attilio/vmobj-readlock/release/doc/ja_JP.eucJP/hardware/i386/Makefile user/attilio/vmobj-readlock/release/doc/ja_JP.eucJP/hardware/ia64/Makefile user/attilio/vmobj-readlock/release/doc/ja_JP.eucJP/hardware/pc98/Makefile user/attilio/vmobj-readlock/release/doc/ja_JP.eucJP/hardware/sparc64/Makefile user/attilio/vmobj-readlock/release/doc/ja_JP.eucJP/share/xml/catalog user/attilio/vmobj-readlock/release/doc/ja_JP.eucJP/share/xml/catalog.xml user/attilio/vmobj-readlock/release/doc/ru_RU.KOI8-R/hardware/alpha/Makefile user/attilio/vmobj-readlock/release/doc/ru_RU.KOI8-R/hardware/amd64/Makefile user/attilio/vmobj-readlock/release/doc/ru_RU.KOI8-R/hardware/i386/Makefile user/attilio/vmobj-readlock/release/doc/ru_RU.KOI8-R/hardware/ia64/Makefile user/attilio/vmobj-readlock/release/doc/ru_RU.KOI8-R/hardware/pc98/Makefile user/attilio/vmobj-readlock/release/doc/ru_RU.KOI8-R/hardware/sparc64/Makefile user/attilio/vmobj-readlock/release/doc/ru_RU.KOI8-R/share/xml/catalog user/attilio/vmobj-readlock/release/doc/ru_RU.KOI8-R/share/xml/catalog.xml user/attilio/vmobj-readlock/release/doc/zh_CN.GB2312/hardware/Makefile user/attilio/vmobj-readlock/sbin/hastd/hast.h user/attilio/vmobj-readlock/sbin/hastd/parse.y user/attilio/vmobj-readlock/sbin/hastd/token.l user/attilio/vmobj-readlock/share/i18n/csmapper/Makefile user/attilio/vmobj-readlock/share/i18n/esdb/Makefile user/attilio/vmobj-readlock/share/man/man5/src.conf.5 user/attilio/vmobj-readlock/share/man/man9/locking.9 user/attilio/vmobj-readlock/share/misc/bsd-family-tree user/attilio/vmobj-readlock/sys/dev/mps/mps_user.c user/attilio/vmobj-readlock/sys/dev/xen/netfront/netfront.c user/attilio/vmobj-readlock/sys/kern/kern_poll.c user/attilio/vmobj-readlock/sys/kern/uipc_usrreq.c user/attilio/vmobj-readlock/sys/net/ppp_defs.h user/attilio/vmobj-readlock/sys/sys/timex.h user/attilio/vmobj-readlock/sys/ufs/ffs/ffs_softdep.c user/attilio/vmobj-readlock/sys/xen/xenbus/xenbusb.c user/attilio/vmobj-readlock/tools/regression/lib/libc/gen/Makefile user/attilio/vmobj-readlock/tools/regression/lib/libc/locale/Makefile user/attilio/vmobj-readlock/tools/tools/ath/athalq/main.c user/attilio/vmobj-readlock/tools/tools/makeroot/makeroot.8 user/attilio/vmobj-readlock/usr.bin/bmake/Makefile user/attilio/vmobj-readlock/usr.bin/lex/Makefile user/attilio/vmobj-readlock/usr.bin/lex/config.h user/attilio/vmobj-readlock/usr.bin/lex/initscan.c user/attilio/vmobj-readlock/usr.bin/lex/lex.1 user/attilio/vmobj-readlock/usr.bin/lex/lib/Makefile user/attilio/vmobj-readlock/usr.bin/split/split.c user/attilio/vmobj-readlock/usr.sbin/acpi/acpidb/Makefile user/attilio/vmobj-readlock/usr.sbin/acpi/iasl/Makefile user/attilio/vmobj-readlock/usr.sbin/mergemaster/mergemaster.sh user/attilio/vmobj-readlock/usr.sbin/pkg_install/version/pkg_version.1 Directory Properties: user/attilio/vmobj-readlock/ (props changed) user/attilio/vmobj-readlock/cddl/ (props changed) user/attilio/vmobj-readlock/cddl/contrib/opensolaris/ (props changed) user/attilio/vmobj-readlock/contrib/bmake/ (props changed) user/attilio/vmobj-readlock/crypto/heimdal/ (props changed) user/attilio/vmobj-readlock/lib/libc/ (props changed) user/attilio/vmobj-readlock/sbin/ (props changed) user/attilio/vmobj-readlock/sys/ (props changed) Modified: user/attilio/vmobj-readlock/MAINTAINERS ============================================================================== --- user/attilio/vmobj-readlock/MAINTAINERS Thu May 23 00:49:52 2013 (r250922) +++ user/attilio/vmobj-readlock/MAINTAINERS Thu May 23 00:52:48 2013 (r250923) @@ -28,6 +28,7 @@ MAC Framework rwatson Pre-commit review MAC Modules rwatson Pre-commit review requested. contrib/openbsm rwatson Pre-commit review requested. sys/security/audit rwatson Pre-commit review requested. +ath(4) adrian Pre-commit review requested, send to freebsd-wireless@freebsd.org ahc(4) gibbs Pre-commit review requested. ahd(4) gibbs Pre-commit review requested. PC Card imp Pre-commit review requested. @@ -63,6 +64,7 @@ procfs des Pre-commit review requested. linprocfs des Pre-commit review requested. lpr gad Pre-commit review requested, particularly for lpd/recvjob.c and lpd/printjob.c. +net80211 adrian Pre-commit review requested, send to freebsd-wireless@freebsd.org nvi peter Try not to break it. libz peter Try not to break it. groff ru Recommends pre-commit review. Modified: user/attilio/vmobj-readlock/Makefile.inc1 ============================================================================== --- user/attilio/vmobj-readlock/Makefile.inc1 Thu May 23 00:49:52 2013 (r250922) +++ user/attilio/vmobj-readlock/Makefile.inc1 Thu May 23 00:52:48 2013 (r250923) @@ -366,10 +366,12 @@ LIB32WMAKEFLAGS= \ LIB32FLAGS= -m32 ${LIB32CPUFLAGS} -DCOMPAT_32BIT \ - --sysroot=${WORLDTMP} \ -isystem ${LIB32TMP}/usr/include/ \ -L${LIB32TMP}/usr/lib32 \ -B${LIB32TMP}/usr/lib32 +.if ${XCC:M/*} +LIB32FLAGS+= --sysroot=${WORLDTMP} +.endif # Yes, the flags are redundant. LIB32WMAKEENV+= MAKEOBJDIRPREFIX=${OBJTREE}/lib32 \ @@ -1032,8 +1034,10 @@ distributekernel distributekernel.debug: ${IMAKE_MTREE} PATH=${TMPPATH} ${MAKE} KERNEL=${INSTKERNNAME} \ DESTDIR=${INSTALL_DDIR:S://:/:g:C:/$::}/kernel \ ${.TARGET:S/distributekernel/install/} +.if defined(NO_ROOT) sed -e 's|^./kernel|.|' ${DESTDIR}/${DISTDIR}/kernel.premeta > \ ${DESTDIR}/${DISTDIR}/kernel.meta +.endif .for _kernel in ${BUILDKERNELS:S/${INSTALLKERNEL}//} .if defined(NO_ROOT) echo "#${MTREE_MAGIC}" > ${DESTDIR}/${DISTDIR}/kernel.${_kernel}.premeta @@ -1202,6 +1206,10 @@ _sed= usr.bin/sed _lex= usr.bin/lex .endif +.if ${BOOTSTRAPPING} < 1000002 +_m4= usr.bin/m4 +.endif + .if ${BOOTSTRAPPING} < 1000013 _yacc= lib/liby \ usr.bin/yacc @@ -1279,6 +1287,7 @@ bootstrap-tools: usr.bin/rpcgen \ ${_sed} \ ${_yacc} \ + ${_m4} \ ${_lex} \ lib/libmd \ usr.bin/xinstall \ Modified: user/attilio/vmobj-readlock/ObsoleteFiles.inc ============================================================================== --- user/attilio/vmobj-readlock/ObsoleteFiles.inc Thu May 23 00:49:52 2013 (r250922) +++ user/attilio/vmobj-readlock/ObsoleteFiles.inc Thu May 23 00:52:48 2013 (r250923) @@ -38,6 +38,8 @@ # xargs -n1 | sort | uniq -d; # done +# 20130417: nfs fha moved from nfsserver to nfs +OLD_FILES+=usr/include/nfsserver/nfs_fha.h # 20130411: new clang import which bumps version from 3.2 to 3.3. OLD_FILES+=usr/include/clang/3.2/__wmmintrin_aes.h OLD_FILES+=usr/include/clang/3.2/__wmmintrin_pclmul.h Modified: user/attilio/vmobj-readlock/UPDATING ============================================================================== --- user/attilio/vmobj-readlock/UPDATING Thu May 23 00:49:52 2013 (r250922) +++ user/attilio/vmobj-readlock/UPDATING Thu May 23 00:52:48 2013 (r250923) @@ -31,6 +31,18 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 10 disable the most expensive debugging functionality run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20130516: + Use bmake by default. + Whereas before one could choose to build with bmake via + -DWITH_BMAKE one must now use -DWITHOUT_BMAKE to use the old + make. The goal is to remove these knobs for 10-RELEASE. + + It is worth noting that bmake (like gmake) treats the command + line as the unit of failure, rather than statements within the + command line. Thus '(cd some/where && dosomething)' is safer + than 'cd some/where; dosomething'. The '()' allows consistent + behavior in parallel build. + 20130429: Fix a bug that allows NFS clients to issue READDIR on files. Modified: user/attilio/vmobj-readlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cg.c ============================================================================== --- user/attilio/vmobj-readlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cg.c Thu May 23 00:49:52 2013 (r250922) +++ user/attilio/vmobj-readlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cg.c Thu May 23 00:52:48 2013 (r250923) @@ -19,12 +19,15 @@ * * CDDL HEADER END */ + /* * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" +/* + * Copyright (c) 2012 by Delphix. All rights reserved. + */ #include #include @@ -193,9 +196,6 @@ dt_cg_ptrsize(dt_node_t *dnp, dt_irlist_ ssize_t size; int sreg; - if ((sreg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - type = ctf_type_resolve(ctfp, dnp->dn_type); kind = ctf_type_kind(ctfp, type); assert(kind == CTF_K_POINTER || kind == CTF_K_ARRAY); @@ -212,6 +212,7 @@ dt_cg_ptrsize(dt_node_t *dnp, dt_irlist_ if ((size = ctf_type_size(ctfp, type)) == 1) return; /* multiply or divide by one can be omitted */ + sreg = dt_regset_alloc(drp); dt_cg_setx(dlp, sreg, size); instr = DIF_INSTR_FMT(op, dreg, sreg, dreg); dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr)); @@ -251,9 +252,7 @@ dt_cg_field_get(dt_node_t *dnp, dt_irlis assert(dnp->dn_op == DT_TOK_PTR || dnp->dn_op == DT_TOK_DOT); r1 = dnp->dn_left->dn_reg; - - if ((r2 = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + r2 = dt_regset_alloc(drp); /* * On little-endian architectures, ctm_offset counts from the right so @@ -356,10 +355,9 @@ dt_cg_field_set(dt_node_t *src, dt_irlis "bits %u\n", m.ctm_offset, m.ctm_type, e.cte_bits); } - if ((r1 = dt_regset_alloc(drp)) == -1 || - (r2 = dt_regset_alloc(drp)) == -1 || - (r3 = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + r1 = dt_regset_alloc(drp); + r2 = dt_regset_alloc(drp); + r3 = dt_regset_alloc(drp); /* * Compute shifts and masks. We need to compute "shift" as the amount @@ -423,8 +421,7 @@ dt_cg_store(dt_node_t *src, dt_irlist_t size = dt_node_type_size(src); if (src->dn_flags & DT_NF_REF) { - if ((reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + reg = dt_regset_alloc(drp); dt_cg_setx(dlp, reg, size); instr = DIF_INSTR_COPYS(src->dn_reg, reg, dst->dn_reg); dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr)); @@ -474,30 +471,58 @@ dt_cg_typecast(const dt_node_t *src, con size_t dstsize = dt_node_type_size(dst); dif_instr_t instr; - int reg, n; + int rg; - if (dt_node_is_scalar(dst) && (dstsize < srcsize || - (src->dn_flags & DT_NF_SIGNED) ^ (dst->dn_flags & DT_NF_SIGNED))) { - if ((reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + if (!dt_node_is_scalar(dst)) + return; /* not a scalar */ + if (dstsize == srcsize && + ((src->dn_flags ^ dst->dn_flags) & DT_NF_SIGNED) != 0) + return; /* not narrowing or changing signed-ness */ + if (dstsize > srcsize && (src->dn_flags & DT_NF_SIGNED) == 0) + return; /* nothing to do in this case */ - if (dstsize < srcsize) - n = sizeof (uint64_t) * NBBY - dstsize * NBBY; - else - n = sizeof (uint64_t) * NBBY - srcsize * NBBY; + rg = dt_regset_alloc(drp); + + if (dstsize > srcsize) { + int n = sizeof (uint64_t) * NBBY - srcsize * NBBY; + int s = (dstsize - srcsize) * NBBY; - dt_cg_setx(dlp, reg, n); + dt_cg_setx(dlp, rg, n); - instr = DIF_INSTR_FMT(DIF_OP_SLL, - src->dn_reg, reg, dst->dn_reg); + instr = DIF_INSTR_FMT(DIF_OP_SLL, src->dn_reg, rg, dst->dn_reg); dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr)); - instr = DIF_INSTR_FMT((dst->dn_flags & DT_NF_SIGNED) ? - DIF_OP_SRA : DIF_OP_SRL, dst->dn_reg, reg, dst->dn_reg); + if ((dst->dn_flags & DT_NF_SIGNED) || n == s) { + instr = DIF_INSTR_FMT(DIF_OP_SRA, + dst->dn_reg, rg, dst->dn_reg); + dt_irlist_append(dlp, + dt_cg_node_alloc(DT_LBL_NONE, instr)); + } else { + dt_cg_setx(dlp, rg, s); + instr = DIF_INSTR_FMT(DIF_OP_SRA, + dst->dn_reg, rg, dst->dn_reg); + dt_irlist_append(dlp, + dt_cg_node_alloc(DT_LBL_NONE, instr)); + dt_cg_setx(dlp, rg, n - s); + instr = DIF_INSTR_FMT(DIF_OP_SRL, + dst->dn_reg, rg, dst->dn_reg); + dt_irlist_append(dlp, + dt_cg_node_alloc(DT_LBL_NONE, instr)); + } + } else if (dstsize != sizeof (uint64_t)) { + int n = sizeof (uint64_t) * NBBY - dstsize * NBBY; + + dt_cg_setx(dlp, rg, n); + instr = DIF_INSTR_FMT(DIF_OP_SLL, src->dn_reg, rg, dst->dn_reg); + dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr)); + + instr = DIF_INSTR_FMT((dst->dn_flags & DT_NF_SIGNED) ? + DIF_OP_SRA : DIF_OP_SRL, dst->dn_reg, rg, dst->dn_reg); dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr)); - dt_regset_free(drp, reg); } + + dt_regset_free(drp, rg); } /* @@ -523,8 +548,7 @@ dt_cg_arglist(dt_ident_t *idp, dt_node_t for (dnp = args; dnp != NULL; dnp = dnp->dn_list) dt_cg_node(dnp, dlp, drp); - dt_irlist_append(dlp, - dt_cg_node_alloc(DT_LBL_NONE, DIF_INSTR_FLUSHTS)); + dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, DIF_INSTR_FLUSHTS)); for (dnp = args; dnp != NULL; dnp = dnp->dn_list, i++) { dtrace_diftype_t t; @@ -538,17 +562,18 @@ dt_cg_arglist(dt_ident_t *idp, dt_node_t dt_cg_typecast(dnp, &isp->dis_args[i], dlp, drp); isp->dis_args[i].dn_reg = -1; - if (t.dtdt_flags & DIF_TF_BYREF) + if (t.dtdt_flags & DIF_TF_BYREF) { op = DIF_OP_PUSHTR; - else + if (t.dtdt_size != 0) { + reg = dt_regset_alloc(drp); + dt_cg_setx(dlp, reg, t.dtdt_size); + } else { + reg = DIF_REG_R0; + } + } else { op = DIF_OP_PUSHTV; - - if (t.dtdt_size != 0) { - if ((reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - dt_cg_setx(dlp, reg, t.dtdt_size); - } else reg = DIF_REG_R0; + } instr = DIF_INSTR_PUSHTS(op, t.dtdt_kind, reg, dnp->dn_reg); dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr)); @@ -629,9 +654,7 @@ dt_cg_prearith_op(dt_node_t *dnp, dt_irl dt_cg_node(dnp->dn_child, dlp, drp); dnp->dn_reg = dnp->dn_child->dn_reg; - if ((reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - + reg = dt_regset_alloc(drp); dt_cg_setx(dlp, reg, size); instr = DIF_INSTR_FMT(op, dnp->dn_reg, reg, dnp->dn_reg); @@ -688,9 +711,7 @@ dt_cg_postarith_op(dt_node_t *dnp, dt_ir dt_cg_node(dnp->dn_child, dlp, drp); dnp->dn_reg = dnp->dn_child->dn_reg; - if ((nreg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - + nreg = dt_regset_alloc(drp); dt_cg_setx(dlp, nreg, size); instr = DIF_INSTR_FMT(op, dnp->dn_reg, nreg, nreg); dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr)); @@ -1008,9 +1029,7 @@ dt_cg_asgn_op(dt_node_t *dnp, dt_irlist_ * set it to the size of our data structure, and then replace * it with the result of an allocs of the specified size. */ - if ((r1 = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - + r1 = dt_regset_alloc(drp); dt_cg_setx(dlp, r1, ctf_type_size(dxp->dx_dst_ctfp, dxp->dx_dst_base)); @@ -1054,8 +1073,7 @@ dt_cg_asgn_op(dt_node_t *dnp, dt_irlist_ * and add r1 to it before storing the result. */ if (ctm.ctm_offset != 0) { - if ((r2 = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + r2 = dt_regset_alloc(drp); /* * Add the member offset rounded down to the @@ -1142,8 +1160,7 @@ dt_cg_assoc_op(dt_node_t *dnp, dt_irlist dt_cg_arglist(dnp->dn_ident, dnp->dn_args, dlp, drp); - if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + dnp->dn_reg = dt_regset_alloc(drp); if (dnp->dn_ident->di_flags & DT_IDFLG_TLS) op = DIF_OP_LDTAA; @@ -1273,9 +1290,7 @@ dt_cg_array_op(dt_node_t *dnp, dt_irlist if ((size = dt_node_type_size(dnp)) == sizeof (uint64_t)) return; - if ((reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - + reg = dt_regset_alloc(drp); assert(size < sizeof (uint64_t)); n = sizeof (uint64_t) * NBBY - size * NBBY; @@ -1384,7 +1399,6 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * dt_ident_t *idp; ssize_t stroff; uint_t op; - int reg; switch (dnp->dn_op) { case DT_TOK_COMMA: @@ -1622,10 +1636,7 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * case DT_TOK_SIZEOF: { size_t size = dt_node_sizeof(dnp->dn_child); - - if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - + dnp->dn_reg = dt_regset_alloc(drp); assert(size != 0); dt_cg_setx(dlp, dnp->dn_reg, size); break; @@ -1650,8 +1661,7 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * assert(dxp->dx_ident->di_flags & DT_IDFLG_CGREG); assert(dxp->dx_ident->di_id != 0); - if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + dnp->dn_reg = dt_regset_alloc(drp); if (dxp->dx_arg == -1) { instr = DIF_INSTR_MOV( @@ -1735,8 +1745,9 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * } if (m.ctm_offset != 0) { - if ((reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + int reg; + + reg = dt_regset_alloc(drp); /* * If the offset is not aligned on a byte boundary, it @@ -1782,8 +1793,7 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * break; case DT_TOK_STRING: - if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + dnp->dn_reg = dt_regset_alloc(drp); assert(dnp->dn_kind == DT_NODE_STRING); stroff = dt_strtab_insert(yypcb->pcb_strtab, dnp->dn_string); @@ -1806,8 +1816,7 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * */ if (dnp->dn_kind == DT_NODE_VAR && (dnp->dn_ident->di_flags & DT_IDFLG_CGREG)) { - if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + dnp->dn_reg = dt_regset_alloc(drp); instr = DIF_INSTR_MOV(dnp->dn_ident->di_id, dnp->dn_reg); dt_irlist_append(dlp, @@ -1848,11 +1857,9 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * dt_cg_arglist(dnp->dn_ident, dnp->dn_args, dlp, drp); - if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - - instr = DIF_INSTR_CALL( - dnp->dn_ident->di_id, dnp->dn_reg); + dnp->dn_reg = dt_regset_alloc(drp); + instr = DIF_INSTR_CALL(dnp->dn_ident->di_id, + dnp->dn_reg); dt_irlist_append(dlp, dt_cg_node_alloc(DT_LBL_NONE, instr)); @@ -1880,8 +1887,7 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * break; } - if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); + dnp->dn_reg = dt_regset_alloc(drp); if (dnp->dn_ident->di_flags & DT_IDFLG_LOCAL) op = DIF_OP_LDLS; @@ -1911,9 +1917,7 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * dtrace_errmsg(dtp, dtrace_errno(dtp))); } - if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - + dnp->dn_reg = dt_regset_alloc(drp); dt_cg_xsetx(dlp, dnp->dn_ident, DT_LBL_NONE, dnp->dn_reg, sym.st_value); @@ -1933,9 +1937,7 @@ dt_cg_node(dt_node_t *dnp, dt_irlist_t * break; case DT_TOK_INT: - if ((dnp->dn_reg = dt_regset_alloc(drp)) == -1) - longjmp(yypcb->pcb_jmpbuf, EDT_NOREG); - + dnp->dn_reg = dt_regset_alloc(drp); dt_cg_setx(dlp, dnp->dn_reg, dnp->dn_value); break; @@ -1950,6 +1952,7 @@ dt_cg(dt_pcb_t *pcb, dt_node_t *dnp) { dif_instr_t instr; dt_xlator_t *dxp; + dt_ident_t *idp; if (pcb->pcb_regs == NULL && (pcb->pcb_regs = dt_regset_create(pcb->pcb_hdl->dt_conf.dtc_difintregs)) == NULL) @@ -1976,9 +1979,9 @@ dt_cg(dt_pcb_t *pcb, dt_node_t *dnp) assert(pcb->pcb_dret == NULL); pcb->pcb_dret = dnp; - if (dt_node_is_dynamic(dnp)) { + if (dt_node_resolve(dnp, DT_IDENT_XLPTR) != NULL) { dnerror(dnp, D_CG_DYN, "expression cannot evaluate to result " - "of dynamic type\n"); + "of a translated pointer\n"); } /* @@ -1994,6 +1997,7 @@ dt_cg(dt_pcb_t *pcb, dt_node_t *dnp) } dt_cg_node(dnp, &pcb->pcb_ir, pcb->pcb_regs); + instr = DIF_INSTR_RET(dnp->dn_reg); dt_regset_free(pcb->pcb_regs, dnp->dn_reg); dt_irlist_append(&pcb->pcb_ir, dt_cg_node_alloc(DT_LBL_NONE, instr)); @@ -2003,4 +2007,7 @@ dt_cg(dt_pcb_t *pcb, dt_node_t *dnp) dxp->dx_ident->di_id = 0; dxp->dx_ident->di_flags &= ~DT_IDFLG_CGREG; } + + dt_regset_free(pcb->pcb_regs, 0); + dt_regset_assert_free(pcb->pcb_regs); } Modified: user/attilio/vmobj-readlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_dis.c ============================================================================== --- user/attilio/vmobj-readlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_dis.c Thu May 23 00:49:52 2013 (r250922) +++ user/attilio/vmobj-readlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_dis.c Thu May 23 00:52:48 2013 (r250923) @@ -19,12 +19,15 @@ * * CDDL HEADER END */ + /* * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" +/* + * Copyright (c) 2012 by Delphix. All rights reserved. + */ #include #include @@ -212,12 +215,22 @@ dt_dis_pushts(const dtrace_difo_t *dp, { static const char *const tnames[] = { "D type", "string" }; uint_t type = DIF_INSTR_TYPE(in); + const char *pad; - (void) fprintf(fp, "%-4s DT_TYPE(%u), %%r%u, %%r%u", - name, type, DIF_INSTR_R2(in), DIF_INSTR_RS(in)); + if (DIF_INSTR_OP(in) == DIF_OP_PUSHTV) { + (void) fprintf(fp, "%-4s DT_TYPE(%u), %%r%u", + name, type, DIF_INSTR_RS(in)); + pad = "\t\t"; + } else { + (void) fprintf(fp, "%-4s DT_TYPE(%u), %%r%u, %%r%u", + name, type, DIF_INSTR_R2(in), DIF_INSTR_RS(in)); + pad = "\t"; + } - if (type < sizeof (tnames) / sizeof (tnames[0])) - (void) fprintf(fp, "\t! DT_TYPE(%u) = %s", type, tnames[type]); + if (type < sizeof (tnames) / sizeof (tnames[0])) { + (void) fprintf(fp, "%s! DT_TYPE(%u) = %s", pad, + type, tnames[type]); + } } static void Modified: user/attilio/vmobj-readlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_error.c ============================================================================== --- user/attilio/vmobj-readlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_error.c Thu May 23 00:49:52 2013 (r250922) +++ user/attilio/vmobj-readlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_error.c Thu May 23 00:52:48 2013 (r250923) @@ -23,6 +23,10 @@ * Use is subject to license terms. */ +/* + * Copyright (c) 2012 by Delphix. All rights reserved. + */ + #include #include #include @@ -37,7 +41,6 @@ static const struct { { EDT_VERSREDUCED, "Requested version conflicts with earlier setting" }, { EDT_CTF, "Unexpected libctf error" }, { EDT_COMPILER, "Error in D program compilation" }, - { EDT_NOREG, "Insufficient registers to generate code" }, { EDT_NOTUPREG, "Insufficient tuple registers to generate code" }, { EDT_NOMEM, "Memory allocation failure" }, { EDT_INT2BIG, "Integer constant table limit exceeded" }, Modified: user/attilio/vmobj-readlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_errtags.h ============================================================================== --- user/attilio/vmobj-readlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_errtags.h Thu May 23 00:49:52 2013 (r250922) +++ user/attilio/vmobj-readlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_errtags.h Thu May 23 00:52:48 2013 (r250923) @@ -26,7 +26,7 @@ /* * Copyright (c) 2011, Joyent, Inc. All rights reserved. - * Copyright (c) 2011 by Delphix. All rights reserved. + * Copyright (c) 2012 by Delphix. All rights reserved. */ #ifndef _DT_ERRTAGS_H @@ -260,6 +260,7 @@ typedef enum { D_LLQUANT_FACTOREVEN, /* llquantize() bad # steps/factor */ D_LLQUANT_FACTORSMALL, /* llquantize() magnitude too small */ D_LLQUANT_MAGTOOBIG, /* llquantize() high mag too large */ + D_NOREG, /* no available internal registers */ D_PRINTM_ADDR, /* printm() memref bad type */ D_PRINTM_SIZE, /* printm() size bad type */ D_PRINTT_ADDR, /* printt() typeref bad type */ Modified: user/attilio/vmobj-readlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_regset.c ============================================================================== --- user/attilio/vmobj-readlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_regset.c Thu May 23 00:49:52 2013 (r250922) +++ user/attilio/vmobj-readlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_regset.c Thu May 23 00:52:48 2013 (r250923) @@ -19,12 +19,15 @@ * * CDDL HEADER END */ + /* * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ -#pragma ident "%Z%%M% %I% %E% SMI" +/* + * Copyright (c) 2012 by Delphix. All rights reserved. + */ #include #include @@ -33,18 +36,19 @@ #include #include +#include dt_regset_t * -dt_regset_create(ulong_t size) +dt_regset_create(ulong_t nregs) { - ulong_t n = BT_BITOUL(size + 1); /* + 1 for %r0 */ + ulong_t n = BT_BITOUL(nregs); dt_regset_t *drp = malloc(sizeof (dt_regset_t)); if (drp == NULL) return (NULL); drp->dr_bitmap = malloc(sizeof (ulong_t) * n); - drp->dr_size = size + 1; + drp->dr_size = nregs; if (drp->dr_bitmap == NULL) { dt_regset_destroy(drp); @@ -68,6 +72,25 @@ dt_regset_reset(dt_regset_t *drp) bzero(drp->dr_bitmap, sizeof (ulong_t) * BT_BITOUL(drp->dr_size)); } +void +dt_regset_assert_free(dt_regset_t *drp) +{ + int reg; + boolean_t fail = B_FALSE; + for (reg = 0; reg < drp->dr_size; reg++) { + if (BT_TEST(drp->dr_bitmap, reg) != 0) { + dt_dprintf("%%r%d was left allocated\n", reg); + fail = B_TRUE; + } + } + + /* + * We set this during dtest runs to check for register leaks. + */ + if (fail && getenv("DTRACE_DEBUG_REGSET") != NULL) + abort(); +} + int dt_regset_alloc(dt_regset_t *drp) { @@ -95,13 +118,15 @@ dt_regset_alloc(dt_regset_t *drp) } } - return (-1); /* no available registers */ + xyerror(D_NOREG, "Insufficient registers to generate code"); + /*NOTREACHED*/ + return (-1); } void dt_regset_free(dt_regset_t *drp, int reg) { - assert(reg > 0 && reg < drp->dr_size); + assert(reg >= 0 && reg < drp->dr_size); assert(BT_TEST(drp->dr_bitmap, reg) != 0); BT_CLEAR(drp->dr_bitmap, reg); } Modified: user/attilio/vmobj-readlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_regset.h ============================================================================== --- user/attilio/vmobj-readlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_regset.h Thu May 23 00:49:52 2013 (r250922) +++ user/attilio/vmobj-readlock/cddl/contrib/opensolaris/lib/libdtrace/common/dt_regset.h Thu May 23 00:52:48 2013 (r250923) @@ -19,16 +19,19 @@ * * CDDL HEADER END */ + /* * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ +/* + * Copyright (c) 2012 by Delphix. All rights reserved. + */ + #ifndef _DT_REGSET_H #define _DT_REGSET_H -#pragma ident "%Z%%M% %I% %E% SMI" - #include #ifdef __cplusplus @@ -45,6 +48,7 @@ extern void dt_regset_destroy(dt_regset_ extern void dt_regset_reset(dt_regset_t *); extern int dt_regset_alloc(dt_regset_t *); extern void dt_regset_free(dt_regset_t *, int); +extern void dt_regset_assert_free(dt_regset_t *); #ifdef __cplusplus } Modified: user/attilio/vmobj-readlock/contrib/bmake/ChangeLog ============================================================================== --- user/attilio/vmobj-readlock/contrib/bmake/ChangeLog Thu May 23 00:49:52 2013 (r250922) +++ user/attilio/vmobj-readlock/contrib/bmake/ChangeLog Thu May 23 00:52:48 2013 (r250923) @@ -1,3 +1,17 @@ +2013-05-20 Simon J. Gerraty + + * Makefile (MAKE_VERSION): 20130520 + generate manifest from component FILES rather than have to + update FILES when mk/FILES changes. + +2013-05-18 Simon J. Gerraty + + * Makefile (MAKE_VERSION): 20130518 + Merge with NetBSD make, pick up + o suff.c: don't skip all processsing for .PHONY targets + else wildcard srcs do not get expanded. + o var.c: expand name of variable to delete if necessary. + 2013-03-30 Simon J. Gerraty * Makefile (MAKE_VERSION): 20130330 Modified: user/attilio/vmobj-readlock/contrib/bmake/FILES ============================================================================== --- user/attilio/vmobj-readlock/contrib/bmake/FILES Thu May 23 00:49:52 2013 (r250922) +++ user/attilio/vmobj-readlock/contrib/bmake/FILES Thu May 23 00:52:48 2013 (r250923) @@ -1,29 +1,26 @@ -FILES ChangeLog -bmake.cat1 -boot-strap -bsd.after-import.mk -os.sh -makefile.in +FILES Makefile Makefile.config.in PSD.doc/Makefile PSD.doc/tutorial.ms README +aclocal.m4 arch.c +bmake.1 +bmake.cat1 +boot-strap +bsd.after-import.mk buf.c buf.h compat.c cond.c -make-conf.h -make_malloc.c -make_malloc.h config.h.in configure -aclocal.m4 configure.in dir.c dir.h +dirname.c find_lib.sh for.c getopt.c @@ -32,16 +29,6 @@ hash.h install-sh job.c job.h -meta.c -meta.h -dirname.c -realpath.c -strlcpy.c -strlist.c -strlist.h -stresep.c -trace.c -trace.h lst.h lst.lib/Makefile lst.lib/lstAppend.c @@ -74,26 +61,36 @@ lst.lib/lstReplace.c lst.lib/lstSucc.c machine.sh main.c +make-bootstrap.sh.in +make-conf.h make.1 -bmake.1 make.c make.h -make-bootstrap.sh.in +make_malloc.c +make_malloc.h +makefile.in +meta.c +meta.h missing/sys/cdefs.h mkdeps.sh nonints.h +os.sh parse.c pathnames.h ranlib.h +realpath.c setenv.c sigcompat.c sprite.h str.c +stresep.c +strlcpy.c +strlist.c +strlist.h suff.c targ.c -util.c -var.c -wait.h +trace.c +trace.h unit-tests/Makefile.in unit-tests/comment unit-tests/cond1 @@ -123,63 +120,6 @@ unit-tests/test.exp unit-tests/unexport unit-tests/unexport-env unit-tests/varcmd -mk/ChangeLog -mk/FILES -mk/README -mk/auto.obj.mk -mk/autoconf.mk -mk/autodep.mk -mk/auto.dep.mk -mk/dep.mk -mk/doc.mk -mk/dpadd.mk -mk/final.mk -mk/host-target.mk -mk/host.libnames.mk -mk/inc.mk -mk/init.mk -mk/install-mk -mk/java.mk -mk/lib.mk -mk/libnames.mk -mk/libs.mk -mk/links.mk -mk/man.mk -mk/mk-files.txt -mk/nls.mk -mk/obj.mk -mk/options.mk -mk/own.mk -mk/prlist.mk -mk/prog.mk -mk/progs.mk -mk/rst2htm.mk -mk/scripts.mk -mk/srctop.mk -mk/subdir.mk -mk/sys.mk -mk/sys.clean-env.mk -mk/sys.dependfile.mk -mk/sys/AIX.mk -mk/sys/Darwin.mk -mk/sys/Generic.mk -mk/sys/HP-UX.mk -mk/sys/IRIX.mk -mk/sys/Linux.mk -mk/sys/NetBSD.mk -mk/sys/OSF1.mk -mk/sys/OpenBSD.mk -mk/sys/SunOS.mk -mk/sys/UnixWare.mk -mk/target-flags.mk -mk/warnings.mk -mk/yacc.mk -mk/dirdeps.mk -mk/gendirdeps.mk -mk/install-new.mk -mk/meta2deps.py -mk/meta2deps.sh -mk/meta.sys.mk -mk/meta.autodep.mk -mk/meta.stage.mk -mk/meta.subdir.mk +util.c +var.c +wait.h Modified: user/attilio/vmobj-readlock/contrib/bmake/Makefile ============================================================================== --- user/attilio/vmobj-readlock/contrib/bmake/Makefile Thu May 23 00:49:52 2013 (r250922) +++ user/attilio/vmobj-readlock/contrib/bmake/Makefile Thu May 23 00:52:48 2013 (r250923) @@ -1,7 +1,7 @@ -# $Id: Makefile,v 1.10 2013/03/31 05:57:19 sjg Exp $ +# $Id: Makefile,v 1.12 2013/05/20 16:05:10 sjg Exp $ # Base version on src date -MAKE_VERSION= 20130330 +MAKE_VERSION= 20130520 PROG= bmake Modified: user/attilio/vmobj-readlock/contrib/bmake/meta.c ============================================================================== --- user/attilio/vmobj-readlock/contrib/bmake/meta.c Thu May 23 00:49:52 2013 (r250922) +++ user/attilio/vmobj-readlock/contrib/bmake/meta.c Thu May 23 00:52:48 2013 (r250923) @@ -1,4 +1,4 @@ -/* $NetBSD: meta.c,v 1.29 2013/03/31 05:49:51 sjg Exp $ */ +/* $NetBSD: meta.c,v 1.30 2013/05/16 21:56:56 sjg Exp $ */ /* * Implement 'meta' mode. @@ -543,7 +543,7 @@ boolValue(char *s) * Initialization we need before reading makefiles. */ void -meta_init() +meta_init(void) { #ifdef USE_FILEMON /* this allows makefiles to test if we have filemon support */ Modified: user/attilio/vmobj-readlock/contrib/bmake/mk/ChangeLog ============================================================================== --- user/attilio/vmobj-readlock/contrib/bmake/mk/ChangeLog Thu May 23 00:49:52 2013 (r250922) +++ user/attilio/vmobj-readlock/contrib/bmake/mk/ChangeLog Thu May 23 00:52:48 2013 (r250923) @@ -1,3 +1,23 @@ +2013-05-10 Simon J. Gerraty + + * install-mk (MK_VERSION): 20130505 + * gendirdeps.mk, meta2deps.py, meta2deps.sh: handle $TARGET_SPEC + for when $MACHINE isn't enough for objdir distinction. + Bring meta2deps.sh closer to par with meta2deps.py. + +2013-04-18 Simon J. Gerraty + + * meta.stage.mk: set INSTALL to STAGE_INSTALL when making 'all' + also if the target 'beforeinstall' exists, make it depend on + .dirdep (incase it uses STAGE_INSTALL). + +2013-04-17 Simon J. Gerraty + + * install-mk (MK_VERSION): 20130401 ;-) + * meta.stage.mk (STAGE_INSTALL_SH): add stage-install.sh as + wrapper around install(1). + * options.mk (OPTION_PREFIX): Allow a prefix other than MK_ + 2013-03-30 Simon J. Gerraty * meta2deps.py (MetaFile.__init__): ensure self.cwd is initialized. Modified: user/attilio/vmobj-readlock/contrib/bmake/mk/FILES ============================================================================== --- user/attilio/vmobj-readlock/contrib/bmake/mk/FILES Thu May 23 00:49:52 2013 (r250922) +++ user/attilio/vmobj-readlock/contrib/bmake/mk/FILES Thu May 23 00:52:48 2013 (r250923) @@ -31,6 +31,7 @@ progs.mk rst2htm.mk scripts.mk srctop.mk +stage-install.sh subdir.mk sys.mk sys.clean-env.mk Modified: user/attilio/vmobj-readlock/contrib/bmake/mk/gendirdeps.mk ============================================================================== --- user/attilio/vmobj-readlock/contrib/bmake/mk/gendirdeps.mk Thu May 23 00:49:52 2013 (r250922) +++ user/attilio/vmobj-readlock/contrib/bmake/mk/gendirdeps.mk Thu May 23 00:52:48 2013 (r250923) @@ -1,4 +1,4 @@ -# $Id: gendirdeps.mk,v 1.21 2013/03/28 20:01:05 sjg Exp $ +# $Id: gendirdeps.mk,v 1.22 2013/05/11 05:16:26 sjg Exp $ # Copyright (c) 2010-2013, Juniper Networks, Inc. # All rights reserved. @@ -111,13 +111,24 @@ _py_d = .if ${META2DEPS:E} == "py" # we can afford to do this all the time. DPDEPS ?= no -META2DEPS_CMD = ${_time} ${PYTHON} ${META2DEPS} ${_py_d} \ - -R ${RELDIR} -H ${HOST_TARGET} \ - ${M2D_OBJROOTS:O:u:@o@-O $o@} - +META2DEPS_CMD = ${_time} ${PYTHON} ${META2DEPS} ${_py_d} .if ${DPDEPS:tl} != "no" META2DEPS_CMD += -D ${DPDEPS} .endif +META2DEPS_FILTER = sed 's,^src:,${SRCTOP}/,;s,^\([^/]\),${OBJTOP}/\1,' | +.elif ${META2DEPS:E} == "sh" +META2DEPS_CMD = ${_time} ${_sh_x} ${META2DEPS} OBJTOP=${_OBJTOP} +.else +META2DEPS_CMD ?= ${META2DEPS} +.endif + +.if ${TARGET_OBJ_SPEC:U${MACHINE}} != ${MACHINE} +META2DEPS_CMD += -T ${TARGET_OBJ_SPEC} +.endif +META2DEPS_CMD += \ + -R ${RELDIR} -H ${HOST_TARGET} \ + ${M2D_OBJROOTS:O:u:@o@-O $o@} + M2D_OBJROOTS += ${OBJTOP} ${_OBJROOT} ${_objroot} .if defined(SB_OBJROOT) @@ -133,13 +144,6 @@ META2DEPS_ARGS += MACHINE=none META2DEPS_CMD += -S ${SB_BACKING_SB}/src M2D_OBJROOTS += ${SB_BACKING_SB}/${SB_OBJPREFIX} .endif -META2DEPS_FILTER = sed 's,^src:,${SRCTOP}/,;s,^\([^/]\),${OBJTOP}/\1,' | -.elif ${META2DEPS:E} == "sh" -META2DEPS_CMD = ${_time} ${_sh_x} ${META2DEPS} \ - OBJTOP=${_objtop} SB_OBJROOT=${_objroot} -.else -META2DEPS_CMD ?= ${META2DEPS} -.endif # we are only interested in the dirs # sepecifically those we read something from. Modified: user/attilio/vmobj-readlock/contrib/bmake/mk/install-mk ============================================================================== --- user/attilio/vmobj-readlock/contrib/bmake/mk/install-mk Thu May 23 00:49:52 2013 (r250922) +++ user/attilio/vmobj-readlock/contrib/bmake/mk/install-mk Thu May 23 00:52:48 2013 (r250923) @@ -55,7 +55,7 @@ # Simon J. Gerraty # RCSid: -# $Id: install-mk,v 1.88 2013/03/31 22:31:59 sjg Exp $ *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Thu May 23 01:37:35 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 55EBE6AF; Thu, 23 May 2013 01:37:35 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 48D417EA; Thu, 23 May 2013 01:37:35 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r4N1bY14061798; Thu, 23 May 2013 01:37:34 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r4N1bYll061797; Thu, 23 May 2013 01:37:34 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201305230137.r4N1bYll061797@svn.freebsd.org> From: Attilio Rao Date: Thu, 23 May 2013 01:37:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250925 - user/attilio/vmobj-readlock/sys/fs/tmpfs X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 May 2013 01:37:35 -0000 Author: attilio Date: Thu May 23 01:37:34 2013 New Revision: 250925 URL: http://svnweb.freebsd.org/changeset/base/250925 Log: Fix-up tmpfs Sponsored by: EMC / Isilon storage division Modified: user/attilio/vmobj-readlock/sys/fs/tmpfs/tmpfs_vnops.c Modified: user/attilio/vmobj-readlock/sys/fs/tmpfs/tmpfs_vnops.c ============================================================================== --- user/attilio/vmobj-readlock/sys/fs/tmpfs/tmpfs_vnops.c Thu May 23 00:58:56 2013 (r250924) +++ user/attilio/vmobj-readlock/sys/fs/tmpfs/tmpfs_vnops.c Thu May 23 01:37:34 2013 (r250925) @@ -486,7 +486,7 @@ tmpfs_nocacheread(vm_object_t tobj, vm_p } vm_page_lock(m); vm_page_hold(m); - vm_page_wakeup(m); + vm_page_wakeup_locked(m); vm_page_unlock(m); VM_OBJECT_WUNLOCK(tobj); error = uiomove_fromphys(&m, offset, tlen, uio); @@ -499,7 +499,6 @@ tmpfs_nocacheread(vm_object_t tobj, vm_p /* Requeue to maintain LRU ordering. */ vm_page_requeue(m); } - vm_page_wakeup_locked(m); vm_page_unlock(m); VM_OBJECT_WUNLOCK(tobj); @@ -603,7 +602,7 @@ tmpfs_mappedwrite(vm_object_t tobj, size } vm_page_lock(tpg); vm_page_hold(tpg); - vm_page_wakeup(tpg); + vm_page_wakeup_locked(tpg); vm_page_unlock(tpg); VM_OBJECT_WUNLOCK(tobj); error = uiomove_fromphys(&tpg, offset, tlen, uio); @@ -618,7 +617,6 @@ tmpfs_mappedwrite(vm_object_t tobj, size /* Requeue to maintain LRU ordering. */ vm_page_requeue(tpg); } - vm_page_wakeup_locked(tpg); vm_page_unlock(tpg); VM_OBJECT_WUNLOCK(tobj); From owner-svn-src-user@FreeBSD.ORG Thu May 23 14:31:43 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 5D262F2A; Thu, 23 May 2013 14:31:43 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 4FFA6790; Thu, 23 May 2013 14:31:43 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r4NEVhJP037565; Thu, 23 May 2013 14:31:43 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r4NEVhMw037564; Thu, 23 May 2013 14:31:43 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201305231431.r4NEVhMw037564@svn.freebsd.org> From: Attilio Rao Date: Thu, 23 May 2013 14:31:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250932 - user/attilio/vmobj-readlock/sys/vm X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 May 2013 14:31:43 -0000 Author: attilio Date: Thu May 23 14:31:42 2013 New Revision: 250932 URL: http://svnweb.freebsd.org/changeset/base/250932 Log: Bring back vm_page_sleep_if_busy() to a single hard-call. Sponsored by: EMC / Isilon storage division Modified: user/attilio/vmobj-readlock/sys/vm/vm_page.c Modified: user/attilio/vmobj-readlock/sys/vm/vm_page.c ============================================================================== --- user/attilio/vmobj-readlock/sys/vm/vm_page.c Thu May 23 12:24:46 2013 (r250931) +++ user/attilio/vmobj-readlock/sys/vm/vm_page.c Thu May 23 14:31:42 2013 (r250932) @@ -764,6 +764,22 @@ vm_page_readahead_finish(vm_page_t m) } /* + * _vm_page_sleep_onpage: + * + * Sleep and release the page lock, using the page pointer as wchan. + * + * The given page must be locked. + */ +static inline int +_vm_page_sleep_onpage(vm_page_t m, int pri, const char *wmesg, int timo) +{ + + vm_page_lock_assert(m, MA_OWNED); + m->flags |= PG_WANTED; + return (msleep(m, vm_page_lockptr(m), pri | PDROP, wmesg, timo)); +} + +/* * vm_page_sleep_if_busy: * * Sleep and release the page queues lock if VPO_BUSY is set or, @@ -789,7 +805,7 @@ vm_page_sleep_if_busy(vm_page_t m, int a */ obj = m->object; VM_OBJECT_WUNLOCK(obj); - vm_page_sleep(m, msg); + _vm_page_sleep_onpage(m, PVM, msg, 0); VM_OBJECT_WLOCK(obj); return (TRUE); } @@ -799,17 +815,15 @@ vm_page_sleep_if_busy(vm_page_t m, int a /* * vm_page_sleep_onpage: * - * Sleep and release the page lock, using the page pointer as wchan. + * External version of _vm_page_sleep_onpage(). * - * The given page must be locked. + * Check the inline version for comments. */ int vm_page_sleep_onpage(vm_page_t m, int pri, const char *wmesg, int timo) { - vm_page_lock_assert(m, MA_OWNED); - m->flags |= PG_WANTED; - return (msleep(m, vm_page_lockptr(m), pri | PDROP, wmesg, timo)); + return (_vm_page_sleep_onpage(m, pri, wmesg, timo)); } /* From owner-svn-src-user@FreeBSD.ORG Thu May 23 14:34:35 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 68A4710D; Thu, 23 May 2013 14:34:35 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 591797B5; Thu, 23 May 2013 14:34:35 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r4NEYZeX038152; Thu, 23 May 2013 14:34:35 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r4NEYYZB038147; Thu, 23 May 2013 14:34:34 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201305231434.r4NEYYZB038147@svn.freebsd.org> From: Attilio Rao Date: Thu, 23 May 2013 14:34:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250933 - in user/attilio/vmcontention: contrib/openbsm/bin/auditdistd sys/arm/arm sys/arm/include usr.bin/ar usr.bin/bc usr.bin/m4 usr.bin/mklocale usr.sbin/bluetooth/bthidd usr.sbin/c... X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 May 2013 14:34:35 -0000 Author: attilio Date: Thu May 23 14:34:34 2013 New Revision: 250933 URL: http://svnweb.freebsd.org/changeset/base/250933 Log: MFC Modified: user/attilio/vmcontention/contrib/openbsm/bin/auditdistd/token.l user/attilio/vmcontention/sys/arm/arm/locore.S user/attilio/vmcontention/sys/arm/arm/pmap-v6.c user/attilio/vmcontention/sys/arm/arm/pmap.c user/attilio/vmcontention/sys/arm/arm/trap.c user/attilio/vmcontention/sys/arm/include/armreg.h user/attilio/vmcontention/sys/arm/include/pmap.h user/attilio/vmcontention/usr.bin/ar/acplex.l user/attilio/vmcontention/usr.bin/bc/scan.l user/attilio/vmcontention/usr.bin/m4/tokenizer.l user/attilio/vmcontention/usr.bin/mklocale/lex.l user/attilio/vmcontention/usr.sbin/bluetooth/bthidd/lexer.l user/attilio/vmcontention/usr.sbin/config/lang.l user/attilio/vmcontention/usr.sbin/jail/jaillex.l Directory Properties: user/attilio/vmcontention/ (props changed) user/attilio/vmcontention/contrib/openbsm/ (props changed) user/attilio/vmcontention/sys/ (props changed) user/attilio/vmcontention/usr.sbin/jail/ (props changed) Modified: user/attilio/vmcontention/contrib/openbsm/bin/auditdistd/token.l ============================================================================== --- user/attilio/vmcontention/contrib/openbsm/bin/auditdistd/token.l Thu May 23 14:31:42 2013 (r250932) +++ user/attilio/vmcontention/contrib/openbsm/bin/auditdistd/token.l Thu May 23 14:34:34 2013 (r250933) @@ -52,6 +52,7 @@ int depth; int lineno; #define DP do { } while (0) +#define YY_DECL int yylex(void) %} %option noinput Modified: user/attilio/vmcontention/sys/arm/arm/locore.S ============================================================================== --- user/attilio/vmcontention/sys/arm/arm/locore.S Thu May 23 14:31:42 2013 (r250932) +++ user/attilio/vmcontention/sys/arm/arm/locore.S Thu May 23 14:34:34 2013 (r250933) @@ -188,6 +188,7 @@ Lunmapped: #ifdef _ARM_ARCH_6 orr r0, r0, #(CPU_CONTROL_V6_EXTPAGE | CPU_CONTROL_UNAL_ENABLE) orr r2, r2, #(CPU_CONTROL_AFLT_ENABLE) + orr r0, r0, #(CPU_CONTROL_AF_ENABLE) #endif orr r0, r0, #(CPU_CONTROL_MMU_ENABLE) mcr p15, 0, r0, c1, c0, 0 Modified: user/attilio/vmcontention/sys/arm/arm/pmap-v6.c ============================================================================== --- user/attilio/vmcontention/sys/arm/arm/pmap-v6.c Thu May 23 14:31:42 2013 (r250932) +++ user/attilio/vmcontention/sys/arm/arm/pmap-v6.c Thu May 23 14:34:34 2013 (r250933) @@ -220,8 +220,8 @@ static void pmap_free_pv_entry(pmap_t p static pv_entry_t pmap_get_pv_entry(pmap_t pmap, boolean_t try); static vm_page_t pmap_pv_reclaim(pmap_t locked_pmap); -static void pmap_enter_locked(pmap_t, vm_offset_t, vm_page_t, - vm_prot_t, boolean_t, int); +static void pmap_enter_locked(pmap_t, vm_offset_t, vm_prot_t, + vm_page_t, vm_prot_t, boolean_t, int); static vm_paddr_t pmap_extract_locked(pmap_t pmap, vm_offset_t va); static void pmap_alloc_l1(pmap_t); static void pmap_free_l1(pmap_t); @@ -383,13 +383,13 @@ int pmap_needs_pte_sync; * Macro to determine if a mapping might be resident in the * instruction cache and/or TLB */ -#define PV_BEEN_EXECD(f) (((f) & (PVF_REF | PVF_EXEC)) == (PVF_REF | PVF_EXEC)) +#define PTE_BEEN_EXECD(pte) (L2_S_EXECUTABLE(pte) && L2_S_REFERENCED(pte)) /* * Macro to determine if a mapping might be resident in the * data cache and/or TLB */ -#define PV_BEEN_REFD(f) (((f) & PVF_REF) != 0) +#define PTE_BEEN_REFD(pte) (L2_S_REFERENCED(pte)) #ifndef PMAP_SHPGPERPROC #define PMAP_SHPGPERPROC 200 @@ -563,7 +563,7 @@ pmap_pte_init_mmu_v6(void) * This is called at pmap creation time. */ static void -pmap_alloc_l1(pmap_t pm) +pmap_alloc_l1(pmap_t pmap) { struct l1_ttable *l1; u_int8_t domain; @@ -594,8 +594,8 @@ pmap_alloc_l1(pmap_t pm) /* * Fix up the relevant bits in the pmap structure */ - pm->pm_l1 = l1; - pm->pm_domain = domain + 1; + pmap->pm_l1 = l1; + pmap->pm_domain = domain + 1; } /* @@ -603,9 +603,9 @@ pmap_alloc_l1(pmap_t pm) * This is called at pmap destruction time. */ static void -pmap_free_l1(pmap_t pm) +pmap_free_l1(pmap_t pmap) { - struct l1_ttable *l1 = pm->pm_l1; + struct l1_ttable *l1 = pmap->pm_l1; mtx_lock(&l1_lru_lock); @@ -618,8 +618,8 @@ pmap_free_l1(pmap_t pm) /* * Free up the domain number which was allocated to the pmap */ - l1->l1_domain_free[pm->pm_domain - 1] = l1->l1_domain_first; - l1->l1_domain_first = pm->pm_domain - 1; + l1->l1_domain_free[pmap->pm_domain - 1] = l1->l1_domain_first; + l1->l1_domain_first = pmap->pm_domain - 1; l1->l1_domain_use_count--; /* @@ -641,7 +641,7 @@ pmap_free_l1(pmap_t pm) * and VA, or NULL if no L2 bucket exists for the address. */ static PMAP_INLINE struct l2_bucket * -pmap_get_l2_bucket(pmap_t pm, vm_offset_t va) +pmap_get_l2_bucket(pmap_t pmap, vm_offset_t va) { struct l2_dtable *l2; struct l2_bucket *l2b; @@ -649,7 +649,7 @@ pmap_get_l2_bucket(pmap_t pm, vm_offset_ l1idx = L1_IDX(va); - if ((l2 = pm->pm_l2[L2_IDX(l1idx)]) == NULL || + if ((l2 = pmap->pm_l2[L2_IDX(l1idx)]) == NULL || (l2b = &l2->l2_bucket[L2_BUCKET(l1idx)])->l2b_kva == NULL) return (NULL); @@ -669,7 +669,7 @@ pmap_get_l2_bucket(pmap_t pm, vm_offset_ * the bucket/page in the meantime. */ static struct l2_bucket * -pmap_alloc_l2_bucket(pmap_t pm, vm_offset_t va) +pmap_alloc_l2_bucket(pmap_t pmap, vm_offset_t va) { struct l2_dtable *l2; struct l2_bucket *l2b; @@ -677,36 +677,36 @@ pmap_alloc_l2_bucket(pmap_t pm, vm_offse l1idx = L1_IDX(va); - PMAP_ASSERT_LOCKED(pm); + PMAP_ASSERT_LOCKED(pmap); rw_assert(&pvh_global_lock, RA_WLOCKED); - if ((l2 = pm->pm_l2[L2_IDX(l1idx)]) == NULL) { + if ((l2 = pmap->pm_l2[L2_IDX(l1idx)]) == NULL) { /* * No mapping at this address, as there is * no entry in the L1 table. * Need to allocate a new l2_dtable. */ - PMAP_UNLOCK(pm); + PMAP_UNLOCK(pmap); rw_wunlock(&pvh_global_lock); if ((l2 = uma_zalloc(l2table_zone, M_NOWAIT)) == NULL) { rw_wlock(&pvh_global_lock); - PMAP_LOCK(pm); + PMAP_LOCK(pmap); return (NULL); } rw_wlock(&pvh_global_lock); - PMAP_LOCK(pm); - if (pm->pm_l2[L2_IDX(l1idx)] != NULL) { + PMAP_LOCK(pmap); + if (pmap->pm_l2[L2_IDX(l1idx)] != NULL) { /* * Someone already allocated the l2_dtable while * we were doing the same. */ uma_zfree(l2table_zone, l2); - l2 = pm->pm_l2[L2_IDX(l1idx)]; + l2 = pmap->pm_l2[L2_IDX(l1idx)]; } else { bzero(l2, sizeof(*l2)); /* * Link it into the parent pmap */ - pm->pm_l2[L2_IDX(l1idx)] = l2; + pmap->pm_l2[L2_IDX(l1idx)] = l2; } } @@ -722,11 +722,11 @@ pmap_alloc_l2_bucket(pmap_t pm, vm_offse * No L2 page table has been allocated. Chances are, this * is because we just allocated the l2_dtable, above. */ - PMAP_UNLOCK(pm); + PMAP_UNLOCK(pmap); rw_wunlock(&pvh_global_lock); ptep = uma_zalloc(l2zone, M_NOWAIT); rw_wlock(&pvh_global_lock); - PMAP_LOCK(pm); + PMAP_LOCK(pmap); if (l2b->l2b_kva != 0) { /* We lost the race. */ uma_zfree(l2zone, ptep); @@ -740,7 +740,7 @@ pmap_alloc_l2_bucket(pmap_t pm, vm_offse * if we allocated a new one above. */ if (l2->l2_occupancy == 0) { - pm->pm_l2[L2_IDX(l1idx)] = NULL; + pmap->pm_l2[L2_IDX(l1idx)] = NULL; uma_zfree(l2table_zone, l2); } return (NULL); @@ -769,7 +769,7 @@ pmap_free_l2_ptp(pt_entry_t *l2) * for the kernel pmap). */ static void -pmap_free_l2_bucket(pmap_t pm, struct l2_bucket *l2b, u_int count) +pmap_free_l2_bucket(pmap_t pmap, struct l2_bucket *l2b, u_int count) { struct l2_dtable *l2; pd_entry_t *pl1pd, l1pd; @@ -797,7 +797,7 @@ pmap_free_l2_bucket(pmap_t pm, struct l2 * to a performance win over time as we don't need to continually * alloc/free. */ - if (l2b->l2b_occupancy > 0 || pm == pmap_kernel()) + if (l2b->l2b_occupancy > 0 || pmap == pmap_kernel()) return; /* @@ -809,14 +809,14 @@ pmap_free_l2_bucket(pmap_t pm, struct l2 ptep = l2b->l2b_kva; l2b->l2b_kva = NULL; - pl1pd = &pm->pm_l1->l1_kva[l1idx]; + pl1pd = &pmap->pm_l1->l1_kva[l1idx]; /* * If the L1 slot matches the pmap's domain * number, then invalidate it. */ l1pd = *pl1pd & (L1_TYPE_MASK | L1_C_DOM_MASK); - if (l1pd == (L1_C_DOM(pm->pm_domain) | L1_TYPE_C)) { + if (l1pd == (L1_C_DOM(pmap->pm_domain) | L1_TYPE_C)) { *pl1pd = 0; PTE_SYNC(pl1pd); } @@ -829,7 +829,7 @@ pmap_free_l2_bucket(pmap_t pm, struct l2 /* * Update the reference count in the associated l2_dtable */ - l2 = pm->pm_l2[L2_IDX(l1idx)]; + l2 = pmap->pm_l2[L2_IDX(l1idx)]; if (--l2->l2_occupancy > 0) return; @@ -838,7 +838,7 @@ pmap_free_l2_bucket(pmap_t pm, struct l2 * slots managed by this l2_dtable. Go ahead and NULL-out * the pointer in the parent pmap and free the l2_dtable. */ - pm->pm_l2[L2_IDX(l1idx)] = NULL; + pmap->pm_l2[L2_IDX(l1idx)] = NULL; uma_zfree(l2table_zone, l2); } @@ -888,12 +888,12 @@ pmap_l2ptp_ctor(void *mem, int size, voi * constants and the latter would require an extra inversion at run-time. */ static int -pmap_clearbit(struct vm_page *pg, u_int maskbits) +pmap_clearbit(struct vm_page *m, u_int maskbits) { struct l2_bucket *l2b; struct pv_entry *pv; pt_entry_t *ptep, npte, opte; - pmap_t pm; + pmap_t pmap; vm_offset_t va; u_int oflags; int count = 0; @@ -902,12 +902,8 @@ pmap_clearbit(struct vm_page *pg, u_int if (maskbits & PVF_WRITE) maskbits |= PVF_MOD; - /* - * Clear saved attributes (modify, reference) - */ - pg->md.pvh_attrs &= ~(maskbits & (PVF_MOD | PVF_REF)); - if (TAILQ_EMPTY(&pg->md.pv_list)) { + if (TAILQ_EMPTY(&m->md.pv_list)) { rw_wunlock(&pvh_global_lock); return (0); } @@ -915,55 +911,54 @@ pmap_clearbit(struct vm_page *pg, u_int /* * Loop over all current mappings setting/clearing as appropos */ - TAILQ_FOREACH(pv, &pg->md.pv_list, pv_list) { + TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { va = pv->pv_va; - pm = PV_PMAP(pv); + pmap = PV_PMAP(pv); oflags = pv->pv_flags; pv->pv_flags &= ~maskbits; - PMAP_LOCK(pm); + PMAP_LOCK(pmap); - l2b = pmap_get_l2_bucket(pm, va); + l2b = pmap_get_l2_bucket(pmap, va); ptep = &l2b->l2b_kva[l2pte_index(va)]; npte = opte = *ptep; if ((maskbits & (PVF_WRITE|PVF_MOD)) && L2_S_WRITABLE(opte)) { - vm_page_dirty(pg); + vm_page_dirty(m); /* make the pte read only */ npte |= L2_APX; } - if (maskbits & PVF_REF) { + if ((maskbits & PVF_REF) && L2_S_REFERENCED(opte)) { /* - * Make the PTE invalid so that we will take a - * page fault the next time the mapping is - * referenced. + * Clear referenced flag in PTE so that we + * will take a flag fault the next time the mapping + * is referenced. */ - npte &= ~L2_TYPE_MASK; - npte |= L2_TYPE_INV; + npte &= ~L2_S_REF; } CTR4(KTR_PMAP,"clearbit: pmap:%p bits:%x pte:%x->%x", - pm, maskbits, opte, npte); + pmap, maskbits, opte, npte); if (npte != opte) { count++; *ptep = npte; PTE_SYNC(ptep); /* Flush the TLB entry if a current pmap. */ - if (PV_BEEN_EXECD(oflags)) + if (PTE_BEEN_EXECD(opte)) cpu_tlb_flushID_SE(pv->pv_va); - else if (PV_BEEN_REFD(oflags)) + else if (PTE_BEEN_REFD(opte)) cpu_tlb_flushD_SE(pv->pv_va); } - PMAP_UNLOCK(pm); + PMAP_UNLOCK(pmap); } if (maskbits & PVF_WRITE) - vm_page_aflag_clear(pg, PGA_WRITEABLE); + vm_page_aflag_clear(m, PGA_WRITEABLE); rw_wunlock(&pvh_global_lock); return (count); } @@ -987,21 +982,19 @@ pmap_clearbit(struct vm_page *pg, u_int * => caller should not adjust pmap's wire_count */ static void -pmap_enter_pv(struct vm_page *pg, struct pv_entry *pve, pmap_t pm, +pmap_enter_pv(struct vm_page *m, struct pv_entry *pve, pmap_t pmap, vm_offset_t va, u_int flags) { rw_assert(&pvh_global_lock, RA_WLOCKED); - PMAP_ASSERT_LOCKED(pm); + PMAP_ASSERT_LOCKED(pmap); pve->pv_va = va; pve->pv_flags = flags; - TAILQ_INSERT_HEAD(&pg->md.pv_list, pve, pv_list); - pg->md.pvh_attrs |= flags & (PVF_REF | PVF_MOD); + TAILQ_INSERT_HEAD(&m->md.pv_list, pve, pv_list); if (pve->pv_flags & PVF_WIRED) - ++pm->pm_stats.wired_count; - vm_page_aflag_set(pg, PGA_REFERENCED); + ++pmap->pm_stats.wired_count; } /* @@ -1011,13 +1004,13 @@ pmap_enter_pv(struct vm_page *pg, struct * => caller should hold lock on vm_page */ static PMAP_INLINE struct pv_entry * -pmap_find_pv(struct vm_page *pg, pmap_t pm, vm_offset_t va) +pmap_find_pv(struct vm_page *m, pmap_t pmap, vm_offset_t va) { struct pv_entry *pv; rw_assert(&pvh_global_lock, RA_WLOCKED); - TAILQ_FOREACH(pv, &pg->md.pv_list, pv_list) - if (pm == PV_PMAP(pv) && va == pv->pv_va) + TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) + if (pmap == PV_PMAP(pv) && va == pv->pv_va) break; return (pv); } @@ -1036,6 +1029,12 @@ vector_page_setprot(int prot) l2b = pmap_get_l2_bucket(pmap_kernel(), vector_page); ptep = &l2b->l2b_kva[l2pte_index(vector_page)]; + /* + * Set referenced flag. + * Vectors' page is always desired + * to be allowed to reside in TLB. + */ + *ptep |= L2_S_REF; pmap_set_prot(ptep, prot|VM_PROT_EXECUTE, 0); @@ -1052,16 +1051,15 @@ pmap_set_prot(pt_entry_t *ptep, vm_prot_ if (!(prot & VM_PROT_EXECUTE)) *ptep |= L2_XN; + /* Set defaults first - kernel read access */ *ptep |= L2_APX; *ptep |= L2_S_PROT_R; - + /* Now tune APs as desired */ if (user) *ptep |= L2_S_PROT_U; if (prot & VM_PROT_WRITE) *ptep &= ~(L2_APX); - else if (user) - *ptep &= ~(L2_S_PROT_R); } /* @@ -1076,51 +1074,37 @@ pmap_set_prot(pt_entry_t *ptep, vm_prot_ */ static void -pmap_nuke_pv(struct vm_page *pg, pmap_t pm, struct pv_entry *pve) +pmap_nuke_pv(struct vm_page *m, pmap_t pmap, struct pv_entry *pve) { rw_assert(&pvh_global_lock, RA_WLOCKED); - PMAP_ASSERT_LOCKED(pm); + PMAP_ASSERT_LOCKED(pmap); - TAILQ_REMOVE(&pg->md.pv_list, pve, pv_list); + TAILQ_REMOVE(&m->md.pv_list, pve, pv_list); if (pve->pv_flags & PVF_WIRED) - --pm->pm_stats.wired_count; - - if (pg->md.pvh_attrs & PVF_MOD) - vm_page_dirty(pg); - - if (TAILQ_FIRST(&pg->md.pv_list) == NULL) - pg->md.pvh_attrs &= ~PVF_REF; - else - vm_page_aflag_set(pg, PGA_REFERENCED); + --pmap->pm_stats.wired_count; if (pve->pv_flags & PVF_WRITE) { - TAILQ_FOREACH(pve, &pg->md.pv_list, pv_list) + TAILQ_FOREACH(pve, &m->md.pv_list, pv_list) if (pve->pv_flags & PVF_WRITE) break; if (!pve) { - pg->md.pvh_attrs &= ~PVF_MOD; - vm_page_aflag_clear(pg, PGA_WRITEABLE); + vm_page_aflag_clear(m, PGA_WRITEABLE); } } } static struct pv_entry * -pmap_remove_pv(struct vm_page *pg, pmap_t pm, vm_offset_t va) +pmap_remove_pv(struct vm_page *m, pmap_t pmap, vm_offset_t va) { struct pv_entry *pve; rw_assert(&pvh_global_lock, RA_WLOCKED); - pve = TAILQ_FIRST(&pg->md.pv_list); - while (pve) { - if (PV_PMAP(pve) == pm && pve->pv_va == va) { /* match? */ - pmap_nuke_pv(pg, pm, pve); - break; - } - pve = TAILQ_NEXT(pve, pv_list); - } + pve = pmap_find_pv(m, pmap, va); /* find corresponding pve */ + if (pve != NULL) + pmap_nuke_pv(m, pmap, pve); return(pve); /* return removed pve */ } @@ -1136,42 +1120,36 @@ pmap_remove_pv(struct vm_page *pg, pmap_ * Modify a physical-virtual mapping in the pv table */ static u_int -pmap_modify_pv(struct vm_page *pg, pmap_t pm, vm_offset_t va, +pmap_modify_pv(struct vm_page *m, pmap_t pmap, vm_offset_t va, u_int clr_mask, u_int set_mask) { struct pv_entry *npv; u_int flags, oflags; - PMAP_ASSERT_LOCKED(pm); + PMAP_ASSERT_LOCKED(pmap); rw_assert(&pvh_global_lock, RA_WLOCKED); - if ((npv = pmap_find_pv(pg, pm, va)) == NULL) + if ((npv = pmap_find_pv(m, pmap, va)) == NULL) return (0); /* * There is at least one VA mapping this page. */ - - if (clr_mask & (PVF_REF | PVF_MOD)) - pg->md.pvh_attrs |= set_mask & (PVF_REF | PVF_MOD); - oflags = npv->pv_flags; npv->pv_flags = flags = (oflags & ~clr_mask) | set_mask; if ((flags ^ oflags) & PVF_WIRED) { if (flags & PVF_WIRED) - ++pm->pm_stats.wired_count; + ++pmap->pm_stats.wired_count; else - --pm->pm_stats.wired_count; + --pmap->pm_stats.wired_count; } if ((oflags & PVF_WRITE) && !(flags & PVF_WRITE)) { - TAILQ_FOREACH(npv, &pg->md.pv_list, pv_list) { + TAILQ_FOREACH(npv, &m->md.pv_list, pv_list) { if (npv->pv_flags & PVF_WRITE) break; } - if (!npv) { - pg->md.pvh_attrs &= ~PVF_MOD; - vm_page_aflag_clear(pg, PGA_WRITEABLE); - } + if (!npv) + vm_page_aflag_clear(m, PGA_WRITEABLE); } return (oflags); @@ -1192,8 +1170,6 @@ pmap_pinit0(struct pmap *pmap) { PDEBUG(1, printf("pmap_pinit0: pmap = %08x\n", (u_int32_t) pmap)); - dprintf("pmap_pinit0: pmap = %08x, pm_pdir = %08x\n", - (u_int32_t) pmap, (u_int32_t) pmap->pm_pdir); bcopy(kernel_pmap, pmap, sizeof(*pmap)); bzero(&pmap->pm_mtx, sizeof(pmap->pm_mtx)); PMAP_LOCK_INIT(pmap); @@ -1299,7 +1275,7 @@ SYSCTL_INT(_vm_pmap, OID_AUTO, shpgperpr "Page share factor per proc"); int -pmap_fault_fixup(pmap_t pm, vm_offset_t va, vm_prot_t ftype, int user) +pmap_fault_fixup(pmap_t pmap, vm_offset_t va, vm_prot_t ftype, int user) { struct l2_dtable *l2; struct l2_bucket *l2b; @@ -1311,7 +1287,7 @@ pmap_fault_fixup(pmap_t pm, vm_offset_t l1idx = L1_IDX(va); rw_wlock(&pvh_global_lock); - PMAP_LOCK(pm); + PMAP_LOCK(pmap); /* * If there is no l2_dtable for this address, then the process @@ -1320,7 +1296,7 @@ pmap_fault_fixup(pmap_t pm, vm_offset_t * Note: This will catch userland processes trying to access * kernel addresses. */ - l2 = pm->pm_l2[L2_IDX(l1idx)]; + l2 = pmap->pm_l2[L2_IDX(l1idx)]; if (l2 == NULL) goto out; @@ -1349,22 +1325,23 @@ pmap_fault_fixup(pmap_t pm, vm_offset_t pa = l2pte_pa(pte); CTR5(KTR_PMAP, "pmap_fault_fix: pmap:%p va:%x pte:0x%x ftype:%x user:%x", - pm, va, pte, ftype, user); - if ((ftype & VM_PROT_WRITE) && !(L2_S_WRITABLE(pte))) { + pmap, va, pte, ftype, user); + if ((ftype & VM_PROT_WRITE) && !(L2_S_WRITABLE(pte)) && + L2_S_REFERENCED(pte)) { /* * This looks like a good candidate for "page modified" * emulation... */ struct pv_entry *pv; - struct vm_page *pg; + struct vm_page *m; /* Extract the physical address of the page */ - if ((pg = PHYS_TO_VM_PAGE(pa)) == NULL) { + if ((m = PHYS_TO_VM_PAGE(pa)) == NULL) { goto out; } /* Get the current flags for this page. */ - pv = pmap_find_pv(pg, pm, va); + pv = pmap_find_pv(m, pmap, va); if (pv == NULL) { goto out; } @@ -1379,38 +1356,34 @@ pmap_fault_fixup(pmap_t pm, vm_offset_t if ((pv->pv_flags & PVF_WRITE) == 0) { goto out; } - pg->md.pvh_attrs |= PVF_REF | PVF_MOD; - vm_page_dirty(pg); - pv->pv_flags |= PVF_REF | PVF_MOD; + + vm_page_dirty(m); /* Re-enable write permissions for the page */ - *ptep = (pte & ~L2_TYPE_MASK) | L2_S_PROTO; pmap_set_prot(ptep, VM_PROT_WRITE, *ptep & L2_S_PROT_U); CTR1(KTR_PMAP, "pmap_fault_fix: new pte:0x%x", pte); PTE_SYNC(ptep); rv = 1; - } else if ((pte & L2_TYPE_MASK) == L2_TYPE_INV) { + } else if (!L2_S_REFERENCED(pte)) { /* * This looks like a good candidate for "page referenced" * emulation. */ struct pv_entry *pv; - struct vm_page *pg; + struct vm_page *m; /* Extract the physical address of the page */ - if ((pg = PHYS_TO_VM_PAGE(pa)) == NULL) + if ((m = PHYS_TO_VM_PAGE(pa)) == NULL) goto out; /* Get the current flags for this page. */ - - pv = pmap_find_pv(pg, pm, va); + pv = pmap_find_pv(m, pmap, va); if (pv == NULL) goto out; - pg->md.pvh_attrs |= PVF_REF; - pv->pv_flags |= PVF_REF; - + vm_page_aflag_set(m, PGA_REFERENCED); - *ptep = (pte & ~L2_TYPE_MASK) | L2_S_PROTO; + /* Mark the page "referenced" */ + *ptep = pte | L2_S_REF; PTE_SYNC(ptep); rv = 1; } @@ -1419,8 +1392,8 @@ pmap_fault_fixup(pmap_t pm, vm_offset_t * We know there is a valid mapping here, so simply * fix up the L1 if necessary. */ - pl1pd = &pm->pm_l1->l1_kva[l1idx]; - l1pd = l2b->l2b_phys | L1_C_DOM(pm->pm_domain) | L1_C_PROTO; + pl1pd = &pmap->pm_l1->l1_kva[l1idx]; + l1pd = l2b->l2b_phys | L1_C_DOM(pmap->pm_domain) | L1_C_PROTO; if (*pl1pd != l1pd) { *pl1pd = l1pd; PTE_SYNC(pl1pd); @@ -1455,9 +1428,9 @@ pmap_fault_fixup(pmap_t pm, vm_offset_t * that other parts of the pmap are not doing their job WRT managing * the TLB. */ - if (rv == 0 && pm->pm_l1->l1_domain_use_count == 1) { - printf("fixup: pm %p, va 0x%08x, ftype %d - nothing to do!\n", - pm, va, ftype); + if (rv == 0 && pmap->pm_l1->l1_domain_use_count == 1) { + printf("fixup: pmap %p, va 0x%08x, ftype %d - nothing to do!\n", + pmap, va, ftype); printf("fixup: l2 %p, l2b %p, ptep %p, pl1pd %p\n", l2, l2b, ptep, pl1pd); printf("fixup: pte 0x%x, l1pd 0x%x, last code 0x%x\n", @@ -1475,7 +1448,7 @@ pmap_fault_fixup(pmap_t pm, vm_offset_t out: rw_wunlock(&pvh_global_lock); - PMAP_UNLOCK(pm); + PMAP_UNLOCK(pmap); return (rv); } @@ -1528,19 +1501,19 @@ pmap_postinit(void) * can be accessed quickly from cpu_switch() et al. */ void -pmap_set_pcb_pagedir(pmap_t pm, struct pcb *pcb) +pmap_set_pcb_pagedir(pmap_t pmap, struct pcb *pcb) { struct l2_bucket *l2b; - pcb->pcb_pagedir = pm->pm_l1->l1_physaddr; + pcb->pcb_pagedir = pmap->pm_l1->l1_physaddr; pcb->pcb_dacr = (DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL * 2)) | - (DOMAIN_CLIENT << (pm->pm_domain * 2)); + (DOMAIN_CLIENT << (pmap->pm_domain * 2)); if (vector_page < KERNBASE) { - pcb->pcb_pl1vec = &pm->pm_l1->l1_kva[L1_IDX(vector_page)]; - l2b = pmap_get_l2_bucket(pm, vector_page); + pcb->pcb_pl1vec = &pmap->pm_l1->l1_kva[L1_IDX(vector_page)]; + l2b = pmap_get_l2_bucket(pmap, vector_page); pcb->pcb_l1vec = l2b->l2b_phys | L1_C_PROTO | - L1_C_DOM(pm->pm_domain) | L1_C_DOM(PMAP_DOMAIN_KERNEL); + L1_C_DOM(pmap->pm_domain) | L1_C_DOM(PMAP_DOMAIN_KERNEL); } else pcb->pcb_pl1vec = NULL; } @@ -1548,14 +1521,14 @@ pmap_set_pcb_pagedir(pmap_t pm, struct p void pmap_activate(struct thread *td) { - pmap_t pm; + pmap_t pmap; struct pcb *pcb; - pm = vmspace_pmap(td->td_proc->p_vmspace); + pmap = vmspace_pmap(td->td_proc->p_vmspace); pcb = td->td_pcb; critical_enter(); - pmap_set_pcb_pagedir(pm, pcb); + pmap_set_pcb_pagedir(pmap, pcb); if (td == curthread) { u_int cur_dacr, cur_ttb; @@ -1888,12 +1861,12 @@ pmap_grow_map(vm_offset_t va, pt_entry_t struct l2_bucket *l2b; pt_entry_t *ptep; vm_paddr_t pa; - struct vm_page *pg; + struct vm_page *m; - pg = vm_page_alloc(NULL, 0, VM_ALLOC_NOOBJ | VM_ALLOC_WIRED); - if (pg == NULL) + m = vm_page_alloc(NULL, 0, VM_ALLOC_NOOBJ | VM_ALLOC_WIRED); + if (m == NULL) return (1); - pa = VM_PAGE_TO_PHYS(pg); + pa = VM_PAGE_TO_PHYS(m); if (pap) *pap = pa; @@ -1901,7 +1874,7 @@ pmap_grow_map(vm_offset_t va, pt_entry_t l2b = pmap_get_l2_bucket(pmap_kernel(), va); ptep = &l2b->l2b_kva[l2pte_index(va)]; - *ptep = L2_S_PROTO | pa | cache_mode; + *ptep = L2_S_PROTO | pa | cache_mode | L2_S_REF; pmap_set_prot(ptep, VM_PROT_READ | VM_PROT_WRITE, 0); PTE_SYNC(ptep); @@ -1913,7 +1886,7 @@ pmap_grow_map(vm_offset_t va, pt_entry_t * used by pmap_growkernel(). */ static __inline struct l2_bucket * -pmap_grow_l2_bucket(pmap_t pm, vm_offset_t va) +pmap_grow_l2_bucket(pmap_t pmap, vm_offset_t va) { struct l2_dtable *l2; struct l2_bucket *l2b; @@ -1924,7 +1897,7 @@ pmap_grow_l2_bucket(pmap_t pm, vm_offset l1idx = L1_IDX(va); - if ((l2 = pm->pm_l2[L2_IDX(l1idx)]) == NULL) { + if ((l2 = pmap->pm_l2[L2_IDX(l1idx)]) == NULL) { /* * No mapping at this address, as there is * no entry in the L1 table. @@ -1957,7 +1930,7 @@ pmap_grow_l2_bucket(pmap_t pm, vm_offset /* * Link it into the parent pmap */ - pm->pm_l2[L2_IDX(l1idx)] = l2; + pmap->pm_l2[L2_IDX(l1idx)] = l2; memset(l2, 0, sizeof(*l2)); } @@ -2011,7 +1984,7 @@ pmap_grow_l2_bucket(pmap_t pm, vm_offset void pmap_growkernel(vm_offset_t addr) { - pmap_t kpm = pmap_kernel(); + pmap_t kpmap = pmap_kernel(); if (addr <= pmap_curmaxkvaddr) return; /* we are OK */ @@ -2022,7 +1995,7 @@ pmap_growkernel(vm_offset_t addr) /* Map 1MB at a time */ for (; pmap_curmaxkvaddr < addr; pmap_curmaxkvaddr += L1_S_SIZE) - pmap_grow_l2_bucket(kpm, pmap_curmaxkvaddr); + pmap_grow_l2_bucket(kpmap, pmap_curmaxkvaddr); /* * flush out the cache, expensive but growkernel will happen so @@ -2050,7 +2023,7 @@ pmap_remove_pages(pmap_t pmap) struct pv_entry *pv; struct l2_bucket *l2b = NULL; vm_page_t m; - pt_entry_t *pt; + pt_entry_t *ptep; struct pv_chunk *pc, *npc; uint32_t inuse, bitmask; int allfree, bit, field, idx; @@ -2074,12 +2047,15 @@ pmap_remove_pages(pmap_t pmap) continue; } l2b = pmap_get_l2_bucket(pmap, pv->pv_va); - KASSERT(l2b != NULL, ("No L2 bucket in pmap_remove_pages")); - pt = &l2b->l2b_kva[l2pte_index(pv->pv_va)]; - m = PHYS_TO_VM_PAGE(*pt & L2_ADDR_MASK); - KASSERT((vm_offset_t)m >= KERNBASE, ("Trying to access non-existent page va %x pte %x", pv->pv_va, *pt)); - *pt = 0; - PTE_SYNC(pt); + KASSERT(l2b != NULL, + ("No L2 bucket in pmap_remove_pages")); + ptep = &l2b->l2b_kva[l2pte_index(pv->pv_va)]; + m = PHYS_TO_VM_PAGE(*ptep & L2_ADDR_MASK); + KASSERT((vm_offset_t)m >= KERNBASE, + ("Trying to access non-existent page " + "va %x pte %x", pv->pv_va, *ptep)); + *ptep = 0; + PTE_SYNC(ptep); /* Mark free */ PV_STAT(pv_entry_frees++); @@ -2185,7 +2161,7 @@ static PMAP_INLINE void pmap_kenter_internal(vm_offset_t va, vm_offset_t pa, int flags) { struct l2_bucket *l2b; - pt_entry_t *pte; + pt_entry_t *ptep; pt_entry_t opte; PDEBUG(1, printf("pmap_kenter: va = %08x, pa = %08x\n", @@ -2197,8 +2173,8 @@ pmap_kenter_internal(vm_offset_t va, vm_ l2b = pmap_grow_l2_bucket(pmap_kernel(), va); KASSERT(l2b != NULL, ("No L2 Bucket")); - pte = &l2b->l2b_kva[l2pte_index(va)]; - opte = *pte; + ptep = &l2b->l2b_kva[l2pte_index(va)]; + opte = *ptep; if (l2pte_valid(opte)) { cpu_tlb_flushD_SE(va); cpu_cpwait(); @@ -2208,18 +2184,18 @@ pmap_kenter_internal(vm_offset_t va, vm_ } if (flags & KENTER_CACHE) { - *pte = L2_S_PROTO | pa | pte_l2_s_cache_mode; - pmap_set_prot(pte, VM_PROT_READ | VM_PROT_WRITE, + *ptep = L2_S_PROTO | pa | pte_l2_s_cache_mode | L2_S_REF; + pmap_set_prot(ptep, VM_PROT_READ | VM_PROT_WRITE, flags & KENTER_USER); } else { - *pte = L2_S_PROTO | pa; - pmap_set_prot(pte, VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXECUTE, + *ptep = L2_S_PROTO | pa | L2_S_REF; + pmap_set_prot(ptep, VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXECUTE, 0); } PDEBUG(1, printf("pmap_kenter: pte = %08x, opte = %08x, npte = %08x\n", - (uint32_t) pte, opte, *pte)); - PTE_SYNC(pte); + (uint32_t) ptep, opte, *ptep)); + PTE_SYNC(ptep); cpu_cpwait(); } @@ -2263,20 +2239,20 @@ void pmap_kremove(vm_offset_t va) { struct l2_bucket *l2b; - pt_entry_t *pte, opte; + pt_entry_t *ptep, opte; l2b = pmap_get_l2_bucket(pmap_kernel(), va); if (!l2b) return; KASSERT(l2b != NULL, ("No L2 Bucket")); - pte = &l2b->l2b_kva[l2pte_index(va)]; - opte = *pte; + ptep = &l2b->l2b_kva[l2pte_index(va)]; + opte = *ptep; if (l2pte_valid(opte)) { va = va & ~PAGE_MASK; cpu_tlb_flushD_SE(va); cpu_cpwait(); - *pte = 0; - PTE_SYNC(pte); + *ptep = 0; + PTE_SYNC(ptep); } } @@ -2376,13 +2352,13 @@ pmap_object_init_pt(pmap_t pmap, vm_offs boolean_t pmap_is_prefaultable(pmap_t pmap, vm_offset_t addr) { - pd_entry_t *pde; - pt_entry_t *pte; + pd_entry_t *pdep; + pt_entry_t *ptep; - if (!pmap_get_pde_pte(pmap, addr, &pde, &pte)) + if (!pmap_get_pde_pte(pmap, addr, &pdep, &ptep)) return (FALSE); - KASSERT(pte != NULL, ("Valid mapping but no pte ?")); - if (*pte == 0) + KASSERT(ptep != NULL, ("Valid mapping but no pte ?")); + if (*ptep == 0) return (TRUE); return (FALSE); } @@ -2403,18 +2379,19 @@ pmap_is_prefaultable(pmap_t pmap, vm_off * a "section" mapping. */ boolean_t -pmap_get_pde_pte(pmap_t pm, vm_offset_t va, pd_entry_t **pdp, pt_entry_t **ptp) +pmap_get_pde_pte(pmap_t pmap, vm_offset_t va, pd_entry_t **pdp, + pt_entry_t **ptp) { struct l2_dtable *l2; pd_entry_t *pl1pd, l1pd; pt_entry_t *ptep; u_short l1idx; - if (pm->pm_l1 == NULL) + if (pmap->pm_l1 == NULL) return (FALSE); l1idx = L1_IDX(va); - *pdp = pl1pd = &pm->pm_l1->l1_kva[l1idx]; + *pdp = pl1pd = &pmap->pm_l1->l1_kva[l1idx]; l1pd = *pl1pd; if (l1pte_section_p(l1pd)) { @@ -2422,10 +2399,10 @@ pmap_get_pde_pte(pmap_t pm, vm_offset_t return (TRUE); } - if (pm->pm_l2 == NULL) + if (pmap->pm_l2 == NULL) return (FALSE); - l2 = pm->pm_l2[L2_IDX(l1idx)]; + l2 = pmap->pm_l2[L2_IDX(l1idx)]; if (l2 == NULL || (ptep = l2->l2_bucket[L2_BUCKET(l1idx)].l2b_kva) == NULL) { @@ -2456,8 +2433,8 @@ pmap_remove_all(vm_page_t m) pt_entry_t *ptep; struct l2_bucket *l2b; boolean_t flush = FALSE; - pmap_t curpm; - int flags = 0; + pmap_t curpmap; + u_int is_exec = 0; KASSERT((m->flags & PG_FICTITIOUS) == 0, ("pmap_remove_all: page %p is fictitious", m)); @@ -2465,10 +2442,10 @@ pmap_remove_all(vm_page_t m) if (TAILQ_EMPTY(&m->md.pv_list)) return; rw_wlock(&pvh_global_lock); - curpm = vmspace_pmap(curproc->p_vmspace); + curpmap = vmspace_pmap(curproc->p_vmspace); while ((pv = TAILQ_FIRST(&m->md.pv_list)) != NULL) { pmap = PV_PMAP(pv); - if (flush == FALSE && (pmap == curpm || + if (flush == FALSE && (pmap == curpmap || pmap == pmap_kernel())) flush = TRUE; @@ -2476,22 +2453,19 @@ pmap_remove_all(vm_page_t m) l2b = pmap_get_l2_bucket(pmap, pv->pv_va); KASSERT(l2b != NULL, ("No l2 bucket")); ptep = &l2b->l2b_kva[l2pte_index(pv->pv_va)]; - if (L2_S_WRITABLE(*ptep)) - vm_page_dirty(m); + is_exec |= PTE_BEEN_EXECD(*ptep); *ptep = 0; if (pmap_is_current(pmap)) PTE_SYNC(ptep); pmap_free_l2_bucket(pmap, l2b, 1); pmap->pm_stats.resident_count--; - flags |= pv->pv_flags; pmap_nuke_pv(m, pmap, pv); pmap_free_pv_entry(pmap, pv); PMAP_UNLOCK(pmap); } - m->md.pvh_attrs &= ~(PVF_MOD | PVF_REF); if (flush) { - if (PV_BEEN_EXECD(flags)) + if (is_exec) cpu_tlb_flushID(); else cpu_tlb_flushD(); @@ -2564,16 +2538,16 @@ pmap_change_attr(vm_offset_t sva, vm_siz * specified range of this map as requested. */ void -pmap_protect(pmap_t pm, vm_offset_t sva, vm_offset_t eva, vm_prot_t prot) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Thu May 23 14:37:09 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 2AF7026A; Thu, 23 May 2013 14:37:09 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 1AE587D6; Thu, 23 May 2013 14:37:09 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r4NEb9Hu038673; Thu, 23 May 2013 14:37:09 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r4NEb8Rn038669; Thu, 23 May 2013 14:37:08 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201305231437.r4NEb8Rn038669@svn.freebsd.org> From: Attilio Rao Date: Thu, 23 May 2013 14:37:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250934 - in user/attilio/vmobj-readlock: contrib/openbsm/bin/auditdistd sys/arm/arm sys/arm/include usr.bin/ar usr.bin/bc usr.bin/m4 usr.bin/mklocale usr.sbin/bluetooth/bthidd usr.sbin... X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 May 2013 14:37:09 -0000 Author: attilio Date: Thu May 23 14:37:08 2013 New Revision: 250934 URL: http://svnweb.freebsd.org/changeset/base/250934 Log: Merge from vmcontention. Modified: user/attilio/vmobj-readlock/contrib/openbsm/bin/auditdistd/token.l user/attilio/vmobj-readlock/sys/arm/arm/locore.S user/attilio/vmobj-readlock/sys/arm/arm/pmap-v6.c user/attilio/vmobj-readlock/sys/arm/arm/pmap.c user/attilio/vmobj-readlock/sys/arm/arm/trap.c user/attilio/vmobj-readlock/sys/arm/include/armreg.h user/attilio/vmobj-readlock/sys/arm/include/pmap.h user/attilio/vmobj-readlock/usr.bin/ar/acplex.l user/attilio/vmobj-readlock/usr.bin/bc/scan.l user/attilio/vmobj-readlock/usr.bin/m4/tokenizer.l user/attilio/vmobj-readlock/usr.bin/mklocale/lex.l user/attilio/vmobj-readlock/usr.sbin/bluetooth/bthidd/lexer.l user/attilio/vmobj-readlock/usr.sbin/config/lang.l user/attilio/vmobj-readlock/usr.sbin/jail/jaillex.l Directory Properties: user/attilio/vmobj-readlock/ (props changed) user/attilio/vmobj-readlock/contrib/openbsm/ (props changed) user/attilio/vmobj-readlock/sys/ (props changed) user/attilio/vmobj-readlock/usr.sbin/jail/ (props changed) Modified: user/attilio/vmobj-readlock/contrib/openbsm/bin/auditdistd/token.l ============================================================================== --- user/attilio/vmobj-readlock/contrib/openbsm/bin/auditdistd/token.l Thu May 23 14:34:34 2013 (r250933) +++ user/attilio/vmobj-readlock/contrib/openbsm/bin/auditdistd/token.l Thu May 23 14:37:08 2013 (r250934) @@ -52,6 +52,7 @@ int depth; int lineno; #define DP do { } while (0) +#define YY_DECL int yylex(void) %} %option noinput Modified: user/attilio/vmobj-readlock/sys/arm/arm/locore.S ============================================================================== --- user/attilio/vmobj-readlock/sys/arm/arm/locore.S Thu May 23 14:34:34 2013 (r250933) +++ user/attilio/vmobj-readlock/sys/arm/arm/locore.S Thu May 23 14:37:08 2013 (r250934) @@ -188,6 +188,7 @@ Lunmapped: #ifdef _ARM_ARCH_6 orr r0, r0, #(CPU_CONTROL_V6_EXTPAGE | CPU_CONTROL_UNAL_ENABLE) orr r2, r2, #(CPU_CONTROL_AFLT_ENABLE) + orr r0, r0, #(CPU_CONTROL_AF_ENABLE) #endif orr r0, r0, #(CPU_CONTROL_MMU_ENABLE) mcr p15, 0, r0, c1, c0, 0 Modified: user/attilio/vmobj-readlock/sys/arm/arm/pmap-v6.c ============================================================================== --- user/attilio/vmobj-readlock/sys/arm/arm/pmap-v6.c Thu May 23 14:34:34 2013 (r250933) +++ user/attilio/vmobj-readlock/sys/arm/arm/pmap-v6.c Thu May 23 14:37:08 2013 (r250934) @@ -220,8 +220,8 @@ static void pmap_free_pv_entry(pmap_t p static pv_entry_t pmap_get_pv_entry(pmap_t pmap, boolean_t try); static vm_page_t pmap_pv_reclaim(pmap_t locked_pmap); -static void pmap_enter_locked(pmap_t, vm_offset_t, vm_page_t, - vm_prot_t, boolean_t, int); +static void pmap_enter_locked(pmap_t, vm_offset_t, vm_prot_t, + vm_page_t, vm_prot_t, boolean_t, int); static vm_paddr_t pmap_extract_locked(pmap_t pmap, vm_offset_t va); static void pmap_alloc_l1(pmap_t); static void pmap_free_l1(pmap_t); @@ -383,13 +383,13 @@ int pmap_needs_pte_sync; * Macro to determine if a mapping might be resident in the * instruction cache and/or TLB */ -#define PV_BEEN_EXECD(f) (((f) & (PVF_REF | PVF_EXEC)) == (PVF_REF | PVF_EXEC)) +#define PTE_BEEN_EXECD(pte) (L2_S_EXECUTABLE(pte) && L2_S_REFERENCED(pte)) /* * Macro to determine if a mapping might be resident in the * data cache and/or TLB */ -#define PV_BEEN_REFD(f) (((f) & PVF_REF) != 0) +#define PTE_BEEN_REFD(pte) (L2_S_REFERENCED(pte)) #ifndef PMAP_SHPGPERPROC #define PMAP_SHPGPERPROC 200 @@ -563,7 +563,7 @@ pmap_pte_init_mmu_v6(void) * This is called at pmap creation time. */ static void -pmap_alloc_l1(pmap_t pm) +pmap_alloc_l1(pmap_t pmap) { struct l1_ttable *l1; u_int8_t domain; @@ -594,8 +594,8 @@ pmap_alloc_l1(pmap_t pm) /* * Fix up the relevant bits in the pmap structure */ - pm->pm_l1 = l1; - pm->pm_domain = domain + 1; + pmap->pm_l1 = l1; + pmap->pm_domain = domain + 1; } /* @@ -603,9 +603,9 @@ pmap_alloc_l1(pmap_t pm) * This is called at pmap destruction time. */ static void -pmap_free_l1(pmap_t pm) +pmap_free_l1(pmap_t pmap) { - struct l1_ttable *l1 = pm->pm_l1; + struct l1_ttable *l1 = pmap->pm_l1; mtx_lock(&l1_lru_lock); @@ -618,8 +618,8 @@ pmap_free_l1(pmap_t pm) /* * Free up the domain number which was allocated to the pmap */ - l1->l1_domain_free[pm->pm_domain - 1] = l1->l1_domain_first; - l1->l1_domain_first = pm->pm_domain - 1; + l1->l1_domain_free[pmap->pm_domain - 1] = l1->l1_domain_first; + l1->l1_domain_first = pmap->pm_domain - 1; l1->l1_domain_use_count--; /* @@ -641,7 +641,7 @@ pmap_free_l1(pmap_t pm) * and VA, or NULL if no L2 bucket exists for the address. */ static PMAP_INLINE struct l2_bucket * -pmap_get_l2_bucket(pmap_t pm, vm_offset_t va) +pmap_get_l2_bucket(pmap_t pmap, vm_offset_t va) { struct l2_dtable *l2; struct l2_bucket *l2b; @@ -649,7 +649,7 @@ pmap_get_l2_bucket(pmap_t pm, vm_offset_ l1idx = L1_IDX(va); - if ((l2 = pm->pm_l2[L2_IDX(l1idx)]) == NULL || + if ((l2 = pmap->pm_l2[L2_IDX(l1idx)]) == NULL || (l2b = &l2->l2_bucket[L2_BUCKET(l1idx)])->l2b_kva == NULL) return (NULL); @@ -669,7 +669,7 @@ pmap_get_l2_bucket(pmap_t pm, vm_offset_ * the bucket/page in the meantime. */ static struct l2_bucket * -pmap_alloc_l2_bucket(pmap_t pm, vm_offset_t va) +pmap_alloc_l2_bucket(pmap_t pmap, vm_offset_t va) { struct l2_dtable *l2; struct l2_bucket *l2b; @@ -677,36 +677,36 @@ pmap_alloc_l2_bucket(pmap_t pm, vm_offse l1idx = L1_IDX(va); - PMAP_ASSERT_LOCKED(pm); + PMAP_ASSERT_LOCKED(pmap); rw_assert(&pvh_global_lock, RA_WLOCKED); - if ((l2 = pm->pm_l2[L2_IDX(l1idx)]) == NULL) { + if ((l2 = pmap->pm_l2[L2_IDX(l1idx)]) == NULL) { /* * No mapping at this address, as there is * no entry in the L1 table. * Need to allocate a new l2_dtable. */ - PMAP_UNLOCK(pm); + PMAP_UNLOCK(pmap); rw_wunlock(&pvh_global_lock); if ((l2 = uma_zalloc(l2table_zone, M_NOWAIT)) == NULL) { rw_wlock(&pvh_global_lock); - PMAP_LOCK(pm); + PMAP_LOCK(pmap); return (NULL); } rw_wlock(&pvh_global_lock); - PMAP_LOCK(pm); - if (pm->pm_l2[L2_IDX(l1idx)] != NULL) { + PMAP_LOCK(pmap); + if (pmap->pm_l2[L2_IDX(l1idx)] != NULL) { /* * Someone already allocated the l2_dtable while * we were doing the same. */ uma_zfree(l2table_zone, l2); - l2 = pm->pm_l2[L2_IDX(l1idx)]; + l2 = pmap->pm_l2[L2_IDX(l1idx)]; } else { bzero(l2, sizeof(*l2)); /* * Link it into the parent pmap */ - pm->pm_l2[L2_IDX(l1idx)] = l2; + pmap->pm_l2[L2_IDX(l1idx)] = l2; } } @@ -722,11 +722,11 @@ pmap_alloc_l2_bucket(pmap_t pm, vm_offse * No L2 page table has been allocated. Chances are, this * is because we just allocated the l2_dtable, above. */ - PMAP_UNLOCK(pm); + PMAP_UNLOCK(pmap); rw_wunlock(&pvh_global_lock); ptep = uma_zalloc(l2zone, M_NOWAIT); rw_wlock(&pvh_global_lock); - PMAP_LOCK(pm); + PMAP_LOCK(pmap); if (l2b->l2b_kva != 0) { /* We lost the race. */ uma_zfree(l2zone, ptep); @@ -740,7 +740,7 @@ pmap_alloc_l2_bucket(pmap_t pm, vm_offse * if we allocated a new one above. */ if (l2->l2_occupancy == 0) { - pm->pm_l2[L2_IDX(l1idx)] = NULL; + pmap->pm_l2[L2_IDX(l1idx)] = NULL; uma_zfree(l2table_zone, l2); } return (NULL); @@ -769,7 +769,7 @@ pmap_free_l2_ptp(pt_entry_t *l2) * for the kernel pmap). */ static void -pmap_free_l2_bucket(pmap_t pm, struct l2_bucket *l2b, u_int count) +pmap_free_l2_bucket(pmap_t pmap, struct l2_bucket *l2b, u_int count) { struct l2_dtable *l2; pd_entry_t *pl1pd, l1pd; @@ -797,7 +797,7 @@ pmap_free_l2_bucket(pmap_t pm, struct l2 * to a performance win over time as we don't need to continually * alloc/free. */ - if (l2b->l2b_occupancy > 0 || pm == pmap_kernel()) + if (l2b->l2b_occupancy > 0 || pmap == pmap_kernel()) return; /* @@ -809,14 +809,14 @@ pmap_free_l2_bucket(pmap_t pm, struct l2 ptep = l2b->l2b_kva; l2b->l2b_kva = NULL; - pl1pd = &pm->pm_l1->l1_kva[l1idx]; + pl1pd = &pmap->pm_l1->l1_kva[l1idx]; /* * If the L1 slot matches the pmap's domain * number, then invalidate it. */ l1pd = *pl1pd & (L1_TYPE_MASK | L1_C_DOM_MASK); - if (l1pd == (L1_C_DOM(pm->pm_domain) | L1_TYPE_C)) { + if (l1pd == (L1_C_DOM(pmap->pm_domain) | L1_TYPE_C)) { *pl1pd = 0; PTE_SYNC(pl1pd); } @@ -829,7 +829,7 @@ pmap_free_l2_bucket(pmap_t pm, struct l2 /* * Update the reference count in the associated l2_dtable */ - l2 = pm->pm_l2[L2_IDX(l1idx)]; + l2 = pmap->pm_l2[L2_IDX(l1idx)]; if (--l2->l2_occupancy > 0) return; @@ -838,7 +838,7 @@ pmap_free_l2_bucket(pmap_t pm, struct l2 * slots managed by this l2_dtable. Go ahead and NULL-out * the pointer in the parent pmap and free the l2_dtable. */ - pm->pm_l2[L2_IDX(l1idx)] = NULL; + pmap->pm_l2[L2_IDX(l1idx)] = NULL; uma_zfree(l2table_zone, l2); } @@ -888,12 +888,12 @@ pmap_l2ptp_ctor(void *mem, int size, voi * constants and the latter would require an extra inversion at run-time. */ static int -pmap_clearbit(struct vm_page *pg, u_int maskbits) +pmap_clearbit(struct vm_page *m, u_int maskbits) { struct l2_bucket *l2b; struct pv_entry *pv; pt_entry_t *ptep, npte, opte; - pmap_t pm; + pmap_t pmap; vm_offset_t va; u_int oflags; int count = 0; @@ -902,12 +902,8 @@ pmap_clearbit(struct vm_page *pg, u_int if (maskbits & PVF_WRITE) maskbits |= PVF_MOD; - /* - * Clear saved attributes (modify, reference) - */ - pg->md.pvh_attrs &= ~(maskbits & (PVF_MOD | PVF_REF)); - if (TAILQ_EMPTY(&pg->md.pv_list)) { + if (TAILQ_EMPTY(&m->md.pv_list)) { rw_wunlock(&pvh_global_lock); return (0); } @@ -915,55 +911,54 @@ pmap_clearbit(struct vm_page *pg, u_int /* * Loop over all current mappings setting/clearing as appropos */ - TAILQ_FOREACH(pv, &pg->md.pv_list, pv_list) { + TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { va = pv->pv_va; - pm = PV_PMAP(pv); + pmap = PV_PMAP(pv); oflags = pv->pv_flags; pv->pv_flags &= ~maskbits; - PMAP_LOCK(pm); + PMAP_LOCK(pmap); - l2b = pmap_get_l2_bucket(pm, va); + l2b = pmap_get_l2_bucket(pmap, va); ptep = &l2b->l2b_kva[l2pte_index(va)]; npte = opte = *ptep; if ((maskbits & (PVF_WRITE|PVF_MOD)) && L2_S_WRITABLE(opte)) { - vm_page_dirty(pg); + vm_page_dirty(m); /* make the pte read only */ npte |= L2_APX; } - if (maskbits & PVF_REF) { + if ((maskbits & PVF_REF) && L2_S_REFERENCED(opte)) { /* - * Make the PTE invalid so that we will take a - * page fault the next time the mapping is - * referenced. + * Clear referenced flag in PTE so that we + * will take a flag fault the next time the mapping + * is referenced. */ - npte &= ~L2_TYPE_MASK; - npte |= L2_TYPE_INV; + npte &= ~L2_S_REF; } CTR4(KTR_PMAP,"clearbit: pmap:%p bits:%x pte:%x->%x", - pm, maskbits, opte, npte); + pmap, maskbits, opte, npte); if (npte != opte) { count++; *ptep = npte; PTE_SYNC(ptep); /* Flush the TLB entry if a current pmap. */ - if (PV_BEEN_EXECD(oflags)) + if (PTE_BEEN_EXECD(opte)) cpu_tlb_flushID_SE(pv->pv_va); - else if (PV_BEEN_REFD(oflags)) + else if (PTE_BEEN_REFD(opte)) cpu_tlb_flushD_SE(pv->pv_va); } - PMAP_UNLOCK(pm); + PMAP_UNLOCK(pmap); } if (maskbits & PVF_WRITE) - vm_page_aflag_clear(pg, PGA_WRITEABLE); + vm_page_aflag_clear(m, PGA_WRITEABLE); rw_wunlock(&pvh_global_lock); return (count); } @@ -987,21 +982,19 @@ pmap_clearbit(struct vm_page *pg, u_int * => caller should not adjust pmap's wire_count */ static void -pmap_enter_pv(struct vm_page *pg, struct pv_entry *pve, pmap_t pm, +pmap_enter_pv(struct vm_page *m, struct pv_entry *pve, pmap_t pmap, vm_offset_t va, u_int flags) { rw_assert(&pvh_global_lock, RA_WLOCKED); - PMAP_ASSERT_LOCKED(pm); + PMAP_ASSERT_LOCKED(pmap); pve->pv_va = va; pve->pv_flags = flags; - TAILQ_INSERT_HEAD(&pg->md.pv_list, pve, pv_list); - pg->md.pvh_attrs |= flags & (PVF_REF | PVF_MOD); + TAILQ_INSERT_HEAD(&m->md.pv_list, pve, pv_list); if (pve->pv_flags & PVF_WIRED) - ++pm->pm_stats.wired_count; - vm_page_aflag_set(pg, PGA_REFERENCED); + ++pmap->pm_stats.wired_count; } /* @@ -1011,13 +1004,13 @@ pmap_enter_pv(struct vm_page *pg, struct * => caller should hold lock on vm_page */ static PMAP_INLINE struct pv_entry * -pmap_find_pv(struct vm_page *pg, pmap_t pm, vm_offset_t va) +pmap_find_pv(struct vm_page *m, pmap_t pmap, vm_offset_t va) { struct pv_entry *pv; rw_assert(&pvh_global_lock, RA_WLOCKED); - TAILQ_FOREACH(pv, &pg->md.pv_list, pv_list) - if (pm == PV_PMAP(pv) && va == pv->pv_va) + TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) + if (pmap == PV_PMAP(pv) && va == pv->pv_va) break; return (pv); } @@ -1036,6 +1029,12 @@ vector_page_setprot(int prot) l2b = pmap_get_l2_bucket(pmap_kernel(), vector_page); ptep = &l2b->l2b_kva[l2pte_index(vector_page)]; + /* + * Set referenced flag. + * Vectors' page is always desired + * to be allowed to reside in TLB. + */ + *ptep |= L2_S_REF; pmap_set_prot(ptep, prot|VM_PROT_EXECUTE, 0); @@ -1052,16 +1051,15 @@ pmap_set_prot(pt_entry_t *ptep, vm_prot_ if (!(prot & VM_PROT_EXECUTE)) *ptep |= L2_XN; + /* Set defaults first - kernel read access */ *ptep |= L2_APX; *ptep |= L2_S_PROT_R; - + /* Now tune APs as desired */ if (user) *ptep |= L2_S_PROT_U; if (prot & VM_PROT_WRITE) *ptep &= ~(L2_APX); - else if (user) - *ptep &= ~(L2_S_PROT_R); } /* @@ -1076,51 +1074,37 @@ pmap_set_prot(pt_entry_t *ptep, vm_prot_ */ static void -pmap_nuke_pv(struct vm_page *pg, pmap_t pm, struct pv_entry *pve) +pmap_nuke_pv(struct vm_page *m, pmap_t pmap, struct pv_entry *pve) { rw_assert(&pvh_global_lock, RA_WLOCKED); - PMAP_ASSERT_LOCKED(pm); + PMAP_ASSERT_LOCKED(pmap); - TAILQ_REMOVE(&pg->md.pv_list, pve, pv_list); + TAILQ_REMOVE(&m->md.pv_list, pve, pv_list); if (pve->pv_flags & PVF_WIRED) - --pm->pm_stats.wired_count; - - if (pg->md.pvh_attrs & PVF_MOD) - vm_page_dirty(pg); - - if (TAILQ_FIRST(&pg->md.pv_list) == NULL) - pg->md.pvh_attrs &= ~PVF_REF; - else - vm_page_aflag_set(pg, PGA_REFERENCED); + --pmap->pm_stats.wired_count; if (pve->pv_flags & PVF_WRITE) { - TAILQ_FOREACH(pve, &pg->md.pv_list, pv_list) + TAILQ_FOREACH(pve, &m->md.pv_list, pv_list) if (pve->pv_flags & PVF_WRITE) break; if (!pve) { - pg->md.pvh_attrs &= ~PVF_MOD; - vm_page_aflag_clear(pg, PGA_WRITEABLE); + vm_page_aflag_clear(m, PGA_WRITEABLE); } } } static struct pv_entry * -pmap_remove_pv(struct vm_page *pg, pmap_t pm, vm_offset_t va) +pmap_remove_pv(struct vm_page *m, pmap_t pmap, vm_offset_t va) { struct pv_entry *pve; rw_assert(&pvh_global_lock, RA_WLOCKED); - pve = TAILQ_FIRST(&pg->md.pv_list); - while (pve) { - if (PV_PMAP(pve) == pm && pve->pv_va == va) { /* match? */ - pmap_nuke_pv(pg, pm, pve); - break; - } - pve = TAILQ_NEXT(pve, pv_list); - } + pve = pmap_find_pv(m, pmap, va); /* find corresponding pve */ + if (pve != NULL) + pmap_nuke_pv(m, pmap, pve); return(pve); /* return removed pve */ } @@ -1136,42 +1120,36 @@ pmap_remove_pv(struct vm_page *pg, pmap_ * Modify a physical-virtual mapping in the pv table */ static u_int -pmap_modify_pv(struct vm_page *pg, pmap_t pm, vm_offset_t va, +pmap_modify_pv(struct vm_page *m, pmap_t pmap, vm_offset_t va, u_int clr_mask, u_int set_mask) { struct pv_entry *npv; u_int flags, oflags; - PMAP_ASSERT_LOCKED(pm); + PMAP_ASSERT_LOCKED(pmap); rw_assert(&pvh_global_lock, RA_WLOCKED); - if ((npv = pmap_find_pv(pg, pm, va)) == NULL) + if ((npv = pmap_find_pv(m, pmap, va)) == NULL) return (0); /* * There is at least one VA mapping this page. */ - - if (clr_mask & (PVF_REF | PVF_MOD)) - pg->md.pvh_attrs |= set_mask & (PVF_REF | PVF_MOD); - oflags = npv->pv_flags; npv->pv_flags = flags = (oflags & ~clr_mask) | set_mask; if ((flags ^ oflags) & PVF_WIRED) { if (flags & PVF_WIRED) - ++pm->pm_stats.wired_count; + ++pmap->pm_stats.wired_count; else - --pm->pm_stats.wired_count; + --pmap->pm_stats.wired_count; } if ((oflags & PVF_WRITE) && !(flags & PVF_WRITE)) { - TAILQ_FOREACH(npv, &pg->md.pv_list, pv_list) { + TAILQ_FOREACH(npv, &m->md.pv_list, pv_list) { if (npv->pv_flags & PVF_WRITE) break; } - if (!npv) { - pg->md.pvh_attrs &= ~PVF_MOD; - vm_page_aflag_clear(pg, PGA_WRITEABLE); - } + if (!npv) + vm_page_aflag_clear(m, PGA_WRITEABLE); } return (oflags); @@ -1192,8 +1170,6 @@ pmap_pinit0(struct pmap *pmap) { PDEBUG(1, printf("pmap_pinit0: pmap = %08x\n", (u_int32_t) pmap)); - dprintf("pmap_pinit0: pmap = %08x, pm_pdir = %08x\n", - (u_int32_t) pmap, (u_int32_t) pmap->pm_pdir); bcopy(kernel_pmap, pmap, sizeof(*pmap)); bzero(&pmap->pm_mtx, sizeof(pmap->pm_mtx)); PMAP_LOCK_INIT(pmap); @@ -1299,7 +1275,7 @@ SYSCTL_INT(_vm_pmap, OID_AUTO, shpgperpr "Page share factor per proc"); int -pmap_fault_fixup(pmap_t pm, vm_offset_t va, vm_prot_t ftype, int user) +pmap_fault_fixup(pmap_t pmap, vm_offset_t va, vm_prot_t ftype, int user) { struct l2_dtable *l2; struct l2_bucket *l2b; @@ -1311,7 +1287,7 @@ pmap_fault_fixup(pmap_t pm, vm_offset_t l1idx = L1_IDX(va); rw_wlock(&pvh_global_lock); - PMAP_LOCK(pm); + PMAP_LOCK(pmap); /* * If there is no l2_dtable for this address, then the process @@ -1320,7 +1296,7 @@ pmap_fault_fixup(pmap_t pm, vm_offset_t * Note: This will catch userland processes trying to access * kernel addresses. */ - l2 = pm->pm_l2[L2_IDX(l1idx)]; + l2 = pmap->pm_l2[L2_IDX(l1idx)]; if (l2 == NULL) goto out; @@ -1349,22 +1325,23 @@ pmap_fault_fixup(pmap_t pm, vm_offset_t pa = l2pte_pa(pte); CTR5(KTR_PMAP, "pmap_fault_fix: pmap:%p va:%x pte:0x%x ftype:%x user:%x", - pm, va, pte, ftype, user); - if ((ftype & VM_PROT_WRITE) && !(L2_S_WRITABLE(pte))) { + pmap, va, pte, ftype, user); + if ((ftype & VM_PROT_WRITE) && !(L2_S_WRITABLE(pte)) && + L2_S_REFERENCED(pte)) { /* * This looks like a good candidate for "page modified" * emulation... */ struct pv_entry *pv; - struct vm_page *pg; + struct vm_page *m; /* Extract the physical address of the page */ - if ((pg = PHYS_TO_VM_PAGE(pa)) == NULL) { + if ((m = PHYS_TO_VM_PAGE(pa)) == NULL) { goto out; } /* Get the current flags for this page. */ - pv = pmap_find_pv(pg, pm, va); + pv = pmap_find_pv(m, pmap, va); if (pv == NULL) { goto out; } @@ -1379,38 +1356,34 @@ pmap_fault_fixup(pmap_t pm, vm_offset_t if ((pv->pv_flags & PVF_WRITE) == 0) { goto out; } - pg->md.pvh_attrs |= PVF_REF | PVF_MOD; - vm_page_dirty(pg); - pv->pv_flags |= PVF_REF | PVF_MOD; + + vm_page_dirty(m); /* Re-enable write permissions for the page */ - *ptep = (pte & ~L2_TYPE_MASK) | L2_S_PROTO; pmap_set_prot(ptep, VM_PROT_WRITE, *ptep & L2_S_PROT_U); CTR1(KTR_PMAP, "pmap_fault_fix: new pte:0x%x", pte); PTE_SYNC(ptep); rv = 1; - } else if ((pte & L2_TYPE_MASK) == L2_TYPE_INV) { + } else if (!L2_S_REFERENCED(pte)) { /* * This looks like a good candidate for "page referenced" * emulation. */ struct pv_entry *pv; - struct vm_page *pg; + struct vm_page *m; /* Extract the physical address of the page */ - if ((pg = PHYS_TO_VM_PAGE(pa)) == NULL) + if ((m = PHYS_TO_VM_PAGE(pa)) == NULL) goto out; /* Get the current flags for this page. */ - - pv = pmap_find_pv(pg, pm, va); + pv = pmap_find_pv(m, pmap, va); if (pv == NULL) goto out; - pg->md.pvh_attrs |= PVF_REF; - pv->pv_flags |= PVF_REF; - + vm_page_aflag_set(m, PGA_REFERENCED); - *ptep = (pte & ~L2_TYPE_MASK) | L2_S_PROTO; + /* Mark the page "referenced" */ + *ptep = pte | L2_S_REF; PTE_SYNC(ptep); rv = 1; } @@ -1419,8 +1392,8 @@ pmap_fault_fixup(pmap_t pm, vm_offset_t * We know there is a valid mapping here, so simply * fix up the L1 if necessary. */ - pl1pd = &pm->pm_l1->l1_kva[l1idx]; - l1pd = l2b->l2b_phys | L1_C_DOM(pm->pm_domain) | L1_C_PROTO; + pl1pd = &pmap->pm_l1->l1_kva[l1idx]; + l1pd = l2b->l2b_phys | L1_C_DOM(pmap->pm_domain) | L1_C_PROTO; if (*pl1pd != l1pd) { *pl1pd = l1pd; PTE_SYNC(pl1pd); @@ -1455,9 +1428,9 @@ pmap_fault_fixup(pmap_t pm, vm_offset_t * that other parts of the pmap are not doing their job WRT managing * the TLB. */ - if (rv == 0 && pm->pm_l1->l1_domain_use_count == 1) { - printf("fixup: pm %p, va 0x%08x, ftype %d - nothing to do!\n", - pm, va, ftype); + if (rv == 0 && pmap->pm_l1->l1_domain_use_count == 1) { + printf("fixup: pmap %p, va 0x%08x, ftype %d - nothing to do!\n", + pmap, va, ftype); printf("fixup: l2 %p, l2b %p, ptep %p, pl1pd %p\n", l2, l2b, ptep, pl1pd); printf("fixup: pte 0x%x, l1pd 0x%x, last code 0x%x\n", @@ -1475,7 +1448,7 @@ pmap_fault_fixup(pmap_t pm, vm_offset_t out: rw_wunlock(&pvh_global_lock); - PMAP_UNLOCK(pm); + PMAP_UNLOCK(pmap); return (rv); } @@ -1528,19 +1501,19 @@ pmap_postinit(void) * can be accessed quickly from cpu_switch() et al. */ void -pmap_set_pcb_pagedir(pmap_t pm, struct pcb *pcb) +pmap_set_pcb_pagedir(pmap_t pmap, struct pcb *pcb) { struct l2_bucket *l2b; - pcb->pcb_pagedir = pm->pm_l1->l1_physaddr; + pcb->pcb_pagedir = pmap->pm_l1->l1_physaddr; pcb->pcb_dacr = (DOMAIN_CLIENT << (PMAP_DOMAIN_KERNEL * 2)) | - (DOMAIN_CLIENT << (pm->pm_domain * 2)); + (DOMAIN_CLIENT << (pmap->pm_domain * 2)); if (vector_page < KERNBASE) { - pcb->pcb_pl1vec = &pm->pm_l1->l1_kva[L1_IDX(vector_page)]; - l2b = pmap_get_l2_bucket(pm, vector_page); + pcb->pcb_pl1vec = &pmap->pm_l1->l1_kva[L1_IDX(vector_page)]; + l2b = pmap_get_l2_bucket(pmap, vector_page); pcb->pcb_l1vec = l2b->l2b_phys | L1_C_PROTO | - L1_C_DOM(pm->pm_domain) | L1_C_DOM(PMAP_DOMAIN_KERNEL); + L1_C_DOM(pmap->pm_domain) | L1_C_DOM(PMAP_DOMAIN_KERNEL); } else pcb->pcb_pl1vec = NULL; } @@ -1548,14 +1521,14 @@ pmap_set_pcb_pagedir(pmap_t pm, struct p void pmap_activate(struct thread *td) { - pmap_t pm; + pmap_t pmap; struct pcb *pcb; - pm = vmspace_pmap(td->td_proc->p_vmspace); + pmap = vmspace_pmap(td->td_proc->p_vmspace); pcb = td->td_pcb; critical_enter(); - pmap_set_pcb_pagedir(pm, pcb); + pmap_set_pcb_pagedir(pmap, pcb); if (td == curthread) { u_int cur_dacr, cur_ttb; @@ -1888,12 +1861,12 @@ pmap_grow_map(vm_offset_t va, pt_entry_t struct l2_bucket *l2b; pt_entry_t *ptep; vm_paddr_t pa; - struct vm_page *pg; + struct vm_page *m; - pg = vm_page_alloc(NULL, 0, VM_ALLOC_NOOBJ | VM_ALLOC_WIRED); - if (pg == NULL) + m = vm_page_alloc(NULL, 0, VM_ALLOC_NOOBJ | VM_ALLOC_WIRED); + if (m == NULL) return (1); - pa = VM_PAGE_TO_PHYS(pg); + pa = VM_PAGE_TO_PHYS(m); if (pap) *pap = pa; @@ -1901,7 +1874,7 @@ pmap_grow_map(vm_offset_t va, pt_entry_t l2b = pmap_get_l2_bucket(pmap_kernel(), va); ptep = &l2b->l2b_kva[l2pte_index(va)]; - *ptep = L2_S_PROTO | pa | cache_mode; + *ptep = L2_S_PROTO | pa | cache_mode | L2_S_REF; pmap_set_prot(ptep, VM_PROT_READ | VM_PROT_WRITE, 0); PTE_SYNC(ptep); @@ -1913,7 +1886,7 @@ pmap_grow_map(vm_offset_t va, pt_entry_t * used by pmap_growkernel(). */ static __inline struct l2_bucket * -pmap_grow_l2_bucket(pmap_t pm, vm_offset_t va) +pmap_grow_l2_bucket(pmap_t pmap, vm_offset_t va) { struct l2_dtable *l2; struct l2_bucket *l2b; @@ -1924,7 +1897,7 @@ pmap_grow_l2_bucket(pmap_t pm, vm_offset l1idx = L1_IDX(va); - if ((l2 = pm->pm_l2[L2_IDX(l1idx)]) == NULL) { + if ((l2 = pmap->pm_l2[L2_IDX(l1idx)]) == NULL) { /* * No mapping at this address, as there is * no entry in the L1 table. @@ -1957,7 +1930,7 @@ pmap_grow_l2_bucket(pmap_t pm, vm_offset /* * Link it into the parent pmap */ - pm->pm_l2[L2_IDX(l1idx)] = l2; + pmap->pm_l2[L2_IDX(l1idx)] = l2; memset(l2, 0, sizeof(*l2)); } @@ -2011,7 +1984,7 @@ pmap_grow_l2_bucket(pmap_t pm, vm_offset void pmap_growkernel(vm_offset_t addr) { - pmap_t kpm = pmap_kernel(); + pmap_t kpmap = pmap_kernel(); if (addr <= pmap_curmaxkvaddr) return; /* we are OK */ @@ -2022,7 +1995,7 @@ pmap_growkernel(vm_offset_t addr) /* Map 1MB at a time */ for (; pmap_curmaxkvaddr < addr; pmap_curmaxkvaddr += L1_S_SIZE) - pmap_grow_l2_bucket(kpm, pmap_curmaxkvaddr); + pmap_grow_l2_bucket(kpmap, pmap_curmaxkvaddr); /* * flush out the cache, expensive but growkernel will happen so @@ -2050,7 +2023,7 @@ pmap_remove_pages(pmap_t pmap) struct pv_entry *pv; struct l2_bucket *l2b = NULL; vm_page_t m; - pt_entry_t *pt; + pt_entry_t *ptep; struct pv_chunk *pc, *npc; uint32_t inuse, bitmask; int allfree, bit, field, idx; @@ -2074,12 +2047,15 @@ pmap_remove_pages(pmap_t pmap) continue; } l2b = pmap_get_l2_bucket(pmap, pv->pv_va); - KASSERT(l2b != NULL, ("No L2 bucket in pmap_remove_pages")); - pt = &l2b->l2b_kva[l2pte_index(pv->pv_va)]; - m = PHYS_TO_VM_PAGE(*pt & L2_ADDR_MASK); - KASSERT((vm_offset_t)m >= KERNBASE, ("Trying to access non-existent page va %x pte %x", pv->pv_va, *pt)); - *pt = 0; - PTE_SYNC(pt); + KASSERT(l2b != NULL, + ("No L2 bucket in pmap_remove_pages")); + ptep = &l2b->l2b_kva[l2pte_index(pv->pv_va)]; + m = PHYS_TO_VM_PAGE(*ptep & L2_ADDR_MASK); + KASSERT((vm_offset_t)m >= KERNBASE, + ("Trying to access non-existent page " + "va %x pte %x", pv->pv_va, *ptep)); + *ptep = 0; + PTE_SYNC(ptep); /* Mark free */ PV_STAT(pv_entry_frees++); @@ -2185,7 +2161,7 @@ static PMAP_INLINE void pmap_kenter_internal(vm_offset_t va, vm_offset_t pa, int flags) { struct l2_bucket *l2b; - pt_entry_t *pte; + pt_entry_t *ptep; pt_entry_t opte; PDEBUG(1, printf("pmap_kenter: va = %08x, pa = %08x\n", @@ -2197,8 +2173,8 @@ pmap_kenter_internal(vm_offset_t va, vm_ l2b = pmap_grow_l2_bucket(pmap_kernel(), va); KASSERT(l2b != NULL, ("No L2 Bucket")); - pte = &l2b->l2b_kva[l2pte_index(va)]; - opte = *pte; + ptep = &l2b->l2b_kva[l2pte_index(va)]; + opte = *ptep; if (l2pte_valid(opte)) { cpu_tlb_flushD_SE(va); cpu_cpwait(); @@ -2208,18 +2184,18 @@ pmap_kenter_internal(vm_offset_t va, vm_ } if (flags & KENTER_CACHE) { - *pte = L2_S_PROTO | pa | pte_l2_s_cache_mode; - pmap_set_prot(pte, VM_PROT_READ | VM_PROT_WRITE, + *ptep = L2_S_PROTO | pa | pte_l2_s_cache_mode | L2_S_REF; + pmap_set_prot(ptep, VM_PROT_READ | VM_PROT_WRITE, flags & KENTER_USER); } else { - *pte = L2_S_PROTO | pa; - pmap_set_prot(pte, VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXECUTE, + *ptep = L2_S_PROTO | pa | L2_S_REF; + pmap_set_prot(ptep, VM_PROT_READ|VM_PROT_WRITE|VM_PROT_EXECUTE, 0); } PDEBUG(1, printf("pmap_kenter: pte = %08x, opte = %08x, npte = %08x\n", - (uint32_t) pte, opte, *pte)); - PTE_SYNC(pte); + (uint32_t) ptep, opte, *ptep)); + PTE_SYNC(ptep); cpu_cpwait(); } @@ -2263,20 +2239,20 @@ void pmap_kremove(vm_offset_t va) { struct l2_bucket *l2b; - pt_entry_t *pte, opte; + pt_entry_t *ptep, opte; l2b = pmap_get_l2_bucket(pmap_kernel(), va); if (!l2b) return; KASSERT(l2b != NULL, ("No L2 Bucket")); - pte = &l2b->l2b_kva[l2pte_index(va)]; - opte = *pte; + ptep = &l2b->l2b_kva[l2pte_index(va)]; + opte = *ptep; if (l2pte_valid(opte)) { va = va & ~PAGE_MASK; cpu_tlb_flushD_SE(va); cpu_cpwait(); - *pte = 0; - PTE_SYNC(pte); + *ptep = 0; + PTE_SYNC(ptep); } } @@ -2376,13 +2352,13 @@ pmap_object_init_pt(pmap_t pmap, vm_offs boolean_t pmap_is_prefaultable(pmap_t pmap, vm_offset_t addr) { - pd_entry_t *pde; - pt_entry_t *pte; + pd_entry_t *pdep; + pt_entry_t *ptep; - if (!pmap_get_pde_pte(pmap, addr, &pde, &pte)) + if (!pmap_get_pde_pte(pmap, addr, &pdep, &ptep)) return (FALSE); - KASSERT(pte != NULL, ("Valid mapping but no pte ?")); - if (*pte == 0) + KASSERT(ptep != NULL, ("Valid mapping but no pte ?")); + if (*ptep == 0) return (TRUE); return (FALSE); } @@ -2403,18 +2379,19 @@ pmap_is_prefaultable(pmap_t pmap, vm_off * a "section" mapping. */ boolean_t -pmap_get_pde_pte(pmap_t pm, vm_offset_t va, pd_entry_t **pdp, pt_entry_t **ptp) +pmap_get_pde_pte(pmap_t pmap, vm_offset_t va, pd_entry_t **pdp, + pt_entry_t **ptp) { struct l2_dtable *l2; pd_entry_t *pl1pd, l1pd; pt_entry_t *ptep; u_short l1idx; - if (pm->pm_l1 == NULL) + if (pmap->pm_l1 == NULL) return (FALSE); l1idx = L1_IDX(va); - *pdp = pl1pd = &pm->pm_l1->l1_kva[l1idx]; + *pdp = pl1pd = &pmap->pm_l1->l1_kva[l1idx]; l1pd = *pl1pd; if (l1pte_section_p(l1pd)) { @@ -2422,10 +2399,10 @@ pmap_get_pde_pte(pmap_t pm, vm_offset_t return (TRUE); } - if (pm->pm_l2 == NULL) + if (pmap->pm_l2 == NULL) return (FALSE); - l2 = pm->pm_l2[L2_IDX(l1idx)]; + l2 = pmap->pm_l2[L2_IDX(l1idx)]; if (l2 == NULL || (ptep = l2->l2_bucket[L2_BUCKET(l1idx)].l2b_kva) == NULL) { @@ -2456,8 +2433,8 @@ pmap_remove_all(vm_page_t m) pt_entry_t *ptep; struct l2_bucket *l2b; boolean_t flush = FALSE; - pmap_t curpm; - int flags = 0; + pmap_t curpmap; + u_int is_exec = 0; KASSERT((m->flags & PG_FICTITIOUS) == 0, ("pmap_remove_all: page %p is fictitious", m)); @@ -2465,10 +2442,10 @@ pmap_remove_all(vm_page_t m) if (TAILQ_EMPTY(&m->md.pv_list)) return; rw_wlock(&pvh_global_lock); - curpm = vmspace_pmap(curproc->p_vmspace); + curpmap = vmspace_pmap(curproc->p_vmspace); while ((pv = TAILQ_FIRST(&m->md.pv_list)) != NULL) { pmap = PV_PMAP(pv); - if (flush == FALSE && (pmap == curpm || + if (flush == FALSE && (pmap == curpmap || pmap == pmap_kernel())) flush = TRUE; @@ -2476,22 +2453,19 @@ pmap_remove_all(vm_page_t m) l2b = pmap_get_l2_bucket(pmap, pv->pv_va); KASSERT(l2b != NULL, ("No l2 bucket")); ptep = &l2b->l2b_kva[l2pte_index(pv->pv_va)]; - if (L2_S_WRITABLE(*ptep)) - vm_page_dirty(m); + is_exec |= PTE_BEEN_EXECD(*ptep); *ptep = 0; if (pmap_is_current(pmap)) PTE_SYNC(ptep); pmap_free_l2_bucket(pmap, l2b, 1); pmap->pm_stats.resident_count--; - flags |= pv->pv_flags; pmap_nuke_pv(m, pmap, pv); pmap_free_pv_entry(pmap, pv); PMAP_UNLOCK(pmap); } - m->md.pvh_attrs &= ~(PVF_MOD | PVF_REF); if (flush) { - if (PV_BEEN_EXECD(flags)) + if (is_exec) cpu_tlb_flushID(); else cpu_tlb_flushD(); @@ -2564,16 +2538,16 @@ pmap_change_attr(vm_offset_t sva, vm_siz * specified range of this map as requested. */ void -pmap_protect(pmap_t pm, vm_offset_t sva, vm_offset_t eva, vm_prot_t prot) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Thu May 23 22:11:59 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id BDFE8AAA; Thu, 23 May 2013 22:11:59 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 9EC26399; Thu, 23 May 2013 22:11:59 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r4NMBxSV005416; Thu, 23 May 2013 22:11:59 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r4NMBwpF005404; Thu, 23 May 2013 22:11:58 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201305232211.r4NMBwpF005404@svn.freebsd.org> From: Attilio Rao Date: Thu, 23 May 2013 22:11:58 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250946 - in user/attilio/vmobj-readlock/sys: dev/drm2/i915 kern vm X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 23 May 2013 22:11:59 -0000 Author: attilio Date: Thu May 23 22:11:57 2013 New Revision: 250946 URL: http://svnweb.freebsd.org/changeset/base/250946 Log: Consumers of vm_page_sleep_if_busy() always want to also check for the busy counter, so remove the feature to forbid that. Sponsored by: EMC / Isilon storage division Modified: user/attilio/vmobj-readlock/sys/dev/drm2/i915/i915_gem.c user/attilio/vmobj-readlock/sys/kern/subr_uio.c user/attilio/vmobj-readlock/sys/kern/vfs_bio.c user/attilio/vmobj-readlock/sys/vm/vm_fault.c user/attilio/vmobj-readlock/sys/vm/vm_object.c user/attilio/vmobj-readlock/sys/vm/vm_page.c user/attilio/vmobj-readlock/sys/vm/vm_page.h Modified: user/attilio/vmobj-readlock/sys/dev/drm2/i915/i915_gem.c ============================================================================== --- user/attilio/vmobj-readlock/sys/dev/drm2/i915/i915_gem.c Thu May 23 21:33:10 2013 (r250945) +++ user/attilio/vmobj-readlock/sys/dev/drm2/i915/i915_gem.c Thu May 23 22:11:57 2013 (r250946) @@ -2320,7 +2320,7 @@ retry: continue; vm_page_lock(m); VM_OBJECT_WUNLOCK(devobj); - if (vm_page_sleep_if_busy(m, true, "915unm")) + if (vm_page_sleep_if_busy(m, "915unm")) goto retry; vm_page_unlock(m); cdev_pager_free_page(devobj, m); Modified: user/attilio/vmobj-readlock/sys/kern/subr_uio.c ============================================================================== --- user/attilio/vmobj-readlock/sys/kern/subr_uio.c Thu May 23 21:33:10 2013 (r250945) +++ user/attilio/vmobj-readlock/sys/kern/subr_uio.c Thu May 23 22:11:57 2013 (r250946) @@ -108,7 +108,7 @@ vm_pgmoveco(vm_map_t mapa, vm_offset_t k retry: if ((user_pg = vm_page_lookup(uobject, upindex)) != NULL) { vm_page_lock(user_pg); - if (vm_page_sleep_if_busy(user_pg, TRUE, "vm_pgmoveco")) + if (vm_page_sleep_if_busy(user_pg, "vm_pgmoveco")) goto retry; pmap_remove_all(user_pg); vm_page_free(user_pg); Modified: user/attilio/vmobj-readlock/sys/kern/vfs_bio.c ============================================================================== --- user/attilio/vmobj-readlock/sys/kern/vfs_bio.c Thu May 23 21:33:10 2013 (r250945) +++ user/attilio/vmobj-readlock/sys/kern/vfs_bio.c Thu May 23 22:11:57 2013 (r250946) @@ -3461,7 +3461,7 @@ allocbuf(struct buf *bp, int size) ("allocbuf: bogus page found")); do { vm_page_lock(m); - } while (vm_page_sleep_if_busy(m, TRUE, + } while (vm_page_sleep_if_busy(m, "biodep")); bp->b_pages[i] = NULL; Modified: user/attilio/vmobj-readlock/sys/vm/vm_fault.c ============================================================================== --- user/attilio/vmobj-readlock/sys/vm/vm_fault.c Thu May 23 21:33:10 2013 (r250945) +++ user/attilio/vmobj-readlock/sys/vm/vm_fault.c Thu May 23 22:11:57 2013 (r250946) @@ -380,7 +380,7 @@ RetryFault:; if (fs.m == vm_page_lookup(fs.object, fs.pindex)) { vm_page_lock(fs.m); - if (!vm_page_sleep_if_busy(fs.m, TRUE, + if (!vm_page_sleep_if_busy(fs.m, "vmpfw")) vm_page_unlock(fs.m); } Modified: user/attilio/vmobj-readlock/sys/vm/vm_object.c ============================================================================== --- user/attilio/vmobj-readlock/sys/vm/vm_object.c Thu May 23 21:33:10 2013 (r250945) +++ user/attilio/vmobj-readlock/sys/vm/vm_object.c Thu May 23 22:11:57 2013 (r250946) @@ -872,7 +872,7 @@ rescan: if (p->valid == 0) continue; vm_page_lock(p); - if (vm_page_sleep_if_busy(p, TRUE, "vpcwai")) { + if (vm_page_sleep_if_busy(p, "vpcwai")) { if (object->generation != curgeneration) { if ((flags & OBJPC_SYNC) != 0) goto rescan; @@ -1927,7 +1927,7 @@ again: vm_page_unlock(p); continue; } - if (vm_page_sleep_if_busy(p, TRUE, "vmopar")) + if (vm_page_sleep_if_busy(p, "vmopar")) goto again; KASSERT((p->flags & PG_FICTITIOUS) == 0, ("vm_object_page_remove: page %p is fictitious", p)); Modified: user/attilio/vmobj-readlock/sys/vm/vm_page.c ============================================================================== --- user/attilio/vmobj-readlock/sys/vm/vm_page.c Thu May 23 21:33:10 2013 (r250945) +++ user/attilio/vmobj-readlock/sys/vm/vm_page.c Thu May 23 22:11:57 2013 (r250946) @@ -790,12 +790,12 @@ _vm_page_sleep_onpage(vm_page_t m, int p * The given page and object containing it must be locked. */ int -vm_page_sleep_if_busy(vm_page_t m, int also_m_busy, const char *msg) +vm_page_sleep_if_busy(vm_page_t m, const char *msg) { vm_object_t obj; VM_OBJECT_ASSERT_WLOCKED(m->object); - if ((m->oflags & VPO_BUSY) || (also_m_busy && m->busy)) { + if ((m->oflags & VPO_BUSY) != 0 || m->busy != 0) { /* * The page-specific object must be cached because page * identity can change during the sleep, causing the Modified: user/attilio/vmobj-readlock/sys/vm/vm_page.h ============================================================================== --- user/attilio/vmobj-readlock/sys/vm/vm_page.h Thu May 23 21:33:10 2013 (r250945) +++ user/attilio/vmobj-readlock/sys/vm/vm_page.h Thu May 23 22:11:57 2013 (r250946) @@ -403,7 +403,7 @@ void vm_page_rename (vm_page_t, vm_objec void vm_page_requeue(vm_page_t m); void vm_page_requeue_locked(vm_page_t m); void vm_page_set_valid_range(vm_page_t m, int base, int size); -int vm_page_sleep_if_busy(vm_page_t m, int also_m_busy, const char *msg); +int vm_page_sleep_if_busy(vm_page_t m, const char *msg); int vm_page_sleep_onpage(vm_page_t m, int pri, const char *msg, int timo); vm_offset_t vm_page_startup(vm_offset_t vaddr); void vm_page_unhold_pages(vm_page_t *ma, int count); From owner-svn-src-user@FreeBSD.ORG Sat May 25 10:35:05 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id D7382946; Sat, 25 May 2013 10:35:05 +0000 (UTC) (envelope-from syuu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id AF571A7D; Sat, 25 May 2013 10:35:05 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r4PAZ5Yr071927; Sat, 25 May 2013 10:35:05 GMT (envelope-from syuu@svn.freebsd.org) Received: (from syuu@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r4PAZ5dS071926; Sat, 25 May 2013 10:35:05 GMT (envelope-from syuu@svn.freebsd.org) Message-Id: <201305251035.r4PAZ5dS071926@svn.freebsd.org> From: Takuya ASADA Date: Sat, 25 May 2013 10:35:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250977 - user/syuu X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 May 2013 10:35:05 -0000 Author: syuu Date: Sat May 25 10:35:05 2013 New Revision: 250977 URL: http://svnweb.freebsd.org/changeset/base/250977 Log: create branch for multiqueue bpf Added: user/syuu/ - copied from r250976, head/ Directory Properties: user/syuu/mq_bpf/ (props changed) From owner-svn-src-user@FreeBSD.ORG Sat May 25 11:42:26 2013 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 8E479955; Sat, 25 May 2013 11:42:26 +0000 (UTC) (envelope-from pho@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id 6757CD7F; Sat, 25 May 2013 11:42:26 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r4PBgQec095674; Sat, 25 May 2013 11:42:26 GMT (envelope-from pho@svn.freebsd.org) Received: (from pho@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r4PBgQxp095673; Sat, 25 May 2013 11:42:26 GMT (envelope-from pho@svn.freebsd.org) Message-Id: <201305251142.r4PBgQxp095673@svn.freebsd.org> From: Peter Holm Date: Sat, 25 May 2013 11:42:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r250979 - user/pho/stress2/misc X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 25 May 2013 11:42:26 -0000 Author: pho Date: Sat May 25 11:42:25 2013 New Revision: 250979 URL: http://svnweb.freebsd.org/changeset/base/250979 Log: Added a regression test for MD corruption, fixed by r250966. Added: user/pho/stress2/misc/md4.sh (contents, props changed) Added: user/pho/stress2/misc/md4.sh ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/pho/stress2/misc/md4.sh Sat May 25 11:42:25 2013 (r250979) @@ -0,0 +1,46 @@ +#!/bin/sh + +# +# Copyright (c) 2013 Peter Holm +# 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$ +# + +# Demonstrate data corruption on the swap-backed md. +# Test scenario by Nigel Williams . +# Fixed in r250966. + +[ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 + +status=0 +MD_DEV=`mdconfig -an -t swap -s 1m -x 63 -y 16` +fdisk -I md$MD_DEV > /dev/null 2>&1 +bsdlabel -w -B md${MD_DEV}s1 || exit 1 +dd if=/dev/md$MD_DEV of=/dev/null bs=64k 2>&1 | + egrep -v "records|transferred" +bsdlabel md${MD_DEV}s1 > /dev/null || + { echo FAIL; status=1; } +mdconfig -d -u $MD_DEV +exit $status