PERFORCE change 160086 for review

Marko Zec zec at FreeBSD.org
Wed Apr 1 01:08:31 PDT 2009


http://perforce.freebsd.org/chv.cgi?CH=160086

Change 160086 by zec at zec_amdx2 on 2009/04/01 08:07:50

	IFC @ 160084

Affected files ...

.. //depot/projects/vimage-commit2/src/sys/amd64/acpica/Makefile#1 branch
.. //depot/projects/vimage-commit2/src/sys/amd64/acpica/acpi_machdep.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/amd64/acpica/acpi_switch.S#1 branch
.. //depot/projects/vimage-commit2/src/sys/amd64/acpica/acpi_wakecode.S#1 branch
.. //depot/projects/vimage-commit2/src/sys/amd64/acpica/acpi_wakeup.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/amd64/acpica/genwakecode.sh#1 branch
.. //depot/projects/vimage-commit2/src/sys/amd64/acpica/genwakedata.sh#1 branch
.. //depot/projects/vimage-commit2/src/sys/amd64/amd64/amd64_mem.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/amd64/amd64/apic_vector.S#2 integrate
.. //depot/projects/vimage-commit2/src/sys/amd64/amd64/cpu_switch.S#6 integrate
.. //depot/projects/vimage-commit2/src/sys/amd64/amd64/db_trace.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/amd64/amd64/fpu.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/amd64/amd64/genassym.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/amd64/amd64/machdep.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/amd64/amd64/mp_machdep.c#9 integrate
.. //depot/projects/vimage-commit2/src/sys/amd64/amd64/pmap.c#13 integrate
.. //depot/projects/vimage-commit2/src/sys/amd64/amd64/vm_machdep.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/amd64/conf/GENERIC#11 integrate
.. //depot/projects/vimage-commit2/src/sys/amd64/conf/NOTES#7 integrate
.. //depot/projects/vimage-commit2/src/sys/amd64/include/apicvar.h#4 integrate
.. //depot/projects/vimage-commit2/src/sys/amd64/include/elf.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/amd64/include/pcb.h#5 integrate
.. //depot/projects/vimage-commit2/src/sys/amd64/include/pmap.h#7 integrate
.. //depot/projects/vimage-commit2/src/sys/amd64/include/smp.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/amd64/linux32/linux.h#7 integrate
.. //depot/projects/vimage-commit2/src/sys/amd64/pci/pci_cfgreg.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/arm/arm/locore.S#3 integrate
.. //depot/projects/vimage-commit2/src/sys/arm/conf/AVILA#7 integrate
.. //depot/projects/vimage-commit2/src/sys/arm/conf/CAMBRIA#3 integrate
.. //depot/projects/vimage-commit2/src/sys/arm/conf/HL200#5 integrate
.. //depot/projects/vimage-commit2/src/sys/arm/conf/KB920X#7 integrate
.. //depot/projects/vimage-commit2/src/sys/arm/include/atomic.h#4 integrate
.. //depot/projects/vimage-commit2/src/sys/arm/include/elf.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/boot/forth/loader.conf#10 integrate
.. //depot/projects/vimage-commit2/src/sys/boot/i386/libi386/smbios.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/boot/pc98/libpc98/Makefile#2 integrate
.. //depot/projects/vimage-commit2/src/sys/boot/pc98/libpc98/bioscd.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/boot/pc98/libpc98/biosdisk.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/boot/pc98/libpc98/time.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/boot/pc98/loader/Makefile#4 integrate
.. //depot/projects/vimage-commit2/src/sys/boot/pc98/loader/main.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/compat/freebsd32/freebsd32_ioctl.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/compat/freebsd32/freebsd32_ioctl.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/compat/freebsd32/freebsd32_misc.c#12 integrate
.. //depot/projects/vimage-commit2/src/sys/compat/ia32/ia32_sysvec.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/compat/linprocfs/linprocfs.c#20 integrate
.. //depot/projects/vimage-commit2/src/sys/compat/linux/linux_emul.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/compat/linux/linux_file.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/compat/linux/linux_futex.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/compat/linux/linux_futex.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/compat/ndis/subr_ntoskrnl.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/compat/ndis/subr_usbd.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/conf/NOTES#18 integrate
.. //depot/projects/vimage-commit2/src/sys/conf/files#25 integrate
.. //depot/projects/vimage-commit2/src/sys/conf/files.amd64#10 integrate
.. //depot/projects/vimage-commit2/src/sys/conf/files.i386#15 integrate
.. //depot/projects/vimage-commit2/src/sys/conf/newvers.sh#6 integrate
.. //depot/projects/vimage-commit2/src/sys/conf/options#22 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/acpica/acpi.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/acpica/acpi_cpu.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/acpica/acpi_ec.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/acpica/acpivar.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/age/if_age.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/age/if_agereg.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/agp/agp.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/agp/agp_amd64.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/agp/agp_i810.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/agp/agp_intel.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/agp/agp_via.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ata/ata-pci.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ata/ata-pci.h#11 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ata/ata-sata.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ata/chipsets/ata-ahci.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ata/chipsets/ata-intel.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ata/chipsets/ata-jmicron.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ata/chipsets/ata-marvell.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ata/chipsets/ata-nvidia.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ata/chipsets/ata-promise.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ata/chipsets/ata-siliconimage.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ata/chipsets/ata-sis.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ata/chipsets/ata-via.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ath/ah_osdep.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ath/ath_hal/ah.h#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ath/ath_hal/ar5210/ar5210_attach.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ath/ath_hal/ar5211/ar5211_attach.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ath/ath_hal/ar5212/ar5212_attach.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ath/if_ath.c#11 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ath/if_athvar.h#11 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/atkbdc/psm.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/bge/if_bge.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/bge/if_bgereg.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/cxgb/cxgb_main.c#15 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/cxgb/cxgb_offload.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/dc/dcphy.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/dc/pnphy.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/ati_pcigart.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/drmP.h#7 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/drm_bufs.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/drm_drv.c#10 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/drm_irq.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/drm_linux_list.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/drm_lock.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/drm_pci.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/drm_pciids.h#5 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/drm_scatter.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/drm_vm.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/i915_dma.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/i915_drv.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/i915_drv.h#5 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/i915_irq.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/i915_reg.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/i915_suspend.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/mga_irq.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/r600_cp.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/radeon_cp.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/drm/radeon_irq.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ed/ax88x90reg.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ed/if_ed.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ed/if_ed_pccard.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ed/if_ed_wd80x3.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ed/if_edreg.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ed/if_edvar.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/fe/if_fe_pccard.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/firewire/firewire.c#10 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/hptiop/hptiop.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ichwd/ichwd.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/if_ndis/if_ndis.c#9 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/if_ndis/if_ndis_usb.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/if_ndis/if_ndisvar.h#6 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ipmi/ipmi_linux.c#1 branch
.. //depot/projects/vimage-commit2/src/sys/dev/ipw/if_ipw.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/iwi/if_iwi.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/iwn/if_iwn.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/malo/if_malo.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/malo/if_malo_pci.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/malo/if_malohal.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/mii/axphy.c#1 branch
.. //depot/projects/vimage-commit2/src/sys/dev/mii/axphyreg.h#1 branch
.. //depot/projects/vimage-commit2/src/sys/dev/mii/miidevs#7 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/msk/if_msk.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/my/if_my.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ofw/ofw_standard.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ofw/openfirm.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/pccard/pccarddevs#7 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ral/rt2560.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ral/rt2560var.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ral/rt2661.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/ral/rt2661var.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/re/if_re.c#11 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/sound/pci/hda/hdac.c#12 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/syscons/teken/teken.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/syscons/teken/teken_subr.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/twa/tw_cl_init.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/twa/tw_osl.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/twa/tw_osl_freebsd.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/controller/at91dci.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/controller/at91dci_atmelarm.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/controller/atmegadci.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/controller/atmegadci_atmelarm.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/controller/ehci.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/controller/ehci.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/controller/ehci_ixp4xx.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/controller/ehci_mbus.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/controller/ehci_pci.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/controller/musb_otg.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/controller/musb_otg_atmelarm.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/controller/ohci.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/controller/ohci.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/controller/ohci_atmelarm.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/controller/ohci_pci.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/controller/uhci.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/controller/uhci.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/controller/uhci_pci.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/controller/usb_controller.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/controller/uss820dci.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/controller/uss820dci_atmelarm.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/image/uscanner.c#3 delete
.. //depot/projects/vimage-commit2/src/sys/dev/usb/input/uhid.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/input/ums.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/misc/udbp.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/net/if_cdce.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/serial/u3g.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/serial/ubser.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/serial/ucycom.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/serial/ufoma.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/serial/ugensa.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/serial/ulpt.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/serial/umct.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/serial/umodem.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/serial/uplcom.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/serial/uvisor.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/storage/umass.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/storage/urio.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/storage/ustorage_fs.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/template/usb_template.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_bus.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_busdma.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_busdma.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_compat_linux.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_compat_linux.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_controller.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_core.h#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_debug.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_debug.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_defs.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_dev.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_dev.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_device.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_device.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_dynamic.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_endian.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_generic.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_handle_request.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_hid.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_hid.h#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_hub.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_hub.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_lookup.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_lookup.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_mbuf.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_mbuf.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_msctest.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_process.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_process.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_request.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_request.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_sw_transfer.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_transfer.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_transfer.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_util.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usb_util.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/usbdevs#21 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/wlan/if_rum.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/wlan/if_rumvar.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/wlan/if_ural.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/wlan/if_uralvar.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/wlan/if_zyd.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/usb/wlan/usb_wlan.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/wi/if_wi.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/wpi/if_wpi.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/dev/wpi/if_wpireg.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/fs/nullfs/null_vnops.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/eli/g_eli.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/label/g_label.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/label/g_label.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/label/g_label_ufs.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/part/g_part.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/part/g_part_apm.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/part/g_part_bsd.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/part/g_part_ebr.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/part/g_part_gpt.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/part/g_part_mbr.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/part/g_part_pc98.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/vinum/geom_vinum.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/vinum/geom_vinum.h#4 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/vinum/geom_vinum_create.c#1 branch
.. //depot/projects/vimage-commit2/src/sys/geom/vinum/geom_vinum_drive.c#10 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/vinum/geom_vinum_events.c#1 branch
.. //depot/projects/vimage-commit2/src/sys/geom/vinum/geom_vinum_init.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/vinum/geom_vinum_list.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/vinum/geom_vinum_move.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/vinum/geom_vinum_plex.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/vinum/geom_vinum_raid5.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/vinum/geom_vinum_raid5.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/vinum/geom_vinum_rename.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/vinum/geom_vinum_rm.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/vinum/geom_vinum_share.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/vinum/geom_vinum_share.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/vinum/geom_vinum_state.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/vinum/geom_vinum_subr.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/vinum/geom_vinum_var.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/geom/vinum/geom_vinum_volume.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/gnu/fs/xfs/FreeBSD/xfs_buf.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/conf/GENERIC#12 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/conf/XBOX#4 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/cpufreq/hwpstate.c#1 branch
.. //depot/projects/vimage-commit2/src/sys/i386/i386/i686_mem.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/i386/k6_mem.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/i386/machdep.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/i386/vm_machdep.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/include/elf.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/include/pmap.h#5 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/isa/npx.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/i386/pci/pci_cfgreg.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/ia64/include/elf.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/imgact_elf.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/kern_environment.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/kern_exec.c#11 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/kern_jail.c#17 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/kern_time.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/subr_bus.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/subr_param.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/subr_rtc.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/subr_smp.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/sysv_sem.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/vfs_bio.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/vfs_cache.c#12 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/vfs_lookup.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/vfs_mount.c#13 integrate
.. //depot/projects/vimage-commit2/src/sys/kern/vfs_subr.c#13 integrate
.. //depot/projects/vimage-commit2/src/sys/mips/include/bus.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/mips/include/elf.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/modules/Makefile#17 integrate
.. //depot/projects/vimage-commit2/src/sys/modules/ath/Makefile#4 integrate
.. //depot/projects/vimage-commit2/src/sys/modules/cpufreq/Makefile#2 integrate
.. //depot/projects/vimage-commit2/src/sys/modules/dtrace/Makefile#2 integrate
.. //depot/projects/vimage-commit2/src/sys/modules/dtrace/dtnfsclient/Makefile#1 branch
.. //depot/projects/vimage-commit2/src/sys/modules/dtrace/dtraceall/dtraceall.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/modules/geom/geom_vinum/Makefile#2 integrate
.. //depot/projects/vimage-commit2/src/sys/modules/ip6_mroute_mod/Makefile#1 branch
.. //depot/projects/vimage-commit2/src/sys/modules/ip_mroute_mod/Makefile#3 integrate
.. //depot/projects/vimage-commit2/src/sys/modules/ipmi/Makefile#2 integrate
.. //depot/projects/vimage-commit2/src/sys/modules/ipmi/ipmi_linux/Makefile#1 branch
.. //depot/projects/vimage-commit2/src/sys/modules/linprocfs/Makefile#3 integrate
.. //depot/projects/vimage-commit2/src/sys/modules/mii/Makefile#3 integrate
.. //depot/projects/vimage-commit2/src/sys/modules/opensolaris/Makefile#2 integrate
.. //depot/projects/vimage-commit2/src/sys/modules/usb/Makefile#6 integrate
.. //depot/projects/vimage-commit2/src/sys/modules/usb/uscanner/Makefile#2 delete
.. //depot/projects/vimage-commit2/src/sys/net/if.c#39 integrate
.. //depot/projects/vimage-commit2/src/sys/net/if_loop.c#21 integrate
.. //depot/projects/vimage-commit2/src/sys/net/if_tap.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211.c#13 integrate
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211.h#6 integrate
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211_adhoc.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211_ddb.c#12 integrate
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211_freebsd.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211_freebsd.h#7 integrate
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211_hostap.c#9 integrate
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211_input.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211_input.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211_ioctl.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211_ioctl.h#5 integrate
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211_node.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211_node.h#7 integrate
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211_output.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211_proto.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211_proto.h#4 integrate
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211_scan.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211_scan.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211_scan_sta.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211_sta.c#7 integrate
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211_superg.c#1 branch
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211_superg.h#1 branch
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211_tdma.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211_tdma.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211_var.h#7 integrate
.. //depot/projects/vimage-commit2/src/sys/net80211/ieee80211_wds.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/igmp.c#21 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/igmp.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/in.c#20 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/in_mcast.c#17 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/ip_mroute.c#11 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/ip_mroute.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_subr.c#43 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/ip6_mroute.c#13 integrate
.. //depot/projects/vimage-commit2/src/sys/netinet6/ip6_mroute.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/netipsec/key.c#26 integrate
.. //depot/projects/vimage-commit2/src/sys/nfs4client/nfs4_vnops.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/nfsclient/nfs.h#5 integrate
.. //depot/projects/vimage-commit2/src/sys/nfsclient/nfs_bio.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/nfsclient/nfs_kdtrace.c#1 branch
.. //depot/projects/vimage-commit2/src/sys/nfsclient/nfs_kdtrace.h#1 branch
.. //depot/projects/vimage-commit2/src/sys/nfsclient/nfs_krpc.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/nfsclient/nfs_subs.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/nfsclient/nfs_vnops.c#16 integrate
.. //depot/projects/vimage-commit2/src/sys/nfsclient/nfsnode.h#4 integrate
.. //depot/projects/vimage-commit2/src/sys/nfsserver/nfs_srvkrpc.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/pc98/conf/GENERIC#8 integrate
.. //depot/projects/vimage-commit2/src/sys/pc98/pc98/machdep.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/pci/intpm.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/powerpc/conf/GENERIC#8 integrate
.. //depot/projects/vimage-commit2/src/sys/powerpc/include/elf.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/powerpc/powermac/ata_macio.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/security/mac_biba/mac_biba.c#16 integrate
.. //depot/projects/vimage-commit2/src/sys/security/mac_bsdextended/mac_bsdextended.c#11 integrate
.. //depot/projects/vimage-commit2/src/sys/security/mac_mls/mac_mls.c#15 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/central/central.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/conf/GENERIC#10 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/ebus/ebus.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/fhc/fhc.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/include/elf.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/include/trap.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/isa/isa.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/isa/ofw_isa.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/pci/apb.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/pci/ofw_pcib.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/pci/ofw_pcibus.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/pci/psycho.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/pci/psychovar.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/pci/schizo.c#5 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/sbus/dma_sbus.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/sbus/sbus.c#4 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/sbus/sbusvar.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/db_disasm.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/eeprom.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/jbusppm.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/machdep.c#8 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/mp_machdep.c#10 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/nexus.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/rtc.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/sc_machdep.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/schppm.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/trap.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/sparc64/sparc64/upa.c#2 integrate
.. //depot/projects/vimage-commit2/src/sys/sun4v/conf/GENERIC#7 integrate
.. //depot/projects/vimage-commit2/src/sys/sun4v/include/elf.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/sun4v/include/trap.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/sun4v/sun4v/trap.c#3 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/buf.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/dtrace_bsd.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/elf_common.h#4 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/imgact.h#3 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/jail.h#6 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/memrange.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/param.h#29 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/proc.h#12 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/smp.h#2 integrate
.. //depot/projects/vimage-commit2/src/sys/sys/vnode.h#11 integrate
.. //depot/projects/vimage-commit2/src/sys/tools/vnode_if.awk#3 integrate
.. //depot/projects/vimage-commit2/src/sys/ufs/ffs/ffs_vfsops.c#11 integrate
.. //depot/projects/vimage-commit2/src/sys/ufs/ffs/ffs_vnops.c#6 integrate
.. //depot/projects/vimage-commit2/src/sys/vm/vm_extern.h#2 integrate

