From owner-p4-projects@FreeBSD.ORG Tue Sep 16 21:36:46 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 255101065683; Tue, 16 Sep 2008 21:36:46 +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 DCAF61065671 for ; Tue, 16 Sep 2008 21:36:45 +0000 (UTC) (envelope-from zec@tel.fer.hr) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id C8EBB8FC2E for ; Tue, 16 Sep 2008 21:36:45 +0000 (UTC) (envelope-from zec@tel.fer.hr) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id m8GLaj6q073428 for ; Tue, 16 Sep 2008 21:36:45 GMT (envelope-from zec@tel.fer.hr) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id m8GLaixs073424 for perforce@freebsd.org; Tue, 16 Sep 2008 21:36:44 GMT (envelope-from zec@tel.fer.hr) Date: Tue, 16 Sep 2008 21:36:44 GMT Message-Id: <200809162136.m8GLaixs073424@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to zec@tel.fer.hr using -f From: Marko Zec To: Perforce Change Reviews Cc: Subject: PERFORCE change 149910 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: Tue, 16 Sep 2008 21:36:46 -0000 http://perforce.freebsd.org/chv.cgi?CH=149910 Change 149910 by zec@zec_tpx32 on 2008/09/16 21:36:12 IFC @ 149904 Affected files ... .. //depot/projects/vimage-commit2/src/sys/amd64/amd64/vm_machdep.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/amd64/include/pmc_mdep.h#3 integrate .. //depot/projects/vimage-commit2/src/sys/amd64/pci/pci_cfgreg.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/arm/arm/intr.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/arm/arm/nexus.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/arm/include/intr.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/arm/include/pcpu.h#3 integrate .. //depot/projects/vimage-commit2/src/sys/arm/xscale/ixp425/ixp425.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/arm/xscale/ixp425/ixp425_qmgr.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/boot/common/dev_net.c#5 integrate .. //depot/projects/vimage-commit2/src/sys/boot/forth/loader.conf#6 integrate .. //depot/projects/vimage-commit2/src/sys/boot/sparc64/loader/main.c#6 integrate .. //depot/projects/vimage-commit2/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c#4 integrate .. //depot/projects/vimage-commit2/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c#4 integrate .. //depot/projects/vimage-commit2/src/sys/compat/freebsd32/freebsd32_misc.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/compat/freebsd32/freebsd32_proto.h#4 integrate .. //depot/projects/vimage-commit2/src/sys/compat/freebsd32/freebsd32_syscall.h#4 integrate .. //depot/projects/vimage-commit2/src/sys/compat/freebsd32/freebsd32_syscalls.c#4 integrate .. //depot/projects/vimage-commit2/src/sys/compat/freebsd32/freebsd32_sysent.c#4 integrate .. //depot/projects/vimage-commit2/src/sys/compat/freebsd32/syscalls.master#4 integrate .. //depot/projects/vimage-commit2/src/sys/compat/linux/linux_file.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/compat/linux/linux_misc.c#10 integrate .. //depot/projects/vimage-commit2/src/sys/compat/linux/linux_socket.c#6 integrate .. //depot/projects/vimage-commit2/src/sys/compat/ndis/ntoskrnl_var.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/compat/svr4/svr4_stream.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/compat/svr4/svr4_sysvec.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/conf/NOTES#9 integrate .. //depot/projects/vimage-commit2/src/sys/conf/files.i386#7 integrate .. //depot/projects/vimage-commit2/src/sys/conf/files.pc98#4 integrate .. //depot/projects/vimage-commit2/src/sys/conf/files.sparc64#3 integrate .. //depot/projects/vimage-commit2/src/sys/ddb/db_command.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/ddb/ddb.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/aac/aac_pci.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/dev/aic7xxx/aic79xx_osm.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/ath/if_athvar.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/cxgb/common/cxgb_t3_hw.c#4 integrate .. //depot/projects/vimage-commit2/src/sys/dev/cxgb/cxgb_adapter.h#4 integrate .. //depot/projects/vimage-commit2/src/sys/dev/cxgb/cxgb_config.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/cxgb/cxgb_include.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/cxgb/cxgb_main.c#5 integrate .. //depot/projects/vimage-commit2/src/sys/dev/cxgb/cxgb_offload.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/cxgb/cxgb_osdep.h#3 integrate .. //depot/projects/vimage-commit2/src/sys/dev/cxgb/cxgb_sge.c#5 integrate .. //depot/projects/vimage-commit2/src/sys/dev/cxgb/sys/cxgb_support.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/cxgb/sys/mbufq.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/cxgb/ulp/toecore/cxgb_toedev.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/cxgb/ulp/tom/cxgb_cpl_io.c#8 integrate .. //depot/projects/vimage-commit2/src/sys/dev/cxgb/ulp/tom/cxgb_cpl_socket.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/dev/cxgb/ulp/tom/cxgb_ddp.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/dev/cxgb/ulp/tom/cxgb_tom.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/dev/drm/ati_pcigart.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/dev/drm/drm_bufs.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/dev/drm/drm_pci.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/dev/drm/i915_dma.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/dev/drm/mach64_dma.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/dev/hwpmc/hwpmc_x86.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/jme/if_jme.c#4 integrate .. //depot/projects/vimage-commit2/src/sys/dev/jme/if_jmereg.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/mlx/mlx.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/pci/vga_pci.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/ppbus/if_plip.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/dev/ppbus/lpt.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/ppbus/ppbconf.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/dev/ppbus/ppbconf.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/ppbus/ppi.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/ppbus/pps.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/ppc/ppc.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/dev/ppc/ppc_acpi.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/dev/ppc/ppc_isa.c#4 integrate .. //depot/projects/vimage-commit2/src/sys/dev/ppc/ppc_pci.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/ppc/ppc_puc.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/ppc/ppcreg.h#3 integrate .. //depot/projects/vimage-commit2/src/sys/dev/ppc/ppcvar.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/sound/pci/hda/hda_reg.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/sound/pci/hda/hdac.c#4 integrate .. //depot/projects/vimage-commit2/src/sys/dev/sound/pci/hda/hdac_private.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/tx/if_tx.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/usb/if_zyd.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/dev/usb/if_zydreg.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/dev/usb/ubsa.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/dev/usb/ufoma.c#4 integrate .. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_quirks.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/dev/usb/usbdevs#9 integrate .. //depot/projects/vimage-commit2/src/sys/fs/nullfs/null_vnops.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/gnu/fs/ext2fs/ext2_inode.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/gnu/fs/xfs/FreeBSD/support/kdb.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/gnu/fs/xfs/FreeBSD/xfs_vnode.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/i386/conf/GENERIC#7 integrate .. //depot/projects/vimage-commit2/src/sys/i386/conf/NOTES#9 integrate .. //depot/projects/vimage-commit2/src/sys/i386/conf/XEN#3 integrate .. //depot/projects/vimage-commit2/src/sys/i386/cpufreq/est.c#5 integrate .. //depot/projects/vimage-commit2/src/sys/i386/i386/local_apic.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/i386/i386/machdep.c#5 integrate .. //depot/projects/vimage-commit2/src/sys/i386/i386/sys_machdep.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/i386/i386/vm_machdep.c#4 integrate .. //depot/projects/vimage-commit2/src/sys/i386/include/pmc_mdep.h#3 integrate .. //depot/projects/vimage-commit2/src/sys/i386/include/proc.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/i386/include/xen/xenpmap.h#3 integrate .. //depot/projects/vimage-commit2/src/sys/i386/include/xen/xenvar.h#3 integrate .. //depot/projects/vimage-commit2/src/sys/i386/pci/pci_cfgreg.c#4 integrate .. //depot/projects/vimage-commit2/src/sys/i386/xen/mp_machdep.c#1 branch .. //depot/projects/vimage-commit2/src/sys/i386/xen/mptable.c#1 branch .. //depot/projects/vimage-commit2/src/sys/i386/xen/pmap.c#4 integrate .. //depot/projects/vimage-commit2/src/sys/i386/xen/xen_machdep.c#6 integrate .. //depot/projects/vimage-commit2/src/sys/kern/kern_exec.c#7 integrate .. //depot/projects/vimage-commit2/src/sys/kern/kern_intr.c#5 integrate .. //depot/projects/vimage-commit2/src/sys/kern/kern_lock.c#5 integrate .. //depot/projects/vimage-commit2/src/sys/kern/kern_mutex.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/kern/kern_proc.c#5 integrate .. //depot/projects/vimage-commit2/src/sys/kern/kern_rmlock.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/kern/kern_rwlock.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/kern/kern_sx.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/kern/subr_pcpu.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/kern/subr_rman.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/kern/subr_sleepqueue.c#5 integrate .. //depot/projects/vimage-commit2/src/sys/kern/subr_turnstile.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/kern/subr_witness.c#5 integrate .. //depot/projects/vimage-commit2/src/sys/kern/tty.c#9 integrate .. //depot/projects/vimage-commit2/src/sys/kern/tty_ttydisc.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/kern/vfs_bio.c#4 integrate .. //depot/projects/vimage-commit2/src/sys/kern/vfs_vnops.c#4 integrate .. //depot/projects/vimage-commit2/src/sys/mips/adm5120/admpci.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/mips/adm5120/if_admsw.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/mips/adm5120/if_admswvar.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/mips/adm5120/obio.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/mips/adm5120/uart_bus_adm5120.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/mips/adm5120/uart_cpu_adm5120.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/mips/adm5120/uart_dev_adm5120.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/mips/idt/idtpci.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/mips/idt/if_kr.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/mips/idt/obio.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/mips/idt/uart_bus_rc32434.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/mips/malta/gt.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/mips/malta/gt_pci.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/mips/malta/malta_machdep.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/mips/malta/obio.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/mips/malta/uart_bus_maltausart.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/mips/malta/uart_cpu_maltausart.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/mips/malta/yamon.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/mips/sentry5/obio.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/mips/sentry5/s5_machdep.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/mips/sentry5/uart_bus_sbusart.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/mips/sentry5/uart_cpu_sbusart.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/modules/Makefile#8 integrate .. //depot/projects/vimage-commit2/src/sys/modules/svr4/Makefile#3 integrate .. //depot/projects/vimage-commit2/src/sys/modules/wlan/Makefile#3 integrate .. //depot/projects/vimage-commit2/src/sys/net/if_atmsubr.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/net/if_fwsubr.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/net/if_iso88025subr.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/net/if_mib.c#9 integrate .. //depot/projects/vimage-commit2/src/sys/net/if_tap.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/net/if_tap.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/net/route.c#10 integrate .. //depot/projects/vimage-commit2/src/sys/net/route.h#3 integrate .. //depot/projects/vimage-commit2/src/sys/netgraph/ng_base.c#10 integrate .. //depot/projects/vimage-commit2/src/sys/netinet/if_ether.c#13 integrate .. //depot/projects/vimage-commit2/src/sys/netinet/in_rmx.c#10 integrate .. //depot/projects/vimage-commit2/src/sys/netinet/in_var.h#4 integrate .. //depot/projects/vimage-commit2/src/sys/netinet/ip_fw.h#6 integrate .. //depot/projects/vimage-commit2/src/sys/netinet/ip_fw2.c#20 integrate .. //depot/projects/vimage-commit2/src/sys/netinet/tcp_input.c#14 integrate .. //depot/projects/vimage-commit2/src/sys/netinet/tcp_output.c#13 integrate .. //depot/projects/vimage-commit2/src/sys/netinet/tcp_subr.c#12 integrate .. //depot/projects/vimage-commit2/src/sys/netinet/tcp_syncache.c#18 integrate .. //depot/projects/vimage-commit2/src/sys/netinet6/mld6.c#8 integrate .. //depot/projects/vimage-commit2/src/sys/nfsclient/nfs_vfsops.c#12 integrate .. //depot/projects/vimage-commit2/src/sys/pc98/conf/NOTES#6 integrate .. //depot/projects/vimage-commit2/src/sys/powerpc/aim/clock.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/powerpc/aim/mmu_oea.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/powerpc/aim/mp_cpudep.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/powerpc/aim/swtch.S#2 integrate .. //depot/projects/vimage-commit2/src/sys/powerpc/aim/trap_subr.S#2 integrate .. //depot/projects/vimage-commit2/src/sys/powerpc/include/cpufunc.h#3 integrate .. //depot/projects/vimage-commit2/src/sys/powerpc/include/smp.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/powerpc/include/spr.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/powerpc/powerpc/autoconf.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/powerpc/powerpc/cpu.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/powerpc/powerpc/mp_machdep.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/powerpc/powerpc/openpic.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/security/mac_bsdextended/mac_bsdextended.c#5 integrate .. //depot/projects/vimage-commit2/src/sys/sparc64/include/asi.h#3 integrate .. //depot/projects/vimage-commit2/src/sys/sparc64/include/tlb.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/cheetah.c#5 integrate .. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/exception.S#6 integrate .. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/genassym.c#5 integrate .. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/jbusppm.c#1 branch .. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/mp_exception.S#3 integrate .. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/mp_locore.S#4 integrate .. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/pmap.c#4 integrate .. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/schppm.c#1 branch .. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/support.S#3 integrate .. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/swtch.S#3 integrate .. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/tlb.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/sun4v/include/asi.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/sys/interrupt.h#3 integrate .. //depot/projects/vimage-commit2/src/sys/sys/lock.h#3 integrate .. //depot/projects/vimage-commit2/src/sys/sys/mount.h#3 integrate .. //depot/projects/vimage-commit2/src/sys/sys/param.h#11 integrate .. //depot/projects/vimage-commit2/src/sys/sys/proc.h#5 integrate .. //depot/projects/vimage-commit2/src/sys/sys/procfs.h#3 integrate .. //depot/projects/vimage-commit2/src/sys/sys/systm.h#3 integrate .. //depot/projects/vimage-commit2/src/sys/sys/vnode.h#4 integrate .. //depot/projects/vimage-commit2/src/sys/ufs/ffs/ffs_extern.h#3 integrate .. //depot/projects/vimage-commit2/src/sys/ufs/ffs/ffs_inode.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/ufs/ffs/ffs_snapshot.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/ufs/ffs/ffs_softdep.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/ufs/ffs/ffs_vfsops.c#5 integrate .. //depot/projects/vimage-commit2/src/sys/ufs/ufs/dirhash.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/ufs/ufs/inode.h#2 integrate .. //depot/projects/vimage-commit2/src/sys/ufs/ufs/ufs_dirhash.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/ufs/ufs/ufs_inode.c#2 integrate .. //depot/projects/vimage-commit2/src/sys/ufs/ufs/ufs_lookup.c#3 integrate .. //depot/projects/vimage-commit2/src/sys/ufs/ufs/ufs_vnops.c#4 integrate .. //depot/projects/vimage-commit2/src/sys/ufs/ufs/ufsmount.h#3 integrate Differences ... ==== //depot/projects/vimage-commit2/src/sys/amd64/amd64/vm_machdep.c#2 (text+ko) ==== @@ -41,7 +41,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/vm_machdep.c,v 1.257 2008/03/12 10:11:54 jeff Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/vm_machdep.c,v 1.258 2008/09/11 18:33:57 jhb Exp $"); #include "opt_isa.h" #include "opt_cpu.h" @@ -466,10 +466,13 @@ /* * Attempt to force a reset via the Reset Control register at - * I/O port 0xcf9. Bit 2 forces a system reset when it is - * written as 1. Bit 1 selects the type of reset to attempt: - * 0 selects a "soft" reset, and 1 selects a "hard" reset. We - * try to do a "soft" reset first, and then a "hard" reset. + * I/O port 0xcf9. Bit 2 forces a system reset when it + * transitions from 0 to 1. Bit 1 selects the type of reset + * to attempt: 0 selects a "soft" reset, and 1 selects a + * "hard" reset. We try a "hard" reset. The first write sets + * bit 1 to select a "hard" reset and clears bit 2. The + * second write forces a 0 -> 1 transition in bit 2 to trigger + * a reset. */ outb(0xcf9, 0x2); outb(0xcf9, 0x6); ==== //depot/projects/vimage-commit2/src/sys/amd64/include/pmc_mdep.h#3 (text+ko) ==== @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2003-2007 Joseph Koshy + * Copyright (c) 2003-2008 Joseph Koshy * Copyright (c) 2007 The FreeBSD Foundation * All rights reserved. * @@ -27,7 +27,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/pmc_mdep.h,v 1.5 2008/06/20 05:22:09 alc Exp $ + * $FreeBSD: src/sys/amd64/include/pmc_mdep.h,v 1.6 2008/09/15 06:47:52 jkoshy Exp $ */ /* Machine dependent interfaces */ @@ -59,7 +59,8 @@ #define PMC_TRAPFRAME_TO_PC(TF) ((TF)->tf_rip) #define PMC_TRAPFRAME_TO_FP(TF) ((TF)->tf_rbp) -#define PMC_TRAPFRAME_TO_SP(TF) ((TF)->tf_rsp) +#define PMC_TRAPFRAME_TO_USER_SP(TF) ((TF)->tf_rsp) +#define PMC_TRAPFRAME_TO_KERNEL_SP(TF) ((TF)->tf_rsp) #define PMC_AT_FUNCTION_PROLOGUE_PUSH_BP(I) \ (((I) & 0xffffffff) == 0xe5894855) /* pushq %rbp; movq %rsp,%rbp */ ==== //depot/projects/vimage-commit2/src/sys/amd64/pci/pci_cfgreg.c#3 (text+ko) ==== @@ -27,12 +27,13 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/pci/pci_cfgreg.c,v 1.111 2008/08/22 02:14:23 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/pci/pci_cfgreg.c,v 1.113 2008/09/11 21:42:11 jhb Exp $"); #include #include #include #include +#include #include #include #include @@ -46,6 +47,8 @@ CFGMECH_PCIE, }; +static uint32_t pci_docfgregread(int bus, int slot, int func, int reg, + int bytes); static int pciereg_cfgread(int bus, unsigned slot, unsigned func, unsigned reg, unsigned bytes); static void pciereg_cfgwrite(int bus, unsigned slot, unsigned func, @@ -56,7 +59,10 @@ static int cfgmech; static vm_offset_t pcie_base; static int pcie_minbus, pcie_maxbus; +static uint32_t pcie_badslots; static struct mtx pcicfg_mtx; +static int mcfg_enable = 1; +TUNABLE_INT("hw.pci.mcfg", &mcfg_enable); /* * Initialise access to PCI configuration space @@ -64,12 +70,17 @@ int pci_cfgregopen(void) { + static int once = 0; uint64_t pciebar; uint16_t did, vid; + if (!once) { + mtx_init(&pcicfg_mtx, "pcicfg", NULL, MTX_SPIN); + once = 1; + } + if (cfgmech != CFGMECH_NONE) return (1); - mtx_init(&pcicfg_mtx, "pcicfg", NULL, MTX_SPIN); cfgmech = CFGMECH_1; /* @@ -103,6 +114,17 @@ return (1); } +static uint32_t +pci_docfgregread(int bus, int slot, int func, int reg, int bytes) +{ + + if (cfgmech == CFGMECH_PCIE && + (bus != 0 || !(1 << slot & pcie_badslots))) + return (pciereg_cfgread(bus, slot, func, reg, bytes)); + else + return (pcireg_cfgread(bus, slot, func, reg, bytes)); +} + /* * Read configuration space register */ @@ -120,12 +142,12 @@ * as an invalid IRQ. */ if (reg == PCIR_INTLINE && bytes == 1) { - line = pcireg_cfgread(bus, slot, func, PCIR_INTLINE, 1); + line = pci_docfgregread(bus, slot, func, PCIR_INTLINE, 1); if (line == 0 || line >= 128) line = PCI_INVALID_IRQ; return (line); } - return (pcireg_cfgread(bus, slot, func, reg, bytes)); + return (pci_docfgregread(bus, slot, func, reg, bytes)); } /* @@ -135,7 +157,11 @@ pci_cfgregwrite(int bus, int slot, int func, int reg, u_int32_t data, int bytes) { - pcireg_cfgwrite(bus, slot, func, reg, data, bytes); + if (cfgmech == CFGMECH_PCIE && + (bus != 0 || !(1 << slot & pcie_badslots))) + pciereg_cfgwrite(bus, slot, func, reg, data, bytes); + else + pcireg_cfgwrite(bus, slot, func, reg, data, bytes); } /* @@ -175,11 +201,6 @@ int data = -1; int port; - if (cfgmech == CFGMECH_PCIE) { - data = pciereg_cfgread(bus, slot, func, reg, bytes); - return (data); - } - mtx_lock_spin(&pcicfg_mtx); port = pci_cfgenable(bus, slot, func, reg, bytes); if (port != 0) { @@ -205,11 +226,6 @@ { int port; - if (cfgmech == CFGMECH_PCIE) { - pciereg_cfgwrite(bus, slot, func, reg, data, bytes); - return; - } - mtx_lock_spin(&pcicfg_mtx); port = pci_cfgenable(bus, slot, func, reg, bytes); if (port != 0) { @@ -232,7 +248,12 @@ int pcie_cfgregopen(uint64_t base, uint8_t minbus, uint8_t maxbus) { + uint32_t val1, val2; + int slot; + if (!mcfg_enable) + return (0); + if (minbus != 0) return (0); @@ -245,6 +266,25 @@ pcie_minbus = minbus; pcie_maxbus = maxbus; cfgmech = CFGMECH_PCIE; + + /* + * On some AMD systems, some of the devices on bus 0 are + * inaccessible using memory-mapped PCI config access. Walk + * bus 0 looking for such devices. For these devices, we will + * fall back to using type 1 config access instead. + */ + if (pci_cfgregopen() != 0) { + for (slot = 0; slot < 32; slot++) { + val1 = pcireg_cfgread(0, slot, 0, 0, 4); + if (val1 == 0xffffffff) + continue; + + val2 = pciereg_cfgread(0, slot, 0, 0, 4); + if (val2 != val1) + pcie_badslots |= (1 << slot); + } + } + return (1); } ==== //depot/projects/vimage-commit2/src/sys/arm/arm/intr.c#3 (text+ko) ==== @@ -37,7 +37,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/intr.c,v 1.23 2008/08/04 20:29:39 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/intr.c,v 1.24 2008/09/11 12:36:13 raj Exp $"); #include #include #include @@ -92,9 +92,19 @@ } int -arm_remove_irqhandler(void *cookie) +arm_remove_irqhandler(int irq, void *cookie) { - return (intr_event_remove_handler(cookie)); + struct intr_event *event; + int error; + + event = intr_events[irq]; + arm_mask_irq(irq); + + error = intr_event_remove_handler(cookie); + + if (!TAILQ_EMPTY(&event->ie_handlers)) + arm_unmask_irq(irq); + return (error); } void dosoftints(void); ==== //depot/projects/vimage-commit2/src/sys/arm/arm/nexus.c#2 (text+ko) ==== @@ -12,7 +12,7 @@ * no representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied * warranty. - * + * * THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''. M.I.T. DISCLAIMS * ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF @@ -40,7 +40,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/nexus.c,v 1.12 2008/03/12 15:46:25 raj Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/nexus.c,v 1.14 2008/09/11 12:39:54 raj Exp $"); #include #include @@ -76,14 +76,12 @@ static int nexus_print_child(device_t, device_t); static device_t nexus_add_child(device_t, int, const char *, int); static struct resource *nexus_alloc_resource(device_t, device_t, int, int *, - u_long, u_long, u_long, u_int); + u_long, u_long, u_long, u_int); static int nexus_activate_resource(device_t, device_t, int, int, - struct resource *); -static int -nexus_setup_intr(device_t dev, device_t child, struct resource *res, int flags, - driver_filter_t *filt, driver_intr_t *intr, void *arg, void **cookiep); -static int -nexus_teardown_intr(device_t, device_t, struct resource *, void *); + struct resource *); +static int nexus_setup_intr(device_t dev, device_t child, struct resource *res, + int flags, driver_filter_t *filt, driver_intr_t *intr, void *arg, void **cookiep); +static int nexus_teardown_intr(device_t, device_t, struct resource *, void *); static device_method_t nexus_methods[] = { /* Device interface */ @@ -110,56 +108,48 @@ nexus_probe(device_t dev) { device_quiet(dev); /* suppress attach message for neatness */ - + mem_rman.rm_start = 0; mem_rman.rm_end = ~0u; mem_rman.rm_type = RMAN_ARRAY; mem_rman.rm_descr = "I/O memory addresses"; - if (rman_init(&mem_rman) - || rman_manage_region(&mem_rman, 0, ~0u)) + if (rman_init(&mem_rman) || rman_manage_region(&mem_rman, 0, ~0u)) panic("nexus_probe mem_rman"); - + return (0); - return bus_generic_probe(dev); } static int nexus_setup_intr(device_t dev, device_t child, struct resource *res, int flags, driver_filter_t *filt, driver_intr_t *intr, void *arg, void **cookiep) { - int i; if ((rman_get_flags(res) & RF_SHAREABLE) == 0) flags |= INTR_EXCL; - for (i = rman_get_start(res); i <= rman_get_end(res); i++) - arm_setup_irqhandler(device_get_nameunit(child), - filt, intr, arg, i, flags, cookiep); + arm_setup_irqhandler(device_get_nameunit(child), + filt, intr, arg, rman_get_start(res), flags, cookiep); return (0); } static int nexus_teardown_intr(device_t dev, device_t child, struct resource *r, void *ih) { - int error; - int i; - for (i = rman_get_start(r); i <= rman_get_end(r); i++) - arm_mask_irq(i); - error = arm_remove_irqhandler(ih); - return (error); + return (arm_remove_irqhandler(rman_get_start(r), ih)); } static int nexus_attach(device_t dev) { + /* * First, deal with the children we know about already */ bus_generic_probe(dev); bus_generic_attach(dev); - - return 0; + + return (0); } @@ -167,31 +157,30 @@ nexus_print_child(device_t bus, device_t child) { int retval = 0; - + retval += bus_print_child_header(bus, child); retval += printf(" on motherboard\n"); /* XXX "motherboard", ick */ - + return (retval); } - static device_t nexus_add_child(device_t bus, int order, const char *name, int unit) { - device_t child; + device_t child; struct nexus_device *ndev; - + ndev = malloc(sizeof(struct nexus_device), M_NEXUSDEV, M_NOWAIT|M_ZERO); if (!ndev) - return(0); + return (0); resource_list_init(&ndev->nx_resources); child = device_add_child_ordered(bus, order, name, unit); - + /* should we free this in nexus_child_detached? */ device_set_ivars(child, ndev); - - return(child); + + return (child); } @@ -203,7 +192,7 @@ #define ARM_BUS_SPACE_MEM 1 static struct resource * nexus_alloc_resource(device_t bus, device_t child, int type, int *rid, - u_long start, u_long end, u_long count, u_int flags) + u_long start, u_long end, u_long count, u_int flags) { struct resource *rv; struct rman *rm; @@ -213,33 +202,33 @@ case SYS_RES_MEMORY: rm = &mem_rman; break; - + default: - return 0; + return (0); } rv = rman_reserve_resource(rm, start, end, count, flags, child); if (rv == 0) - return 0; + return (0); rman_set_rid(rv, *rid); rman_set_bustag(rv, (void*)ARM_BUS_SPACE_MEM); - rman_set_bushandle(rv, rman_get_start(rv)); - + rman_set_bushandle(rv, rman_get_start(rv)); + if (needactivate) { if (bus_activate_resource(child, type, *rid, rv)) { rman_release_resource(rv); - return 0; + return (0); } } - - return rv; + + return (rv); } static int nexus_activate_resource(device_t bus, device_t child, int type, int rid, - struct resource *r) + struct resource *r) { /* * If this is a memory resource, map it into the kernel. @@ -249,7 +238,7 @@ u_int32_t paddr; u_int32_t psize; u_int32_t poffs; - + paddr = rman_get_start(r); psize = rman_get_size(r); poffs = paddr - trunc_page(paddr); ==== //depot/projects/vimage-commit2/src/sys/arm/include/intr.h#2 (text+ko) ==== @@ -32,7 +32,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/arm/include/intr.h,v 1.9 2008/06/06 05:08:09 benno Exp $ + * $FreeBSD: src/sys/arm/include/intr.h,v 1.10 2008/09/11 12:36:13 raj Exp $ * */ @@ -57,6 +57,6 @@ void arm_unmask_irq(uintptr_t); void arm_setup_irqhandler(const char *, int (*)(void*), void (*)(void*), void *, int, int, void **); -int arm_remove_irqhandler(void *); +int arm_remove_irqhandler(int, void *); extern void (*arm_post_filter)(void *); #endif /* _MACHINE_INTR_H */ ==== //depot/projects/vimage-commit2/src/sys/arm/include/pcpu.h#3 (text+ko) ==== @@ -24,7 +24,7 @@ * SUCH DAMAGE. * * from: FreeBSD: src/sys/i386/include/globaldata.h,v 1.27 2001/04/27 - * $FreeBSD: src/sys/arm/include/pcpu.h,v 1.7 2008/08/19 19:53:52 jhb Exp $ + * $FreeBSD: src/sys/arm/include/pcpu.h,v 1.8 2008/09/11 20:39:46 cognet Exp $ */ #ifndef _MACHINE_PCPU_H_ @@ -40,12 +40,7 @@ #endif /* _KERNEL */ -/* - * Inside the kernel, the globally reserved register g7 is used to - * point at the globaldata structure. - */ -#define PCPU_MD_FIELDS \ - struct pcup *pc_prvspace; +#define PCPU_MD_FIELDS #ifdef _KERNEL ==== //depot/projects/vimage-commit2/src/sys/arm/xscale/ixp425/ixp425.c#2 (text+ko) ==== @@ -34,7 +34,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/ixp425.c,v 1.9 2008/02/26 11:44:41 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/ixp425.c,v 1.10 2008/09/11 20:43:38 cognet Exp $"); #define _ARM32_BUS_DMA_PRIVATE #include @@ -143,22 +143,27 @@ void arm_mask_irq(uintptr_t nb) { + int i; + + i = disable_interrupts(I32_bit); intr_enabled &= ~(1 << nb); ixp425_set_intrmask(); + restore_interrupts(i); /*XXX; If it's a GPIO interrupt, ACK it know. Can it be a problem ?*/ if ((1 << nb) & IXP425_INT_GPIOMASK) IXPREG(IXP425_GPIO_VBASE + IXP425_GPIO_GPISR) = ixp425_irq2gpio_bit(nb); - - } void arm_unmask_irq(uintptr_t nb) { - + int i; + + i = disable_interrupts(I32_bit); intr_enabled |= (1 << nb); ixp425_set_intrmask(); + restore_interrupts(i); } static __inline uint32_t ==== //depot/projects/vimage-commit2/src/sys/arm/xscale/ixp425/ixp425_qmgr.c#2 (text+ko) ==== @@ -57,7 +57,7 @@ * SUCH DAMAGE. */ #include -__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/ixp425_qmgr.c,v 1.3 2007/10/12 06:03:42 kevlo Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/ixp425_qmgr.c,v 1.4 2008/09/11 12:17:21 raj Exp $"); /* * Intel XScale Queue Manager support. @@ -133,9 +133,14 @@ device_t sc_dev; bus_space_tag_t sc_iot; bus_space_handle_t sc_ioh; - struct resource *sc_irq; /* IRQ resource */ - void *sc_ih; /* interrupt handler */ - int sc_rid; /* resource id for irq */ + + struct resource *sc_irq1; /* IRQ resource */ + void *sc_ih1; /* interrupt handler */ + int sc_rid1; /* resource id for irq */ + + struct resource *sc_irq2; + void *sc_ih2; + int sc_rid2; struct qmgrInfo qinfo[IX_QMGR_MAX_NUM_QUEUES]; /* @@ -203,12 +208,12 @@ return 0; } -static void +static int ixpqmgr_attach(device_t dev) { struct ixpqmgr_softc *sc = device_get_softc(dev); struct ixp425_softc *sa = device_get_softc(device_get_parent(dev)); - int i; + int i, err; ixpqmgr_sc = sc; @@ -219,13 +224,32 @@ panic("%s: Cannot map registers", device_get_name(dev)); /* NB: we only use the lower 32 q's */ - sc->sc_irq = bus_alloc_resource(dev, SYS_RES_IRQ, &sc->sc_rid, - IXP425_INT_QUE1_32, IXP425_INT_QUE33_64, 2, RF_ACTIVE); - if (!sc->sc_irq) + + /* Set up QMGR interrupts */ + sc->sc_rid1 = 0; + sc->sc_irq1 = bus_alloc_resource(dev, SYS_RES_IRQ, &sc->sc_rid1, + IXP425_INT_QUE1_32, IXP425_INT_QUE1_32, 1, RF_ACTIVE); + sc->sc_rid2 = 1; + sc->sc_irq2 = bus_alloc_resource(dev, SYS_RES_IRQ, &sc->sc_rid2, + IXP425_INT_QUE33_64, IXP425_INT_QUE33_64, 1, RF_ACTIVE); + + if (sc->sc_irq1 == NULL || sc->sc_irq2 == NULL) panic("Unable to allocate the qmgr irqs.\n"); - /* XXX could be a source of entropy */ - bus_setup_intr(dev, sc->sc_irq, INTR_TYPE_NET | INTR_MPSAFE, - NULL, ixpqmgr_intr, NULL, &sc->sc_ih); + + err = bus_setup_intr(dev, sc->sc_irq1, INTR_TYPE_NET | INTR_MPSAFE, + NULL, ixpqmgr_intr, NULL, &sc->sc_ih1); + if (err) { + device_printf(dev, "failed to set up qmgr irq=%d\n", + IXP425_INT_QUE1_32); + return (ENXIO); + } + err = bus_setup_intr(dev, sc->sc_irq2, INTR_TYPE_NET | INTR_MPSAFE, + NULL, ixpqmgr_intr, NULL, &sc->sc_ih2); + if (err) { + device_printf(dev, "failed to set up qmgr irq=%d\n", + IXP425_INT_QUE33_64); + return (ENXIO); + } /* NB: softc is pre-zero'd */ for (i = 0; i < IX_QMGR_MAX_NUM_QUEUES; i++) { @@ -295,17 +319,21 @@ ixpqmgr_rebuild(sc); /* build inital priority table */ aqm_reset(sc); /* reset h/w */ + return (0); } -static void +static int ixpqmgr_detach(device_t dev) { struct ixpqmgr_softc *sc = device_get_softc(dev); aqm_reset(sc); /* disable interrupts */ - bus_teardown_intr(dev, sc->sc_irq, sc->sc_ih); - bus_release_resource(dev, SYS_RES_IRQ, sc->sc_rid, sc->sc_irq); + bus_teardown_intr(dev, sc->sc_irq1, sc->sc_ih1); + bus_teardown_intr(dev, sc->sc_irq2, sc->sc_ih2); + bus_release_resource(dev, SYS_RES_IRQ, sc->sc_rid1, sc->sc_irq1); + bus_release_resource(dev, SYS_RES_IRQ, sc->sc_rid2, sc->sc_irq2); bus_space_unmap(sc->sc_iot, sc->sc_ioh, IXP425_QMGR_SIZE); + return (0); } int ==== //depot/projects/vimage-commit2/src/sys/boot/common/dev_net.c#5 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/boot/common/dev_net.c,v 1.17 2008/09/03 17:41:44 raj Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/common/dev_net.c,v 1.18 2008/09/10 20:53:22 marius Exp $"); /*- * This module implements a "raw device" interface suitable for @@ -145,6 +145,9 @@ return (error); } } +#if defined(__sparc64__) + netdev_opens++; +#endif } netdev_opens++; f->f_devdata = &netdev_sock; ==== //depot/projects/vimage-commit2/src/sys/boot/forth/loader.conf#6 (text+ko) ==== @@ -6,7 +6,7 @@ # # All arguments must be in double quotes. # -# $FreeBSD: src/sys/boot/forth/loader.conf,v 1.132 2008/08/26 13:27:48 matteo Exp $ +# $FreeBSD: src/sys/boot/forth/loader.conf,v 1.133 2008/09/10 18:36:58 jhb Exp $ ############################################################## ### Basic configuration options ############################ @@ -260,6 +260,7 @@ if_re_load="NO" # RealTek 8139C+/8169/8169S/8110S if_rl_load="NO" # RealTek 8129/8139 if_rue_load="NO" # RealTek RTL8150 USB to Fast Ethernet +if_sbni_load="NO" # Granch SBNI12 leased line adapters if_sf_load="NO" # Adaptec Duralink PCI (AIC-6915 "starfire") if_sis_load="NO" # Silicon Integrated Systems SiS 900/7016 if_sk_load="NO" # SysKonnect SK-984x series PCI Gigabit Ethernet ==== //depot/projects/vimage-commit2/src/sys/boot/sparc64/loader/main.c#6 (text+ko) ==== @@ -6,9 +6,34 @@ * As long as the above copyright statement and this notice remain * unchanged, you can do what ever you want with this file. */ +/*- + * Copyright (c) 2008 Marius Strobl + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ #include -__FBSDID("$FreeBSD: src/sys/boot/sparc64/loader/main.c,v 1.36 2008/09/04 19:41:54 marius Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/sparc64/loader/main.c,v 1.38 2008/09/10 20:07:08 marius Exp $"); /* * FreeBSD/sparc64 kernel loader - machine dependent part @@ -37,6 +62,7 @@ #include #include #include +#include #include "bootstrap.h" #include "libofw.h" @@ -64,6 +90,7 @@ static inline u_long itlb_get_data_sun4u(int slot); static void itlb_enter_sun4u(u_long vpn, u_long data); static vm_offset_t itlb_va_to_pa_sun4u(vm_offset_t); +static void itlb_relocate_locked0_sun4u(void); extern vm_offset_t md_load(char *, vm_offset_t *); static int sparc64_autoload(void); static ssize_t sparc64_readin(const int, vm_offset_t, const size_t); @@ -455,16 +482,81 @@ itlb_enter_sun4u(u_long vpn, u_long data) { u_long reg; + int i; reg = rdpr(pstate); wrpr(pstate, reg & ~PSTATE_IE, 0); + + if (cpu_impl == CPU_IMPL_ULTRASPARCIIIp) { + /* + * Search an unused slot != 0 and explicitly enter the data + * and tag there in order to avoid Cheetah+ erratum 34. + */ + for (i = 1; i < itlb_slot_max; i++) { + if ((itlb_get_data_sun4u(i) & TD_V) != 0) >>> TRUNCATED FOR MAIL (1000 lines) <<<