From owner-p4-projects@FreeBSD.ORG Sun Feb 8 11:43:06 2009 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id BD8A31065670; Sun, 8 Feb 2009 11:43:05 +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 7CAB0106566B for ; Sun, 8 Feb 2009 11:43:05 +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 68F0F8FC14 for ; Sun, 8 Feb 2009 11:43:05 +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 n18Bh5nQ045570 for ; Sun, 8 Feb 2009 11:43:05 GMT (envelope-from hselasky@FreeBSD.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n18Bh4b1045568 for perforce@freebsd.org; Sun, 8 Feb 2009 11:43:04 GMT (envelope-from hselasky@FreeBSD.org) Date: Sun, 8 Feb 2009 11:43:04 GMT Message-Id: <200902081143.n18Bh4b1045568@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 157361 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: Sun, 08 Feb 2009 11:43:06 -0000 http://perforce.freebsd.org/chv.cgi?CH=157361 Change 157361 by hselasky@hselasky_laptop001 on 2009/02/08 11:42:15 IFC @ 157360 Affected files ... .. //depot/projects/usb/src/sys/amd64/amd64/exception.S#9 integrate .. //depot/projects/usb/src/sys/amd64/amd64/machdep.c#12 integrate .. //depot/projects/usb/src/sys/amd64/amd64/mp_machdep.c#16 integrate .. //depot/projects/usb/src/sys/amd64/conf/NOTES#14 integrate .. //depot/projects/usb/src/sys/amd64/include/intr_machdep.h#7 integrate .. //depot/projects/usb/src/sys/amd64/include/legacyvar.h#3 integrate .. //depot/projects/usb/src/sys/amd64/pci/pci_bus.c#6 integrate .. //depot/projects/usb/src/sys/arm/arm/busdma_machdep.c#15 integrate .. //depot/projects/usb/src/sys/arm/arm/dump_machdep.c#6 integrate .. //depot/projects/usb/src/sys/arm/arm/elf_trampoline.c#10 integrate .. //depot/projects/usb/src/sys/arm/arm/pmap.c#13 integrate .. //depot/projects/usb/src/sys/arm/arm/vm_machdep.c#8 integrate .. //depot/projects/usb/src/sys/arm/conf/AVILA#11 integrate .. //depot/projects/usb/src/sys/arm/conf/AVILA.hints#4 integrate .. //depot/projects/usb/src/sys/arm/include/atomic.h#6 integrate .. //depot/projects/usb/src/sys/arm/sa11x0/assabet_machdep.c#7 integrate .. //depot/projects/usb/src/sys/arm/xscale/ixp425/avila_machdep.c#10 integrate .. //depot/projects/usb/src/sys/arm/xscale/ixp425/files.ixp425#6 integrate .. //depot/projects/usb/src/sys/arm/xscale/ixp425/ixp425.c#7 integrate .. //depot/projects/usb/src/sys/arm/xscale/ixp425/ixp425reg.h#4 integrate .. //depot/projects/usb/src/sys/conf/NOTES#27 integrate .. //depot/projects/usb/src/sys/conf/files#50 integrate .. //depot/projects/usb/src/sys/conf/options#20 integrate .. //depot/projects/usb/src/sys/conf/options.amd64#7 integrate .. //depot/projects/usb/src/sys/conf/options.i386#9 integrate .. //depot/projects/usb/src/sys/conf/options.ia64#3 integrate .. //depot/projects/usb/src/sys/conf/options.mips#3 integrate .. //depot/projects/usb/src/sys/conf/options.pc98#7 integrate .. //depot/projects/usb/src/sys/crypto/via/padlock.c#8 integrate .. //depot/projects/usb/src/sys/dev/acpi_support/acpi_panasonic.c#4 integrate .. //depot/projects/usb/src/sys/dev/acpica/acpi_pcib_acpi.c#5 integrate .. //depot/projects/usb/src/sys/dev/ae/if_ae.c#3 integrate .. //depot/projects/usb/src/sys/dev/agp/agp.c#5 integrate .. //depot/projects/usb/src/sys/dev/an/if_an.c#7 integrate .. //depot/projects/usb/src/sys/dev/an/if_anreg.h#4 integrate .. //depot/projects/usb/src/sys/dev/ata/ata-disk.c#11 integrate .. //depot/projects/usb/src/sys/dev/ata/atapi-cam.c#9 integrate .. //depot/projects/usb/src/sys/dev/ata/atapi-cd.c#8 integrate .. //depot/projects/usb/src/sys/dev/ata/atapi-fd.c#6 integrate .. //depot/projects/usb/src/sys/dev/ata/atapi-tape.c#7 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ah_regdomain.c#4 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5212/ar5212.h#3 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5212/ar5212_reset.c#4 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5212/ar5212_rfgain.c#3 integrate .. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5416/ar5416_cal.c#3 integrate .. //depot/projects/usb/src/sys/dev/ath/if_ath.c#16 integrate .. //depot/projects/usb/src/sys/dev/ath/if_athioctl.h#6 integrate .. //depot/projects/usb/src/sys/dev/atkbdc/atkbdc_isa.c#3 integrate .. //depot/projects/usb/src/sys/dev/bge/if_bge.c#14 integrate .. //depot/projects/usb/src/sys/dev/bm/if_bm.c#6 integrate .. //depot/projects/usb/src/sys/dev/cardbus/cardbus.c#9 integrate .. //depot/projects/usb/src/sys/dev/cardbus/cardbus_device.c#6 integrate .. //depot/projects/usb/src/sys/dev/cfi/cfi_bus_ixp4xx.c#1 branch .. //depot/projects/usb/src/sys/dev/cfi/cfi_core.c#2 integrate .. //depot/projects/usb/src/sys/dev/cfi/cfi_dev.c#2 integrate .. //depot/projects/usb/src/sys/dev/cfi/cfi_reg.h#2 integrate .. //depot/projects/usb/src/sys/dev/cfi/cfi_var.h#2 integrate .. //depot/projects/usb/src/sys/dev/exca/exca.c#5 integrate .. //depot/projects/usb/src/sys/dev/firewire/firewire.c#9 integrate .. //depot/projects/usb/src/sys/dev/firewire/fwohci.c#6 integrate .. //depot/projects/usb/src/sys/dev/firewire/fwohci_pci.c#6 integrate .. //depot/projects/usb/src/sys/dev/firewire/fwohcivar.h#4 integrate .. //depot/projects/usb/src/sys/dev/firewire/sbp.c#6 integrate .. //depot/projects/usb/src/sys/dev/fxp/if_fxp.c#8 integrate .. //depot/projects/usb/src/sys/dev/hifn/hifn7751.c#4 integrate .. //depot/projects/usb/src/sys/dev/ichsmb/ichsmb.c#6 integrate .. //depot/projects/usb/src/sys/dev/ipmi/ipmi_acpi.c#2 integrate .. //depot/projects/usb/src/sys/dev/ipmi/ipmi_smbios.c#4 integrate .. //depot/projects/usb/src/sys/dev/kbdmux/kbdmux.c#8 integrate .. //depot/projects/usb/src/sys/dev/lmc/if_lmc.c#9 integrate .. //depot/projects/usb/src/sys/dev/lmc/if_lmc.h#5 integrate .. //depot/projects/usb/src/sys/dev/mmc/mmc.c#8 integrate .. //depot/projects/usb/src/sys/dev/mmc/mmcreg.h#4 integrate .. //depot/projects/usb/src/sys/dev/my/if_my.c#6 integrate .. //depot/projects/usb/src/sys/dev/nve/if_nve.c#7 integrate .. //depot/projects/usb/src/sys/dev/pccard/card_if.m#2 integrate .. //depot/projects/usb/src/sys/dev/pccard/pccard.c#5 integrate .. //depot/projects/usb/src/sys/dev/pccard/pccard_cis.c#6 integrate .. //depot/projects/usb/src/sys/dev/pccard/pccardvarp.h#4 integrate .. //depot/projects/usb/src/sys/dev/pccbb/pccbb.c#10 integrate .. //depot/projects/usb/src/sys/dev/pccbb/pccbb_pci.c#8 integrate .. //depot/projects/usb/src/sys/dev/pccbb/pccbbvar.h#7 integrate .. //depot/projects/usb/src/sys/dev/pci/pci_user.c#5 integrate .. //depot/projects/usb/src/sys/dev/pci/pcireg.h#9 integrate .. //depot/projects/usb/src/sys/dev/pcn/if_pcn.c#3 integrate .. //depot/projects/usb/src/sys/dev/ppbus/ppbconf.h#7 integrate .. //depot/projects/usb/src/sys/dev/ppc/ppc.c#9 integrate .. //depot/projects/usb/src/sys/dev/ppc/ppcvar.h#5 integrate .. //depot/projects/usb/src/sys/dev/safe/safe.c#5 integrate .. //depot/projects/usb/src/sys/dev/scc/scc_if.m#3 integrate .. //depot/projects/usb/src/sys/dev/si/si.c#6 integrate .. //depot/projects/usb/src/sys/dev/smbus/smb.c#5 integrate .. //depot/projects/usb/src/sys/dev/snp/snp.c#10 integrate .. //depot/projects/usb/src/sys/dev/sound/macio/aoa.c#2 integrate .. //depot/projects/usb/src/sys/dev/sound/macio/aoa.h#2 integrate .. //depot/projects/usb/src/sys/dev/sound/macio/davbus.c#2 integrate .. //depot/projects/usb/src/sys/dev/sound/macio/i2s.c#2 integrate .. //depot/projects/usb/src/sys/dev/sound/macio/snapper.c#2 integrate .. //depot/projects/usb/src/sys/dev/sound/macio/tumbler.c#2 integrate .. //depot/projects/usb/src/sys/dev/usb/if_rum.c#37 integrate .. //depot/projects/usb/src/sys/dev/usb/if_urtw.c#2 integrate .. //depot/projects/usb/src/sys/dev/usb/usbdevs#42 integrate .. //depot/projects/usb/src/sys/dev/usb2/bluetooth/ubtbcmfw2.c#14 integrate .. //depot/projects/usb/src/sys/dev/usb2/controller/ehci2.c#31 integrate .. //depot/projects/usb/src/sys/dev/usb2/controller/ohci2.c#28 integrate .. //depot/projects/usb/src/sys/dev/usb2/controller/uhci2.c#28 integrate .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_error.c#6 integrate .. //depot/projects/usb/src/sys/dev/usb2/core/usb2_process.c#16 integrate .. //depot/projects/usb/src/sys/dev/usb2/include/usb2_devid.h#28 integrate .. //depot/projects/usb/src/sys/dev/usb2/include/usb2_devtable.h#28 integrate .. //depot/projects/usb/src/sys/dev/usb2/include/usb2_error.h#5 integrate .. //depot/projects/usb/src/sys/dev/usb2/include/usb2_hid.h#7 integrate .. //depot/projects/usb/src/sys/dev/usb2/include/usb2_mfunc.h#5 integrate .. //depot/projects/usb/src/sys/dev/usb2/include/usb2_revision.h#7 integrate .. //depot/projects/usb/src/sys/dev/usb2/input/uhid2.c#16 integrate .. //depot/projects/usb/src/sys/dev/usb2/quirk/usb2_quirk.c#14 integrate .. //depot/projects/usb/src/sys/dev/usb2/quirk/usb2_quirk.h#7 integrate .. //depot/projects/usb/src/sys/dev/usb2/serial/uftdi2.c#20 integrate .. //depot/projects/usb/src/sys/dev/usb2/wlan/if_rum2.c#25 integrate .. //depot/projects/usb/src/sys/dev/xen/netback/netback.c#2 integrate .. //depot/projects/usb/src/sys/dev/xen/netfront/netfront.c#6 integrate .. //depot/projects/usb/src/sys/fs/fifofs/fifo_vnops.c#9 integrate .. //depot/projects/usb/src/sys/fs/udf/ecma167-udf.h#3 integrate .. //depot/projects/usb/src/sys/fs/udf/udf.h#3 integrate .. //depot/projects/usb/src/sys/fs/udf/udf_vfsops.c#8 integrate .. //depot/projects/usb/src/sys/fs/udf/udf_vnops.c#10 integrate .. //depot/projects/usb/src/sys/geom/geom_subr.c#9 integrate .. //depot/projects/usb/src/sys/geom/part/g_part_bsd.c#8 integrate .. //depot/projects/usb/src/sys/geom/part/g_part_mbr.c#6 integrate .. //depot/projects/usb/src/sys/i386/conf/NOTES#16 integrate .. //depot/projects/usb/src/sys/i386/i386/vm_machdep.c#11 integrate .. //depot/projects/usb/src/sys/i386/xen/clock.c#4 integrate .. //depot/projects/usb/src/sys/i386/xen/xen_machdep.c#7 integrate .. //depot/projects/usb/src/sys/ia64/conf/NOTES#4 integrate .. //depot/projects/usb/src/sys/ia64/ia64/mca.c#3 integrate .. //depot/projects/usb/src/sys/ia64/include/mca.h#2 integrate .. //depot/projects/usb/src/sys/kern/kern_jail.c#16 integrate .. //depot/projects/usb/src/sys/kern/kern_linker.c#12 integrate .. //depot/projects/usb/src/sys/kern/kern_lock.c#11 integrate .. //depot/projects/usb/src/sys/kern/kern_sysctl.c#11 integrate .. //depot/projects/usb/src/sys/kern/subr_autoconf.c#5 integrate .. //depot/projects/usb/src/sys/kern/subr_bus.c#16 integrate .. //depot/projects/usb/src/sys/kern/subr_clist.c#4 integrate .. //depot/projects/usb/src/sys/kern/subr_devstat.c#2 integrate .. //depot/projects/usb/src/sys/kern/subr_disk.c#4 integrate .. //depot/projects/usb/src/sys/kern/subr_firmware.c#8 integrate .. //depot/projects/usb/src/sys/kern/subr_kobj.c#3 integrate .. //depot/projects/usb/src/sys/kern/subr_prf.c#8 integrate .. //depot/projects/usb/src/sys/kern/subr_prof.c#5 integrate .. //depot/projects/usb/src/sys/kern/subr_rman.c#9 integrate .. //depot/projects/usb/src/sys/kern/subr_rtc.c#3 integrate .. //depot/projects/usb/src/sys/kern/subr_taskqueue.c#7 integrate .. //depot/projects/usb/src/sys/kern/subr_witness.c#16 integrate .. //depot/projects/usb/src/sys/kern/sys_generic.c#11 integrate .. //depot/projects/usb/src/sys/kern/tty.c#16 integrate .. //depot/projects/usb/src/sys/kern/tty_inq.c#2 integrate .. //depot/projects/usb/src/sys/kern/tty_outq.c#2 integrate .. //depot/projects/usb/src/sys/kern/uipc_socket.c#16 integrate .. //depot/projects/usb/src/sys/kern/vfs_bio.c#13 integrate .. //depot/projects/usb/src/sys/kern/vfs_init.c#4 integrate .. //depot/projects/usb/src/sys/kern/vfs_mount.c#17 integrate .. //depot/projects/usb/src/sys/kern/vfs_subr.c#17 integrate .. //depot/projects/usb/src/sys/kern/vfs_syscalls.c#16 integrate .. //depot/projects/usb/src/sys/mips/mips/busdma_machdep.c#3 integrate .. //depot/projects/usb/src/sys/modules/libalias/libalias/Makefile#3 integrate .. //depot/projects/usb/src/sys/net/if.c#17 integrate .. //depot/projects/usb/src/sys/net/if_ethersubr.c#14 integrate .. //depot/projects/usb/src/sys/net/rtsock.c#18 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211.c#14 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_crypto.h#8 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_ddb.c#9 integrate .. //depot/projects/usb/src/sys/net80211/ieee80211_scan_sta.c#8 integrate .. //depot/projects/usb/src/sys/netatalk/ddp_usrreq.c#6 integrate .. //depot/projects/usb/src/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap_raw.c#6 integrate .. //depot/projects/usb/src/sys/netinet/in.c#17 integrate .. //depot/projects/usb/src/sys/netinet/in_pcb.c#18 integrate .. //depot/projects/usb/src/sys/netinet/ip_divert.c#13 integrate .. //depot/projects/usb/src/sys/netinet/ip_fw_nat.c#6 integrate .. //depot/projects/usb/src/sys/netinet/ip_ipsec.c#10 integrate .. //depot/projects/usb/src/sys/netinet/ip_output.c#13 integrate .. //depot/projects/usb/src/sys/netinet/libalias/alias.c#6 integrate .. //depot/projects/usb/src/sys/netinet/libalias/alias_db.c#9 integrate .. //depot/projects/usb/src/sys/netinet/libalias/alias_local.h#5 integrate .. //depot/projects/usb/src/sys/netinet/libalias/alias_sctp.c#1 branch .. //depot/projects/usb/src/sys/netinet/libalias/alias_sctp.h#1 branch .. //depot/projects/usb/src/sys/netinet/raw_ip.c#17 integrate .. //depot/projects/usb/src/sys/netinet/sctp_auth.c#9 integrate .. //depot/projects/usb/src/sys/netinet/sctp_constants.h#12 integrate .. //depot/projects/usb/src/sys/netinet/sctp_crc32.c#5 integrate .. //depot/projects/usb/src/sys/netinet/sctp_crc32.h#4 integrate .. //depot/projects/usb/src/sys/netinet/sctp_input.c#13 integrate .. //depot/projects/usb/src/sys/netinet/sctp_os_bsd.h#12 integrate .. //depot/projects/usb/src/sys/netinet/sctp_output.c#14 integrate .. //depot/projects/usb/src/sys/netinet/sctp_pcb.c#14 integrate .. //depot/projects/usb/src/sys/netinet/sctp_pcb.h#13 integrate .. //depot/projects/usb/src/sys/netinet/sctp_sysctl.c#10 integrate .. //depot/projects/usb/src/sys/netinet/sctp_uio.h#11 integrate .. //depot/projects/usb/src/sys/netinet/sctp_usrreq.c#13 integrate .. //depot/projects/usb/src/sys/netinet/sctputil.c#15 integrate .. //depot/projects/usb/src/sys/netinet/sctputil.h#10 integrate .. //depot/projects/usb/src/sys/netinet/tcp_subr.c#17 integrate .. //depot/projects/usb/src/sys/netinet/tcp_usrreq.c#14 integrate .. //depot/projects/usb/src/sys/netinet/udp_usrreq.c#17 integrate .. //depot/projects/usb/src/sys/netinet6/frag6.c#12 integrate .. //depot/projects/usb/src/sys/netinet6/in6.c#16 integrate .. //depot/projects/usb/src/sys/netinet6/in6_pcb.c#14 integrate .. //depot/projects/usb/src/sys/netinet6/in6_src.c#15 integrate .. //depot/projects/usb/src/sys/netinet6/ip6_forward.c#12 integrate .. //depot/projects/usb/src/sys/netinet6/ip6_input.c#16 integrate .. //depot/projects/usb/src/sys/netinet6/ip6_ipsec.c#8 integrate .. //depot/projects/usb/src/sys/netinet6/ip6_output.c#10 integrate .. //depot/projects/usb/src/sys/netinet6/ip6_var.h#11 integrate .. //depot/projects/usb/src/sys/netinet6/nd6_rtr.c#12 integrate .. //depot/projects/usb/src/sys/netinet6/raw_ip6.c#16 integrate .. //depot/projects/usb/src/sys/netinet6/sctp6_usrreq.c#11 integrate .. //depot/projects/usb/src/sys/netinet6/udp6_usrreq.c#16 integrate .. //depot/projects/usb/src/sys/netinet6/vinet6.h#5 integrate .. //depot/projects/usb/src/sys/netipsec/ipsec.c#15 integrate .. //depot/projects/usb/src/sys/netipsec/ipsec.h#12 integrate .. //depot/projects/usb/src/sys/netipsec/ipsec6.h#6 integrate .. //depot/projects/usb/src/sys/opencrypto/cryptosoft.c#7 integrate .. //depot/projects/usb/src/sys/pc98/conf/NOTES#14 integrate .. //depot/projects/usb/src/sys/rpc/clnt_rc.c#5 integrate .. //depot/projects/usb/src/sys/security/audit/audit_pipe.c#12 integrate .. //depot/projects/usb/src/sys/sys/cfictl.h#3 integrate .. //depot/projects/usb/src/sys/sys/clist.h#4 integrate .. //depot/projects/usb/src/sys/sys/conf.h#14 integrate .. //depot/projects/usb/src/sys/sys/elf_common.h#10 integrate .. //depot/projects/usb/src/sys/sys/jail.h#9 integrate .. //depot/projects/usb/src/sys/sys/kobj.h#4 integrate .. //depot/projects/usb/src/sys/sys/lockmgr.h#8 integrate .. //depot/projects/usb/src/sys/sys/mount.h#14 integrate .. //depot/projects/usb/src/sys/sys/pciio.h#3 integrate .. //depot/projects/usb/src/sys/sys/sysctl.h#14 integrate .. //depot/projects/usb/src/sys/sys/tty.h#8 integrate .. //depot/projects/usb/src/sys/sys/ttyqueue.h#3 integrate .. //depot/projects/usb/src/sys/ufs/ffs/ffs_alloc.c#9 integrate Differences ... ==== //depot/projects/usb/src/sys/amd64/amd64/exception.S#9 (text+ko) ==== @@ -31,7 +31,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/amd64/exception.S,v 1.136 2009/01/14 14:20:08 kib Exp $ + * $FreeBSD: src/sys/amd64/amd64/exception.S,v 1.137 2009/02/03 09:01:45 jkoshy Exp $ */ #include "opt_atpic.h" @@ -383,22 +383,24 @@ * NMI handling is special. * * First, NMIs do not respect the state of the processor's RFLAGS.IF - * bit and the NMI handler may be invoked at any time, including when - * the processor is in a critical section with RFLAGS.IF == 0. In - * particular, this means that the processor's GS.base values could be - * inconsistent on entry to the handler, and so we need to read - * MSR_GSBASE to determine if a 'swapgs' is needed. We use '%ebx', a - * C-preserved register, to remember whether to swap GS back on the - * exit path. + * bit. The NMI handler may be entered at any time, including when + * the processor is in a critical section with RFLAGS.IF == 0. + * The processor's GS.base value could be invalid on entry to the + * handler. * * Second, the processor treats NMIs specially, blocking further NMIs - * until an 'iretq' instruction is executed. We therefore need to - * execute the NMI handler with interrupts disabled to prevent a - * nested interrupt from executing an 'iretq' instruction and - * inadvertently taking the processor out of NMI mode. + * until an 'iretq' instruction is executed. We thus need to execute + * the NMI handler with interrupts disabled, to prevent a nested interrupt + * from executing an 'iretq' instruction and inadvertently taking the + * processor out of NMI mode. * - * Third, the NMI handler runs on its own stack (tss_ist1), shared - * with the double fault handler. + * Third, the NMI handler runs on its own stack (tss_ist2). The canonical + * GS.base value for the processor is stored just above the bottom of its + * NMI stack. For NMIs taken from kernel mode, the current value in + * the processor's GS.base is saved at entry to C-preserved register %r12, + * the canonical value for GS.base is then loaded into the processor, and + * the saved value is restored at exit time. For NMIs taken from user mode, + * the cheaper 'SWAPGS' instructions are used for swapping GS.base. */ IDTVEC(nmi) @@ -423,12 +425,22 @@ movq %r15,TF_R15(%rsp) xorl %ebx,%ebx testb $SEL_RPL_MASK,TF_CS(%rsp) - jnz nmi_needswapgs /* we came from userland */ + jnz nmi_fromuserspace + /* + * We've interrupted the kernel. Preserve GS.base in %r12. + */ movl $MSR_GSBASE,%ecx rdmsr - cmpl $VM_MAXUSER_ADDRESS >> 32,%edx - jae nmi_calltrap /* GS.base holds a kernel VA */ -nmi_needswapgs: + movq %rax,%r12 + shlq $32,%rdx + orq %rdx,%r12 + /* Retrieve and load the canonical value for GS.base. */ + movq TF_SIZE(%rsp),%rdx + movl %edx,%eax + shrq $32,%rdx + wrmsr + jmp nmi_calltrap +nmi_fromuserspace: incl %ebx swapgs /* Note: this label is also used by ddb and gdb: */ @@ -439,14 +451,19 @@ MEXITCOUNT #ifdef HWPMC_HOOKS /* - * Check if the current trap was from user mode and if so - * whether the current thread needs a user call chain to be - * captured. We are still in NMI mode at this point. + * Capture a userspace callchain if needed. + * + * - Check if the current trap was from user mode. + * - Check if the current thread is valid. + * - Check if the thread requires a user call chain to be + * captured. + * + * We are still in NMI mode at this point. */ - testb $SEL_RPL_MASK,TF_CS(%rsp) - jz nocallchain - movq PCPU(CURTHREAD),%rax /* curthread present? */ - orq %rax,%rax + testl %ebx,%ebx + jz nocallchain /* not from userspace */ + movq PCPU(CURTHREAD),%rax + orq %rax,%rax /* curthread present? */ jz nocallchain testl $TDP_CALLCHAIN,TD_PFLAGS(%rax) /* flagged for capture? */ jz nocallchain @@ -498,8 +515,18 @@ nocallchain: #endif testl %ebx,%ebx - jz nmi_restoreregs + jz nmi_kernelexit swapgs + jmp nmi_restoreregs +nmi_kernelexit: + /* + * Put back the preserved MSR_GSBASE value. + */ + movl $MSR_GSBASE,%ecx + movq %r12,%rdx + movl %edx,%eax + shrq $32,%rdx + wrmsr nmi_restoreregs: movq TF_RDI(%rsp),%rdi movq TF_RSI(%rsp),%rsi ==== //depot/projects/usb/src/sys/amd64/amd64/machdep.c#12 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.690 2008/09/08 09:59:05 kib Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.691 2009/02/03 09:01:45 jkoshy Exp $"); #include "opt_atalk.h" #include "opt_atpic.h" @@ -809,6 +809,9 @@ static char dblfault_stack[PAGE_SIZE] __aligned(16); +static char nmi0_stack[PAGE_SIZE] __aligned(16); +CTASSERT(sizeof(struct nmi_pcpu) == 16); + struct amd64tss common_tss[MAXCPU]; /* software prototypes -- in more palatable form */ @@ -1291,6 +1294,7 @@ caddr_t kmdp; int gsel_tss, x; struct pcpu *pc; + struct nmi_pcpu *np; u_int64_t msr; char *env; @@ -1365,7 +1369,7 @@ setidt(x, &IDTVEC(rsvd), SDT_SYSIGT, SEL_KPL, 0); setidt(IDT_DE, &IDTVEC(div), SDT_SYSIGT, SEL_KPL, 0); setidt(IDT_DB, &IDTVEC(dbg), SDT_SYSIGT, SEL_KPL, 0); - setidt(IDT_NMI, &IDTVEC(nmi), SDT_SYSIGT, SEL_KPL, 1); + setidt(IDT_NMI, &IDTVEC(nmi), SDT_SYSIGT, SEL_KPL, 2); setidt(IDT_BP, &IDTVEC(bpt), SDT_SYSIGT, SEL_UPL, 0); setidt(IDT_OF, &IDTVEC(ofl), SDT_SYSIGT, SEL_KPL, 0); setidt(IDT_BR, &IDTVEC(bnd), SDT_SYSIGT, SEL_KPL, 0); @@ -1438,6 +1442,14 @@ /* doublefault stack space, runs on ist1 */ common_tss[0].tss_ist1 = (long)&dblfault_stack[sizeof(dblfault_stack)]; + /* + * NMI stack, runs on ist2. The pcpu pointer is stored just + * above the start of the ist2 stack. + */ + np = ((struct nmi_pcpu *) &nmi0_stack[sizeof(nmi0_stack)]) - 1; + np->np_pcpu = (register_t) pc; + common_tss[0].tss_ist2 = (long) np; + /* Set the IO permission bitmap (empty due to tss seg limit) */ common_tss[0].tss_iobase = sizeof(struct amd64tss); ==== //depot/projects/usb/src/sys/amd64/amd64/mp_machdep.c#16 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.296 2009/01/29 09:22:56 jeff Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/mp_machdep.c,v 1.297 2009/02/03 09:01:45 jkoshy Exp $"); #include "opt_cpu.h" #include "opt_kstack_pages.h" @@ -92,6 +92,7 @@ /* Temporary holder for double fault stack */ char *doublefault_stack; +char *nmi_stack; /* Hotwire a 0->4MB V==P mapping */ extern pt_entry_t *KPTphys; @@ -437,6 +438,7 @@ init_secondary(void) { struct pcpu *pc; + struct nmi_pcpu *np; u_int64_t msr, cr0; int cpu, gsel_tss, x; struct region_descriptor ap_gdt; @@ -450,6 +452,10 @@ common_tss[cpu].tss_iobase = sizeof(struct amd64tss); common_tss[cpu].tss_ist1 = (long)&doublefault_stack[PAGE_SIZE]; + /* The NMI stack runs on IST2. */ + np = ((struct nmi_pcpu *) &nmi_stack[PAGE_SIZE]) - 1; + common_tss[cpu].tss_ist2 = (long) np; + /* Prepare private GDT */ gdt_segs[GPROC0_SEL].ssd_base = (long) &common_tss[cpu]; ssdtosyssd(&gdt_segs[GPROC0_SEL], @@ -474,6 +480,9 @@ pc->pc_rsp0 = 0; pc->pc_gs32p = &gdt[NGDT * cpu + GUGS32_SEL]; + /* Save the per-cpu pointer for use by the NMI handler. */ + np->np_pcpu = (register_t) pc; + wrmsr(MSR_FSBASE, 0); /* User value */ wrmsr(MSR_GSBASE, (u_int64_t)pc); wrmsr(MSR_KGSBASE, (u_int64_t)pc); /* XXX User value while we're in the kernel */ @@ -725,6 +734,7 @@ /* allocate and set up an idle stack data page */ bootstacks[cpu] = (void *)kmem_alloc(kernel_map, KSTACK_PAGES * PAGE_SIZE); doublefault_stack = (char *)kmem_alloc(kernel_map, PAGE_SIZE); + nmi_stack = (char *)kmem_alloc(kernel_map, PAGE_SIZE); bootSTK = (char *)bootstacks[cpu] + KSTACK_PAGES * PAGE_SIZE - 8; bootAP = cpu; ==== //depot/projects/usb/src/sys/amd64/conf/NOTES#14 (text+ko) ==== @@ -4,7 +4,7 @@ # This file contains machine dependent kernel configuration notes. For # machine independent notes, look in /sys/conf/NOTES. # -# $FreeBSD: src/sys/amd64/conf/NOTES,v 1.83 2008/12/01 16:53:01 sam Exp $ +# $FreeBSD: src/sys/amd64/conf/NOTES,v 1.86 2009/02/07 00:01:10 wkoszek Exp $ # # @@ -150,6 +150,11 @@ # AGP GART support device agp +# +# AGP debugging. +# +options AGP_DEBUG + ##################################################################### # HARDWARE DEVICE CONFIGURATION @@ -267,7 +272,6 @@ # nfe: nVidia nForce MCP on-board Ethernet Networking (BSD open source) # nve: nVidia nForce MCP on-board Ethernet Networking # ral: Ralink Technology IEEE 802.11 wireless adapter -# ural: Ralink Technology RT2500USB IEEE 802.11 wireless adapter # wpi: Intel 3945ABG Wireless LAN controller device ed @@ -277,10 +281,9 @@ device iwi device iwn device ipw -device nfe # nVidia nForce MCP on-board Ethernet Networking -device nve # nVidia nForce MCP on-board Ethernet Networking +device nfe +device nve device ral -device ural device wpi device ath # Atheros pci/cardbus NIC's @@ -356,9 +359,11 @@ # Miscellaneous hardware: # # ipmi: Intelligent Platform Management Interface +# pbio: Parallel (8255 PPI) basic I/O (mode 0) port (e.g. Advantech PCL-724) # smbios: DMI/SMBIOS entry point # vpd: Vital Product Data kernel interface # asmc: Apple System Management Controller +# si: Specialix International SI/XIO or SX intelligent serial card # Notes on the Specialix SI/XIO driver: # The host card is memory, not IO mapped. @@ -367,13 +372,14 @@ # The cards can use an IRQ of 11, 12 or 15. device ipmi -# Parallel (8255 PPI) basic I/O (mode 0) port (e.g. Advantech PCL-724) device pbio hint.pbio.0.at="isa" hint.pbio.0.port="0x360" device smbios device vpd device asmc +#device si + # # Laptop/Notebook options: # ==== //depot/projects/usb/src/sys/amd64/include/intr_machdep.h#7 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/intr_machdep.h,v 1.20 2009/01/29 09:22:56 jeff Exp $ + * $FreeBSD: src/sys/amd64/include/intr_machdep.h,v 1.21 2009/02/03 09:01:45 jkoshy Exp $ */ #ifndef __MACHINE_INTR_MACHDEP_H__ @@ -120,6 +120,15 @@ struct trapframe; +/* + * The following data structure holds per-cpu data, and is placed just + * above the top of the space used for the NMI stack. + */ +struct nmi_pcpu { + register_t np_pcpu; + register_t __padding; /* pad to 16 bytes */ +}; + extern struct mtx icu_lock; extern int elcr_found; ==== //depot/projects/usb/src/sys/amd64/include/legacyvar.h#3 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/amd64/include/legacyvar.h,v 1.8 2007/09/30 11:05:13 marius Exp $ + * $FreeBSD: src/sys/amd64/include/legacyvar.h,v 1.9 2009/02/08 07:03:34 imp Exp $ */ #ifndef _MACHINE_LEGACYVAR_H_ @@ -43,12 +43,12 @@ #undef LEGACY_ACCESSOR int legacy_pcib_maxslots(device_t dev); -uint32_t legacy_pcib_read_config(device_t dev, int bus, int slot, int func, - int reg, int bytes); +uint32_t legacy_pcib_read_config(device_t dev, u_int bus, u_int slot, + u_int func, u_int reg, int bytes); int legacy_pcib_read_ivar(device_t dev, device_t child, int which, uintptr_t *result); -void legacy_pcib_write_config(device_t dev, int bus, int slot, int func, - int reg, u_int32_t data, int bytes); +void legacy_pcib_write_config(device_t dev, u_int bus, u_int slot, + u_int func, u_int reg, uint32_t data, int bytes); int legacy_pcib_write_ivar(device_t dev, device_t child, int which, uintptr_t value); struct resource *legacy_pcib_alloc_resource(device_t dev, device_t child, ==== //depot/projects/usb/src/sys/amd64/pci/pci_bus.c#6 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/pci/pci_bus.c,v 1.122 2007/09/30 11:05:13 marius Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/pci/pci_bus.c,v 1.123 2009/02/08 07:02:42 imp Exp $"); #include "opt_cpu.h" @@ -55,9 +55,9 @@ /* read configuration space register */ -u_int32_t -legacy_pcib_read_config(device_t dev, int bus, int slot, int func, - int reg, int bytes) +uint32_t +legacy_pcib_read_config(device_t dev, u_int bus, u_int slot, u_int func, + u_int reg, int bytes) { return(pci_cfgregread(bus, slot, func, reg, bytes)); } @@ -65,8 +65,8 @@ /* write configuration space register */ void -legacy_pcib_write_config(device_t dev, int bus, int slot, int func, - int reg, u_int32_t data, int bytes) +legacy_pcib_write_config(device_t dev, u_int bus, u_int slot, u_int func, + u_int reg, uint32_t data, int bytes) { pci_cfgregwrite(bus, slot, func, reg, data, bytes); } ==== //depot/projects/usb/src/sys/arm/arm/busdma_machdep.c#15 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.41 2009/01/30 07:01:32 thompsa Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.42 2009/02/04 01:14:06 cognet Exp $"); /* * ARM bus dma support routines @@ -1168,7 +1168,7 @@ STAILQ_FOREACH(bpage, &map->bpages, links) { if ((vm_offset_t)buf >= bpage->datavaddr && - (vm_offset_t)buf + len < bpage->datavaddr + + (vm_offset_t)buf + len <= bpage->datavaddr + bpage->datacount) return (1); } ==== //depot/projects/usb/src/sys/arm/arm/dump_machdep.c#6 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/dump_machdep.c,v 1.6 2008/11/06 16:20:27 raj Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/dump_machdep.c,v 1.7 2009/02/02 20:09:14 cognet Exp $"); #include #include @@ -158,14 +158,12 @@ { struct dumperinfo *di = (struct dumperinfo*)arg; vm_paddr_t pa; - vm_offset_t va; uint32_t pgs; size_t counter, sz, chunk; int c, error; error = 0; /* catch case in which chunk size is 0 */ counter = 0; - va = 0; pgs = mdp->md_size / PAGE_SIZE; pa = mdp->md_start; ==== //depot/projects/usb/src/sys/arm/arm/elf_trampoline.c#10 (text+ko) ==== @@ -23,7 +23,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/elf_trampoline.c,v 1.23 2009/01/09 10:45:04 raj Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/elf_trampoline.c,v 1.24 2009/02/02 20:09:14 cognet Exp $"); #include #include #include @@ -404,11 +404,11 @@ int symtabindex = -1; int symstrindex = -1; vm_offset_t lastaddr = 0; - Elf_Addr ssym = 0, esym = 0; + Elf_Addr ssym = 0; Elf_Dyn *dp; eh = (Elf32_Ehdr *)kstart; - ssym = esym = 0; + ssym = 0; entry_point = (void*)eh->e_entry; memcpy(phdr, (void *)(kstart + eh->e_phoff ), eh->e_phnum * sizeof(phdr[0])); ==== //depot/projects/usb/src/sys/arm/arm/pmap.c#13 (text+ko) ==== @@ -147,7 +147,7 @@ #include "opt_vm.h" #include -__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.106 2008/11/06 16:28:28 raj Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.107 2009/02/02 20:09:14 cognet Exp $"); #include #include #include @@ -3102,7 +3102,7 @@ pmap_remove_all(vm_page_t m) { pv_entry_t pv; - pt_entry_t *ptep, pte; + pt_entry_t *ptep; struct l2_bucket *l2b; boolean_t flush = FALSE; pmap_t curpm; @@ -3130,7 +3130,6 @@ l2b = pmap_get_l2_bucket(pv->pv_pmap, pv->pv_va); KASSERT(l2b != NULL, ("No l2 bucket")); ptep = &l2b->l2b_kva[l2pte_index(pv->pv_va)]; - pte = *ptep; *ptep = 0; PTE_SYNC_CURRENT(pv->pv_pmap, ptep); pmap_free_l2_bucket(pv->pv_pmap, l2b, 1); ==== //depot/projects/usb/src/sys/arm/arm/vm_machdep.c#8 (text+ko) ==== @@ -41,7 +41,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.37 2008/08/04 14:47:49 raj Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.38 2009/02/02 20:09:14 cognet Exp $"); #include #include @@ -108,14 +108,13 @@ cpu_fork(register struct thread *td1, register struct proc *p2, struct thread *td2, int flags) { - struct pcb *pcb1, *pcb2; + struct pcb *pcb2; struct trapframe *tf; struct switchframe *sf; struct mdproc *mdp2; if ((flags & RFPROC) == 0) return; - pcb1 = td1->td_pcb; pcb2 = (struct pcb *)(td2->td_kstack + td2->td_kstack_pages * PAGE_SIZE) - 1; #ifdef __XSCALE__ #ifndef CPU_XSCALE_CORE3 ==== //depot/projects/usb/src/sys/arm/conf/AVILA#11 (text+ko) ==== @@ -16,7 +16,7 @@ # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # -# $FreeBSD: src/sys/arm/conf/AVILA,v 1.21 2008/12/27 17:22:17 bz Exp $ +# $FreeBSD: src/sys/arm/conf/AVILA,v 1.22 2009/02/03 19:16:04 sam Exp $ ident AVILA @@ -66,13 +66,15 @@ device pci device uart +device ixpwdog # watchdog timer +device cfi # flash support + # I2C Bus device iicbus device iicbb device iic device ixpiic # I2C bus glue -device ixpwdog # watchdog timer device ds1672 # DS1672 on I2C bus device ad7418 # AD7418 on I2C bus ==== //depot/projects/usb/src/sys/arm/conf/AVILA.hints#4 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/arm/conf/AVILA.hints,v 1.4 2008/12/20 03:26:09 sam Exp $ +# $FreeBSD: src/sys/arm/conf/AVILA.hints,v 1.5 2009/02/03 19:16:04 sam Exp $ # # Device wiring for the Gateworks Avila 2384. @@ -29,6 +29,10 @@ hint.npe.1.mii="B" hint.npe.1.phy=1 +# FLASH +hint.cfi.0.at="ixp0" +hint.cfi.0.addr=0x50000000 + # CF IDE controller hint.ata_avila.0.at="ixp0" ==== //depot/projects/usb/src/sys/arm/include/atomic.h#6 (text+ko) ==== @@ -33,7 +33,7 @@ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * - * $FreeBSD: src/sys/arm/include/atomic.h,v 1.25 2008/11/22 05:55:56 kmacy Exp $ + * $FreeBSD: src/sys/arm/include/atomic.h,v 1.26 2009/02/03 19:06:12 sam Exp $ */ #ifndef _MACHINE_ATOMIC_H_ @@ -344,7 +344,8 @@ #define atomic_clear_ptr atomic_clear_32 #define atomic_set_ptr atomic_set_32 -#define atomic_cmpset_ptr atomic_cmpset_32 +#define atomic_cmpset_ptr(dst, old, new) \ + atomic_cmpset_32((volatile u_int *)(dst), (u_int)(old), (u_int)(new)) #define atomic_cmpset_rel_ptr atomic_cmpset_ptr #define atomic_cmpset_acq_ptr atomic_cmpset_ptr #define atomic_store_ptr atomic_store_32 ==== //depot/projects/usb/src/sys/arm/sa11x0/assabet_machdep.c#7 (text+ko) ==== @@ -47,7 +47,7 @@ #include -__FBSDID("$FreeBSD: src/sys/arm/sa11x0/assabet_machdep.c,v 1.26 2008/12/01 10:16:25 stas Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/sa11x0/assabet_machdep.c,v 1.28 2009/02/02 20:24:29 cognet Exp $"); #include "opt_md.h" @@ -210,12 +210,10 @@ struct pv_addr md_addr; struct pv_addr md_bla; int loop; - u_int kerneldatasize, symbolsize; u_int l1pagetable; vm_offset_t freemempos; vm_offset_t lastalloced; vm_offset_t lastaddr; - vm_size_t pt_size; uint32_t memsize = 32 * 1024 * 1024; sa1110_uart_vaddr = SACOM1_VBASE; @@ -232,8 +230,6 @@ physical_end = lastaddr; physical_freestart = (((vm_offset_t)physical_end) + PAGE_MASK) & ~PAGE_MASK; md_addr.pv_va = md_addr.pv_pa = MDROOT_ADDR; - kerneldatasize = (u_int32_t)&end - (u_int32_t)KERNVIRTADDR; - symbolsize = 0; freemempos = (vm_offset_t)round_page(physical_freestart); memset((void *)freemempos, 0, 256*1024); /* Define a macro to simplify memory allocation */ @@ -265,14 +261,12 @@ } } - valloc_pages(systempage, 1); - /* * Allocate a page for the system page mapped to V0x00000000 * This page will just contain the system vectors and can be * shared by all processes. */ - pt_size = round_page(freemempos) - physical_freestart; + valloc_pages(systempage, 1); /* Allocate stacks for all modes */ valloc_pages(irqstack, IRQ_STACK_SIZE); ==== //depot/projects/usb/src/sys/arm/xscale/ixp425/avila_machdep.c#10 (text+ko) ==== @@ -48,7 +48,7 @@ #include "opt_msgbuf.h" #include -__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/avila_machdep.c,v 1.14 2008/12/20 03:26:09 sam Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/avila_machdep.c,v 1.15 2009/02/03 19:16:04 sam Exp $"); #define _ARM32_BUS_DMA_PRIVATE #include @@ -154,6 +154,10 @@ { IXP425_EXP_VBASE, IXP425_EXP_HWBASE, IXP425_EXP_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, }, + /* CFI Flash on the Expansion Bus */ + { IXP425_EXP_BUS_CS0_VBASE, IXP425_EXP_BUS_CS0_HWBASE, + IXP425_EXP_BUS_CS0_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, }, + /* IXP425 PCI Configuration */ { IXP425_PCI_VBASE, IXP425_PCI_HWBASE, IXP425_PCI_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_NOCACHE, }, ==== //depot/projects/usb/src/sys/arm/xscale/ixp425/files.ixp425#6 (text+ko) ==== @@ -1,4 +1,4 @@ -#$FreeBSD: src/sys/arm/xscale/ixp425/files.ixp425,v 1.7 2008/12/23 17:40:02 sam Exp $ +#$FreeBSD: src/sys/arm/xscale/ixp425/files.ixp425,v 1.8 2009/02/03 19:16:04 sam Exp $ arm/arm/bus_space_generic.c standard arm/arm/cpufunc_asm_xscale.S standard arm/arm/irq_dispatch.S standard @@ -15,6 +15,7 @@ arm/xscale/ixp425/uart_bus_ixp425.c optional uart arm/xscale/ixp425/ixp425_a4x_space.c optional uart arm/xscale/ixp425/ixp425_a4x_io.S optional uart +dev/cfi/cfi_bus_ixp4xx.c optional cfi dev/uart/uart_dev_ns8250.c optional uart # # NPE-based Ethernet support (requires qmgr also). ==== //depot/projects/usb/src/sys/arm/xscale/ixp425/ixp425.c#7 (text+ko) ==== @@ -34,7 +34,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/ixp425.c,v 1.12 2008/12/23 04:48:27 sam Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/xscale/ixp425/ixp425.c,v 1.13 2009/02/03 19:16:04 sam Exp $"); #define _ARM32_BUS_DMA_PRIVATE #include @@ -329,6 +329,8 @@ { IXP425_IO_HWBASE, IXP425_IO_SIZE, IXP425_IO_VBASE }, { IXP425_PCI_HWBASE, IXP425_PCI_SIZE, IXP425_PCI_VBASE }, { IXP425_PCI_MEM_HWBASE,IXP425_PCI_MEM_SIZE, IXP425_PCI_MEM_VBASE }, + { IXP425_EXP_BUS_CS0_HWBASE, IXP425_EXP_BUS_CS0_SIZE, + IXP425_EXP_BUS_CS0_VBASE }, /* NB: needed only for uart_cpu_getdev */ { IXP425_UART0_HWBASE, IXP425_REG_SIZE, IXP425_UART0_VBASE }, { IXP425_UART1_HWBASE, IXP425_REG_SIZE, IXP425_UART1_VBASE }, ==== //depot/projects/usb/src/sys/arm/xscale/ixp425/ixp425reg.h#4 (text+ko) ==== @@ -31,7 +31,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/arm/xscale/ixp425/ixp425reg.h,v 1.4 2008/12/23 04:48:27 sam Exp $ + * $FreeBSD: src/sys/arm/xscale/ixp425/ixp425reg.h,v 1.5 2009/02/03 19:16:04 sam Exp $ * */ @@ -76,6 +76,10 @@ * Global cache clean area * FF00 0000 --------------------------- * + * FE00 0000 --------------------------- + * 16M CFI Flash (on ext bus) + * FD00 0000 --------------------------- + * * FC00 0000 --------------------------- * PCI Data (memory space) * F800 0000 --------------------------- IXP425_PCI_MEM_VBASE @@ -649,6 +653,9 @@ #define IXP425_EXP_BUS_CSx_VBASE(i) \ (IXP425_MAC_B_VBASE + (i)*IXP425_MAC_B_SIZE) +#define IXP425_EXP_BUS_CS0_HWBASE IXP425_EXP_BUS_CSx_HWBASE(0) +#define IXP425_EXP_BUS_CS0_VBASE 0xFD000000UL +#define IXP425_EXP_BUS_CS0_SIZE 0x01000000 /* NB: 16M */ #define IXP425_EXP_BUS_CS1_HWBASE IXP425_EXP_BUS_CSx_HWBASE(1) #define IXP425_EXP_BUS_CS1_VBASE IXP425_EXP_BUS_CSx_VBASE(1) #define IXP425_EXP_BUS_CS1_SIZE 0x1000 @@ -663,7 +670,6 @@ #define IXP425_EXP_BUS_CS4_SIZE 0x1000 /* NB: not mapped (yet) */ -#define IXP425_EXP_BUS_CS0_HWBASE IXP425_EXP_BUS_CSx_HWBASE(0) #define IXP425_EXP_BUS_CS5_HWBASE IXP425_EXP_BUS_CSx_HWBASE(5) #define IXP425_EXP_BUS_CS6_HWBASE IXP425_EXP_BUS_CSx_HWBASE(6) >>> TRUNCATED FOR MAIL (1000 lines) <<<