Differences ...

==== //depot/projects/vimage-commit2/src/sys/amd64/acpica/acpi_machdep.c#2 (text+ko) ====

@@ -25,31 +25,57 @@
  */
 
 #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.20 2009/03/23 22:35:30 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);
+
+int acpi_resume_beep;
+TUNABLE_INT("debug.acpi.resume_beep", &acpi_resume_beep);
+SYSCTL_INT(_debug_acpi, OID_AUTO, resume_beep, CTLFLAG_RW, &acpi_resume_beep,
+    0, "Beep the PC speaker when resuming");
+
+int 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/vimage-commit2/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,411 @@
  */
 
 #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.24 2009/03/23 22:35:30 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/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 int		acpi_resume_beep;
+extern int		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, uint8_t, (acpi_resume_beep != 0));
+		WAKECODE_FIXUP(reset_video, uint8_t, (acpi_reset_video != 0));
+
+		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);
+#ifdef SMP
+		if (wakeup_cpus != 0)
+			acpi_wakeup_cpus(sc, wakeup_cpus);
+#endif
+		acpi_resync_clock(sc);
+		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/vimage-commit2/src/sys/amd64/amd64/amd64_mem.c#4 (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/vimage-commit2/src/sys/amd64/amd64/apic_vector.S#2 (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

>>> TRUNCATED FOR MAIL (1000 lines) <<<


More information about the p4-projects mailing list