From owner-p4-projects@FreeBSD.ORG Mon May 18 19:08:19 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A3735106567E; Mon, 18 May 2009 19:08:19 +0000 (UTC) Delivered-To: perforce@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4618A1065679 for ; Mon, 18 May 2009 19:08:19 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 321628FC19 for ; Mon, 18 May 2009 19:08:19 +0000 (UTC) (envelope-from hselasky@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n4IJ8JFr080446 for ; Mon, 18 May 2009 19:08:19 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n4IJ8I20080444 for perforce@freebsd.org; Mon, 18 May 2009 19:08:18 GMT (envelope-from hselasky@FreeBSD.org) Date: Mon, 18 May 2009 19:08:18 GMT Message-Id: <200905181908.n4IJ8I20080444@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to hselasky@FreeBSD.org using -f From: Hans Petter Selasky To: Perforce Change Reviews Cc: Subject: PERFORCE change 162275 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 May 2009 19:08:20 -0000 http://perforce.freebsd.org/chv.cgi?CH=162275 Change 162275 by hselasky@hselasky_laptop001 on 2009/05/18 19:07:41 IFC @ 162272 Affected files ... .. //depot/projects/usb/src/sys/amd64/amd64/machdep.c#18 integrate .. //depot/projects/usb/src/sys/amd64/amd64/mca.c#1 branch .. //depot/projects/usb/src/sys/amd64/amd64/mp_machdep.c#22 integrate .. //depot/projects/usb/src/sys/amd64/amd64/pmap.c#21 integrate .. //depot/projects/usb/src/sys/amd64/amd64/trap.c#14 integrate .. //depot/projects/usb/src/sys/amd64/conf/GENERIC.hints#5 integrate .. //depot/projects/usb/src/sys/amd64/include/mca.h#1 branch .. //depot/projects/usb/src/sys/amd64/include/smp.h#9 integrate .. //depot/projects/usb/src/sys/amd64/include/specialreg.h#14 integrate .. //depot/projects/usb/src/sys/amd64/include/vmparam.h#10 integrate .. //depot/projects/usb/src/sys/amd64/linux32/linux.h#13 integrate .. //depot/projects/usb/src/sys/arm/arm/machdep.c#9 integrate .. //depot/projects/usb/src/sys/arm/at91/at91.c#15 integrate .. //depot/projects/usb/src/sys/arm/at91/at91_spi.c#7 integrate .. //depot/projects/usb/src/sys/arm/at91/if_ate.c#13 integrate .. //depot/projects/usb/src/sys/boot/forth/loader.conf#18 integrate .. //depot/projects/usb/src/sys/boot/i386/zfsboot/zfsboot.c#3 integrate .. //depot/projects/usb/src/sys/boot/zfs/zfsimpl.c#4 integrate .. //depot/projects/usb/src/sys/cddl/boot/zfs/README#2 integrate .. //depot/projects/usb/src/sys/cddl/boot/zfs/zfsimpl.h#3 integrate .. //depot/projects/usb/src/sys/cddl/boot/zfs/zfssubr.c#3 integrate .. //depot/projects/usb/src/sys/cddl/compat/opensolaris/sys/mutex.h#2 integrate .. //depot/projects/usb/src/sys/cddl/compat/opensolaris/sys/rwlock.h#2 integrate .. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c#3 integrate .. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c#4 integrate .. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c#4 integrate .. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#9 integrate .. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c#3 integrate .. //depot/projects/usb/src/sys/compat/linux/linux_socket.c#11 integrate .. //depot/projects/usb/src/sys/compat/linux/linux_socket.h#4 integrate .. //depot/projects/usb/src/sys/compat/ndis/kern_windrv.c#8 integrate .. //depot/projects/usb/src/sys/compat/ndis/subr_ndis.c#16 integrate .. //depot/projects/usb/src/sys/conf/files#62 integrate .. //depot/projects/usb/src/sys/conf/files.amd64#21 integrate .. //depot/projects/usb/src/sys/conf/files.i386#24 integrate .. //depot/projects/usb/src/sys/conf/files.pc98#19 integrate .. //depot/projects/usb/src/sys/conf/files.powerpc#22 integrate .. //depot/projects/usb/src/sys/contrib/altq/altq/altq_subr.c#9 integrate .. //depot/projects/usb/src/sys/dev/aic/aic.c#5 integrate .. //depot/projects/usb/src/sys/dev/ata/ata-pci.h#19 integrate .. //depot/projects/usb/src/sys/dev/ata/chipsets/ata-acard.c#3 integrate .. //depot/projects/usb/src/sys/dev/ata/chipsets/ata-promise.c#5 integrate .. //depot/projects/usb/src/sys/dev/ath/if_ath_pci.c#11 integrate .. //depot/projects/usb/src/sys/dev/bce/if_bce.c#19 integrate .. //depot/projects/usb/src/sys/dev/bge/if_bge.c#17 integrate .. //depot/projects/usb/src/sys/dev/bwi/bwiphy.c#2 integrate .. //depot/projects/usb/src/sys/dev/bwi/if_bwi_pci.c#2 integrate .. //depot/projects/usb/src/sys/dev/bwi/if_bwireg.h#2 integrate .. //depot/projects/usb/src/sys/dev/e1000/if_em.c#6 integrate .. //depot/projects/usb/src/sys/dev/ed/if_ed.c#8 integrate .. //depot/projects/usb/src/sys/dev/ep/if_ep.c#4 integrate .. //depot/projects/usb/src/sys/dev/flash/at45d.c#3 integrate .. //depot/projects/usb/src/sys/dev/iir/iir_pci.c#5 integrate .. //depot/projects/usb/src/sys/dev/ixgb/if_ixgb.c#5 integrate .. //depot/projects/usb/src/sys/dev/lmc/if_lmc.c#11 integrate .. //depot/projects/usb/src/sys/dev/malo/if_malo_pci.c#4 integrate .. //depot/projects/usb/src/sys/dev/md/md.c#12 integrate .. //depot/projects/usb/src/sys/dev/nge/if_nge.c#6 integrate .. //depot/projects/usb/src/sys/dev/nge/if_ngereg.h#3 integrate .. //depot/projects/usb/src/sys/dev/snp/snp.c#12 integrate .. //depot/projects/usb/src/sys/dev/spibus/spibus.c#4 integrate .. //depot/projects/usb/src/sys/dev/syscons/syscons.c#13 integrate .. //depot/projects/usb/src/sys/dev/usb/controller/ehci.c#22 integrate .. //depot/projects/usb/src/sys/dev/usb/storage/umass.c#17 integrate .. //depot/projects/usb/src/sys/dev/usb/storage/ustorage_fs.c#15 integrate .. //depot/projects/usb/src/sys/dev/usb/usb_core.h#18 integrate .. //depot/projects/usb/src/sys/dev/usb/usb_dev.c#20 integrate .. //depot/projects/usb/src/sys/dev/usb/usb_hid.c#33 integrate .. //depot/projects/usb/src/sys/dev/usb/usb_transfer.c#147 integrate .. //depot/projects/usb/src/sys/dev/usb/usbdevs#59 integrate .. //depot/projects/usb/src/sys/dev/usb/wlan/if_uath.c#6 integrate .. //depot/projects/usb/src/sys/dev/xen/console/console.c#7 integrate .. //depot/projects/usb/src/sys/dev/xen/netfront/netfront.c#8 integrate .. //depot/projects/usb/src/sys/fs/devfs/devfs_vnops.c#21 integrate .. //depot/projects/usb/src/sys/fs/nfs/nfs.h#2 integrate .. //depot/projects/usb/src/sys/fs/nfs/nfs_commonkrpc.c#2 integrate .. //depot/projects/usb/src/sys/fs/nfs/nfs_var.h#2 integrate .. //depot/projects/usb/src/sys/fs/nfs/nfsdport.h#2 integrate .. //depot/projects/usb/src/sys/fs/nfs/nfsport.h#2 integrate .. //depot/projects/usb/src/sys/fs/nfs/nfsproto.h#2 integrate .. //depot/projects/usb/src/sys/fs/nfsclient/nfs.h#2 integrate .. //depot/projects/usb/src/sys/fs/nfsclient/nfs_clbio.c#2 integrate .. //depot/projects/usb/src/sys/fs/nfsclient/nfs_clkrpc.c#2 integrate .. //depot/projects/usb/src/sys/fs/nfsclient/nfs_clvfsops.c#2 integrate .. //depot/projects/usb/src/sys/fs/nfsserver/nfs_nfsdkrpc.c#2 integrate .. //depot/projects/usb/src/sys/fs/nfsserver/nfs_nfsdport.c#2 integrate .. //depot/projects/usb/src/sys/fs/nfsserver/nfs_nfsdserv.c#2 integrate .. //depot/projects/usb/src/sys/fs/nfsserver/nfs_nfsdsocket.c#2 integrate .. //depot/projects/usb/src/sys/fs/nfsserver/nfs_nfsdstate.c#2 integrate .. //depot/projects/usb/src/sys/fs/nfsserver/nfs_nfsdsubs.c#2 integrate .. //depot/projects/usb/src/sys/fs/smbfs/smbfs_io.c#9 integrate .. //depot/projects/usb/src/sys/gnu/fs/xfs/FreeBSD/support/debug.h#3 integrate .. //depot/projects/usb/src/sys/gnu/fs/xfs/FreeBSD/xfsdmapistubs.c#2 delete .. //depot/projects/usb/src/sys/gnu/fs/xfs/FreeBSD/xfsquotasstubs.c#2 delete .. //depot/projects/usb/src/sys/gnu/fs/xfs/FreeBSD/xfsrtstubs.c#2 delete .. //depot/projects/usb/src/sys/i386/conf/GENERIC.hints#5 integrate .. //depot/projects/usb/src/sys/i386/i386/machdep.c#16 integrate .. //depot/projects/usb/src/sys/i386/i386/mca.c#1 branch .. //depot/projects/usb/src/sys/i386/i386/mp_machdep.c#18 integrate .. //depot/projects/usb/src/sys/i386/i386/pmap.c#16 integrate .. //depot/projects/usb/src/sys/i386/i386/trap.c#12 integrate .. //depot/projects/usb/src/sys/i386/include/mca.h#1 branch .. //depot/projects/usb/src/sys/i386/include/smp.h#9 integrate .. //depot/projects/usb/src/sys/i386/include/specialreg.h#13 integrate .. //depot/projects/usb/src/sys/i386/linux/linux.h#12 integrate .. //depot/projects/usb/src/sys/i386/xen/mp_machdep.c#9 integrate .. //depot/projects/usb/src/sys/ia64/ia64/elf_machdep.c#8 integrate .. //depot/projects/usb/src/sys/ia64/ia64/machdep.c#10 integrate .. //depot/projects/usb/src/sys/ia64/ia64/pmap.c#13 integrate .. //depot/projects/usb/src/sys/ia64/include/md_var.h#5 integrate .. //depot/projects/usb/src/sys/kern/kern_clock.c#9 integrate .. //depot/projects/usb/src/sys/kern/kern_descrip.c#19 integrate .. //depot/projects/usb/src/sys/kern/kern_intr.c#13 integrate .. //depot/projects/usb/src/sys/kern/kern_sysctl.c#14 integrate .. //depot/projects/usb/src/sys/kern/sys_generic.c#14 integrate .. //depot/projects/usb/src/sys/kern/tty.c#21 integrate .. //depot/projects/usb/src/sys/kern/tty_info.c#6 integrate .. //depot/projects/usb/src/sys/kern/uipc_syscalls.c#13 integrate .. //depot/projects/usb/src/sys/kern/vfs_bio.c#19 integrate .. //depot/projects/usb/src/sys/kern/vfs_syscalls.c#20 integrate .. //depot/projects/usb/src/sys/legacy/dev/usb/if_upgt.c#2 delete .. //depot/projects/usb/src/sys/legacy/dev/usb/if_upgtvar.h#2 delete .. //depot/projects/usb/src/sys/legacy/dev/usb/usb_ethersubr.c#2 delete .. //depot/projects/usb/src/sys/legacy/dev/usb/usb_ethersubr.h#2 delete .. //depot/projects/usb/src/sys/mips/mips/machdep.c#7 integrate .. //depot/projects/usb/src/sys/mips/mips/pm_machdep.c#2 integrate .. //depot/projects/usb/src/sys/modules/xfs/Makefile#3 integrate .. //depot/projects/usb/src/sys/net/bpf.c#17 integrate .. //depot/projects/usb/src/sys/net/netisr.c#7 integrate .. //depot/projects/usb/src/sys/net/netisr.h#5 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_freebsd.c#14 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_node.c#22 integrate .. //depot/projects/usb/src/sys/netgraph/netflow/ng_netflow.c#6 integrate .. //depot/projects/usb/src/sys/netinet/in.c#23 integrate .. //depot/projects/usb/src/sys/netinet/in_pcb.c#22 integrate .. //depot/projects/usb/src/sys/netinet/in_pcb.h#19 integrate .. //depot/projects/usb/src/sys/netinet6/in6.c#21 integrate .. //depot/projects/usb/src/sys/netinet6/ip6_mroute.c#15 integrate .. //depot/projects/usb/src/sys/nfs/nfs_common.c#3 integrate .. //depot/projects/usb/src/sys/nfsclient/nfs_bio.c#12 integrate .. //depot/projects/usb/src/sys/pc98/include/mca.h#1 branch .. //depot/projects/usb/src/sys/pc98/pc98/machdep.c#13 integrate .. //depot/projects/usb/src/sys/powerpc/aim/clock.c#5 integrate .. //depot/projects/usb/src/sys/powerpc/aim/machdep.c#10 integrate .. //depot/projects/usb/src/sys/powerpc/aim/mmu_oea.c#7 integrate .. //depot/projects/usb/src/sys/powerpc/aim/mmu_oea64.c#2 integrate .. //depot/projects/usb/src/sys/powerpc/aim/mp_cpudep.c#4 integrate .. //depot/projects/usb/src/sys/powerpc/aim/ofw_machdep.c#5 integrate .. //depot/projects/usb/src/sys/powerpc/aim/platform_chrp.c#1 branch .. //depot/projects/usb/src/sys/powerpc/aim/vm_machdep.c#5 integrate .. //depot/projects/usb/src/sys/powerpc/booke/clock.c#3 integrate .. //depot/projects/usb/src/sys/powerpc/booke/machdep.c#10 integrate .. //depot/projects/usb/src/sys/powerpc/booke/platform_bare.c#1 branch .. //depot/projects/usb/src/sys/powerpc/booke/pmap.c#10 integrate .. //depot/projects/usb/src/sys/powerpc/booke/vm_machdep.c#4 integrate .. //depot/projects/usb/src/sys/powerpc/include/cpufunc.h#6 integrate .. //depot/projects/usb/src/sys/powerpc/include/md_var.h#8 integrate .. //depot/projects/usb/src/sys/powerpc/include/ofw_machdep.h#4 integrate .. //depot/projects/usb/src/sys/powerpc/include/platform.h#1 branch .. //depot/projects/usb/src/sys/powerpc/include/platformvar.h#1 branch .. //depot/projects/usb/src/sys/powerpc/include/pmap.h#7 integrate .. //depot/projects/usb/src/sys/powerpc/include/powerpc.h#2 delete .. //depot/projects/usb/src/sys/powerpc/include/smp.h#5 integrate .. //depot/projects/usb/src/sys/powerpc/include/spr.h#9 integrate .. //depot/projects/usb/src/sys/powerpc/powerpc/mp_machdep.c#6 integrate .. //depot/projects/usb/src/sys/powerpc/powerpc/platform.c#1 branch .. //depot/projects/usb/src/sys/powerpc/powerpc/platform_if.m#1 branch .. //depot/projects/usb/src/sys/powerpc/powerpc/pmap_dispatch.c#10 integrate .. //depot/projects/usb/src/sys/sparc64/sparc64/machdep.c#14 integrate .. //depot/projects/usb/src/sys/sun4v/sun4v/machdep.c#8 integrate .. //depot/projects/usb/src/sys/sys/buf.h#7 integrate .. //depot/projects/usb/src/sys/sys/eventhandler.h#7 integrate .. //depot/projects/usb/src/sys/sys/filedesc.h#5 integrate .. //depot/projects/usb/src/sys/sys/systm.h#16 integrate .. //depot/projects/usb/src/sys/sys/vimage.h#10 integrate .. //depot/projects/usb/src/sys/ufs/ffs/ffs_alloc.c#10 integrate .. //depot/projects/usb/src/sys/vm/vm_contig.c#10 integrate .. //depot/projects/usb/src/sys/vm/vm_page.c#14 integrate .. //depot/projects/usb/src/sys/vm/vm_page.h#11 integrate .. //depot/projects/usb/src/sys/vm/vm_pageout.c#15 integrate .. //depot/projects/usb/src/sys/vm/vnode_pager.c#16 integrate Differences ... ==== //depot/projects/usb/src/sys/amd64/amd64/machdep.c#18 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.699 2009/04/11 14:01:01 ed Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.701 2009/05/18 18:37:18 marcel Exp $"); #include "opt_atalk.h" #include "opt_atpic.h" @@ -109,6 +109,7 @@ #include #include #include +#include #include #include #include @@ -274,6 +275,7 @@ vm_pager_bufferinit(); cpu_setregs(); + mca_init(); } /* @@ -504,6 +506,16 @@ { } +/* + * Flush the D-cache for non-DMA I/O so that the I-cache can + * be made coherent later. + */ +void +cpu_flush_dcache(void *ptr, size_t len) +{ + /* Not applicable */ +} + /* Get current clock frequency for the given cpu id. */ int cpu_est_clockrate(int cpu_id, uint64_t *rate) ==== //depot/projects/usb/src/sys/amd64/amd64/mp_machdep.c#22 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.306 2009/05/02 12:20:43 mav Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.308 2009/05/14 17:43:00 attilio Exp $"); #include "opt_cpu.h" #include "opt_kstack_pages.h" @@ -60,6 +60,7 @@ #include #include #include +#include #include #include #include @@ -113,9 +114,9 @@ extern inthand_t IDTVEC(fast_syscall), IDTVEC(fast_syscall32); #ifdef STOP_NMI -volatile cpumask_t ipi_nmi_pending; +static volatile cpumask_t ipi_nmi_pending; -static void ipi_nmi_selected(u_int32_t cpus); +static void ipi_nmi_selected(cpumask_t cpus); #endif /* @@ -667,6 +668,8 @@ KASSERT(PCPU_GET(idlethread) != NULL, ("no idle thread")); PCPU_SET(curthread, PCPU_GET(idlethread)); + mca_init(); + mtx_lock_spin(&ap_boot_mtx); /* Init local apic for irq's */ @@ -1013,7 +1016,7 @@ } static void -smp_targeted_tlb_shootdown(u_int mask, u_int vector, vm_offset_t addr1, vm_offset_t addr2) +smp_targeted_tlb_shootdown(cpumask_t mask, u_int vector, vm_offset_t addr1, vm_offset_t addr2) { int ncpu, othercpus; @@ -1087,7 +1090,7 @@ } void -smp_masked_invltlb(u_int mask) +smp_masked_invltlb(cpumask_t mask) { if (smp_started) { @@ -1096,7 +1099,7 @@ } void -smp_masked_invlpg(u_int mask, vm_offset_t addr) +smp_masked_invlpg(cpumask_t mask, vm_offset_t addr) { if (smp_started) { @@ -1105,7 +1108,7 @@ } void -smp_masked_invlpg_range(u_int mask, vm_offset_t addr1, vm_offset_t addr2) +smp_masked_invlpg_range(cpumask_t mask, vm_offset_t addr1, vm_offset_t addr2) { if (smp_started) { @@ -1140,7 +1143,7 @@ * send an IPI to a set of cpus. */ void -ipi_selected(u_int32_t cpus, u_int ipi) +ipi_selected(cpumask_t cpus, u_int ipi) { int cpu; u_int bitmap = 0; @@ -1203,8 +1206,8 @@ #define BEFORE_SPIN 1000000 -void -ipi_nmi_selected(u_int32_t cpus) +static void +ipi_nmi_selected(cpumask_t cpus) { int cpu; register_t icrlo; @@ -1328,7 +1331,7 @@ static int sysctl_hlt_cpus(SYSCTL_HANDLER_ARGS) { - u_int mask; + cpumask_t mask; int error; mask = hlt_cpus_mask; ==== //depot/projects/usb/src/sys/amd64/amd64/pmap.c#21 (text+ko) ==== @@ -77,7 +77,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.657 2009/03/22 04:32:05 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/pmap.c,v 1.658 2009/05/13 07:42:53 alc Exp $"); /* * Manages physical address maps. @@ -3556,7 +3556,7 @@ dstmpte->wire_count++; else if ((dstmpte = pmap_allocpte(dst_pmap, addr, M_NOWAIT)) == NULL) - break; + goto out; dst_pte = (pt_entry_t *) PHYS_TO_DMAP(VM_PAGE_TO_PHYS(dstmpte)); dst_pte = &dst_pte[pmap_pte_index(addr)]; @@ -3579,6 +3579,7 @@ addr); pmap_free_zero_pages(free); } + goto out; } if (dstmpte->wire_count >= srcmpte->wire_count) break; @@ -3587,6 +3588,7 @@ src_pte++; } } +out: vm_page_unlock_queues(); PMAP_UNLOCK(src_pmap); PMAP_UNLOCK(dst_pmap); ==== //depot/projects/usb/src/sys/amd64/amd64/trap.c#14 (text+ko) ==== @@ -38,7 +38,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.331 2009/04/01 13:09:26 kib Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/trap.c,v 1.332 2009/05/13 17:53:04 jhb Exp $"); /* * AMD64 Trap and System call handling @@ -88,6 +88,7 @@ #include #include +#include #include #include #ifdef SMP @@ -266,6 +267,12 @@ goto out; #endif + if (type == T_MCHK) { + if (!mca_intr()) + trap_fatal(frame, 0); + goto out; + } + #ifdef KDTRACE_HOOKS /* * A trap can occur while DTrace executes a probe. Before ==== //depot/projects/usb/src/sys/amd64/conf/GENERIC.hints#5 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/amd64/conf/GENERIC.hints,v 1.19 2008/07/13 07:20:14 ed Exp $ +# $FreeBSD: src/sys/amd64/conf/GENERIC.hints,v 1.20 2009/05/14 21:53:35 jhb Exp $ hint.fdc.0.at="isa" hint.fdc.0.port="0x3F0" hint.fdc.0.irq="6" @@ -13,7 +13,6 @@ hint.atkbd.0.irq="1" hint.psm.0.at="atkbdc" hint.psm.0.irq="12" -hint.vga.0.at="isa" hint.sc.0.at="isa" hint.sc.0.flags="0x100" hint.uart.0.at="isa" @@ -23,13 +22,5 @@ hint.uart.1.at="isa" hint.uart.1.port="0x2F8" hint.uart.1.irq="3" -hint.uart.2.at="isa" -hint.uart.2.disabled="1" -hint.uart.2.port="0x3E8" -hint.uart.2.irq="5" -hint.uart.3.at="isa" -hint.uart.3.disabled="1" -hint.uart.3.port="0x2E8" -hint.uart.3.irq="9" hint.ppc.0.at="isa" hint.ppc.0.irq="7" ==== //depot/projects/usb/src/sys/amd64/include/smp.h#9 (text+ko) ==== @@ -6,7 +6,7 @@ * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp * ---------------------------------------------------------------------------- * - * $FreeBSD: src/sys/amd64/include/smp.h,v 1.95 2009/04/29 06:54:40 jeff Exp $ + * $FreeBSD: src/sys/amd64/include/smp.h,v 1.96 2009/05/14 17:43:00 attilio Exp $ * */ @@ -52,19 +52,19 @@ void cpustop_handler(void); void cpususpend_handler(void); void init_secondary(void); -void ipi_selected(u_int cpus, u_int ipi); +void ipi_selected(cpumask_t cpus, u_int ipi); void ipi_all_but_self(u_int ipi); void ipi_bitmap_handler(struct trapframe frame); u_int mp_bootaddress(u_int); int mp_grab_cpu_hlt(void); void smp_cache_flush(void); void smp_invlpg(vm_offset_t addr); -void smp_masked_invlpg(u_int mask, vm_offset_t addr); +void smp_masked_invlpg(cpumask_t mask, vm_offset_t addr); void smp_invlpg_range(vm_offset_t startva, vm_offset_t endva); -void smp_masked_invlpg_range(u_int mask, vm_offset_t startva, +void smp_masked_invlpg_range(cpumask_t mask, vm_offset_t startva, vm_offset_t endva); void smp_invltlb(void); -void smp_masked_invltlb(u_int mask); +void smp_masked_invltlb(cpumask_t mask); #ifdef STOP_NMI int ipi_nmi_handler(void); ==== //depot/projects/usb/src/sys/amd64/include/specialreg.h#14 (text+ko) ==== @@ -27,7 +27,7 @@ * SUCH DAMAGE. * * from: @(#)specialreg.h 7.1 (Berkeley) 5/9/91 - * $FreeBSD: src/sys/amd64/include/specialreg.h,v 1.54 2009/04/29 06:54:40 jeff Exp $ + * $FreeBSD: src/sys/amd64/include/specialreg.h,v 1.55 2009/05/13 17:53:04 jhb Exp $ */ #ifndef _MACHINE_SPECIALREG_H_ @@ -346,6 +346,34 @@ #define DIR1 0xff /* + * Machine Check register constants. + */ +#define MCG_CAP_COUNT 0x000000ff +#define MCG_CAP_CTL_P 0x00000100 +#define MCG_CAP_EXT_P 0x00000200 +#define MCG_CAP_TES_P 0x00000800 +#define MCG_CAP_EXT_CNT 0x00ff0000 +#define MCG_STATUS_RIPV 0x00000001 +#define MCG_STATUS_EIPV 0x00000002 +#define MCG_STATUS_MCIP 0x00000004 +#define MCG_CTL_ENABLE 0xffffffffffffffffUL +#define MCG_CTL_DISABLE 0x0000000000000000UL +#define MSR_MC_CTL(x) (MSR_MC0_CTL + (x) * 4) +#define MSR_MC_STATUS(x) (MSR_MC0_STATUS + (x) * 4) +#define MSR_MC_ADDR(x) (MSR_MC0_ADDR + (x) * 4) +#define MSR_MC_MISC(x) (MSR_MC0_MISC + (x) * 4) +#define MC_STATUS_MCA_ERROR 0x000000000000ffffUL +#define MC_STATUS_MODEL_ERROR 0x00000000ffff0000UL +#define MC_STATUS_OTHER_INFO 0x01ffffff00000000UL +#define MC_STATUS_PCC 0x0200000000000000UL +#define MC_STATUS_ADDRV 0x0400000000000000UL +#define MC_STATUS_MISCV 0x0800000000000000UL +#define MC_STATUS_EN 0x1000000000000000UL +#define MC_STATUS_UC 0x2000000000000000UL +#define MC_STATUS_OVER 0x4000000000000000UL +#define MC_STATUS_VAL 0x8000000000000000UL + +/* * The following four 3-byte registers control the non-cacheable regions. * These registers must be written as three separate bytes. * ==== //depot/projects/usb/src/sys/amd64/include/vmparam.h#10 (text+ko) ==== @@ -38,7 +38,7 @@ * SUCH DAMAGE. * * from: @(#)vmparam.h 5.9 (Berkeley) 5/12/91 - * $FreeBSD: src/sys/amd64/include/vmparam.h,v 1.56 2008/07/08 22:59:17 alc Exp $ + * $FreeBSD: src/sys/amd64/include/vmparam.h,v 1.59 2009/05/16 22:08:00 kmacy Exp $ */ @@ -154,8 +154,7 @@ * 0xffff800000000000 - 0xffff804020100fff recursive page table (512GB slot) * 0xffff804020101000 - 0xfffffeffffffffff unused * 0xffffff0000000000 - 0xffffff7fffffffff 512GB direct map mappings - * 0xffffff8000000000 - 0xfffffffe3fffffff unused (505GB) - * 0xfffffffe40000000 - 0xffffffffffffffff 7GB kernel map + * 0xffffff8000000000 - 0xffffffffffffffff 512GB kernel map * * Within the kernel map: * @@ -163,7 +162,7 @@ */ #define VM_MAX_KERNEL_ADDRESS KVADDR(KPML4I, NPDPEPG-1, NPDEPG-1, NPTEPG-1) -#define VM_MIN_KERNEL_ADDRESS KVADDR(KPML4I, NPDPEPG-7, 0, 0) +#define VM_MIN_KERNEL_ADDRESS KVADDR(KPML4I, NPDPEPG-512, 0, 0) #define DMAP_MIN_ADDRESS KVADDR(DMPML4I, 0, 0, 0) #define DMAP_MAX_ADDRESS KVADDR(DMPML4I+1, 0, 0, 0) ==== //depot/projects/usb/src/sys/amd64/linux32/linux.h#13 (text+ko) ==== @@ -27,7 +27,7 @@ * (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: src/sys/amd64/linux32/linux.h,v 1.27 2009/05/11 13:50:42 dchagin Exp $ + * $FreeBSD: src/sys/amd64/linux32/linux.h,v 1.28 2009/05/16 18:48:41 dchagin Exp $ */ #ifndef _AMD64_LINUX_H_ @@ -571,6 +571,7 @@ #define LINUX_O_DIRECTORY 00200000 /* Must be a directory */ #define LINUX_O_NOFOLLOW 00400000 /* Do not follow links */ #define LINUX_O_NOATIME 01000000 +#define LINUX_O_CLOEXEC 02000000 #define LINUX_F_DUPFD 0 #define LINUX_F_GETFD 1 ==== //depot/projects/usb/src/sys/arm/arm/machdep.c#9 (text+ko) ==== @@ -46,7 +46,7 @@ #include "opt_ddb.h" #include -__FBSDID("$FreeBSD: src/sys/arm/arm/machdep.c,v 1.32 2009/02/12 22:55:39 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/machdep.c,v 1.33 2009/05/18 18:37:18 marcel Exp $"); #include #include @@ -316,6 +316,18 @@ SYSINIT(cpu, SI_SUB_CPU, SI_ORDER_FIRST, cpu_startup, NULL); +/* + * Flush the D-cache for non-DMA I/O so that the I-cache can + * be made coherent later. + */ +void +cpu_flush_dcache(void *ptr, size_t len) +{ + + cpu_dcache_wb_range((uintptr_t)ptr, len); + cpu_l2cache_wb_range((uintptr_t)ptr, len); +} + /* Get current clock frequency for the given cpu id. */ int cpu_est_clockrate(int cpu_id, uint64_t *rate) ==== //depot/projects/usb/src/sys/arm/at91/at91.c#15 (text) ==== @@ -24,7 +24,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/at91/at91.c,v 1.23 2009/04/22 23:54:41 stas Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/at91/at91.c,v 1.24 2009/05/15 04:49:20 imp Exp $"); #include #include @@ -409,7 +409,7 @@ AT91RM92_IRQ_SSC2 }, { - "at91_spi", 0, + "spi", 0, AT91RM92_BASE + AT91RM92_SPI_BASE, AT91RM92_SPI_SIZE, AT91RM92_IRQ_SPI }, ==== //depot/projects/usb/src/sys/arm/at91/at91_spi.c#7 (text) ==== @@ -24,7 +24,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/at91/at91_spi.c,v 1.8 2008/11/25 00:13:26 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/at91/at91_spi.c,v 1.9 2009/05/13 18:42:49 gonzo Exp $"); #include #include @@ -297,7 +297,7 @@ }; static driver_t at91_spi_driver = { - "at91_spi", + "spi", at91_spi_methods, sizeof(struct at91_spi_softc), }; ==== //depot/projects/usb/src/sys/arm/at91/if_ate.c#13 (text) ==== @@ -30,7 +30,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/at91/if_ate.c,v 1.35 2009/05/12 21:28:41 stas Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/at91/if_ate.c,v 1.37 2009/05/13 21:01:10 stas Exp $"); #include #include @@ -69,8 +69,8 @@ #include "miibus_if.h" -#define ATE_MAX_TX_BUFFERS 2 /* We have ping-pong tx buffers */ -#define ATE_MAX_RX_BUFFERS 64 +#define ATE_MAX_TX_BUFFERS 2 /* We have ping-pong tx buffers */ +#define ATE_MAX_RX_BUFFERS 64 /* * Driver-specific flags. @@ -80,41 +80,43 @@ struct ate_softc { - struct ifnet *ifp; /* ifnet pointer */ - struct mtx sc_mtx; /* basically a perimeter lock */ - device_t dev; /* Myself */ - device_t miibus; /* My child miibus */ - void *intrhand; /* Interrupt handle */ - struct resource *irq_res; /* IRQ resource */ + struct ifnet *ifp; /* ifnet pointer */ + struct mtx sc_mtx; /* Basically a perimeter lock */ + device_t dev; /* Myself */ + device_t miibus; /* My child miibus */ + struct resource *irq_res; /* IRQ resource */ struct resource *mem_res; /* Memory resource */ - struct callout tick_ch; /* Tick callout */ - bus_dma_tag_t mtag; /* bus dma tag for mbufs */ - bus_dmamap_t tx_map[ATE_MAX_TX_BUFFERS]; - struct mbuf *sent_mbuf[ATE_MAX_TX_BUFFERS]; /* Sent mbufs */ - bus_dma_tag_t rxtag; - bus_dmamap_t rx_map[ATE_MAX_RX_BUFFERS]; - void *rx_buf[ATE_MAX_RX_BUFFERS]; /* RX buffer space */ - int rx_buf_ptr; - bus_dma_tag_t rx_desc_tag; - bus_dmamap_t rx_desc_map; - int txcur; /* current tx map pointer */ - bus_addr_t rx_desc_phys; - eth_rx_desc_t *rx_descs; - int use_rmii; - struct ifmib_iso_8802_3 mibdata; /* stuff for network mgmt */ - int flags; - int if_flags; + struct callout tick_ch; /* Tick callout */ + struct ifmib_iso_8802_3 mibdata; /* Stuff for network mgmt */ + struct mbuf *sent_mbuf[ATE_MAX_TX_BUFFERS]; /* Sent mbufs */ + bus_dma_tag_t mtag; /* bus dma tag for mbufs */ + bus_dma_tag_t rxtag; + bus_dma_tag_t rx_desc_tag; + bus_dmamap_t rx_desc_map; + bus_dmamap_t rx_map[ATE_MAX_RX_BUFFERS]; + bus_dmamap_t tx_map[ATE_MAX_TX_BUFFERS]; + bus_addr_t rx_desc_phys; + eth_rx_desc_t *rx_descs; + void *rx_buf[ATE_MAX_RX_BUFFERS]; /* RX buffer space */ + void *intrhand; /* Interrupt handle */ + int flags; + int if_flags; + int rx_buf_ptr; + int txcur; /* Current TX map pointer */ + int use_rmii; }; static inline uint32_t RD4(struct ate_softc *sc, bus_size_t off) { - return bus_read_4(sc->mem_res, off); + + return (bus_read_4(sc->mem_res, off)); } static inline void WR4(struct ate_softc *sc, bus_size_t off, uint32_t val) { + bus_write_4(sc->mem_res, off, val); } @@ -125,41 +127,45 @@ bus_barrier(sc->mem_res, off, len, flags); } -#define ATE_LOCK(_sc) mtx_lock(&(_sc)->sc_mtx) +#define ATE_LOCK(_sc) mtx_lock(&(_sc)->sc_mtx) #define ATE_UNLOCK(_sc) mtx_unlock(&(_sc)->sc_mtx) -#define ATE_LOCK_INIT(_sc) \ - mtx_init(&_sc->sc_mtx, device_get_nameunit(_sc->dev), \ +#define ATE_LOCK_INIT(_sc) \ + mtx_init(&_sc->sc_mtx, device_get_nameunit(_sc->dev), \ MTX_NETWORK_LOCK, MTX_DEF) -#define ATE_LOCK_DESTROY(_sc) mtx_destroy(&_sc->sc_mtx); -#define ATE_ASSERT_LOCKED(_sc) mtx_assert(&_sc->sc_mtx, MA_OWNED); -#define ATE_ASSERT_UNLOCKED(_sc) mtx_assert(&_sc->sc_mtx, MA_NOTOWNED); +#define ATE_LOCK_DESTROY(_sc) mtx_destroy(&_sc->sc_mtx); +#define ATE_ASSERT_LOCKED(_sc) mtx_assert(&_sc->sc_mtx, MA_OWNED); +#define ATE_ASSERT_UNLOCKED(_sc) mtx_assert(&_sc->sc_mtx, MA_NOTOWNED); static devclass_t ate_devclass; -/* ifnet entry points */ +/* + * ifnet entry points. + */ +static void ateinit_locked(void *); +static void atestart_locked(struct ifnet *); -static void ateinit_locked(void *); -static void atestart_locked(struct ifnet *); +static void ateinit(void *); +static void atestart(struct ifnet *); +static void atestop(struct ate_softc *); +static int ateioctl(struct ifnet * ifp, u_long, caddr_t); -static void ateinit(void *); -static void atestart(struct ifnet *); -static void atestop(struct ate_softc *); -static int ateioctl(struct ifnet * ifp, u_long, caddr_t); +/* + * Bus entry points. + */ +static int ate_probe(device_t dev); +static int ate_attach(device_t dev); +static int ate_detach(device_t dev); +static void ate_intr(void *); -/* bus entry points */ - -static int ate_probe(device_t dev); -static int ate_attach(device_t dev); -static int ate_detach(device_t dev); -static void ate_intr(void *); - -/* helper routines */ -static int ate_activate(device_t dev); -static void ate_deactivate(struct ate_softc *sc); -static int ate_ifmedia_upd(struct ifnet *ifp); -static void ate_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr); -static int ate_get_mac(struct ate_softc *sc, u_char *eaddr); -static void ate_set_mac(struct ate_softc *sc, u_char *eaddr); +/* + * Helper routines. + */ +static int ate_activate(device_t dev); +static void ate_deactivate(struct ate_softc *sc); +static int ate_ifmedia_upd(struct ifnet *ifp); +static void ate_ifmedia_sts(struct ifnet *ifp, struct ifmediareq *ifmr); +static int ate_get_mac(struct ate_softc *sc, u_char *eaddr); +static void ate_set_mac(struct ate_softc *sc, u_char *eaddr); static void ate_rxfilter(struct ate_softc *sc); /* @@ -171,6 +177,7 @@ static int ate_probe(device_t dev) { + device_set_desc(dev, "EMAC"); return (0); } @@ -178,7 +185,7 @@ static int ate_attach(device_t dev) { - struct ate_softc *sc = device_get_softc(dev); + struct ate_softc *sc; struct ifnet *ifp = NULL; struct sysctl_ctx_list *sctx; struct sysctl_oid *soid; @@ -186,6 +193,7 @@ uint32_t rnd; int rid, err; + sc = device_get_softc(dev); sc->dev = dev; ATE_LOCK_INIT(sc); @@ -221,7 +229,7 @@ SYSCTL_ADD_UINT(sctx, SYSCTL_CHILDREN(soid), OID_AUTO, "rmii", CTLFLAG_RD, &sc->use_rmii, 0, "rmii in use"); - /* calling atestop before ifp is set is OK */ + /* Calling atestop before ifp is set is OK. */ ATE_LOCK(sc); atestop(sc); ATE_UNLOCK(sc); @@ -248,7 +256,6 @@ eaddr[4] = (rnd >> 8) & 0xff; eaddr[5] = rnd & 0xff; } - ate_set_mac(sc, eaddr); sc->ifp = ifp = if_alloc(IFT_ETHER); if (mii_phy_probe(dev, &sc->miibus, ate_ifmedia_upd, ate_ifmedia_sts)) { @@ -261,7 +268,7 @@ if_initname(ifp, device_get_name(dev), device_get_unit(dev)); ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; ifp->if_capabilities |= IFCAP_VLAN_MTU; - ifp->if_capenable |= IFCAP_VLAN_MTU; /* the hw bits already set */ + ifp->if_capenable |= IFCAP_VLAN_MTU; /* The hw bits already set. */ ifp->if_start = atestart; ifp->if_ioctl = ateioctl; ifp->if_init = ateinit; @@ -435,8 +442,9 @@ int err, i; sc = device_get_softc(dev); + /* - * Allocate DMA tags and maps + * Allocate DMA tags and maps. */ err = bus_dma_tag_create(bus_get_dma_tag(dev), 1, 0, BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, MCLBYTES, @@ -448,11 +456,7 @@ if (err != 0) goto errout; } - /* - * Allocate our Rx buffers. This chip has a rx structure that's filled - * in - */ - + /* * Allocate DMA tags and maps for RX. */ @@ -462,7 +466,9 @@ if (err != 0) goto errout; - /* Dma TAG and MAP for the rx descriptors. */ + /* + * DMA tag and map for the RX descriptors. + */ err = bus_dma_tag_create(bus_get_dma_tag(dev), sizeof(eth_rx_desc_t), 0, BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, ATE_MAX_RX_BUFFERS * sizeof(eth_rx_desc_t), 1, @@ -477,6 +483,11 @@ sc->rx_descs, ATE_MAX_RX_BUFFERS * sizeof(eth_rx_desc_t), ate_getaddr, sc, 0) != 0) goto errout; + + /* + * Allocate our RX buffers. This chip has a RX structure that's filled + * in. + */ for (i = 0; i < ATE_MAX_RX_BUFFERS; i++) { sc->rx_buf_ptr = i; if (bus_dmamem_alloc(sc->rxtag, (void **)&sc->rx_buf[i], @@ -487,7 +498,7 @@ goto errout; } sc->rx_buf_ptr = 0; - /* Flush the memory for the EMAC rx descriptor */ + /* Flush the memory for the EMAC rx descriptor. */ bus_dmamap_sync(sc->rx_desc_tag, sc->rx_desc_map, BUS_DMASYNC_PREWRITE); /* Write the descriptor queue address. */ WR4(sc, ETH_RBQP, sc->rx_desc_phys); @@ -662,8 +673,9 @@ sc->mibdata.dot3StatsCarrierSenseErrors += RD4(sc, ETH_CSE); sc->mibdata.dot3StatsFrameTooLongs += RD4(sc, ETH_ELR); sc->mibdata.dot3StatsInternalMacReceiveErrors += RD4(sc, ETH_DRFC); + /* - * not sure where to lump these, so count them against the errors + * Not sure where to lump these, so count them against the errors * for the interface. */ sc->ifp->if_oerrors += RD4(sc, ETH_TUE); @@ -679,6 +691,7 @@ static void ate_set_mac(struct ate_softc *sc, u_char *eaddr) { + WR4(sc, ETH_SA1L, (eaddr[3] << 24) | (eaddr[2] << 16) | (eaddr[1] << 8) | eaddr[0]); WR4(sc, ETH_SA1H, (eaddr[5] << 8) | (eaddr[4])); @@ -819,7 +832,7 @@ } /* - * Reset and initialize the chip + * Reset and initialize the chip. */ static void ateinit_locked(void *xsc) @@ -827,6 +840,7 @@ struct ate_softc *sc = xsc; struct ifnet *ifp = sc->ifp; struct mii_data *mii; + uint8_t eaddr[ETHER_ADDR_LEN]; uint32_t reg; ATE_ASSERT_LOCKED(sc); @@ -856,24 +870,23 @@ ate_rxfilter(sc); /* + * Set the chip MAC address. + */ + bcopy(IF_LLADDR(ifp), eaddr, ETHER_ADDR_LEN); + ate_set_mac(sc, eaddr); + + /* * Turn on MACs and interrupt processing. */ WR4(sc, ETH_CTL, RD4(sc, ETH_CTL) | ETH_CTL_TE | ETH_CTL_RE); WR4(sc, ETH_IER, ETH_ISR_RCOM | ETH_ISR_TCOM | ETH_ISR_RBNA); - /* - * Boot loader fills in MAC address. If that's not the case, then - * we should set SA1L and SA1H here to the appropriate value. Note: - * the byte order is big endian, not little endian, so we have some - * swapping to do. Again, if we need it (which I don't think we do). - */ - - /* enable big packets */ + /* Enable big packets. */ WR4(sc, ETH_CFG, RD4(sc, ETH_CFG) | ETH_CFG_BIG); /* * Set 'running' flag, and clear output active flag - * and attempt to start the output + * and attempt to start the output. */ ifp->if_drv_flags |= IFF_DRV_RUNNING; ifp->if_drv_flags &= ~IFF_DRV_OACTIVE; @@ -887,7 +900,7 @@ } /* - * dequeu packets and transmit + * Dequeue packets and transmit. */ static void atestart_locked(struct ifnet *ifp) @@ -903,7 +916,7 @@ >>> TRUNCATED FOR MAIL (1000 lines) <<<