From owner-svn-src-user@FreeBSD.ORG Mon Dec 5 16:06:13 2011 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 48B4C1065670; Mon, 5 Dec 2011 16:06:13 +0000 (UTC) (envelope-from andreast@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 380588FC13; Mon, 5 Dec 2011 16:06:13 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB5G6DGe044157; Mon, 5 Dec 2011 16:06:13 GMT (envelope-from andreast@svn.freebsd.org) Received: (from andreast@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB5G6D4W044155; Mon, 5 Dec 2011 16:06:13 GMT (envelope-from andreast@svn.freebsd.org) Message-Id: <201112051606.pB5G6D4W044155@svn.freebsd.org> From: Andreas Tobler Date: Mon, 5 Dec 2011 16:06:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228282 - user/attilio/vmcontention/sys/vm X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 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: Mon, 05 Dec 2011 16:06:13 -0000 Author: andreast Date: Mon Dec 5 16:06:12 2011 New Revision: 228282 URL: http://svn.freebsd.org/changeset/base/228282 Log: Fix compilation issue on 32-bit targets. Reviewed by: attilio Modified: user/attilio/vmcontention/sys/vm/vm_radix.c Modified: user/attilio/vmcontention/sys/vm/vm_radix.c ============================================================================== --- user/attilio/vmcontention/sys/vm/vm_radix.c Mon Dec 5 15:33:13 2011 (r228281) +++ user/attilio/vmcontention/sys/vm/vm_radix.c Mon Dec 5 16:06:12 2011 (r228282) @@ -268,7 +268,7 @@ vm_radix_insert(struct vm_radix *rtree, int slot; CTR3(KTR_VM, - "insert: tree %p, index %p, val %p", rtree, (void *)index, val); + "insert: tree %p, index %ju, val %p", rtree, (uintmax_t)index, val); if (index == -1) panic("vm_radix_insert: -1 is not a valid index.\n"); level = vm_radix_height(rtree, &root); @@ -290,8 +290,8 @@ vm_radix_insert(struct vm_radix *rtree, rnode = vm_radix_node_get(); if (rnode == NULL) { CTR4(KTR_VM, - "insert: tree %p, root %p, index: %d, level: %d ENOMEM", - rtree, root, index, level); + "insert: tree %p, root %p, index: %ju, level: %d ENOMEM", + rtree, root, (uintmax_t)index, level); return (ENOMEM); } /* @@ -317,8 +317,9 @@ vm_radix_insert(struct vm_radix *rtree, rnode->rn_child[slot] = vm_radix_node_get(); if (rnode->rn_child[slot] == NULL) { CTR5(KTR_VM, - "insert: tree %p, index %jd, level %d, slot %d, rnode %p ENOMEM", - rtree, index, level, slot, rnode); + "insert: tree %p, index %ju, level %d, slot %d, rnode %p ENOMEM", + rtree, (uintmax_t)index, level, slot, + rnode); CTR4(KTR_VM, "insert: tree %p, rnode %p, child %p, count %u ENOMEM", rtree, rnode, rnode->rn_child[slot], @@ -328,8 +329,8 @@ vm_radix_insert(struct vm_radix *rtree, rnode->rn_count++; } CTR5(KTR_VM, - "insert: tree %p, index %p, level %d, slot %d, rnode %p", - rtree, (void *)index, level, slot, rnode); + "insert: tree %p, index %ju, level %d, slot %d, rnode %p", + rtree, (uintmax_t)index, level, slot, rnode); CTR4(KTR_VM, "insert: tree %p, rnode %p, child %p, count %u", rtree, rnode, rnode->rn_child[slot], rnode->rn_count); @@ -345,8 +346,8 @@ vm_radix_insert(struct vm_radix *rtree, rnode->rn_child[slot] = val; atomic_add_int((volatile int *)&rnode->rn_count, 1); CTR6(KTR_VM, - "insert: tree %p, index %p, level %d, slot %d, rnode %p, count %u", - rtree, (void *)index, level, slot, rnode, rnode->rn_count); + "insert: tree %p, index %ju, level %d, slot %d, rnode %p, count %u", + rtree, (uintmax_t)index, level, slot, rnode, rnode->rn_count); return 0; } @@ -369,15 +370,16 @@ vm_radix_lookup(struct vm_radix *rtree, while (rnode) { slot = vm_radix_slot(index, level); CTR6(KTR_VM, - "lookup: tree %p, index %p, level %d, slot %d, rnode %p, child %p", - rtree, (void *)index, level, slot, rnode, + "lookup: tree %p, index %ju, level %d, slot %d, rnode %p, child %p", + rtree, (uintmax_t)index, level, slot, rnode, rnode->rn_child[slot]); if (level == 0) return vm_radix_match(rnode->rn_child[slot], color); rnode = rnode->rn_child[slot]; level--; } - CTR2(KTR_VM, "lookup: tree %p, index %p failed", rtree, (void *)index); + CTR2(KTR_VM, "lookup: tree %p, index %ju failed", rtree, + (uintmax_t)index); return NULL; } @@ -397,8 +399,8 @@ vm_radix_color(struct vm_radix *rtree, v while (rnode) { slot = vm_radix_slot(index, level); CTR6(KTR_VM, - "color: tree %p, index %p, level %d, slot %d, rnode %p, child %p", - rtree, (void *)index, level, slot, rnode, + "color: tree %p, index %ju, level %d, slot %d, rnode %p, child %p", + rtree, (uintmax_t)index, level, slot, rnode, rnode->rn_child[slot]); if (level == 0) break; @@ -441,8 +443,8 @@ restart: for (level--; level; level--) { slot = vm_radix_slot(start, level); CTR6(KTR_VM, - "leaf: tree %p, index %p, level %d, slot %d, rnode %p, child %p", - rtree, (void *)start, level, slot, rnode, + "leaf: tree %p, index %ju, level %d, slot %d, rnode %p, child %p", + rtree, (uintmax_t)start, level, slot, rnode, (rnode != NULL) ? rnode->rn_child[slot] : NULL); if (rnode->rn_child[slot] != NULL) { rnode = rnode->rn_child[slot]; @@ -459,8 +461,8 @@ restart: start += inc; slot++; CTR5(KTR_VM, - "leaf: start %p end %p inc %d mask 0x%lX slot %d", - (void *)start, (void *)end, inc, + "leaf: start %ju end %ju inc %d mask 0x%lX slot %d", + (uintmax_t)start, (uintmax_t)end, inc, ~VM_RADIX_MAX(level), slot); for (; slot < VM_RADIX_COUNT; slot++, start += inc) { if (end != 0 && start >= end) { @@ -497,8 +499,8 @@ vm_radix_lookupn(struct vm_radix *rtree, int slot; int outidx; - CTR3(KTR_VM, "lookupn: tree %p, start %p, end %p", - rtree, (void *)start, (void *)end); + CTR3(KTR_VM, "lookupn: tree %p, start %ju, end %ju", + rtree, (uintmax_t)start, (uintmax_t)end); if (rtree->rt_root == 0) return (0); outidx = 0; @@ -511,8 +513,8 @@ vm_radix_lookupn(struct vm_radix *rtree, if (val == NULL) continue; CTR4(KTR_VM, - "lookupn: tree %p index %p slot %d found child %p", - rtree, (void *)start, slot, val); + "lookupn: tree %p index %ju slot %d found child %p", + rtree, (uintmax_t)start, slot, val); out[outidx] = val; if (++outidx == cnt) goto out; @@ -565,7 +567,7 @@ vm_radix_lookup_le(struct vm_radix *rtre int level; CTR2(KTR_VM, - "lookup_le: tree %p, index %p", rtree, (void *)index); + "lookup_le: tree %p, index %ju", rtree, (uintmax_t)index); restart: level = vm_radix_height(rtree, &rnode); if (rnode == NULL) @@ -581,8 +583,8 @@ restart: while (rnode) { slot = vm_radix_slot(index, level); CTR6(KTR_VM, - "lookup_le: tree %p, index %p, level %d, slot %d, rnode %p, child %p", - rtree, (void *)index, level, slot, rnode, + "lookup_le: tree %p, index %ju, level %d, slot %d, rnode %p, child %p", + rtree, (uintmax_t)index, level, slot, rnode, rnode->rn_child[slot]); if (level == 0) break; @@ -602,8 +604,8 @@ restart: index -= inc; slot--; CTR4(KTR_VM, - "lookup_le: start %p inc %ld mask 0x%lX slot %d", - (void *)index, inc, VM_RADIX_MAX(level), slot); + "lookup_le: start %ju inc %ld mask 0x%lX slot %d", + (uintmax_t)index, inc, VM_RADIX_MAX(level), slot); for (; slot >= 0; slot--, index -= inc) { child = rnode->rn_child[slot]; if (child) @@ -641,8 +643,8 @@ vm_radix_remove(struct vm_radix *rtree, level = vm_radix_height(rtree, &root); KASSERT(index <= VM_RADIX_MAX(level), - ("vm_radix_remove: %p index %jd out of range %jd.", - rtree, index, VM_RADIX_MAX(level))); + ("vm_radix_remove: %p index %ju out of range %jd.", + rtree, (uintmax_t)index, VM_RADIX_MAX(level))); rnode = root; val = NULL; level--; @@ -653,24 +655,26 @@ vm_radix_remove(struct vm_radix *rtree, stack[level] = rnode; slot = vm_radix_slot(index, level); CTR5(KTR_VM, - "remove: tree %p, index %p, level %d, slot %d, rnode %p", - rtree, (void *)index, level, slot, rnode); + "remove: tree %p, index %ju, level %d, slot %d, rnode %p", + rtree, (uintmax_t)index, level, slot, rnode); CTR4(KTR_VM, "remove: tree %p, rnode %p, child %p, count %u", rtree, rnode, rnode->rn_child[slot], rnode->rn_count); rnode = rnode->rn_child[slot]; level--; } KASSERT(rnode != NULL, - ("vm_radix_remove: index %jd not present in the tree.\n", index)); + ("vm_radix_remove: index %ju not present in the tree.\n", + (uintmax_t)index)); slot = vm_radix_slot(index, 0); val = vm_radix_match(rnode->rn_child[slot], color); KASSERT(val != NULL, - ("vm_radix_remove: index %jd not present in the tree.\n", index)); + ("vm_radix_remove: index %ju not present in the tree.\n", + (uintmax_t)index)); for (;;) { CTR5(KTR_VM, - "remove: resetting tree %p, index %p, level %d, slot %d, rnode %p", - rtree, (void *)index, level, slot, rnode); + "remove: resetting tree %p, index %ju, level %d, slot %d, rnode %p", + rtree, (uintmax_t)index, level, slot, rnode); CTR4(KTR_VM, "remove: resetting tree %p, rnode %p, child %p, count %u", rtree, rnode, From owner-svn-src-user@FreeBSD.ORG Tue Dec 6 19:04:46 2011 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 15A5D106566C; Tue, 6 Dec 2011 19:04:46 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E092F8FC0A; Tue, 6 Dec 2011 19:04:45 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB6J4j8K004326; Tue, 6 Dec 2011 19:04:45 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB6J4jTO004323; Tue, 6 Dec 2011 19:04:45 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201112061904.pB6J4jTO004323@svn.freebsd.org> From: Attilio Rao Date: Tue, 6 Dec 2011 19:04:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228312 - user/attilio/vmcontention/sys/vm X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 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, 06 Dec 2011 19:04:46 -0000 Author: attilio Date: Tue Dec 6 19:04:45 2011 New Revision: 228312 URL: http://svn.freebsd.org/changeset/base/228312 Log: - Make rn_count 32-bits as it will naturally pad for 32-bit arches - Avoid to use atomic to manipulate it at level0 because it seems unneeded and introduces a bug on big-endian architectures where only the top half (2 bits) of the double-words are written (as sparc64, for example, doesn't support atomics at 16-bits) heading to a wrong handling of rn_count. Reported by: flo, andreast Found by: marius No answer by: jeff Modified: user/attilio/vmcontention/sys/vm/vm_radix.c user/attilio/vmcontention/sys/vm/vm_radix.h Modified: user/attilio/vmcontention/sys/vm/vm_radix.c ============================================================================== --- user/attilio/vmcontention/sys/vm/vm_radix.c Tue Dec 6 18:01:09 2011 (r228311) +++ user/attilio/vmcontention/sys/vm/vm_radix.c Tue Dec 6 19:04:45 2011 (r228312) @@ -344,7 +344,7 @@ vm_radix_insert(struct vm_radix *rtree, rnode->rn_child[slot], (u_long)index)); val = (void *)((uintptr_t)val | VM_RADIX_BLACK); rnode->rn_child[slot] = val; - atomic_add_int((volatile int *)&rnode->rn_count, 1); + rnode->rn_count++; CTR6(KTR_VM, "insert: tree %p, index %ju, level %d, slot %d, rnode %p, count %u", rtree, (uintmax_t)index, level, slot, rnode, rnode->rn_count); @@ -681,14 +681,7 @@ vm_radix_remove(struct vm_radix *rtree, (rnode != NULL) ? rnode->rn_child[slot] : NULL, (rnode != NULL) ? rnode->rn_count : 0); rnode->rn_child[slot] = NULL; - /* - * Use atomics for the last level since red and black - * will both adjust it. - */ - if (level == 0) - atomic_add_int((volatile int *)&rnode->rn_count, -1); - else - rnode->rn_count--; + rnode->rn_count--; /* * Only allow black removes to prune the tree. */ Modified: user/attilio/vmcontention/sys/vm/vm_radix.h ============================================================================== --- user/attilio/vmcontention/sys/vm/vm_radix.h Tue Dec 6 18:01:09 2011 (r228311) +++ user/attilio/vmcontention/sys/vm/vm_radix.h Tue Dec 6 19:04:45 2011 (r228312) @@ -61,8 +61,8 @@ struct vm_radix { CTASSERT(VM_RADIX_HEIGHT >= VM_RADIX_LIMIT); struct vm_radix_node { - void *rn_child[VM_RADIX_COUNT]; /* Child nodes. */ - volatile uint16_t rn_count; /* Valid children. */ + void *rn_child[VM_RADIX_COUNT]; /* Child nodes. */ + uint32_t rn_count; /* Valid children. */ }; void vm_radix_init(void); From owner-svn-src-user@FreeBSD.ORG Tue Dec 6 22:57:49 2011 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3DD66106566C; Tue, 6 Dec 2011 22:57:49 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 143068FC13; Tue, 6 Dec 2011 22:57:49 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB6MvmBP011697; Tue, 6 Dec 2011 22:57:48 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB6MvmT1011694; Tue, 6 Dec 2011 22:57:48 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201112062257.pB6MvmT1011694@svn.freebsd.org> From: Attilio Rao Date: Tue, 6 Dec 2011 22:57:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228314 - user/attilio/vmcontention/sys/vm X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 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, 06 Dec 2011 22:57:49 -0000 Author: attilio Date: Tue Dec 6 22:57:48 2011 New Revision: 228314 URL: http://svn.freebsd.org/changeset/base/228314 Log: Use atomics for rn_count on leaf node because RED operations happen without the VM_OBJECT_LOCK held, thus can be concurrent with BLACK ones. However, also use a write memory barrier in order to not reorder the operation of decrementing rn_count in respect fetching the pointer. Discussed with: jeff Modified: user/attilio/vmcontention/sys/vm/vm_radix.c user/attilio/vmcontention/sys/vm/vm_radix.h Modified: user/attilio/vmcontention/sys/vm/vm_radix.c ============================================================================== --- user/attilio/vmcontention/sys/vm/vm_radix.c Tue Dec 6 20:55:20 2011 (r228313) +++ user/attilio/vmcontention/sys/vm/vm_radix.c Tue Dec 6 22:57:48 2011 (r228314) @@ -344,7 +344,7 @@ vm_radix_insert(struct vm_radix *rtree, rnode->rn_child[slot], (u_long)index)); val = (void *)((uintptr_t)val | VM_RADIX_BLACK); rnode->rn_child[slot] = val; - rnode->rn_count++; + atomic_add_32(&rnode->rn_count, 1); CTR6(KTR_VM, "insert: tree %p, index %ju, level %d, slot %d, rnode %p, count %u", rtree, (uintmax_t)index, level, slot, rnode, rnode->rn_count); @@ -681,7 +681,18 @@ vm_radix_remove(struct vm_radix *rtree, (rnode != NULL) ? rnode->rn_child[slot] : NULL, (rnode != NULL) ? rnode->rn_count : 0); rnode->rn_child[slot] = NULL; - rnode->rn_count--; + /* + * Use atomics for the last level since red and black + * will both adjust it. + * Use a write memory barrier here in order to avoid + * rn_count reaching 0 before to fetch the actual pointer. + * Concurrent black removal, infact, may want to reclaim + * the radix node itself before to read it. + */ + if (level == 0) + atomic_add_rel_32(&rnode->rn_count, -1); + else + rnode->rn_count--; /* * Only allow black removes to prune the tree. */ Modified: user/attilio/vmcontention/sys/vm/vm_radix.h ============================================================================== --- user/attilio/vmcontention/sys/vm/vm_radix.h Tue Dec 6 20:55:20 2011 (r228313) +++ user/attilio/vmcontention/sys/vm/vm_radix.h Tue Dec 6 22:57:48 2011 (r228314) @@ -62,7 +62,7 @@ CTASSERT(VM_RADIX_HEIGHT >= VM_RADIX_LIM struct vm_radix_node { void *rn_child[VM_RADIX_COUNT]; /* Child nodes. */ - uint32_t rn_count; /* Valid children. */ + volatile uint32_t rn_count; /* Valid children. */ }; void vm_radix_init(void); From owner-svn-src-user@FreeBSD.ORG Wed Dec 7 00:07:57 2011 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A2CA31065672; Wed, 7 Dec 2011 00:07:57 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 7932E8FC12; Wed, 7 Dec 2011 00:07:57 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB707vQp013859; Wed, 7 Dec 2011 00:07:57 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB707v11013856; Wed, 7 Dec 2011 00:07:57 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201112070007.pB707v11013856@svn.freebsd.org> From: Attilio Rao Date: Wed, 7 Dec 2011 00:07:57 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228315 - user/attilio/vmcontention/sys/fs/tmpfs X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 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, 07 Dec 2011 00:07:57 -0000 Author: attilio Date: Wed Dec 7 00:07:57 2011 New Revision: 228315 URL: http://svn.freebsd.org/changeset/base/228315 Log: Fix tmpfs to build with vmcontention branch. Modified: user/attilio/vmcontention/sys/fs/tmpfs/tmpfs_fifoops.c user/attilio/vmcontention/sys/fs/tmpfs/tmpfs_vnops.c Modified: user/attilio/vmcontention/sys/fs/tmpfs/tmpfs_fifoops.c ============================================================================== --- user/attilio/vmcontention/sys/fs/tmpfs/tmpfs_fifoops.c Tue Dec 6 22:57:48 2011 (r228314) +++ user/attilio/vmcontention/sys/fs/tmpfs/tmpfs_fifoops.c Wed Dec 7 00:07:57 2011 (r228315) @@ -39,6 +39,7 @@ #include #include #include +#include #include #include Modified: user/attilio/vmcontention/sys/fs/tmpfs/tmpfs_vnops.c ============================================================================== --- user/attilio/vmcontention/sys/fs/tmpfs/tmpfs_vnops.c Tue Dec 6 22:57:48 2011 (r228314) +++ user/attilio/vmcontention/sys/fs/tmpfs/tmpfs_vnops.c Wed Dec 7 00:07:57 2011 (r228315) @@ -505,11 +505,14 @@ tmpfs_mappedread(vm_object_t vobj, vm_ob offset = addr & PAGE_MASK; tlen = MIN(PAGE_SIZE - offset, len); - if ((vobj == NULL) || - (vobj->resident_page_count == 0 && vobj->cache == NULL)) + if (vobj == NULL) goto nocache; VM_OBJECT_LOCK(vobj); + if (vobj->cached_page_count == 0) { + VM_OBJECT_UNLOCK(vobj); + goto nocache; + } lookupvpg: if (((m = vm_page_lookup(vobj, idx)) != NULL) && vm_page_is_valid(m, offset, tlen)) { @@ -633,13 +636,17 @@ tmpfs_mappedwrite(vm_object_t vobj, vm_o offset = addr & PAGE_MASK; tlen = MIN(PAGE_SIZE - offset, len); - if ((vobj == NULL) || - (vobj->resident_page_count == 0 && vobj->cache == NULL)) { + if (vobj == NULL) { vpg = NULL; goto nocache; } VM_OBJECT_LOCK(vobj); + if (vobj->cached_page_count == 0) { + VM_OBJECT_UNLOCK(vobj); + vpg = NULL; + goto nocache; + } lookupvpg: if (((vpg = vm_page_lookup(vobj, idx)) != NULL) && vm_page_is_valid(vpg, offset, tlen)) { @@ -657,8 +664,6 @@ lookupvpg: VM_OBJECT_UNLOCK(vobj); error = uiomove_fromphys(&vpg, offset, tlen, uio); } else { - if (__predict_false(vobj->cache != NULL)) - vm_page_cache_free(vobj, idx, idx + 1); VM_OBJECT_UNLOCK(vobj); vpg = NULL; } From owner-svn-src-user@FreeBSD.ORG Wed Dec 7 00:22:34 2011 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7200F106564A; Wed, 7 Dec 2011 00:22:34 +0000 (UTC) (envelope-from attilio@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 60B8C8FC12; Wed, 7 Dec 2011 00:22:34 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB70MYar014415; Wed, 7 Dec 2011 00:22:34 GMT (envelope-from attilio@svn.freebsd.org) Received: (from attilio@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB70MYiY014412; Wed, 7 Dec 2011 00:22:34 GMT (envelope-from attilio@svn.freebsd.org) Message-Id: <201112070022.pB70MYiY014412@svn.freebsd.org> From: Attilio Rao Date: Wed, 7 Dec 2011 00:22:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228316 - in user/attilio/vmcontention/sys/cddl: compat/opensolaris/sys contrib/opensolaris/uts/common/fs/zfs X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 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, 07 Dec 2011 00:22:34 -0000 Author: attilio Date: Wed Dec 7 00:22:34 2011 New Revision: 228316 URL: http://svn.freebsd.org/changeset/base/228316 Log: Fix ZFS for compiling on vmcontention branch. Modified: user/attilio/vmcontention/sys/cddl/compat/opensolaris/sys/vnode.h user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Modified: user/attilio/vmcontention/sys/cddl/compat/opensolaris/sys/vnode.h ============================================================================== --- user/attilio/vmcontention/sys/cddl/compat/opensolaris/sys/vnode.h Wed Dec 7 00:07:57 2011 (r228315) +++ user/attilio/vmcontention/sys/cddl/compat/opensolaris/sys/vnode.h Wed Dec 7 00:22:34 2011 (r228316) @@ -75,8 +75,7 @@ vn_is_readonly(vnode_t *vp) #define vn_mountedvfs(vp) ((vp)->v_mountedhere) #define vn_has_cached_data(vp) \ ((vp)->v_object != NULL && \ - ((vp)->v_object->resident_page_count > 0 || \ - (vp)->v_object->cache != NULL)) + (vp)->v_object->cached_page_count > 0) #define vn_exists(vp) do { } while (0) #define vn_invalid(vp) do { } while (0) #define vn_renamepath(tdvp, svp, tnm, lentnm) do { } while (0) Modified: user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c ============================================================================== --- user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Wed Dec 7 00:07:57 2011 (r228315) +++ user/attilio/vmcontention/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c Wed Dec 7 00:22:34 2011 (r228316) @@ -337,13 +337,8 @@ page_lookup(vnode_t *vp, int64_t start, } vm_page_busy(pp); vm_page_undirty(pp); - } else { - if (__predict_false(obj->cache != NULL)) { - vm_page_cache_free(obj, OFF_TO_IDX(start), - OFF_TO_IDX(start) + 1); - } + } else pp = NULL; - } break; } return (pp); From owner-svn-src-user@FreeBSD.ORG Wed Dec 7 21:55:11 2011 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9DEF01065670; Wed, 7 Dec 2011 21:55:11 +0000 (UTC) (envelope-from sbruno@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 820558FC1A; Wed, 7 Dec 2011 21:55:11 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB7LtBd1057490; Wed, 7 Dec 2011 21:55:11 GMT (envelope-from sbruno@svn.freebsd.org) Received: (from sbruno@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB7LtBZg057487; Wed, 7 Dec 2011 21:55:11 GMT (envelope-from sbruno@svn.freebsd.org) Message-Id: <201112072155.pB7LtBZg057487@svn.freebsd.org> From: Sean Bruno Date: Wed, 7 Dec 2011 21:55:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228334 - user/sbruno/1394dev/firewire X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 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, 07 Dec 2011 21:55:11 -0000 Author: sbruno Date: Wed Dec 7 21:55:11 2011 New Revision: 228334 URL: http://svn.freebsd.org/changeset/base/228334 Log: Add JMicron JMB381 to the supported list, even though its the most broken. I'd just like to know if that's the card I'm dealing with. Modified: user/sbruno/1394dev/firewire/fwohci_pci.c user/sbruno/1394dev/firewire/fwohcireg.h Modified: user/sbruno/1394dev/firewire/fwohci_pci.c ============================================================================== --- user/sbruno/1394dev/firewire/fwohci_pci.c Wed Dec 7 21:54:44 2011 (r228333) +++ user/sbruno/1394dev/firewire/fwohci_pci.c Wed Dec 7 21:55:11 2011 (r228334) @@ -213,6 +213,10 @@ fwohci_pci_probe( device_t dev ) device_set_desc(dev, "Sun PCIO-2"); return BUS_PROBE_DEFAULT; } + if (id == (FW_VENDORID_JMICRON | FW_DEVICE_JMB381)) { + device_set_desc(dev, "JMicron JMB381 1394a"); + return BUS_PROBE_DEFAULT; + } #endif if (pci_get_class(dev) == PCIC_SERIALBUS && pci_get_subclass(dev) == PCIS_SERIALBUS_FW Modified: user/sbruno/1394dev/firewire/fwohcireg.h ============================================================================== --- user/sbruno/1394dev/firewire/fwohcireg.h Wed Dec 7 21:54:44 2011 (r228333) +++ user/sbruno/1394dev/firewire/fwohcireg.h Wed Dec 7 21:55:11 2011 (r228334) @@ -48,6 +48,7 @@ #define FW_VENDORID_INTEL 0x8086 #define FW_VENDORID_ADAPTEC 0x9004 #define FW_VENDORID_SUN 0x108e +#define FW_VENDORID_JMICRON 0x197b #define FW_DEVICE_CS4210 (0x000f << 16) #define FW_DEVICE_UPD861 (0x0063 << 16) @@ -78,6 +79,7 @@ #define FW_DEVICE_7007 (0x7007 << 16) #define FW_DEVICE_82372FB (0x7605 << 16) #define FW_DEVICE_PCIO2FW (0x1102 << 16) +#define FW_DEVICE_JMB381 (0x2380 << 16) #define PCI_INTERFACE_OHCI 0x10 From owner-svn-src-user@FreeBSD.ORG Fri Dec 9 20:36:11 2011 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1799E106564A; Fri, 9 Dec 2011 20:36:11 +0000 (UTC) (envelope-from jimharris@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E363E8FC14; Fri, 9 Dec 2011 20:36:10 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB9KaArV048786; Fri, 9 Dec 2011 20:36:10 GMT (envelope-from jimharris@svn.freebsd.org) Received: (from jimharris@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB9KaAOq048785; Fri, 9 Dec 2011 20:36:10 GMT (envelope-from jimharris@svn.freebsd.org) Message-Id: <201112092036.pB9KaAOq048785@svn.freebsd.org> From: Jim Harris Date: Fri, 9 Dec 2011 20:36:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228374 - user/jimharris X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 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: Fri, 09 Dec 2011 20:36:11 -0000 Author: jimharris Date: Fri Dec 9 20:36:10 2011 New Revision: 228374 URL: http://svn.freebsd.org/changeset/base/228374 Log: Create jimharris branch for staging new development bits. Added: user/jimharris/ From owner-svn-src-user@FreeBSD.ORG Fri Dec 9 20:45:10 2011 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 61E6E1065672; Fri, 9 Dec 2011 20:45:10 +0000 (UTC) (envelope-from jimharris@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 390308FC1B; Fri, 9 Dec 2011 20:45:10 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB9KjANe049226; Fri, 9 Dec 2011 20:45:10 GMT (envelope-from jimharris@svn.freebsd.org) Received: (from jimharris@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB9KjARA049225; Fri, 9 Dec 2011 20:45:10 GMT (envelope-from jimharris@svn.freebsd.org) Message-Id: <201112092045.pB9KjARA049225@svn.freebsd.org> From: Jim Harris Date: Fri, 9 Dec 2011 20:45:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228377 - user/jimharris/isci X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 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: Fri, 09 Dec 2011 20:45:10 -0000 Author: jimharris Date: Fri Dec 9 20:45:09 2011 New Revision: 228377 URL: http://svn.freebsd.org/changeset/base/228377 Log: Creating isci project branch for initial checkin of isci driver. Approved by: scottl Obtained from: Intel Added: - copied from r228376, head/ Directory Properties: user/jimharris/isci/ (props changed) From owner-svn-src-user@FreeBSD.ORG Fri Dec 9 21:06:21 2011 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 68F10106564A; Fri, 9 Dec 2011 21:06:21 +0000 (UTC) (envelope-from jimharris@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4E5158FC0A; Fri, 9 Dec 2011 21:06:21 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id pB9L6LeP049921; Fri, 9 Dec 2011 21:06:21 GMT (envelope-from jimharris@svn.freebsd.org) Received: (from jimharris@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id pB9L6LVZ049920; Fri, 9 Dec 2011 21:06:21 GMT (envelope-from jimharris@svn.freebsd.org) Message-Id: <201112092106.pB9L6LVZ049920@svn.freebsd.org> From: Jim Harris Date: Fri, 9 Dec 2011 21:06:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r228378 - user/jimharris/isci/sys/modules/isci X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 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: Fri, 09 Dec 2011 21:06:21 -0000 Author: jimharris Date: Fri Dec 9 21:06:20 2011 New Revision: 228378 URL: http://svn.freebsd.org/changeset/base/228378 Log: Add initial version of Makefile for isci driver. Approved by: scottl Obtained from: Intel Added: user/jimharris/isci/sys/modules/isci/ user/jimharris/isci/sys/modules/isci/Makefile (contents, props changed) Added: user/jimharris/isci/sys/modules/isci/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/jimharris/isci/sys/modules/isci/Makefile Fri Dec 9 21:06:20 2011 (r228378) @@ -0,0 +1,93 @@ +# isci Loadable Kernel Module +# +# $FreeBSD$ + +ISCI_SRC_PATH = ${.CURDIR}/../.. + +.PATH: ${ISCI_SRC_PATH}/dev/isci + +KMOD = isci +SRCS = isci.c isci_oem_parameters.c \ + isci_controller.c isci_domain.c isci_io_request.c \ + isci_timer.c isci_remote_device.c isci_logger.c \ + isci_task_request.c isci_sysctl.c isci_interrupt.c + +SRCS += \ + sci_base_controller.c \ + sci_base_domain.c \ + sci_base_iterator.c \ + sci_base_library.c \ + sci_base_logger.c \ + sci_base_memory_descriptor_list.c \ + sci_base_memory_descriptor_list_decorator.c \ + sci_base_object.c \ + sci_base_observer.c \ + sci_base_phy.c \ + sci_base_port.c \ + sci_base_remote_device.c \ + sci_base_request.c \ + sci_base_state_machine.c \ + sci_base_state_machine_logger.c \ + sci_base_state_machine_observer.c \ + sci_base_subject.c + +SRCS += \ + sci_abstract_list.c \ + sci_util.c + +SRCS += \ + scic_sds_controller.c \ + scic_sds_library.c scic_sds_pci.c \ + scic_sds_phy.c scic_sds_port.c \ + scic_sds_port_configuration_agent.c \ + scic_sds_remote_device.c scic_sds_remote_node_context.c \ + scic_sds_remote_node_table.c scic_sds_request.c \ + scic_sds_sgpio.c scic_sds_smp_remote_device.c \ + scic_sds_smp_request.c scic_sds_ssp_request.c \ + scic_sds_stp_packet_request.c scic_sds_stp_remote_device.c \ + scic_sds_stp_request.c scic_sds_unsolicited_frame_control.c + +SRCS += \ + scif_sas_controller.c \ + scif_sas_controller_state_handlers.c \ + scif_sas_controller_states.c scif_sas_domain.c \ + scif_sas_domain_state_handlers.c scif_sas_domain_states.c \ + scif_sas_high_priority_request_queue.c \ + scif_sas_internal_io_request.c scif_sas_io_request.c \ + scif_sas_io_request_state_handlers.c \ + scif_sas_io_request_states.c scif_sas_library.c \ + scif_sas_remote_device.c \ + scif_sas_remote_device_ready_substate_handlers.c \ + scif_sas_remote_device_ready_substates.c \ + scif_sas_remote_device_starting_substate_handlers.c \ + scif_sas_remote_device_starting_substates.c \ + scif_sas_remote_device_state_handlers.c \ + scif_sas_remote_device_states.c scif_sas_request.c \ + scif_sas_smp_activity_clear_affiliation.c \ + scif_sas_smp_io_request.c scif_sas_smp_phy.c \ + scif_sas_smp_remote_device.c scif_sas_stp_io_request.c \ + scif_sas_stp_remote_device.c scif_sas_stp_task_request.c \ + scif_sas_task_request.c scif_sas_task_request_state_handlers.c \ + scif_sas_task_request_states.c scif_sas_timer.c + +SRCS += \ + sati.c \ + sati_abort_task_set.c sati_atapi.c \ + sati_device.c sati_inquiry.c sati_log_sense.c \ + sati_lun_reset.c sati_mode_pages.c sati_mode_select.c \ + sati_mode_sense.c sati_mode_sense_6.c sati_mode_sense_10.c \ + sati_move.c sati_passthrough.c sati_read.c sati_read_buffer.c \ + sati_read_capacity.c \ + sati_report_luns.c sati_request_sense.c sati_reassign_blocks.c \ + sati_start_stop_unit.c sati_synchronize_cache.c \ + sati_test_unit_ready.c sati_unmap.c sati_util.c \ + sati_verify.c sati_write.c \ + sati_write_buffer.c sati_write_long.c sati_write_and_verify.c + +SRCS += opt_scsi.h opt_cam.h +SRCS += device_if.h bus_if.h pci_if.h + +CC = gcc + +.include +