From owner-p4-projects@FreeBSD.ORG Tue Jul 6 07:06:06 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D490816A4D1; Tue, 6 Jul 2004 07:06:05 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 8D1AE16A4CE for ; Tue, 6 Jul 2004 07:06:05 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 7C10143D53 for ; Tue, 6 Jul 2004 07:06:05 +0000 (GMT) (envelope-from julian@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id i66765Xq009907 for ; Tue, 6 Jul 2004 07:06:05 GMT (envelope-from julian@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id i66764tE009904 for perforce@freebsd.org; Tue, 6 Jul 2004 07:06:04 GMT (envelope-from julian@freebsd.org) Date: Tue, 6 Jul 2004 07:06:04 GMT Message-Id: <200407060706.i66764tE009904@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to julian@freebsd.org using -f From: Julian Elischer To: Perforce Change Reviews Subject: PERFORCE change 56594 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 06 Jul 2004 07:06:06 -0000 http://perforce.freebsd.org/chv.cgi?CH=56594 Change 56594 by julian@julian_jules1 on 2004/07/06 07:05:14 IFC still need to do kern_switch.c by hand Affected files ... .. //depot/projects/nsched/sys/alpha/alpha/pmap.c#6 integrate .. //depot/projects/nsched/sys/alpha/include/pmap.h#6 integrate .. //depot/projects/nsched/sys/amd64/amd64/pmap.c#12 integrate .. //depot/projects/nsched/sys/arm/arm/pmap.c#3 integrate .. //depot/projects/nsched/sys/boot/common/ufsread.c#2 integrate .. //depot/projects/nsched/sys/coda/coda_subr.c#2 integrate .. //depot/projects/nsched/sys/conf/NOTES#9 integrate .. //depot/projects/nsched/sys/conf/files#15 integrate .. //depot/projects/nsched/sys/conf/options#10 integrate .. //depot/projects/nsched/sys/dev/acpica/acpi_pcib_acpi.c#6 integrate .. //depot/projects/nsched/sys/dev/fdc/fdc.c#4 integrate .. //depot/projects/nsched/sys/dev/hifn/hifn7751.c#3 integrate .. //depot/projects/nsched/sys/dev/nmdm/nmdm.c#7 integrate .. //depot/projects/nsched/sys/dev/pcf/pcfvar.h#2 integrate .. //depot/projects/nsched/sys/dev/re/if_re.c#6 integrate .. //depot/projects/nsched/sys/dev/sound/pci/via82c686.c#2 integrate .. //depot/projects/nsched/sys/dev/usb/usbdevs#8 integrate .. //depot/projects/nsched/sys/fs/msdosfs/msdosfs_fileno.c#1 branch .. //depot/projects/nsched/sys/fs/msdosfs/msdosfs_vfsops.c#3 integrate .. //depot/projects/nsched/sys/fs/msdosfs/msdosfs_vnops.c#2 integrate .. //depot/projects/nsched/sys/fs/msdosfs/msdosfsmount.h#3 integrate .. //depot/projects/nsched/sys/geom/concat/g_concat.c#4 integrate .. //depot/projects/nsched/sys/geom/concat/g_concat.h#3 integrate .. //depot/projects/nsched/sys/geom/geom_slice.c#4 integrate .. //depot/projects/nsched/sys/geom/label/g_label.c#2 integrate .. //depot/projects/nsched/sys/geom/label/g_label.h#2 integrate .. //depot/projects/nsched/sys/geom/stripe/g_stripe.c#2 integrate .. //depot/projects/nsched/sys/geom/stripe/g_stripe.h#2 integrate .. //depot/projects/nsched/sys/geom/vinum/geom_vinum.c#4 integrate .. //depot/projects/nsched/sys/gnu/ext2fs/ext2_vfsops.c#4 integrate .. //depot/projects/nsched/sys/i386/acpica/acpi_wakeup.c#3 integrate .. //depot/projects/nsched/sys/i386/i386/busdma_machdep.c#2 integrate .. //depot/projects/nsched/sys/i386/i386/nexus.c#5 integrate .. //depot/projects/nsched/sys/i386/i386/pmap.c#10 integrate .. //depot/projects/nsched/sys/i386/isa/isa.c#3 integrate .. //depot/projects/nsched/sys/i386/isa/isa.h#3 integrate .. //depot/projects/nsched/sys/i386/isa/isa_dma.c#3 integrate .. //depot/projects/nsched/sys/i386/linux/linux_ptrace.c#2 integrate .. //depot/projects/nsched/sys/i386/pci/pci_cfgreg.c#3 integrate .. //depot/projects/nsched/sys/i4b/driver/i4b_ing.c#4 integrate .. //depot/projects/nsched/sys/ia64/ia64/pmap.c#7 integrate .. //depot/projects/nsched/sys/isa/orm.c#2 integrate .. //depot/projects/nsched/sys/isofs/cd9660/cd9660_lookup.c#3 integrate .. //depot/projects/nsched/sys/isofs/cd9660/cd9660_node.c#4 integrate .. //depot/projects/nsched/sys/isofs/cd9660/cd9660_rrip.c#4 integrate .. //depot/projects/nsched/sys/isofs/cd9660/cd9660_rrip.h#3 integrate .. //depot/projects/nsched/sys/isofs/cd9660/cd9660_vfsops.c#4 integrate .. //depot/projects/nsched/sys/kern/kern_event.c#4 integrate .. //depot/projects/nsched/sys/kern/sched_4bsd.c#23 edit .. //depot/projects/nsched/sys/kern/sched_ule.c#11 integrate .. //depot/projects/nsched/sys/kern/uipc_socket.c#9 integrate .. //depot/projects/nsched/sys/kern/vfs_bio.c#5 integrate .. //depot/projects/nsched/sys/kern/vfs_default.c#3 integrate .. //depot/projects/nsched/sys/kern/vfs_mount.c#5 integrate .. //depot/projects/nsched/sys/kern/vfs_subr.c#8 integrate .. //depot/projects/nsched/sys/modules/msdosfs/Makefile#2 integrate .. //depot/projects/nsched/sys/net/bpf.c#6 integrate .. //depot/projects/nsched/sys/net/bridge.c#5 integrate .. //depot/projects/nsched/sys/net/if_disc.c#4 integrate .. //depot/projects/nsched/sys/net/if_faith.c#6 integrate .. //depot/projects/nsched/sys/net/if_gif.c#6 integrate .. //depot/projects/nsched/sys/net/if_gre.c#5 integrate .. //depot/projects/nsched/sys/net/if_vlan.c#6 integrate .. //depot/projects/nsched/sys/net/rtsock.c#5 integrate .. //depot/projects/nsched/sys/netgraph/ng_async.c#3 integrate .. //depot/projects/nsched/sys/netgraph/ng_eiface.c#5 integrate .. //depot/projects/nsched/sys/netgraph/ng_fec.c#6 integrate .. //depot/projects/nsched/sys/netgraph/ng_gif_demux.c#3 integrate .. //depot/projects/nsched/sys/netgraph/ng_iface.c#4 integrate .. //depot/projects/nsched/sys/netgraph/ng_sppp.c#4 integrate .. //depot/projects/nsched/sys/nfs4client/nfs4_vfsops.c#3 integrate .. //depot/projects/nsched/sys/nfsclient/nfs_subs.c#5 integrate .. //depot/projects/nsched/sys/nfsclient/nfs_vfsops.c#3 integrate .. //depot/projects/nsched/sys/nfsserver/nfs_srvcache.c#4 integrate .. //depot/projects/nsched/sys/pci/if_dc.c#6 integrate .. //depot/projects/nsched/sys/pci/if_de.c#5 integrate .. //depot/projects/nsched/sys/pci/if_devar.h#2 integrate .. //depot/projects/nsched/sys/pci/if_rl.c#7 integrate .. //depot/projects/nsched/sys/pci/if_rlreg.h#4 integrate .. //depot/projects/nsched/sys/pci/if_sf.c#5 integrate .. //depot/projects/nsched/sys/pci/if_ti.c#4 integrate .. //depot/projects/nsched/sys/pci/if_xl.c#6 integrate .. //depot/projects/nsched/sys/pci/if_xlreg.h#2 integrate .. //depot/projects/nsched/sys/powerpc/ofw/ofw_syscons.c#3 integrate .. //depot/projects/nsched/sys/powerpc/ofw/ofw_syscons.h#3 integrate .. //depot/projects/nsched/sys/powerpc/powerpc/pmap.c#5 integrate .. //depot/projects/nsched/sys/sparc64/ebus/ebus.c#5 integrate .. //depot/projects/nsched/sys/sparc64/fhc/fhc.c#3 integrate .. //depot/projects/nsched/sys/sparc64/pci/psycho.c#5 integrate .. //depot/projects/nsched/sys/sparc64/sbus/sbus.c#5 integrate .. //depot/projects/nsched/sys/sparc64/sparc64/iommu.c#5 integrate .. //depot/projects/nsched/sys/sparc64/sparc64/nexus.c#5 integrate .. //depot/projects/nsched/sys/sys/event.h#2 integrate .. //depot/projects/nsched/sys/sys/mount.h#5 integrate .. //depot/projects/nsched/sys/sys/vnode.h#6 integrate .. //depot/projects/nsched/sys/ufs/ffs/ffs_snapshot.c#5 integrate .. //depot/projects/nsched/sys/ufs/ffs/ffs_vfsops.c#5 integrate .. //depot/projects/nsched/sys/ufs/ufs/ufs_quota.c#3 integrate .. //depot/projects/nsched/sys/vm/swap_pager.c#6 integrate .. //depot/projects/nsched/sys/vm/uma_core.c#4 integrate Differences ... ==== //depot/projects/nsched/sys/alpha/alpha/pmap.c#6 (text+ko) ==== @@ -148,7 +148,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.150 2004/06/15 19:28:39 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/alpha/alpha/pmap.c,v 1.152 2004/07/05 23:18:48 alc Exp $"); #include #include @@ -520,6 +520,7 @@ /* * Initialize the kernel pmap (which is statically allocated). */ + PMAP_LOCK_INIT(kernel_pmap); kernel_pmap->pm_lev1 = Lev1map; kernel_pmap->pm_active = ~0; kernel_pmap->pm_asn[alpha_pal_whami()].asn = 0; @@ -741,10 +742,8 @@ * Extract the physical page address associated * with the given map/virtual_address pair. */ -vm_offset_t -pmap_extract(pmap, va) - register pmap_t pmap; - vm_offset_t va; +vm_paddr_t +pmap_extract(pmap_t pmap, vm_offset_t va) { pt_entry_t* pte = pmap_lev3pte(pmap, va); if (pte) @@ -988,6 +987,7 @@ { int i; + PMAP_LOCK_INIT(pmap); pmap->pm_lev1 = Lev1map; pmap->pm_ptphint = NULL; pmap->pm_active = 0; @@ -1012,6 +1012,8 @@ vm_page_t lev1pg; int i; + PMAP_LOCK_INIT(pmap); + /* * allocate object for the ptes */ @@ -1294,6 +1296,7 @@ mtx_lock_spin(&allpmaps_lock); LIST_REMOVE(pmap, pm_list); mtx_unlock_spin(&allpmaps_lock); + PMAP_LOCK_DESTROY(pmap); } /* @@ -1618,6 +1621,7 @@ s = splvm(); while ((pv = TAILQ_FIRST(&m->md.pv_list)) != NULL) { + PMAP_LOCK(pv->pv_pmap); pte = pmap_lev3pte(pv->pv_pmap, pv->pv_va); pv->pv_pmap->pm_stats.resident_count--; @@ -1647,6 +1651,7 @@ TAILQ_REMOVE(&m->md.pv_list, pv, pv_list); m->md.pv_list_count--; pmap_unuse_pt(pv->pv_pmap, pv->pv_va, pv->pv_ptem); + PMAP_UNLOCK(pv->pv_pmap); free_pv_entry(pv); } @@ -2033,6 +2038,7 @@ if (pmap == NULL) return; + PMAP_LOCK(pmap); pte = pmap_lev3pte(pmap, va); if (wired && !pmap_pte_w(pte)) @@ -2045,6 +2051,7 @@ * invalidate TLB. */ pmap_pte_set_w(pte, wired); + PMAP_UNLOCK(pmap); } @@ -2186,6 +2193,7 @@ #endif s = splvm(); + PMAP_LOCK(pmap); for(pv = TAILQ_FIRST(&pmap->pm_pvlist); pv; pv = npv) { @@ -2232,6 +2240,7 @@ } splx(s); pmap_invalidate_all(pmap); + PMAP_UNLOCK(pmap); } /* @@ -2273,6 +2282,7 @@ } #endif + PMAP_LOCK(pv->pv_pmap); pte = pmap_lev3pte(pv->pv_pmap, pv->pv_va); changed = 0; @@ -2288,6 +2298,7 @@ } if (changed) pmap_invalidate_page(pv->pv_pmap, pv->pv_va); + PMAP_UNLOCK(pv->pv_pmap); } if (!setem && bit == (PG_UWE|PG_KWE)) vm_page_flag_clear(m, PG_WRITEABLE); @@ -2340,6 +2351,7 @@ */ count = 0; TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { + PMAP_LOCK(pv->pv_pmap); pte = pmap_lev3pte(pv->pv_pmap, pv->pv_va); if (!(*pte & PG_FOR)) { @@ -2347,6 +2359,7 @@ *pte |= PG_FOR | PG_FOE; pmap_invalidate_page(pv->pv_pmap, pv->pv_va); } + PMAP_UNLOCK(pv->pv_pmap); } return count; @@ -2416,12 +2429,14 @@ * Loop over current mappings setting PG_FOW where needed. */ TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { + PMAP_LOCK(pv->pv_pmap); pte = pmap_lev3pte(pv->pv_pmap, pv->pv_va); if (!(*pte & PG_FOW)) { *pte |= PG_FOW; pmap_invalidate_page(pv->pv_pmap, pv->pv_va); } + PMAP_UNLOCK(pv->pv_pmap); } } @@ -2443,12 +2458,14 @@ * Loop over current mappings setting PG_FOR and PG_FOE where needed. */ TAILQ_FOREACH(pv, &m->md.pv_list, pv_list) { + PMAP_LOCK(pv->pv_pmap); pte = pmap_lev3pte(pv->pv_pmap, pv->pv_va); if (!(*pte & (PG_FOR | PG_FOE))) { *pte |= (PG_FOR | PG_FOE); pmap_invalidate_page(pv->pv_pmap, pv->pv_va); } + PMAP_UNLOCK(pv->pv_pmap); } } ==== //depot/projects/nsched/sys/alpha/include/pmap.h#6 (text+ko) ==== @@ -39,7 +39,7 @@ * from: hp300: @(#)pmap.h 7.2 (Berkeley) 12/16/90 * from: @(#)pmap.h 7.4 (Berkeley) 5/12/91 * from: i386 pmap.h,v 1.54 1997/11/20 19:30:35 bde Exp - * $FreeBSD: src/sys/alpha/include/pmap.h,v 1.31 2004/06/23 08:06:52 alc Exp $ + * $FreeBSD: src/sys/alpha/include/pmap.h,v 1.32 2004/07/05 16:59:56 alc Exp $ */ #ifndef _MACHINE_PMAP_H_ @@ -95,6 +95,8 @@ #ifndef LOCORE #include +#include +#include typedef alpha_pt_entry_t pt_entry_t; @@ -165,6 +167,7 @@ #define ASNGEN_MASK ((1 << ASNGEN_BITS) - 1) struct pmap { + struct mtx pm_mtx; pt_entry_t *pm_lev1; /* KVA of lev0map */ vm_object_t pm_pteobj; /* Container for pte's */ TAILQ_HEAD(,pv_entry) pm_pvlist; /* list of mappings in pmap */ @@ -183,6 +186,17 @@ #ifdef _KERNEL extern struct pmap kernel_pmap_store; #define kernel_pmap (&kernel_pmap_store) + +#define PMAP_LOCK(pmap) mtx_lock(&(pmap)->pm_mtx) +#define PMAP_LOCK_ASSERT(pmap, type) \ + mtx_assert(&(pmap)->pm_mtx, (type)) +#define PMAP_LOCK_DESTROY(pmap) mtx_destroy(&(pmap)->pm_mtx) +#define PMAP_LOCK_INIT(pmap) mtx_init(&(pmap)->pm_mtx, "pmap", \ + NULL, MTX_DEF) +#define PMAP_LOCKED(pmap) mtx_owned(&(pmap)->pm_mtx) +#define PMAP_MTX(pmap) (&(pmap)->pm_mtx) +#define PMAP_TRYLOCK(pmap) mtx_trylock(&(pmap)->pm_mtx) +#define PMAP_UNLOCK(pmap) mtx_unlock(&(pmap)->pm_mtx) #endif /* ==== //depot/projects/nsched/sys/amd64/amd64/pmap.c#12 (text+ko) ==== @@ -75,7 +75,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.479 2004/06/23 04:37:14 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.480 2004/07/06 02:33:11 alc Exp $"); /* * Manages physical address maps. @@ -760,15 +760,13 @@ * with the given map/virtual_address pair. */ vm_paddr_t -pmap_extract(pmap, va) - register pmap_t pmap; - vm_offset_t va; +pmap_extract(pmap_t pmap, vm_offset_t va) { vm_paddr_t rtval; pt_entry_t *pte; pd_entry_t pde, *pdep; - if (pmap == 0) + if (pmap == NULL) return 0; PMAP_LOCK(pmap); pdep = pmap_pde(pmap, va); @@ -781,7 +779,7 @@ return rtval; } pte = pmap_pte(pmap, va); - rtval = ((*pte & PG_FRAME) | (va & PAGE_MASK)); + rtval = (*pte & PG_FRAME) | (va & PAGE_MASK); PMAP_UNLOCK(pmap); return rtval; } ==== //depot/projects/nsched/sys/arm/arm/pmap.c#3 (text+ko) ==== @@ -144,7 +144,7 @@ */ /* Include header files */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.3 2004/06/19 20:50:50 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.4 2004/07/05 23:08:27 alc Exp $"); #include #include #include @@ -3488,7 +3488,7 @@ * Extract the physical page address associated * with the given map/virtual_address pair. */ -vm_offset_t +vm_paddr_t pmap_extract(pmap_t pm, vm_offset_t va) { struct l2_dtable *l2; ==== //depot/projects/nsched/sys/boot/common/ufsread.c#2 (text+ko) ==== @@ -23,7 +23,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/boot/common/ufsread.c,v 1.12 2003/08/25 23:30:41 obrien Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/common/ufsread.c,v 1.13 2004/07/04 16:11:01 stefanf Exp $"); #include #include @@ -68,7 +68,7 @@ static int ls, dsk_meta; static uint32_t fs_off; -static __inline__ int +static __inline int fsfind(const char *name, ino_t * ino) { char buf[DEV_BSIZE]; ==== //depot/projects/nsched/sys/coda/coda_subr.c#2 (text+ko) ==== @@ -52,7 +52,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/coda/coda_subr.c,v 1.28 2003/11/05 04:30:06 kan Exp $"); +__FBSDID("$FreeBSD: src/sys/coda/coda_subr.c,v 1.29 2004/07/04 08:52:33 phk Exp $"); #include #include @@ -308,15 +308,12 @@ coda_checkunmounting(mp) struct mount *mp; { - register struct vnode *vp, *nvp; + struct vnode *vp, *nvp; struct cnode *cp; int count = 0, bad = 0; MNT_ILOCK(mp); - for (vp = TAILQ_FIRST(&mp->mnt_nvnodelist); vp; vp = nvp) { - nvp = TAILQ_NEXT(vp, v_nmntvnodes); - if (vp->v_mount != mp) - continue; + MNT_VNODE_FOREACH(vp, mp, nvp) { VI_LOCK(vp); if (vp->v_iflag & VI_XLOCK) { VI_UNLOCK(vp); ==== //depot/projects/nsched/sys/conf/NOTES#9 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/NOTES,v 1.1240 2004/07/02 20:21:41 jhb Exp $ +# $FreeBSD: src/sys/conf/NOTES,v 1.1241 2004/07/03 13:22:38 tjr Exp $ # # NOTES -- Lines that can be cut/pasted into kernel and hints configs. # @@ -843,6 +843,18 @@ options NTFS_ICONV options UDF_ICONV +# Experimental support for large MS-DOS filesystems. +# +# WARNING: This uses at least 32 bytes of kernel memory (which is not +# reclaimed until the FS is unmounted) for each file on disk to map +# between the 32-bit inode numbers used by VFS and the 64-bit pseudo-inode +# numbers used internally by msdosfs. This is only safe to use in certain +# controlled situations (e.g. read-only FS with less than 1 million files). +# Since the mappings do not persist across unmounts (or reboots), these +# filesystems are not suitable for exporting through NFS, or any other +# application that requires fixed inode numbers. +options MSDOSFS_LARGE + ##################################################################### # POSIX P1003.1B ==== //depot/projects/nsched/sys/conf/files#15 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.922 2004/07/02 19:40:36 pjd Exp $ +# $FreeBSD: src/sys/conf/files,v 1.923 2004/07/03 13:22:38 tjr Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -880,6 +880,7 @@ fs/msdosfs/msdosfs_lookup.c optional msdosfs fs/msdosfs/msdosfs_vfsops.c optional msdosfs fs/msdosfs/msdosfs_vnops.c optional msdosfs +fs/msdosfs/msdosfs_fileno.c optional msdosfs_large fs/msdosfs/msdosfs_iconv.c optional msdosfs_iconv fs/ntfs/ntfs_compr.c optional ntfs fs/ntfs/ntfs_ihash.c optional ntfs ==== //depot/projects/nsched/sys/conf/options#10 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options,v 1.459 2004/07/02 20:21:42 jhb Exp $ +# $FreeBSD: src/sys/conf/options,v 1.460 2004/07/03 13:22:38 tjr Exp $ # # On the handling of kernel options # @@ -219,6 +219,9 @@ NETSMB opt_netsmb.h NETSMBCRYPTO opt_netsmb.h +# Experimental support for large MS-DOS filesystems; SEE WARNING IN "NOTES"! +MSDOSFS_LARGE opt_msdosfs.h + # Options used only in subr_param.c. HZ opt_param.h MAXFILES opt_param.h ==== //depot/projects/nsched/sys/dev/acpica/acpi_pcib_acpi.c#6 (text+ko) ==== @@ -24,7 +24,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/acpica/acpi_pcib_acpi.c,v 1.37 2004/06/30 16:08:03 njl Exp $ + * $FreeBSD: src/sys/dev/acpica/acpi_pcib_acpi.c,v 1.38 2004/07/04 16:23:25 imp Exp $ */ #include "opt_acpi.h" #include @@ -309,14 +309,16 @@ u_long start, u_long end, u_long count, u_int flags) { /* - * If no memory preference is given, use upper 256MB slot most + * If no memory preference is given, use upper 2GB slot most * bioses use for their memory window. Typically other bridges * before us get in the way to assert their preferences on memory. * Hardcoding like this sucks, so a more MD/MI way needs to be - * found to do it. + * found to do it. This is typically only used on older laptops + * that don't have pci busses behind pci bridge, so assuming < 2GB + * is liekly OK. */ if (type == SYS_RES_MEMORY && start == 0UL && end == ~0UL) - start = 0xf0000000; + start = 0x80000000; return (bus_generic_alloc_resource(dev, child, type, rid, start, end, count, flags)); } ==== //depot/projects/nsched/sys/dev/fdc/fdc.c#4 (text+ko) ==== @@ -49,7 +49,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/fdc/fdc.c,v 1.273 2004/06/16 09:46:43 phk Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/fdc/fdc.c,v 1.275 2004/07/05 20:56:06 phk Exp $"); #include "opt_fdc.h" #include "card.h" @@ -132,6 +132,7 @@ { int fdcu; /* our unit number */ int dmachan; + int dmacnt; int flags; #define FDC_ATTACHED 0x01 #define FDC_STAT_VALID 0x08 @@ -770,7 +771,8 @@ } fdc->res_irq = bus_alloc_resource_any(dev, SYS_RES_IRQ, - &fdc->rid_irq, RF_ACTIVE); + &fdc->rid_irq, + RF_ACTIVE | RF_SHAREABLE); if (fdc->res_irq == 0) { device_printf(dev, "cannot reserve interrupt line\n"); return ENXIO; @@ -778,13 +780,12 @@ if ((fdc->flags & FDC_NODMA) == 0) { fdc->res_drq = bus_alloc_resource_any(dev, SYS_RES_DRQ, - &fdc->rid_drq, - RF_ACTIVE); + &fdc->rid_drq, RF_ACTIVE | RF_SHAREABLE); if (fdc->res_drq == 0) { device_printf(dev, "cannot reserve DMA request line\n"); - return ENXIO; - } - fdc->dmachan = rman_get_start(fdc->res_drq); + fdc->flags |= FDC_NODMA; + } else + fdc->dmachan = rman_get_start(fdc->res_drq); } return 0; @@ -964,9 +965,6 @@ /* reset controller, turn motor off */ fdout_wr(fdc, 0); - if ((fdc->flags & FDC_NODMA) == 0) - isa_dma_release(fdc->dmachan); - if ((fdc->flags & FDC_ATTACHED) == 0) { device_printf(dev, "already unloaded\n"); return (0); @@ -1030,15 +1028,6 @@ fdc->fdcu = device_get_unit(dev); fdc->flags |= FDC_ATTACHED | FDC_NEEDS_RESET; - if ((fdc->flags & FDC_NODMA) == 0) { - /* - * Acquire the DMA channel forever, the driver will do - * the rest - * XXX should integrate with rman - */ - isa_dma_acquire(fdc->dmachan); - isa_dmainit(fdc->dmachan, MAX_SEC_SIZE); - } fdc->state = DEVIDLE; /* reset controller, turn motor off, clear fdout mirror reg */ @@ -1574,6 +1563,14 @@ return (rv); } fd->flags |= FD_OPEN; + + if ((fdc->flags & FDC_NODMA) == 0) { + if (fdc->dmacnt++ == 0) { + isa_dma_acquire(fdc->dmachan); + isa_dmainit(fdc->dmachan, MAX_SEC_SIZE); + } + } + /* * Clearing the DMA overrun counter at open time is a bit messy. * Since we're only managing one counter per controller, opening @@ -1594,11 +1591,17 @@ fdclose(struct cdev *dev, int flags, int mode, struct thread *td) { struct fd_data *fd; + fdc_p fdc; fd = dev->si_drv1; + fdc = fd->fdc; fd->flags &= ~(FD_OPEN | FD_NONBLOCK); fd->options &= ~(FDOPT_NORETRY | FDOPT_NOERRLOG | FDOPT_NOERROR); + if ((fdc->flags & FDC_NODMA) == 0) + if (--fdc->dmacnt == 0) + isa_dma_release(fdc->dmachan); + return (0); } ==== //depot/projects/nsched/sys/dev/hifn/hifn7751.c#3 (text+ko) ==== @@ -41,7 +41,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/hifn/hifn7751.c,v 1.27 2004/05/30 20:08:33 phk Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/hifn/hifn7751.c,v 1.28 2004/07/04 16:11:01 stefanf Exp $"); /* * Driver for various Hifn encryption processors. @@ -151,7 +151,7 @@ static void hifn_write_reg_0(struct hifn_softc *, bus_size_t, u_int32_t); static void hifn_write_reg_1(struct hifn_softc *, bus_size_t, u_int32_t); -static __inline__ u_int32_t +static __inline u_int32_t READ_REG_0(struct hifn_softc *sc, bus_size_t reg) { u_int32_t v = bus_space_read_4(sc->sc_st0, sc->sc_sh0, reg); @@ -160,7 +160,7 @@ } #define WRITE_REG_0(sc, reg, val) hifn_write_reg_0(sc, reg, val) -static __inline__ u_int32_t +static __inline u_int32_t READ_REG_1(struct hifn_softc *sc, bus_size_t reg) { u_int32_t v = bus_space_read_4(sc->sc_st1, sc->sc_sh1, reg); ==== //depot/projects/nsched/sys/dev/nmdm/nmdm.c#7 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/nmdm/nmdm.c,v 1.28 2004/06/17 17:16:45 phk Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/nmdm/nmdm.c,v 1.29 2004/07/04 16:27:58 phk Exp $"); /* * Pseudo-nulmodem driver @@ -48,6 +48,7 @@ #include #include #include +#include #include #include #include @@ -58,6 +59,7 @@ static void nmdmstart(struct tty *tp); static void nmdmstop(struct tty *tp, int rw); static void nmdminit(struct cdev *dev); +static t_modem_t nmdmmodem; static d_open_t nmdmopen; static d_close_t nmdmclose; @@ -76,9 +78,9 @@ #define BFLAG CLONE_FLAG0 struct softpart { - struct tty *nm_tty; - struct cdev *dev; - int dcd; + struct tty *nm_tty; + struct cdev *dev; + int nm_dcd; struct task pt_task; struct softpart *other; }; @@ -151,14 +153,14 @@ otp = sp->other->nm_tty; KASSERT(otp != NULL, ("NULL otp in nmdmstart")); KASSERT(otp != tp, ("NULL otp == tp nmdmstart")); - if (sp->other->dcd) { + if (sp->other->nm_dcd) { if (!(tp->t_state & TS_ISOPEN)) { - sp->other->dcd = 0; + sp->other->nm_dcd = 0; (void)ttyld_modem(otp, 0); } } else { if (tp->t_state & TS_ISOPEN) { - sp->other->dcd = 1; + sp->other->nm_dcd = 1; (void)ttyld_modem(otp, 1); } } @@ -200,6 +202,7 @@ pt->part1.nm_tty = ttymalloc(pt->part1.nm_tty); pt->part1.nm_tty->t_oproc = nmdmstart; pt->part1.nm_tty->t_stop = nmdmstop; + pt->part1.nm_tty->t_modem = nmdmmodem; pt->part1.nm_tty->t_dev = dev1; pt->part1.nm_tty->t_sc = &pt->part1; TASK_INIT(&pt->part1.pt_task, 0, nmdm_task_tty, pt->part1.nm_tty); @@ -207,6 +210,7 @@ pt->part2.nm_tty = ttymalloc(pt->part2.nm_tty); pt->part2.nm_tty->t_oproc = nmdmstart; pt->part2.nm_tty->t_stop = nmdmstop; + pt->part2.nm_tty->t_modem = nmdmmodem; pt->part2.nm_tty->t_dev = dev2; pt->part2.nm_tty->t_sc = &pt->part2; TASK_INIT(&pt->part2.pt_task, 0, nmdm_task_tty, pt->part2.nm_tty); @@ -260,6 +264,33 @@ } static int +nmdmmodem(struct tty *tp, int sigon, int sigoff) +{ + struct softpart *sp; + int i; + + sp = tp->t_sc; + if (sigon || sigoff) { + if (sigon & SER_DTR) { + sp->other->nm_dcd = 1; + ttyld_modem(sp->other->nm_tty, sp->other->nm_dcd); + } + if (sigoff & SER_DTR) { + sp->other->nm_dcd = 0; + ttyld_modem(sp->other->nm_tty, sp->other->nm_dcd); + } + return (0); + } else { + i = 0; + if (sp->nm_dcd) + i |= SER_DCD; + if (sp->other->nm_dcd) + i |= SER_DTR; + return (i); + } +} + +static int nmdmclose(struct cdev *dev, int flag, int mode, struct thread *td) { ==== //depot/projects/nsched/sys/dev/pcf/pcfvar.h#2 (text+ko) ==== @@ -24,7 +24,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/dev/pcf/pcfvar.h,v 1.1 2004/05/25 07:42:45 joerg Exp $ + * $FreeBSD: src/sys/dev/pcf/pcfvar.h,v 1.2 2004/07/04 16:11:01 stefanf Exp $ */ #define IO_PCFSIZE 2 @@ -86,7 +86,7 @@ /* * Specific register access to PCF8584 */ -static __inline__ void +static __inline void pcf_set_S0(struct pcf_softc *sc, int data) { bus_space_write_1(sc->res_ioport->r_bustag, @@ -95,7 +95,7 @@ pcf_nops(); } -static __inline__ void +static __inline void pcf_set_S1(struct pcf_softc *sc, int data) { bus_space_write_1(sc->res_ioport->r_bustag, @@ -104,7 +104,7 @@ pcf_nops(); } -static __inline__ char +static __inline char pcf_get_S0(struct pcf_softc *sc) { char data; @@ -116,7 +116,7 @@ return (data); } -static __inline__ char +static __inline char pcf_get_S1(struct pcf_softc *sc) { char data; ==== //depot/projects/nsched/sys/dev/re/if_re.c#6 (text+ko) ==== @@ -31,7 +31,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/re/if_re.c,v 1.26 2004/06/28 20:09:02 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/re/if_re.c,v 1.28 2004/07/06 02:48:29 bms Exp $"); /* * RealTek 8139C+/8169/8169S/8110S PCI NIC driver @@ -79,11 +79,11 @@ * * o Jumbo frames * - * o GMII and TBI ports/registers for interfacing with copper + * o GMII and TBI ports/registers for interfacing with copper * or fiber PHYs * - * o RX and TX DMA rings can have up to 1024 descriptors - * (the 8139C+ allows a maximum of 64) + * o RX and TX DMA rings can have up to 1024 descriptors + * (the 8139C+ allows a maximum of 64) * * o Slight differences in register layout from the 8139C+ * @@ -98,7 +98,7 @@ * programming API as the older 8169, but also have some vendor-specific * registers for the on-board PHY. The 8110S is a LAN-on-motherboard * part designed to be pin-compatible with the RealTek 8100 10/100 chip. - * + * * This driver takes advantage of the RX and TX checksum offload and * VLAN tag insertion/extraction features. It also implements TX * interrupt moderation using the timer interrupt registers, which @@ -307,8 +307,6 @@ EE_CLR(RL_EE_CLK); DELAY(100); } - - return; } /* @@ -349,8 +347,6 @@ CSR_WRITE_1(sc, RL_EECMD, RL_EEMODE_OFF); *dest = word; - - return; } /* @@ -375,8 +371,6 @@ else *ptr = word; } - - return; } static int @@ -389,7 +383,7 @@ int i; if (phy != 1) - return(0); + return (0); sc = device_get_softc(dev); @@ -397,7 +391,7 @@ if (reg == RL_GMEDIASTAT) { rval = CSR_READ_1(sc, RL_GMEDIASTAT); - return(rval); + return (rval); } CSR_WRITE_4(sc, RL_PHYAR, reg << 16); @@ -469,9 +463,9 @@ /* Pretend the internal PHY is only at address 0 */ if (phy) { RL_UNLOCK(sc); - return(0); + return (0); } - switch(reg) { + switch (reg) { case MII_BMCR: re8139_reg = RL_BMCR; break; @@ -490,7 +484,7 @@ case MII_PHYIDR1: case MII_PHYIDR2: RL_UNLOCK(sc); - return(0); + return (0); /* * Allow the rlphy driver to read the media status * register. If we have a link partner which does not @@ -500,15 +494,15 @@ case RL_MEDIASTAT: rval = CSR_READ_1(sc, RL_MEDIASTAT); RL_UNLOCK(sc); - return(rval); + return (rval); default: printf("re%d: bad phy register\n", sc->rl_unit); RL_UNLOCK(sc); - return(0); + return (0); } rval = CSR_READ_2(sc, re8139_reg); RL_UNLOCK(sc); - return(rval); + return (rval); } static int @@ -532,9 +526,9 @@ /* Pretend the internal PHY is only at address 0 */ if (phy) { RL_UNLOCK(sc); - return(0); + return (0); } - switch(reg) { + switch (reg) { case MII_BMCR: re8139_reg = RL_BMCR; break; @@ -553,23 +547,23 @@ case MII_PHYIDR1: case MII_PHYIDR2: RL_UNLOCK(sc); - return(0); + return (0); break; default: printf("re%d: bad phy register\n", sc->rl_unit); RL_UNLOCK(sc); - return(0); + return (0); } CSR_WRITE_2(sc, re8139_reg, data); RL_UNLOCK(sc); - return(0); + return (0); } static void re_miibus_statchg(dev) device_t dev; { - return; + } /* @@ -623,8 +617,6 @@ CSR_WRITE_4(sc, RL_RXCFG, rxfilt); CSR_WRITE_4(sc, RL_MAR0, hashes[0]); CSR_WRITE_4(sc, RL_MAR4, hashes[1]); - - return; } static void @@ -644,8 +636,6 @@ printf("re%d: reset never completed!\n", sc->rl_unit); CSR_WRITE_1(sc, 0x82, 1); - >>> TRUNCATED FOR MAIL (1000 lines) <<<