PERFORCE change 159368 for review
Hans Petter Selasky
hselasky at FreeBSD.org
Wed Mar 18 03:40:23 PDT 2009
http://perforce.freebsd.org/chv.cgi?CH=159368
Change 159368 by hselasky at hselasky_laptop001 on 2009/03/18 10:39:44
IFC @ 159365
Affected files ...
.. //depot/projects/usb/src/sys/amd64/acpica/Makefile#1 branch
.. //depot/projects/usb/src/sys/amd64/acpica/acpi_machdep.c#3 integrate
.. //depot/projects/usb/src/sys/amd64/acpica/acpi_switch.S#1 branch
.. //depot/projects/usb/src/sys/amd64/acpica/acpi_wakecode.S#1 branch
.. //depot/projects/usb/src/sys/amd64/acpica/acpi_wakeup.c#2 integrate
.. //depot/projects/usb/src/sys/amd64/acpica/genwakecode.sh#1 branch
.. //depot/projects/usb/src/sys/amd64/acpica/genwakedata.sh#1 branch
.. //depot/projects/usb/src/sys/amd64/amd64/amd64_mem.c#5 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/apic_vector.S#3 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/cpu_switch.S#11 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/db_trace.c#7 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/elf_machdep.c#5 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/genassym.c#11 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/machdep.c#14 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/mp_machdep.c#19 integrate
.. //depot/projects/usb/src/sys/amd64/amd64/pmap.c#19 integrate
.. //depot/projects/usb/src/sys/amd64/conf/NOTES#17 integrate
.. //depot/projects/usb/src/sys/amd64/conf/XENHVM#1 branch
.. //depot/projects/usb/src/sys/amd64/include/apicvar.h#7 integrate
.. //depot/projects/usb/src/sys/amd64/include/elf.h#4 integrate
.. //depot/projects/usb/src/sys/amd64/include/pcb.h#7 integrate
.. //depot/projects/usb/src/sys/amd64/include/pcpu.h#6 integrate
.. //depot/projects/usb/src/sys/amd64/include/smp.h#7 integrate
.. //depot/projects/usb/src/sys/amd64/include/xen/hypercall.h#1 branch
.. //depot/projects/usb/src/sys/amd64/include/xen/synch_bitops.h#1 branch
.. //depot/projects/usb/src/sys/amd64/include/xen/xen-os.h#1 branch
.. //depot/projects/usb/src/sys/amd64/include/xen/xenfunc.h#1 branch
.. //depot/projects/usb/src/sys/amd64/include/xen/xenpmap.h#1 branch
.. //depot/projects/usb/src/sys/amd64/include/xen/xenvar.h#1 branch
.. //depot/projects/usb/src/sys/amd64/linux32/linux32_sysvec.c#16 integrate
.. //depot/projects/usb/src/sys/arm/arm/elf_machdep.c#6 integrate
.. //depot/projects/usb/src/sys/arm/conf/CAMBRIA#5 integrate
.. //depot/projects/usb/src/sys/arm/conf/CAMBRIA.hints#2 integrate
.. //depot/projects/usb/src/sys/arm/include/elf.h#5 integrate
.. //depot/projects/usb/src/sys/arm/xscale/ixp425/avila_machdep.c#13 integrate
.. //depot/projects/usb/src/sys/arm/xscale/ixp425/if_npe.c#8 integrate
.. //depot/projects/usb/src/sys/arm/xscale/ixp425/ixp425.c#8 integrate
.. //depot/projects/usb/src/sys/arm/xscale/ixp425/ixp425_pci.c#6 integrate
.. //depot/projects/usb/src/sys/arm/xscale/ixp425/ixp425reg.h#6 integrate
.. //depot/projects/usb/src/sys/boot/forth/loader.conf#15 integrate
.. //depot/projects/usb/src/sys/boot/i386/libi386/bioscd.c#4 integrate
.. //depot/projects/usb/src/sys/boot/i386/libi386/biosdisk.c#8 integrate
.. //depot/projects/usb/src/sys/boot/i386/libi386/libi386.h#3 integrate
.. //depot/projects/usb/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c#7 integrate
.. //depot/projects/usb/src/sys/compat/ia32/ia32_sysvec.c#9 integrate
.. //depot/projects/usb/src/sys/compat/linux/linux_emul.h#5 integrate
.. //depot/projects/usb/src/sys/compat/linux/linux_futex.c#8 integrate
.. //depot/projects/usb/src/sys/compat/linux/linux_futex.h#6 integrate
.. //depot/projects/usb/src/sys/compat/ndis/hal_var.h#3 integrate
.. //depot/projects/usb/src/sys/compat/ndis/subr_hal.c#4 integrate
.. //depot/projects/usb/src/sys/compat/ndis/subr_ntoskrnl.c#12 integrate
.. //depot/projects/usb/src/sys/compat/ndis/subr_usbd.c#9 integrate
.. //depot/projects/usb/src/sys/compat/svr4/svr4_sysvec.c#7 integrate
.. //depot/projects/usb/src/sys/conf/NOTES#30 integrate
.. //depot/projects/usb/src/sys/conf/files#55 integrate
.. //depot/projects/usb/src/sys/conf/files.amd64#18 integrate
.. //depot/projects/usb/src/sys/conf/files.i386#20 integrate
.. //depot/projects/usb/src/sys/conf/files.pc98#17 integrate
.. //depot/projects/usb/src/sys/conf/options#22 integrate
.. //depot/projects/usb/src/sys/conf/options.amd64#8 integrate
.. //depot/projects/usb/src/sys/conf/options.arm#10 integrate
.. //depot/projects/usb/src/sys/dev/acpica/acpi.c#14 integrate
.. //depot/projects/usb/src/sys/dev/acpica/acpi_ec.c#5 integrate
.. //depot/projects/usb/src/sys/dev/amdtemp/amdtemp.c#1 branch
.. //depot/projects/usb/src/sys/dev/ata/ata-card.c#5 integrate
.. //depot/projects/usb/src/sys/dev/ath/ath_hal/ah.c#4 integrate
.. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5416/ar5416.h#4 integrate
.. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5416/ar5416_attach.c#3 integrate
.. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5416/ar5416_reset.c#5 integrate
.. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5416/ar9280.c#1 branch
.. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5416/ar9280.h#1 branch
.. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5416/ar9280_attach.c#1 branch
.. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5416/ar9280v1.ini#1 branch
.. //depot/projects/usb/src/sys/dev/ath/ath_hal/ar5416/ar9280v2.ini#1 branch
.. //depot/projects/usb/src/sys/dev/atkbdc/psm.c#10 integrate
.. //depot/projects/usb/src/sys/dev/cardbus/cardbus.c#11 integrate
.. //depot/projects/usb/src/sys/dev/cardbus/cardbus_cis.c#7 integrate
.. //depot/projects/usb/src/sys/dev/cfi/cfi_disk.c#2 integrate
.. //depot/projects/usb/src/sys/dev/cxgb/bin2h.pl#2 integrate
.. //depot/projects/usb/src/sys/dev/cxgb/common/cxgb_ael1002.c#9 integrate
.. //depot/projects/usb/src/sys/dev/cxgb/common/cxgb_common.h#9 integrate
.. //depot/projects/usb/src/sys/dev/cxgb/common/cxgb_t3_cpl.h#7 integrate
.. //depot/projects/usb/src/sys/dev/cxgb/common/cxgb_t3_hw.c#11 integrate
.. //depot/projects/usb/src/sys/dev/cxgb/common/cxgb_xgmac.c#9 integrate
.. //depot/projects/usb/src/sys/dev/cxgb/cxgb_adapter.h#9 integrate
.. //depot/projects/usb/src/sys/dev/cxgb/cxgb_ioctl.h#6 integrate
.. //depot/projects/usb/src/sys/dev/cxgb/cxgb_main.c#13 integrate
.. //depot/projects/usb/src/sys/dev/cxgb/cxgb_multiq.c#5 integrate
.. //depot/projects/usb/src/sys/dev/cxgb/cxgb_sge.c#11 integrate
.. //depot/projects/usb/src/sys/dev/cxgb/cxgb_t3fw.c#3 integrate
.. //depot/projects/usb/src/sys/dev/cxgb/cxgb_t3fw.h#2 integrate
.. //depot/projects/usb/src/sys/dev/cxgb/t3c_protocol_sram.h#1 branch
.. //depot/projects/usb/src/sys/dev/cxgb/t3c_tp_eeprom.h#1 branch
.. //depot/projects/usb/src/sys/dev/dcons/dcons_os.c#10 integrate
.. //depot/projects/usb/src/sys/dev/drm/drmP.h#11 integrate
.. //depot/projects/usb/src/sys/dev/drm/drm_bufs.c#6 integrate
.. //depot/projects/usb/src/sys/dev/drm/drm_drv.c#10 integrate
.. //depot/projects/usb/src/sys/dev/drm/drm_linux_list.h#3 integrate
.. //depot/projects/usb/src/sys/dev/drm/drm_lock.c#5 integrate
.. //depot/projects/usb/src/sys/dev/drm/drm_vm.c#4 integrate
.. //depot/projects/usb/src/sys/dev/drm/r600_cp.c#2 integrate
.. //depot/projects/usb/src/sys/dev/drm/radeon_cp.c#7 integrate
.. //depot/projects/usb/src/sys/dev/drm/radeon_irq.c#7 integrate
.. //depot/projects/usb/src/sys/dev/ed/if_ed_pccard.c#6 integrate
.. //depot/projects/usb/src/sys/dev/fe/if_fe_pccard.c#4 integrate
.. //depot/projects/usb/src/sys/dev/firewire/firewire.c#11 integrate
.. //depot/projects/usb/src/sys/dev/if_ndis/if_ndis.c#20 integrate
.. //depot/projects/usb/src/sys/dev/if_ndis/if_ndis_usb.c#15 integrate
.. //depot/projects/usb/src/sys/dev/if_ndis/if_ndisvar.h#11 integrate
.. //depot/projects/usb/src/sys/dev/k8temp/k8temp.c#6 delete
.. //depot/projects/usb/src/sys/dev/md/md.c#11 integrate
.. //depot/projects/usb/src/sys/dev/mmc/mmc.c#9 integrate
.. //depot/projects/usb/src/sys/dev/pccard/card_if.m#3 integrate
.. //depot/projects/usb/src/sys/dev/pccard/pccard_cis.c#7 integrate
.. //depot/projects/usb/src/sys/dev/pccard/pccarddevs#10 integrate
.. //depot/projects/usb/src/sys/dev/pccbb/pccbb.c#12 integrate
.. //depot/projects/usb/src/sys/dev/pci/pci_pci.c#9 integrate
.. //depot/projects/usb/src/sys/dev/pci/pcib_private.h#6 integrate
.. //depot/projects/usb/src/sys/dev/ppbus/lpbb.c#6 integrate
.. //depot/projects/usb/src/sys/dev/sound/pci/hda/hdac.c#26 integrate
.. //depot/projects/usb/src/sys/dev/txp/if_txp.c#7 integrate
.. //depot/projects/usb/src/sys/dev/txp/if_txpreg.h#3 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/atmegadci.c#5 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/atmegadci.h#3 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/atmegadci_atmelarm.c#3 integrate
.. //depot/projects/usb/src/sys/dev/usb/controller/usb_controller.c#3 integrate
.. //depot/projects/usb/src/sys/dev/usb/image/uscanner.c#6 integrate
.. //depot/projects/usb/src/sys/dev/usb/serial/ulpt.c#6 integrate
.. //depot/projects/usb/src/sys/dev/usb/storage/umass.c#5 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_dev.c#10 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_dev.h#7 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_device.h#6 integrate
.. //depot/projects/usb/src/sys/dev/usb/usb_hid.c#25 integrate
.. //depot/projects/usb/src/sys/dev/usb/usbdevs#50 integrate
.. //depot/projects/usb/src/sys/dev/xen/balloon/balloon.c#2 integrate
.. //depot/projects/usb/src/sys/dev/xen/blkfront/blkfront.c#5 integrate
.. //depot/projects/usb/src/sys/dev/xen/console/console.c#4 integrate
.. //depot/projects/usb/src/sys/dev/xen/console/xencons_ring.c#3 integrate
.. //depot/projects/usb/src/sys/dev/xen/netfront/netfront.c#7 integrate
.. //depot/projects/usb/src/sys/dev/xen/xenpci/evtchn.c#1 branch
.. //depot/projects/usb/src/sys/dev/xen/xenpci/machine_reboot.c#1 branch
.. //depot/projects/usb/src/sys/dev/xen/xenpci/xenpci.c#1 branch
.. //depot/projects/usb/src/sys/dev/xen/xenpci/xenpcivar.h#1 branch
.. //depot/projects/usb/src/sys/fs/cd9660/cd9660_vfsops.c#8 integrate
.. //depot/projects/usb/src/sys/fs/devfs/devfs_vnops.c#18 integrate
.. //depot/projects/usb/src/sys/fs/nullfs/null_vnops.c#12 integrate
.. //depot/projects/usb/src/sys/fs/udf/udf_vfsops.c#12 integrate
.. //depot/projects/usb/src/sys/geom/eli/g_eli.c#9 integrate
.. //depot/projects/usb/src/sys/geom/geom_redboot.c#2 integrate
.. //depot/projects/usb/src/sys/geom/part/g_part_pc98.c#9 integrate
.. //depot/projects/usb/src/sys/gnu/fs/xfs/FreeBSD/xfs_buf.c#5 integrate
.. //depot/projects/usb/src/sys/i386/conf/NOTES#20 integrate
.. //depot/projects/usb/src/sys/i386/i386/elf_machdep.c#5 integrate
.. //depot/projects/usb/src/sys/i386/i386/i686_mem.c#5 integrate
.. //depot/projects/usb/src/sys/i386/i386/k6_mem.c#4 integrate
.. //depot/projects/usb/src/sys/i386/i386/pmap.c#15 integrate
.. //depot/projects/usb/src/sys/i386/include/elf.h#4 integrate
.. //depot/projects/usb/src/sys/i386/include/xen/xenpmap.h#2 integrate
.. //depot/projects/usb/src/sys/i386/linux/linux_sysvec.c#12 integrate
.. //depot/projects/usb/src/sys/ia64/ia64/elf_machdep.c#6 integrate
.. //depot/projects/usb/src/sys/ia64/include/elf.h#4 integrate
.. //depot/projects/usb/src/sys/kern/imgact_elf.c#10 integrate
.. //depot/projects/usb/src/sys/kern/kern_exec.c#15 integrate
.. //depot/projects/usb/src/sys/kern/kern_ktrace.c#9 integrate
.. //depot/projects/usb/src/sys/kern/kern_lock.c#12 integrate
.. //depot/projects/usb/src/sys/kern/kern_mutex.c#12 integrate
.. //depot/projects/usb/src/sys/kern/kern_poll.c#10 integrate
.. //depot/projects/usb/src/sys/kern/kern_rwlock.c#13 integrate
.. //depot/projects/usb/src/sys/kern/kern_sx.c#13 integrate
.. //depot/projects/usb/src/sys/kern/kern_sysctl.c#12 integrate
.. //depot/projects/usb/src/sys/kern/kern_thread.c#14 integrate
.. //depot/projects/usb/src/sys/kern/kern_umtx.c#10 integrate
.. //depot/projects/usb/src/sys/kern/sched_ule.c#15 integrate
.. //depot/projects/usb/src/sys/kern/subr_bus.c#19 integrate
.. //depot/projects/usb/src/sys/kern/subr_lock.c#10 integrate
.. //depot/projects/usb/src/sys/kern/subr_param.c#9 integrate
.. //depot/projects/usb/src/sys/kern/subr_smp.c#11 integrate
.. //depot/projects/usb/src/sys/kern/sys_generic.c#13 integrate
.. //depot/projects/usb/src/sys/kern/sys_pipe.c#11 integrate
.. //depot/projects/usb/src/sys/kern/uipc_sem.c#9 integrate
.. //depot/projects/usb/src/sys/kern/vfs_bio.c#15 integrate
.. //depot/projects/usb/src/sys/kern/vfs_lookup.c#12 integrate
.. //depot/projects/usb/src/sys/kern/vfs_vnops.c#16 integrate
.. //depot/projects/usb/src/sys/kern/vnode_if.src#12 integrate
.. //depot/projects/usb/src/sys/mips/include/elf.h#3 integrate
.. //depot/projects/usb/src/sys/mips/mips/elf64_machdep.c#2 integrate
.. //depot/projects/usb/src/sys/mips/mips/elf_machdep.c#5 integrate
.. //depot/projects/usb/src/sys/modules/Makefile#28 integrate
.. //depot/projects/usb/src/sys/modules/amdtemp/Makefile#1 branch
.. //depot/projects/usb/src/sys/modules/k8temp/Makefile#2 delete
.. //depot/projects/usb/src/sys/modules/netgraph/Makefile#7 integrate
.. //depot/projects/usb/src/sys/net/if.c#19 integrate
.. //depot/projects/usb/src/sys/net/if_bridge.c#13 integrate
.. //depot/projects/usb/src/sys/net/if_loop.c#16 integrate
.. //depot/projects/usb/src/sys/net/if_tap.c#9 integrate
.. //depot/projects/usb/src/sys/net/if_var.h#13 integrate
.. //depot/projects/usb/src/sys/netinet/igmp.c#10 integrate
.. //depot/projects/usb/src/sys/netinet/in.c#19 integrate
.. //depot/projects/usb/src/sys/netinet/in.h#11 integrate
.. //depot/projects/usb/src/sys/netinet/in_mcast.c#11 integrate
.. //depot/projects/usb/src/sys/netinet/in_pcb.c#19 integrate
.. //depot/projects/usb/src/sys/netinet/in_pcb.h#16 integrate
.. //depot/projects/usb/src/sys/netinet/sctp.h#11 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_constants.h#15 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_indata.c#15 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_output.c#18 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_structs.h#10 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_timer.c#13 integrate
.. //depot/projects/usb/src/sys/netinet/sctp_var.h#13 integrate
.. //depot/projects/usb/src/sys/netinet/sctputil.c#18 integrate
.. //depot/projects/usb/src/sys/netinet/sctputil.h#11 integrate
.. //depot/projects/usb/src/sys/netinet/tcp_input.c#19 integrate
.. //depot/projects/usb/src/sys/netinet/tcp_subr.c#19 integrate
.. //depot/projects/usb/src/sys/netinet/tcp_timer.c#13 integrate
.. //depot/projects/usb/src/sys/netinet/tcp_timewait.c#10 integrate
.. //depot/projects/usb/src/sys/netinet/tcp_usrreq.c#16 integrate
.. //depot/projects/usb/src/sys/netinet6/in6.c#18 integrate
.. //depot/projects/usb/src/sys/netinet6/in6_ifattach.c#15 integrate
.. //depot/projects/usb/src/sys/netinet6/in6_pcb.c#15 integrate
.. //depot/projects/usb/src/sys/netinet6/mld6.c#11 integrate
.. //depot/projects/usb/src/sys/netnatm/natm.c#5 integrate
.. //depot/projects/usb/src/sys/nfsclient/nfs_vnops.c#18 integrate
.. //depot/projects/usb/src/sys/pc98/conf/NOTES#15 integrate
.. //depot/projects/usb/src/sys/pci/intpm.c#7 integrate
.. //depot/projects/usb/src/sys/powerpc/aim/mmu_oea.c#5 integrate
.. //depot/projects/usb/src/sys/powerpc/include/elf.h#4 integrate
.. //depot/projects/usb/src/sys/powerpc/include/spr.h#6 integrate
.. //depot/projects/usb/src/sys/powerpc/mpc85xx/mpc85xx.c#3 integrate
.. //depot/projects/usb/src/sys/powerpc/mpc85xx/mpc85xx.h#2 integrate
.. //depot/projects/usb/src/sys/powerpc/mpc85xx/ocpbus.c#5 integrate
.. //depot/projects/usb/src/sys/powerpc/powerpc/elf_machdep.c#5 integrate
.. //depot/projects/usb/src/sys/security/mac/mac_atalk.c#2 integrate
.. //depot/projects/usb/src/sys/security/mac/mac_audit.c#6 integrate
.. //depot/projects/usb/src/sys/security/mac/mac_cred.c#3 integrate
.. //depot/projects/usb/src/sys/security/mac/mac_framework.c#7 integrate
.. //depot/projects/usb/src/sys/security/mac/mac_inet.c#11 integrate
.. //depot/projects/usb/src/sys/security/mac/mac_inet6.c#4 integrate
.. //depot/projects/usb/src/sys/security/mac/mac_internal.h#9 integrate
.. //depot/projects/usb/src/sys/security/mac/mac_net.c#7 integrate
.. //depot/projects/usb/src/sys/security/mac/mac_pipe.c#7 integrate
.. //depot/projects/usb/src/sys/security/mac/mac_posix_sem.c#9 integrate
.. //depot/projects/usb/src/sys/security/mac/mac_posix_shm.c#4 integrate
.. //depot/projects/usb/src/sys/security/mac/mac_priv.c#4 integrate
.. //depot/projects/usb/src/sys/security/mac/mac_process.c#11 integrate
.. //depot/projects/usb/src/sys/security/mac/mac_socket.c#7 integrate
.. //depot/projects/usb/src/sys/security/mac/mac_syscalls.c#7 integrate
.. //depot/projects/usb/src/sys/security/mac/mac_system.c#6 integrate
.. //depot/projects/usb/src/sys/security/mac/mac_sysv_msg.c#7 integrate
.. //depot/projects/usb/src/sys/security/mac/mac_sysv_sem.c#7 integrate
.. //depot/projects/usb/src/sys/security/mac/mac_sysv_shm.c#7 integrate
.. //depot/projects/usb/src/sys/security/mac/mac_vfs.c#9 integrate
.. //depot/projects/usb/src/sys/security/mac_portacl/mac_portacl.c#9 integrate
.. //depot/projects/usb/src/sys/sparc64/conf/GENERIC#15 integrate
.. //depot/projects/usb/src/sys/sparc64/include/elf.h#4 integrate
.. //depot/projects/usb/src/sys/sparc64/sparc64/elf_machdep.c#7 integrate
.. //depot/projects/usb/src/sys/sun4v/include/elf.h#3 integrate
.. //depot/projects/usb/src/sys/sys/_pthreadtypes.h#2 integrate
.. //depot/projects/usb/src/sys/sys/aio.h#3 integrate
.. //depot/projects/usb/src/sys/sys/buf.h#6 integrate
.. //depot/projects/usb/src/sys/sys/diskpc98.h#2 integrate
.. //depot/projects/usb/src/sys/sys/elf_common.h#11 integrate
.. //depot/projects/usb/src/sys/sys/imgact.h#5 integrate
.. //depot/projects/usb/src/sys/sys/imgact_elf.h#4 integrate
.. //depot/projects/usb/src/sys/sys/ktrace.h#3 integrate
.. //depot/projects/usb/src/sys/sys/lock_profile.h#6 integrate
.. //depot/projects/usb/src/sys/sys/memrange.h#2 integrate
.. //depot/projects/usb/src/sys/sys/mount.h#16 integrate
.. //depot/projects/usb/src/sys/sys/param.h#25 integrate
.. //depot/projects/usb/src/sys/sys/pipe.h#4 integrate
.. //depot/projects/usb/src/sys/sys/proc.h#17 integrate
.. //depot/projects/usb/src/sys/sys/sem.h#3 integrate
.. //depot/projects/usb/src/sys/sys/shm.h#4 integrate
.. //depot/projects/usb/src/sys/sys/smp.h#5 integrate
.. //depot/projects/usb/src/sys/sys/stat.h#6 integrate
.. //depot/projects/usb/src/sys/sys/syslog.h#2 integrate
.. //depot/projects/usb/src/sys/sys/termios.h#6 integrate
.. //depot/projects/usb/src/sys/sys/time.h#7 integrate
.. //depot/projects/usb/src/sys/sys/uio.h#3 integrate
.. //depot/projects/usb/src/sys/ufs/ffs/ffs_vfsops.c#17 integrate
.. //depot/projects/usb/src/sys/ufs/ffs/ffs_vnops.c#12 integrate
.. //depot/projects/usb/src/sys/ufs/ufs/inode.h#6 integrate
.. //depot/projects/usb/src/sys/xen/evtchn/evtchn.c#5 integrate
.. //depot/projects/usb/src/sys/xen/evtchn/evtchn_dev.c#3 integrate
.. //depot/projects/usb/src/sys/xen/features.c#3 integrate
.. //depot/projects/usb/src/sys/xen/features.h#1 branch
.. //depot/projects/usb/src/sys/xen/gnttab.c#6 integrate
.. //depot/projects/usb/src/sys/xen/gnttab.h#6 integrate
.. //depot/projects/usb/src/sys/xen/hypervisor.h#2 integrate
.. //depot/projects/usb/src/sys/xen/interface/arch-x86/xen.h#3 integrate
.. //depot/projects/usb/src/sys/xen/interface/hvm/params.h#3 integrate
.. //depot/projects/usb/src/sys/xen/reboot.c#1 branch
.. //depot/projects/usb/src/sys/xen/xen_intr.h#2 integrate
.. //depot/projects/usb/src/sys/xen/xenbus/xenbus_probe.c#4 integrate
.. //depot/projects/usb/src/sys/xen/xenbus/xenbus_xs.c#5 integrate
Differences ...
==== //depot/projects/usb/src/sys/amd64/acpica/acpi_machdep.c#3 (text+ko) ====
@@ -25,31 +25,56 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/acpica/acpi_machdep.c,v 1.18 2008/03/13 20:39:02 jhb Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/acpica/acpi_machdep.c,v 1.19 2009/03/17 00:48:11 jkim Exp $");
#include <sys/param.h>
#include <sys/bus.h>
#include <sys/kernel.h>
#include <sys/module.h>
+#include <sys/sysctl.h>
#include <contrib/dev/acpica/acpi.h>
#include <dev/acpica/acpivar.h>
#include <machine/nexusvar.h>
+SYSCTL_DECL(_debug_acpi);
+
+uint32_t acpi_resume_beep;
+TUNABLE_INT("debug.acpi.resume_beep", &acpi_resume_beep);
+SYSCTL_UINT(_debug_acpi, OID_AUTO, resume_beep, CTLFLAG_RW, &acpi_resume_beep,
+ 0, "Beep the PC speaker when resuming");
+uint32_t acpi_reset_video;
+TUNABLE_INT("hw.acpi.reset_video", &acpi_reset_video);
+
static int intr_model = ACPI_INTR_PIC;
+static struct apm_clone_data acpi_clone;
int
acpi_machdep_init(device_t dev)
{
- struct acpi_softc *sc;
+ struct acpi_softc *sc;
sc = devclass_get_softc(devclass_find("acpi"), 0);
+
+ /* Create a fake clone for /dev/acpi. */
+ STAILQ_INIT(&sc->apm_cdevs);
+ acpi_clone.cdev = sc->acpi_dev_t;
+ acpi_clone.acpi_sc = sc;
+ ACPI_LOCK(acpi);
+ STAILQ_INSERT_TAIL(&sc->apm_cdevs, &acpi_clone, entries);
+ ACPI_UNLOCK(acpi);
+ sc->acpi_clone = &acpi_clone;
acpi_install_wakeup_handler(sc);
if (intr_model != ACPI_INTR_PIC)
acpi_SetIntrModel(intr_model);
+ SYSCTL_ADD_UINT(&sc->acpi_sysctl_ctx,
+ SYSCTL_CHILDREN(sc->acpi_sysctl_tree), OID_AUTO,
+ "reset_video", CTLFLAG_RW, &acpi_reset_video, 0,
+ "Call the VESA reset BIOS vector on the resume path");
+
return (0);
}
==== //depot/projects/usb/src/sys/amd64/acpica/acpi_wakeup.c#2 (text+ko) ====
@@ -1,6 +1,8 @@
/*-
* Copyright (c) 2001 Takanori Watanabe <takawata at jp.freebsd.org>
* Copyright (c) 2001 Mitsuru IWASAKI <iwasaki at jp.freebsd.org>
+ * Copyright (c) 2003 Peter Wemm
+ * Copyright (c) 2008-2009 Jung-uk Kim <jkim at FreeBSD.org>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -26,21 +28,414 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/acpica/acpi_wakeup.c,v 1.22 2005/09/11 18:39:00 obrien Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/acpica/acpi_wakeup.c,v 1.23 2009/03/17 00:48:11 jkim Exp $");
#include <sys/param.h>
+#include <sys/systm.h>
#include <sys/bus.h>
+#include <sys/kernel.h>
+#include <sys/malloc.h>
+#include <sys/memrange.h>
+#include <sys/smp.h>
+#include <sys/sysctl.h>
+#include <sys/types.h>
+
+#include <vm/vm.h>
+#include <vm/pmap.h>
+
+#include <machine/intr_machdep.h>
+#include <machine/pcb.h>
+#include <machine/pmap.h>
+#include <machine/specialreg.h>
+#include <machine/vmparam.h>
+
+#ifdef SMP
+#include <machine/apicreg.h>
+#include <machine/smp.h>
+#endif
#include <contrib/dev/acpica/acpi.h>
#include <dev/acpica/acpivar.h>
+#include "acpi_wakecode.h"
+#include "acpi_wakedata.h"
+
+/* Make sure the code is less than a page and leave room for the stack. */
+CTASSERT(sizeof(wakecode) < PAGE_SIZE - 1024);
+
+#ifndef _SYS_CDEFS_H_
+#error this file needs sys/cdefs.h as a prerequisite
+#endif
+
+extern uint32_t acpi_resume_beep;
+extern uint32_t acpi_reset_video;
+
+#ifdef SMP
+extern struct xpcb *stopxpcbs;
+#else
+static struct xpcb *stopxpcbs;
+#endif
+
+int acpi_restorecpu(struct xpcb *, vm_offset_t);
+int acpi_savecpu(struct xpcb *);
+
+static void acpi_reset_tss(int cpu);
+static void acpi_alloc_wakeup_handler(void);
+static void acpi_stop_beep(void *);
+
+#ifdef SMP
+static int acpi_wakeup_ap(struct acpi_softc *, int);
+static void acpi_wakeup_cpus(struct acpi_softc *, cpumask_t);
+#endif
+
+#define WAKECODE_VADDR(sc) ((sc)->acpi_wakeaddr + (3 * PAGE_SIZE))
+#define WAKECODE_PADDR(sc) ((sc)->acpi_wakephys + (3 * PAGE_SIZE))
+#define WAKECODE_FIXUP(offset, type, val) do { \
+ type *addr; \
+ addr = (type *)(WAKECODE_VADDR(sc) + offset); \
+ *addr = val; \
+} while (0)
+
+/* Turn off bits 1&2 of the PIT, stopping the beep. */
+static void
+acpi_stop_beep(void *arg)
+{
+ outb(0x61, inb(0x61) & ~0x3);
+}
+
+#ifdef SMP
+static int
+acpi_wakeup_ap(struct acpi_softc *sc, int cpu)
+{
+ int vector = (WAKECODE_PADDR(sc) >> 12) & 0xff;
+ int apic_id = cpu_apic_ids[cpu];
+ int ms;
+
+ WAKECODE_FIXUP(wakeup_xpcb, struct xpcb *, &stopxpcbs[cpu]);
+ WAKECODE_FIXUP(wakeup_gdt, uint16_t, stopxpcbs[cpu].xpcb_gdt.rd_limit);
+ WAKECODE_FIXUP(wakeup_gdt + 2, uint64_t,
+ stopxpcbs[cpu].xpcb_gdt.rd_base);
+ WAKECODE_FIXUP(wakeup_cpu, int, cpu);
+
+ acpi_reset_tss(cpu);
+
+ /* do an INIT IPI: assert RESET */
+ lapic_ipi_raw(APIC_DEST_DESTFLD | APIC_TRIGMOD_EDGE |
+ APIC_LEVEL_ASSERT | APIC_DESTMODE_PHY | APIC_DELMODE_INIT, apic_id);
+
+ /* wait for pending status end */
+ lapic_ipi_wait(-1);
+
+ /* do an INIT IPI: deassert RESET */
+ lapic_ipi_raw(APIC_DEST_ALLESELF | APIC_TRIGMOD_LEVEL |
+ APIC_LEVEL_DEASSERT | APIC_DESTMODE_PHY | APIC_DELMODE_INIT, 0);
+
+ /* wait for pending status end */
+ DELAY(10000); /* wait ~10mS */
+ lapic_ipi_wait(-1);
+
+ /*
+ * next we do a STARTUP IPI: the previous INIT IPI might still be
+ * latched, (P5 bug) this 1st STARTUP would then terminate
+ * immediately, and the previously started INIT IPI would continue. OR
+ * the previous INIT IPI has already run. and this STARTUP IPI will
+ * run. OR the previous INIT IPI was ignored. and this STARTUP IPI
+ * will run.
+ */
+
+ /* do a STARTUP IPI */
+ lapic_ipi_raw(APIC_DEST_DESTFLD | APIC_TRIGMOD_EDGE |
+ APIC_LEVEL_DEASSERT | APIC_DESTMODE_PHY | APIC_DELMODE_STARTUP |
+ vector, apic_id);
+ lapic_ipi_wait(-1);
+ DELAY(200); /* wait ~200uS */
+
+ /*
+ * finally we do a 2nd STARTUP IPI: this 2nd STARTUP IPI should run IF
+ * the previous STARTUP IPI was cancelled by a latched INIT IPI. OR
+ * this STARTUP IPI will be ignored, as only ONE STARTUP IPI is
+ * recognized after hardware RESET or INIT IPI.
+ */
+
+ lapic_ipi_raw(APIC_DEST_DESTFLD | APIC_TRIGMOD_EDGE |
+ APIC_LEVEL_DEASSERT | APIC_DESTMODE_PHY | APIC_DELMODE_STARTUP |
+ vector, apic_id);
+ lapic_ipi_wait(-1);
+ DELAY(200); /* wait ~200uS */
+
+ /* Wait up to 5 seconds for it to start. */
+ for (ms = 0; ms < 5000; ms++) {
+ if (*(int *)(WAKECODE_VADDR(sc) + wakeup_cpu) == 0)
+ return (1); /* return SUCCESS */
+ DELAY(1000);
+ }
+ return (0); /* return FAILURE */
+}
+
+#define WARMBOOT_TARGET 0
+#define WARMBOOT_OFF (KERNBASE + 0x0467)
+#define WARMBOOT_SEG (KERNBASE + 0x0469)
+
+#define CMOS_REG (0x70)
+#define CMOS_DATA (0x71)
+#define BIOS_RESET (0x0f)
+#define BIOS_WARM (0x0a)
+
+static void
+acpi_wakeup_cpus(struct acpi_softc *sc, cpumask_t wakeup_cpus)
+{
+ uint32_t mpbioswarmvec;
+ cpumask_t map;
+ int cpu;
+ u_char mpbiosreason;
+
+ /* save the current value of the warm-start vector */
+ mpbioswarmvec = *((uint32_t *)WARMBOOT_OFF);
+ outb(CMOS_REG, BIOS_RESET);
+ mpbiosreason = inb(CMOS_DATA);
+
+ /* setup a vector to our boot code */
+ *((volatile u_short *)WARMBOOT_OFF) = WARMBOOT_TARGET;
+ *((volatile u_short *)WARMBOOT_SEG) = WAKECODE_PADDR(sc) >> 4;
+ outb(CMOS_REG, BIOS_RESET);
+ outb(CMOS_DATA, BIOS_WARM); /* 'warm-start' */
+
+ /* Wake up each AP. */
+ for (cpu = 1; cpu < mp_ncpus; cpu++) {
+ map = 1ul << cpu;
+ if ((wakeup_cpus & map) != map)
+ continue;
+ if (acpi_wakeup_ap(sc, cpu) == 0) {
+ /* restore the warmstart vector */
+ *(uint32_t *)WARMBOOT_OFF = mpbioswarmvec;
+ panic("acpi_wakeup: failed to resume AP #%d (PHY #%d)",
+ cpu, cpu_apic_ids[cpu]);
+ }
+ }
+
+ /* restore the warmstart vector */
+ *(uint32_t *)WARMBOOT_OFF = mpbioswarmvec;
+
+ outb(CMOS_REG, BIOS_RESET);
+ outb(CMOS_DATA, mpbiosreason);
+}
+#endif
+
+static void
+acpi_reset_tss(int cpu)
+{
+ uint32_t *tss;
+
+ /*
+ * We have to clear "task busy" bit in TSS to restore
+ * task register later. Otherwise, ltr causes GPF.
+ */
+ tss = (uint32_t *)&gdt[NGDT * cpu + GPROC0_SEL] + 1;
+ *tss &= ~((SDT_SYSBSY ^ SDT_SYSTSS) << 8);
+}
+
int
acpi_sleep_machdep(struct acpi_softc *sc, int state)
{
- return (0);
+ struct savefpu *stopfpu;
+#ifdef SMP
+ cpumask_t wakeup_cpus;
+#endif
+ register_t cr3, rf;
+ ACPI_STATUS status;
+ int ret;
+
+ ret = -1;
+
+ if (sc->acpi_wakeaddr == 0ul)
+ return (ret);
+
+#ifdef SMP
+ wakeup_cpus = PCPU_GET(other_cpus);
+#endif
+
+ AcpiSetFirmwareWakingVector(WAKECODE_PADDR(sc));
+
+ rf = intr_disable();
+ intr_suspend();
+
+ /*
+ * Temporarily switch to the kernel pmap because it provides
+ * an identity mapping (setup at boot) for the low physical
+ * memory region containing the wakeup code.
+ */
+ cr3 = rcr3();
+ load_cr3(KPML4phys);
+
+ stopfpu = &stopxpcbs[0].xpcb_pcb.pcb_save;
+ if (acpi_savecpu(&stopxpcbs[0])) {
+ fpugetregs(curthread, stopfpu);
+
+#ifdef SMP
+ if (wakeup_cpus != 0 && suspend_cpus(wakeup_cpus) == 0) {
+ device_printf(sc->acpi_dev,
+ "Failed to suspend APs: CPU mask = 0x%jx\n",
+ (uintmax_t)(wakeup_cpus & ~stopped_cpus));
+ goto out;
+ }
+#endif
+
+ WAKECODE_FIXUP(resume_beep, uint32_t, acpi_resume_beep);
+ WAKECODE_FIXUP(reset_video, uint32_t, acpi_reset_video);
+
+ WAKECODE_FIXUP(wakeup_xpcb, struct xpcb *, &stopxpcbs[0]);
+ WAKECODE_FIXUP(wakeup_gdt, uint16_t,
+ stopxpcbs[0].xpcb_gdt.rd_limit);
+ WAKECODE_FIXUP(wakeup_gdt + 2, uint64_t,
+ stopxpcbs[0].xpcb_gdt.rd_base);
+ WAKECODE_FIXUP(wakeup_cpu, int, 0);
+
+ acpi_reset_tss(0);
+
+ /* Call ACPICA to enter the desired sleep state */
+ if (state == ACPI_STATE_S4 && sc->acpi_s4bios)
+ status = AcpiEnterSleepStateS4bios();
+ else
+ status = AcpiEnterSleepState(state);
+
+ if (status != AE_OK) {
+ device_printf(sc->acpi_dev,
+ "AcpiEnterSleepState failed - %s\n",
+ AcpiFormatException(status));
+ goto out;
+ }
+
+ for (;;)
+ ia32_pause();
+ } else {
+ fpusetregs(curthread, stopfpu);
+
+ WAKECODE_FIXUP(resume_beep, uint32_t, 0);
+ WAKECODE_FIXUP(reset_video, uint32_t, 0);
+#ifdef SMP
+ if (wakeup_cpus != 0)
+ acpi_wakeup_cpus(sc, wakeup_cpus);
+#endif
+ ret = 0;
+ }
+
+out:
+#ifdef SMP
+ if (wakeup_cpus != 0)
+ restart_cpus(wakeup_cpus);
+#endif
+
+ load_cr3(cr3);
+ intr_resume();
+ intr_restore(rf);
+
+ AcpiSetFirmwareWakingVector(0);
+
+ if (ret == 0 && mem_range_softc.mr_op != NULL &&
+ mem_range_softc.mr_op->reinit != NULL)
+ mem_range_softc.mr_op->reinit(&mem_range_softc);
+
+ /* If we beeped, turn it off after a delay. */
+ if (acpi_resume_beep)
+ timeout(acpi_stop_beep, NULL, 3 * hz);
+
+ return (ret);
+}
+
+static vm_offset_t acpi_wakeaddr;
+
+static void
+acpi_alloc_wakeup_handler(void)
+{
+ void *wakeaddr;
+
+ if (!cold)
+ return;
+
+ /*
+ * Specify the region for our wakeup code. We want it in the low 1 MB
+ * region, excluding video memory and above (0xa0000). We ask for
+ * it to be page-aligned, just to be safe.
+ */
+ wakeaddr = contigmalloc(4 * PAGE_SIZE, M_DEVBUF, M_NOWAIT, 0, 0x9ffff,
+ PAGE_SIZE, 0ul);
+ if (wakeaddr == NULL) {
+ printf("%s: can't alloc wake memory\n", __func__);
+ return;
+ }
+ stopxpcbs = malloc(mp_ncpus * sizeof(*stopxpcbs), M_DEVBUF, M_NOWAIT);
+ if (stopxpcbs == NULL) {
+ contigfree(wakeaddr, 4 * PAGE_SIZE, M_DEVBUF);
+ printf("%s: can't alloc CPU state memory\n", __func__);
+ return;
+ }
+ acpi_wakeaddr = (vm_offset_t)wakeaddr;
}
+SYSINIT(acpiwakeup, SI_SUB_KMEM, SI_ORDER_ANY, acpi_alloc_wakeup_handler, 0);
+
void
acpi_install_wakeup_handler(struct acpi_softc *sc)
{
+ uint64_t *pt4, *pt3, *pt2;
+ int i;
+
+ if (acpi_wakeaddr == 0ul)
+ return;
+
+ sc->acpi_wakeaddr = acpi_wakeaddr;
+ sc->acpi_wakephys = vtophys(acpi_wakeaddr);
+
+ bcopy(wakecode, (void *)WAKECODE_VADDR(sc), sizeof(wakecode));
+
+ /* Patch GDT base address, ljmp targets and page table base address. */
+ WAKECODE_FIXUP((bootgdtdesc + 2), uint32_t,
+ WAKECODE_PADDR(sc) + bootgdt);
+ WAKECODE_FIXUP((wakeup_sw32 + 2), uint32_t,
+ WAKECODE_PADDR(sc) + wakeup_32);
+ WAKECODE_FIXUP((wakeup_sw64 + 1), uint32_t,
+ WAKECODE_PADDR(sc) + wakeup_64);
+ WAKECODE_FIXUP(wakeup_pagetables, uint32_t, sc->acpi_wakephys);
+
+ /* Save pointers to some global data. */
+ WAKECODE_FIXUP(wakeup_retaddr, void *, acpi_restorecpu);
+ WAKECODE_FIXUP(wakeup_kpml4, uint64_t, KPML4phys);
+ WAKECODE_FIXUP(wakeup_ctx, vm_offset_t,
+ WAKECODE_VADDR(sc) + wakeup_ctx);
+ WAKECODE_FIXUP(wakeup_efer, uint64_t, rdmsr(MSR_EFER));
+ WAKECODE_FIXUP(wakeup_pat, uint64_t, rdmsr(MSR_PAT));
+ WAKECODE_FIXUP(wakeup_star, uint64_t, rdmsr(MSR_STAR));
+ WAKECODE_FIXUP(wakeup_lstar, uint64_t, rdmsr(MSR_LSTAR));
+ WAKECODE_FIXUP(wakeup_cstar, uint64_t, rdmsr(MSR_CSTAR));
+ WAKECODE_FIXUP(wakeup_sfmask, uint64_t, rdmsr(MSR_SF_MASK));
+
+ /* Build temporary page tables below realmode code. */
+ pt4 = (uint64_t *)acpi_wakeaddr;
+ pt3 = pt4 + (PAGE_SIZE) / sizeof(uint64_t);
+ pt2 = pt3 + (PAGE_SIZE) / sizeof(uint64_t);
+
+ /* Create the initial 1GB replicated page tables */
+ for (i = 0; i < 512; i++) {
+ /*
+ * Each slot of the level 4 pages points
+ * to the same level 3 page
+ */
+ pt4[i] = (uint64_t)(sc->acpi_wakephys + PAGE_SIZE);
+ pt4[i] |= PG_V | PG_RW | PG_U;
+
+ /*
+ * Each slot of the level 3 pages points
+ * to the same level 2 page
+ */
+ pt3[i] = (uint64_t)(sc->acpi_wakephys + (2 * PAGE_SIZE));
+ pt3[i] |= PG_V | PG_RW | PG_U;
+
+ /* The level 2 page slots are mapped with 2MB pages for 1GB. */
+ pt2[i] = i * (2 * 1024 * 1024);
+ pt2[i] |= PG_V | PG_RW | PG_PS | PG_U;
+ }
+
+ if (bootverbose)
+ device_printf(sc->acpi_dev, "wakeup code va %p pa %p\n",
+ (void *)sc->acpi_wakeaddr, (void *)sc->acpi_wakephys);
}
==== //depot/projects/usb/src/sys/amd64/amd64/amd64_mem.c#5 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/amd64_mem.c,v 1.31 2009/01/12 19:17:35 jkim Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/amd64_mem.c,v 1.32 2009/03/17 00:48:11 jkim Exp $");
#include <sys/param.h>
#include <sys/kernel.h>
@@ -73,11 +73,13 @@
static int amd64_mrset(struct mem_range_softc *sc,
struct mem_range_desc *mrd, int *arg);
static void amd64_mrAPinit(struct mem_range_softc *sc);
+static void amd64_mrreinit(struct mem_range_softc *sc);
static struct mem_range_ops amd64_mrops = {
amd64_mrinit,
amd64_mrset,
- amd64_mrAPinit
+ amd64_mrAPinit,
+ amd64_mrreinit
};
/* XXX for AP startup hook */
@@ -668,6 +670,30 @@
wrmsr(MSR_MTRRdefType, mtrrdef);
}
+/*
+ * Re-initialise running CPU(s) MTRRs to match the ranges in the descriptor
+ * list.
+ *
+ * XXX Must be called with interrupts enabled.
+ */
+static void
+amd64_mrreinit(struct mem_range_softc *sc)
+{
+#ifdef SMP
+ /*
+ * We should use ipi_all_but_self() to call other CPUs into a
+ * locking gate, then call a target function to do this work.
+ * The "proper" solution involves a generalised locking gate
+ * implementation, not ready yet.
+ */
+ smp_rendezvous(NULL, (void *)amd64_mrAPinit, NULL, sc);
+#else
+ disable_intr(); /* disable interrupts */
+ amd64_mrAPinit(sc);
+ enable_intr();
+#endif
+}
+
static void
amd64_mem_drvinit(void *unused)
{
==== //depot/projects/usb/src/sys/amd64/amd64/apic_vector.S#3 (text+ko) ====
@@ -28,7 +28,7 @@
* SUCH DAMAGE.
*
* from: vector.s, 386BSD 0.1 unknown origin
- * $FreeBSD: src/sys/amd64/amd64/apic_vector.S,v 1.110 2006/12/17 06:48:39 kmacy Exp $
+ * $FreeBSD: src/sys/amd64/amd64/apic_vector.S,v 1.111 2009/03/17 00:48:11 jkim Exp $
*/
/*
@@ -224,6 +224,22 @@
iretq
/*
+ * Executed by a CPU when it receives an IPI_SUSPEND from another CPU.
+ */
+ .text
+ SUPERALIGN_TEXT
+IDTVEC(cpususpend)
+ PUSH_FRAME
+
+ movq lapic, %rax
+ movl $0, LA_EOI(%rax) /* End Of Interrupt to APIC */
+
+ call cpususpend_handler
+
+ POP_FRAME
+ iretq
+
+/*
* Executed by a CPU when it receives a RENDEZVOUS IPI from another CPU.
*
* - Calls the generic rendezvous action function.
==== //depot/projects/usb/src/sys/amd64/amd64/cpu_switch.S#11 (text+ko) ====
@@ -30,7 +30,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/amd64/amd64/cpu_switch.S,v 1.166 2009/01/31 11:37:21 obrien Exp $
+ * $FreeBSD: src/sys/amd64/amd64/cpu_switch.S,v 1.167 2009/03/17 00:48:11 jkim Exp $
*/
#include <machine/asmacros.h>
@@ -325,9 +325,8 @@
movq %r11,%dr6
movq %rax,%dr7
jmp done_load_dr
+END(cpu_switch)
-END(cpu_switch)
-
/*
* savectx(pcb)
* Update pcb, saving current processor state.
@@ -386,3 +385,74 @@
ret
END(savectx)
+
+/*
+ * savectx2(xpcb)
+ * Update xpcb, saving current processor state.
+ */
+ENTRY(savectx2)
+ /* Fetch XPCB. */
+ movq %rdi,%r8
+
+ /* Save caller's return address. */
+ movq (%rsp),%rax
+ movq %rax,PCB_RIP(%r8)
+
+ mov %ds,PCB_DS(%r8)
+ mov %es,PCB_ES(%r8)
+ mov %ss,XPCB_SS(%r8)
+ mov %fs,PCB_FS(%r8)
+ mov %gs,PCB_GS(%r8)
+
+ movq %rbx,PCB_RBX(%r8)
+ movq %rsp,PCB_RSP(%r8)
+ movq %rbp,PCB_RBP(%r8)
+ movq %r12,PCB_R12(%r8)
+ movq %r13,PCB_R13(%r8)
+ movq %r14,PCB_R14(%r8)
+ movq %r15,PCB_R15(%r8)
+
+ movq %cr0,%rax
+ movq %rax,XPCB_CR0(%r8)
+ movq %cr2,%rax
+ movq %rax,XPCB_CR2(%r8)
+ movq %cr4,%rax
+ movq %rax,XPCB_CR4(%r8)
+
+ movq %dr0,%rax
+ movq %rax,PCB_DR0(%r8)
+ movq %dr1,%rax
+ movq %rax,PCB_DR1(%r8)
+ movq %dr2,%rax
+ movq %rax,PCB_DR2(%r8)
+ movq %dr3,%rax
+ movq %rax,PCB_DR3(%r8)
+ movq %dr6,%rax
+ movq %rax,PCB_DR6(%r8)
+ movq %dr7,%rax
+ movq %rax,PCB_DR7(%r8)
+
+ sgdt XPCB_GDT(%r8)
+ sidt XPCB_IDT(%r8)
+ sldt XPCB_LDT(%r8)
+ str XPCB_TR(%r8)
+
+ movl $MSR_FSBASE,%ecx
+ rdmsr
+ shlq $32,%rdx
+ leaq (%rax,%rdx),%rax
+ movq %rax,PCB_FSBASE(%r8)
+ movl $MSR_GSBASE,%ecx
+ rdmsr
+ shlq $32,%rdx
+ leaq (%rax,%rdx),%rax
+ movq %rax,PCB_GSBASE(%r8)
+ movl $MSR_KGSBASE,%ecx
+ rdmsr
+ shlq $32,%rdx
+ leaq (%rax,%rdx),%rax
+ movq %rax,XPCB_KGSBASE(%r8)
+
+ movl $1, %eax
+ ret
+END(savectx2)
==== //depot/projects/usb/src/sys/amd64/amd64/db_trace.c#7 (text+ko) ====
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/amd64/amd64/db_trace.c,v 1.83 2008/12/05 11:34:36 kib Exp $");
+__FBSDID("$FreeBSD: src/sys/amd64/amd64/db_trace.c,v 1.84 2009/03/17 00:48:11 jkim Exp $");
#include "opt_compat.h"
@@ -316,6 +316,7 @@
strcmp(name, "Xtimerint") == 0 ||
strcmp(name, "Xipi_intr_bitmap_handler") == 0 ||
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list