Date: Tue, 13 Apr 2010 23:54:40 +0000 (UTC) From: Marcel Moolenaar <marcel@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r206572 - in projects/altix/sys: amd64/amd64 amd64/ia32 amd64/include arm/include boot/i386/efi cam/scsi compat/ia32 compat/linprocfs conf contrib/dev/acpica contrib/dev/acpica/common c... Message-ID: <201004132354.o3DNsexU002253@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: marcel Date: Tue Apr 13 23:54:40 2010 New Revision: 206572 URL: http://svn.freebsd.org/changeset/base/206572 Log: Merge svn+ssh://svn.freebsd.org/base/head@206571 Added: projects/altix/sys/boot/i386/efi/ - copied from r206571, head/sys/boot/i386/efi/ projects/altix/sys/contrib/dev/iwn/iwlwifi-6000-9.193.4.1.fw.uu - copied unchanged from r206571, head/sys/contrib/dev/iwn/iwlwifi-6000-9.193.4.1.fw.uu projects/altix/sys/dev/hwpmc/hwpmc_uncore.c - copied unchanged from r206571, head/sys/dev/hwpmc/hwpmc_uncore.c projects/altix/sys/dev/hwpmc/hwpmc_uncore.h - copied unchanged from r206571, head/sys/dev/hwpmc/hwpmc_uncore.h projects/altix/sys/dev/syscons/logo/beastie.c - copied unchanged from r206571, head/sys/dev/syscons/logo/beastie.c projects/altix/sys/geom/sched/ - copied from r206571, head/sys/geom/sched/ projects/altix/sys/modules/geom/geom_sched/ - copied from r206571, head/sys/modules/geom/geom_sched/ projects/altix/sys/modules/syscons/beastie/ - copied from r206571, head/sys/modules/syscons/beastie/ projects/altix/sys/net80211/ieee80211_ratectl.c - copied unchanged from r206571, head/sys/net80211/ieee80211_ratectl.c projects/altix/sys/net80211/ieee80211_ratectl.h - copied unchanged from r206571, head/sys/net80211/ieee80211_ratectl.h projects/altix/sys/sparc64/pci/sbbc.c - copied unchanged from r206571, head/sys/sparc64/pci/sbbc.c Deleted: projects/altix/sys/contrib/dev/iwn/iwlwifi-6000-9.176.4.1.fw.uu Modified: projects/altix/sys/amd64/amd64/exception.S projects/altix/sys/amd64/amd64/machdep.c projects/altix/sys/amd64/amd64/trap.c projects/altix/sys/amd64/ia32/ia32_signal.c projects/altix/sys/amd64/include/md_var.h projects/altix/sys/amd64/include/pmc_mdep.h projects/altix/sys/arm/include/bus.h projects/altix/sys/cam/scsi/scsi_da.c projects/altix/sys/compat/ia32/ia32_signal.h projects/altix/sys/compat/linprocfs/linprocfs.c projects/altix/sys/conf/files projects/altix/sys/conf/files.amd64 projects/altix/sys/conf/files.i386 projects/altix/sys/conf/files.pc98 projects/altix/sys/conf/files.sparc64 projects/altix/sys/conf/kern.mk projects/altix/sys/conf/kern.post.mk projects/altix/sys/conf/kern.pre.mk projects/altix/sys/conf/kmod.mk projects/altix/sys/contrib/dev/acpica/changes.txt projects/altix/sys/contrib/dev/acpica/common/dmextern.c projects/altix/sys/contrib/dev/acpica/compiler/aslanalyze.c projects/altix/sys/contrib/dev/acpica/compiler/aslcompiler.h projects/altix/sys/contrib/dev/acpica/compiler/aslpredef.c projects/altix/sys/contrib/dev/acpica/compiler/aslstubs.c projects/altix/sys/contrib/dev/acpica/compiler/asltypes.h projects/altix/sys/contrib/dev/acpica/debugger/dbdisply.c projects/altix/sys/contrib/dev/acpica/events/evgpe.c projects/altix/sys/contrib/dev/acpica/events/evgpeblk.c projects/altix/sys/contrib/dev/acpica/events/evxface.c projects/altix/sys/contrib/dev/acpica/events/evxfevnt.c projects/altix/sys/contrib/dev/acpica/executer/exdebug.c projects/altix/sys/contrib/dev/acpica/executer/exmutex.c projects/altix/sys/contrib/dev/acpica/executer/exoparg2.c projects/altix/sys/contrib/dev/acpica/executer/exregion.c projects/altix/sys/contrib/dev/acpica/include/acevents.h projects/altix/sys/contrib/dev/acpica/include/acexcep.h projects/altix/sys/contrib/dev/acpica/include/acglobal.h projects/altix/sys/contrib/dev/acpica/include/aclocal.h projects/altix/sys/contrib/dev/acpica/include/acpixf.h projects/altix/sys/contrib/dev/acpica/include/actables.h projects/altix/sys/contrib/dev/acpica/include/actypes.h projects/altix/sys/contrib/dev/acpica/include/platform/acfreebsd.h projects/altix/sys/contrib/dev/acpica/parser/psxface.c projects/altix/sys/contrib/dev/acpica/tables/tbutils.c projects/altix/sys/contrib/dev/acpica/tables/tbxface.c projects/altix/sys/contrib/dev/acpica/utilities/utglobal.c projects/altix/sys/contrib/dev/iwn/LICENSE projects/altix/sys/dev/aac/aac.c projects/altix/sys/dev/aac/aac_cam.c projects/altix/sys/dev/aac/aac_debug.c projects/altix/sys/dev/aac/aac_disk.c projects/altix/sys/dev/aac/aac_pci.c projects/altix/sys/dev/aac/aac_tables.h projects/altix/sys/dev/aac/aacreg.h projects/altix/sys/dev/aac/aacvar.h projects/altix/sys/dev/acpica/acpi.c projects/altix/sys/dev/acpica/acpi_button.c projects/altix/sys/dev/acpica/acpi_ec.c projects/altix/sys/dev/acpica/acpi_lid.c projects/altix/sys/dev/acpica/acpivar.h projects/altix/sys/dev/ath/ath_hal/ar5416/ar9285_attach.c projects/altix/sys/dev/ath/if_ath.c projects/altix/sys/dev/bce/if_bce.c projects/altix/sys/dev/bce/if_bcereg.h projects/altix/sys/dev/bwi/if_bwi.c projects/altix/sys/dev/bwi/if_bwivar.h projects/altix/sys/dev/bwn/if_bwn.c projects/altix/sys/dev/bwn/if_bwnvar.h projects/altix/sys/dev/cxgb/cxgb_adapter.h projects/altix/sys/dev/cxgb/cxgb_main.c projects/altix/sys/dev/cxgb/cxgb_sge.c projects/altix/sys/dev/e1000/if_em.c projects/altix/sys/dev/e1000/if_em.h projects/altix/sys/dev/e1000/if_igb.c projects/altix/sys/dev/fb/vesa.c projects/altix/sys/dev/hwpmc/hwpmc_core.c projects/altix/sys/dev/hwpmc/hwpmc_core.h projects/altix/sys/dev/hwpmc/hwpmc_intel.c projects/altix/sys/dev/hwpmc/pmc_events.h projects/altix/sys/dev/iwn/if_iwn.c projects/altix/sys/dev/iwn/if_iwnreg.h projects/altix/sys/dev/iwn/if_iwnvar.h projects/altix/sys/dev/mii/miidevs projects/altix/sys/dev/mii/truephy.c projects/altix/sys/dev/msk/if_msk.c projects/altix/sys/dev/ofw/ofw_standard.c projects/altix/sys/dev/ral/rt2560.c projects/altix/sys/dev/ral/rt2560var.h projects/altix/sys/dev/ral/rt2661.c projects/altix/sys/dev/ral/rt2661var.h projects/altix/sys/dev/re/if_re.c projects/altix/sys/dev/syscons/logo/logo.c projects/altix/sys/dev/syscons/logo/logo_saver.c projects/altix/sys/dev/uart/uart.h projects/altix/sys/dev/uart/uart_cpu_sparc64.c projects/altix/sys/dev/usb/serial/u3g.c projects/altix/sys/dev/usb/usbdevs projects/altix/sys/dev/usb/wlan/if_rum.c projects/altix/sys/dev/usb/wlan/if_rumvar.h projects/altix/sys/dev/usb/wlan/if_run.c projects/altix/sys/dev/usb/wlan/if_runvar.h projects/altix/sys/dev/usb/wlan/if_ural.c projects/altix/sys/dev/usb/wlan/if_uralvar.h projects/altix/sys/dev/usb/wlan/if_zyd.c projects/altix/sys/dev/usb/wlan/if_zydreg.h projects/altix/sys/dev/wpi/if_wpi.c projects/altix/sys/dev/wpi/if_wpivar.h projects/altix/sys/fs/coda/cnode.h projects/altix/sys/fs/coda/coda.h projects/altix/sys/fs/coda/coda_subr.c projects/altix/sys/fs/coda/coda_subr.h projects/altix/sys/fs/coda/coda_venus.c projects/altix/sys/fs/coda/coda_venus.h projects/altix/sys/fs/coda/coda_vfsops.c projects/altix/sys/fs/coda/coda_vfsops.h projects/altix/sys/fs/coda/coda_vnops.c projects/altix/sys/fs/deadfs/dead_vnops.c projects/altix/sys/fs/devfs/devfs_devs.c projects/altix/sys/fs/devfs/devfs_int.h projects/altix/sys/fs/msdosfs/msdosfs_vfsops.c projects/altix/sys/fs/nfsserver/nfs_nfsdport.c projects/altix/sys/fs/nfsserver/nfs_nfsdserv.c projects/altix/sys/fs/nwfs/nwfs.h projects/altix/sys/fs/nwfs/nwfs_io.c projects/altix/sys/fs/nwfs/nwfs_ioctl.c projects/altix/sys/fs/nwfs/nwfs_mount.h projects/altix/sys/fs/nwfs/nwfs_node.c projects/altix/sys/fs/nwfs/nwfs_node.h projects/altix/sys/fs/nwfs/nwfs_subr.c projects/altix/sys/fs/nwfs/nwfs_subr.h projects/altix/sys/fs/nwfs/nwfs_vfsops.c projects/altix/sys/fs/nwfs/nwfs_vnops.c projects/altix/sys/fs/smbfs/smbfs.h projects/altix/sys/fs/smbfs/smbfs_io.c projects/altix/sys/fs/smbfs/smbfs_node.c projects/altix/sys/fs/smbfs/smbfs_node.h projects/altix/sys/fs/smbfs/smbfs_smb.c projects/altix/sys/fs/smbfs/smbfs_subr.c projects/altix/sys/fs/smbfs/smbfs_subr.h projects/altix/sys/fs/smbfs/smbfs_vfsops.c projects/altix/sys/fs/smbfs/smbfs_vnops.c projects/altix/sys/geom/geom_vfs.c projects/altix/sys/i386/i386/machdep.c projects/altix/sys/i386/i386/mpboot.s projects/altix/sys/i386/i386/trap.c projects/altix/sys/i386/include/bootinfo.h projects/altix/sys/i386/include/pmc_mdep.h projects/altix/sys/ia64/ia64/mca.c projects/altix/sys/ia64/ia64/mp_machdep.c projects/altix/sys/ia64/include/mca.h projects/altix/sys/ia64/include/pal.h projects/altix/sys/kern/init_main.c projects/altix/sys/kern/kern_clock.c projects/altix/sys/kern/kern_sig.c projects/altix/sys/kern/tty_pts.c projects/altix/sys/kern/vfs_bio.c projects/altix/sys/kern/vfs_default.c projects/altix/sys/kern/vfs_subr.c projects/altix/sys/kern/vfs_syscalls.c projects/altix/sys/kern/vfs_vnops.c projects/altix/sys/libkern/iconv.c projects/altix/sys/libkern/iconv_converter_if.m projects/altix/sys/libkern/iconv_xlat.c projects/altix/sys/libkern/strcasecmp.c projects/altix/sys/mips/atheros/if_arge.c projects/altix/sys/mips/include/bus.h projects/altix/sys/mips/mips/busdma_machdep.c projects/altix/sys/modules/Makefile projects/altix/sys/modules/dummynet/Makefile projects/altix/sys/modules/geom/Makefile projects/altix/sys/modules/hwpmc/Makefile projects/altix/sys/modules/iwnfw/iwn6000/Makefile projects/altix/sys/modules/syscons/Makefile projects/altix/sys/modules/uart/Makefile projects/altix/sys/modules/wlan/Makefile projects/altix/sys/net/if.c projects/altix/sys/net/if_clone.c projects/altix/sys/net/if_llatbl.c projects/altix/sys/net80211/ieee80211.c projects/altix/sys/net80211/ieee80211_amrr.c projects/altix/sys/net80211/ieee80211_amrr.h projects/altix/sys/net80211/ieee80211_crypto_ccmp.c projects/altix/sys/net80211/ieee80211_crypto_tkip.c projects/altix/sys/net80211/ieee80211_freebsd.h projects/altix/sys/net80211/ieee80211_ioctl.c projects/altix/sys/net80211/ieee80211_node.c projects/altix/sys/net80211/ieee80211_node.h projects/altix/sys/net80211/ieee80211_rssadapt.c projects/altix/sys/net80211/ieee80211_rssadapt.h projects/altix/sys/net80211/ieee80211_var.h projects/altix/sys/netgraph/ng_pipe.c projects/altix/sys/netgraph/ng_pipe.h projects/altix/sys/netinet/if_ether.c projects/altix/sys/netinet/in.c projects/altix/sys/netinet/in_mcast.c projects/altix/sys/netinet/ipfw/ip_dn_glue.c projects/altix/sys/netinet/ipfw/ip_dn_io.c projects/altix/sys/netinet/ipfw/ip_dn_private.h projects/altix/sys/netinet/ipfw/ip_dummynet.c projects/altix/sys/netinet/ipfw/ip_fw_sockopt.c projects/altix/sys/netinet/sctp_asconf.c projects/altix/sys/netinet/sctp_constants.h projects/altix/sys/netinet/sctp_indata.c projects/altix/sys/netinet/sctp_indata.h projects/altix/sys/netinet/sctp_input.c projects/altix/sys/netinet/sctp_output.c projects/altix/sys/netinet/sctp_output.h projects/altix/sys/netinet/sctp_pcb.c projects/altix/sys/netinet/sctp_pcb.h projects/altix/sys/netinet/sctp_structs.h projects/altix/sys/netinet/sctp_usrreq.c projects/altix/sys/netinet/sctp_var.h projects/altix/sys/netinet/sctputil.c projects/altix/sys/netinet/sctputil.h projects/altix/sys/netinet/tcp_input.c projects/altix/sys/netinet6/in6.c projects/altix/sys/netinet6/mld6.c projects/altix/sys/netinet6/nd6.c projects/altix/sys/netinet6/sctp6_usrreq.c projects/altix/sys/netipsec/ipsec.c projects/altix/sys/netncp/ncp_conn.c projects/altix/sys/netncp/ncp_conn.h projects/altix/sys/netncp/ncp_file.h projects/altix/sys/netncp/ncp_lib.h projects/altix/sys/netncp/ncp_login.c projects/altix/sys/netncp/ncp_ncp.c projects/altix/sys/netncp/ncp_ncp.h projects/altix/sys/netncp/ncp_nls.c projects/altix/sys/netncp/ncp_nls.h projects/altix/sys/netncp/ncp_rcfile.h projects/altix/sys/netncp/ncp_rq.c projects/altix/sys/netncp/ncp_rq.h projects/altix/sys/netncp/ncp_sock.c projects/altix/sys/netncp/ncp_sock.h projects/altix/sys/netncp/ncp_subr.c projects/altix/sys/netncp/ncp_subr.h projects/altix/sys/netncp/ncp_user.h projects/altix/sys/netsmb/netbios.h projects/altix/sys/netsmb/smb.h projects/altix/sys/netsmb/smb_conn.c projects/altix/sys/netsmb/smb_conn.h projects/altix/sys/netsmb/smb_dev.c projects/altix/sys/netsmb/smb_dev.h projects/altix/sys/netsmb/smb_iod.c projects/altix/sys/netsmb/smb_rq.c projects/altix/sys/netsmb/smb_rq.h projects/altix/sys/netsmb/smb_smb.c projects/altix/sys/netsmb/smb_subr.c projects/altix/sys/netsmb/smb_subr.h projects/altix/sys/netsmb/smb_tran.h projects/altix/sys/netsmb/smb_trantcp.c projects/altix/sys/netsmb/smb_trantcp.h projects/altix/sys/netsmb/smb_usr.c projects/altix/sys/pc98/cbus/clock.c projects/altix/sys/pci/if_rlreg.h projects/altix/sys/powerpc/ofw/ofw_real.c projects/altix/sys/sparc64/conf/GENERIC projects/altix/sys/sparc64/conf/NOTES projects/altix/sys/sparc64/include/dcr.h projects/altix/sys/sparc64/include/lsu.h projects/altix/sys/sparc64/sparc64/ofw_machdep.c projects/altix/sys/sparc64/sparc64/trap.c projects/altix/sys/sys/iconv.h projects/altix/sys/sys/mchain.h projects/altix/sys/sys/pmc.h projects/altix/sys/sys/proc.h projects/altix/sys/sys/vnode.h projects/altix/sys/teken/teken.c projects/altix/sys/ufs/ffs/ffs_vfsops.c projects/altix/sys/vm/memguard.c projects/altix/sys/vm/memguard.h projects/altix/sys/vm/vm_contig.c projects/altix/sys/vm/vm_extern.h projects/altix/sys/vm/vm_fault.c projects/altix/sys/vm/vm_glue.c projects/altix/sys/vm/vm_map.c projects/altix/sys/vm/vm_map.h projects/altix/sys/vm/vm_page.c projects/altix/sys/vm/vm_pageout.c projects/altix/sys/x86/isa/clock.c Directory Properties: projects/altix/lib/libstand/ (props changed) projects/altix/sys/ (props changed) projects/altix/sys/contrib/dev/acpica/ (props changed) projects/altix/sys/dev/ath/ath_hal/ar5416/ar9160.ini (props changed) Modified: projects/altix/sys/amd64/amd64/exception.S ============================================================================== --- projects/altix/sys/amd64/amd64/exception.S Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/amd64/amd64/exception.S Tue Apr 13 23:54:40 2010 (r206572) @@ -668,7 +668,8 @@ ld_fs: movw %ax,%fs movl $MSR_FSBASE,%ecx movl PCB_FSBASE(%r8),%eax movl PCB_FSBASE+4(%r8),%edx - wrmsr + .globl ld_fsbase +ld_fsbase: wrmsr 1: /* Restore %gs and gsbase */ movw TF_GS(%rsp),%si @@ -685,7 +686,8 @@ ld_gs: movw %si,%gs movl $MSR_KGSBASE,%ecx movl PCB_GSBASE(%r8),%eax movl PCB_GSBASE+4(%r8),%edx - wrmsr + .globl ld_gsbase +ld_gsbase: wrmsr 1: .globl ld_es ld_es: movw TF_ES(%rsp),%es .globl ld_ds @@ -798,6 +800,30 @@ gs_load_fault: call trap movw $KUG32SEL,TF_GS(%rsp) jmp doreti + + ALIGN_TEXT + .globl fsbase_load_fault +fsbase_load_fault: + movl $T_PROTFLT,TF_TRAPNO(%rsp) + movq %rsp, %rdi + call trap + movq PCPU(CURTHREAD),%r8 + movq TD_PCB(%r8),%r8 + movq $0,PCB_FSBASE(%r8) + jmp doreti + + ALIGN_TEXT + .globl gsbase_load_fault +gsbase_load_fault: + popfq + movl $T_PROTFLT,TF_TRAPNO(%rsp) + movq %rsp, %rdi + call trap + movq PCPU(CURTHREAD),%r8 + movq TD_PCB(%r8),%r8 + movq $0,PCB_GSBASE(%r8) + jmp doreti + #ifdef HWPMC_HOOKS ENTRY(end_exceptions) #endif Modified: projects/altix/sys/amd64/amd64/machdep.c ============================================================================== --- projects/altix/sys/amd64/amd64/machdep.c Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/amd64/amd64/machdep.c Tue Apr 13 23:54:40 2010 (r206572) @@ -424,13 +424,14 @@ sigreturn(td, uap) error = copyin(uap->sigcntxp, &uc, sizeof(uc)); if (error != 0) { - printf("sigreturn (pid %d): copyin failed\n", p->p_pid); + uprintf("pid %d (%s): sigreturn copyin failed\n", + p->p_pid, td->td_name); return (error); } ucp = &uc; if ((ucp->uc_mcontext.mc_flags & ~_MC_FLAG_MASK) != 0) { - printf("sigreturn (pid %d): mc_flags %x\n", p->p_pid, - ucp->uc_mcontext.mc_flags); + uprintf("pid %d (%s): sigreturn mc_flags %x\n", p->p_pid, + td->td_name, ucp->uc_mcontext.mc_flags); return (EINVAL); } regs = td->td_frame; @@ -449,8 +450,8 @@ sigreturn(td, uap) * one less debugger trap, so allowing it is fairly harmless. */ if (!EFL_SECURE(rflags & ~PSL_RF, regs->tf_rflags & ~PSL_RF)) { - printf("sigreturn (pid %d): rflags = 0x%lx\n", p->p_pid, - rflags); + uprintf("pid %d (%s): sigreturn rflags = 0x%lx\n", p->p_pid, + td->td_name, rflags); return (EINVAL); } @@ -461,7 +462,8 @@ sigreturn(td, uap) */ cs = ucp->uc_mcontext.mc_cs; if (!CS_SECURE(cs)) { - printf("sigreturn (pid %d): cs = 0x%x\n", p->p_pid, cs); + uprintf("pid %d (%s): sigreturn cs = 0x%x\n", p->p_pid, + td->td_name, cs); ksiginfo_init_trap(&ksi); ksi.ksi_signo = SIGBUS; ksi.ksi_code = BUS_OBJERR; @@ -473,7 +475,8 @@ sigreturn(td, uap) ret = set_fpcontext(td, &ucp->uc_mcontext); if (ret != 0) { - printf("sigreturn (pid %d): set_fpcontext\n", p->p_pid); + uprintf("pid %d (%s): sigreturn set_fpcontext err %d\n", + p->p_pid, td->td_name, ret); return (ret); } bcopy(&ucp->uc_mcontext.mc_rdi, regs, sizeof(*regs)); Modified: projects/altix/sys/amd64/amd64/trap.c ============================================================================== --- projects/altix/sys/amd64/amd64/trap.c Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/amd64/amd64/trap.c Tue Apr 13 23:54:40 2010 (r206572) @@ -303,7 +303,7 @@ trap(struct trapframe *frame) * enabled later. */ if (ISPL(frame->tf_cs) == SEL_UPL) - printf( + uprintf( "pid %ld (%s): trap %d with interrupts disabled\n", (long)curproc->p_pid, curthread->td_name, type); else if (type != T_NMI && type != T_BPTFLT && @@ -566,6 +566,14 @@ trap(struct trapframe *frame) frame->tf_gs = _ugssel; goto out; } + if (frame->tf_rip == (long)ld_gsbase) { + frame->tf_rip = (long)gsbase_load_fault; + goto out; + } + if (frame->tf_rip == (long)ld_fsbase) { + frame->tf_rip = (long)fsbase_load_fault; + goto out; + } if (PCPU_GET(curpcb)->pcb_onfault != NULL) { frame->tf_rip = (long)PCPU_GET(curpcb)->pcb_onfault; Modified: projects/altix/sys/amd64/ia32/ia32_signal.c ============================================================================== --- projects/altix/sys/amd64/ia32/ia32_signal.c Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/amd64/ia32/ia32_signal.c Tue Apr 13 23:54:40 2010 (r206572) @@ -565,7 +565,8 @@ freebsd4_freebsd32_sigreturn(td, uap) * one less debugger trap, so allowing it is fairly harmless. */ if (!EFL_SECURE(eflags & ~PSL_RF, regs->tf_rflags & ~PSL_RF)) { - printf("freebsd4_freebsd32_sigreturn: eflags = 0x%x\n", eflags); + uprintf("pid %d (%s): freebsd4_freebsd32_sigreturn eflags = 0x%x\n", + td->td_proc->p_pid, td->td_name, eflags); return (EINVAL); } @@ -576,7 +577,8 @@ freebsd4_freebsd32_sigreturn(td, uap) */ cs = ucp->uc_mcontext.mc_cs; if (!CS_SECURE(cs)) { - printf("freebsd4_sigreturn: cs = 0x%x\n", cs); + uprintf("pid %d (%s): freebsd4_sigreturn cs = 0x%x\n", + td->td_proc->p_pid, td->td_name, cs); ksiginfo_init_trap(&ksi); ksi.ksi_signo = SIGBUS; ksi.ksi_code = BUS_OBJERR; @@ -647,7 +649,8 @@ freebsd32_sigreturn(td, uap) * one less debugger trap, so allowing it is fairly harmless. */ if (!EFL_SECURE(eflags & ~PSL_RF, regs->tf_rflags & ~PSL_RF)) { - printf("freebsd32_sigreturn: eflags = 0x%x\n", eflags); + uprintf("pid %d (%s): freebsd32_sigreturn eflags = 0x%x\n", + td->td_proc->p_pid, td->td_name, eflags); return (EINVAL); } @@ -658,7 +661,8 @@ freebsd32_sigreturn(td, uap) */ cs = ucp->uc_mcontext.mc_cs; if (!CS_SECURE(cs)) { - printf("sigreturn: cs = 0x%x\n", cs); + uprintf("pid %d (%s): sigreturn cs = 0x%x\n", + td->td_proc->p_pid, td->td_name, cs); ksiginfo_init_trap(&ksi); ksi.ksi_signo = SIGBUS; ksi.ksi_code = BUS_OBJERR; Modified: projects/altix/sys/amd64/include/md_var.h ============================================================================== --- projects/altix/sys/amd64/include/md_var.h Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/amd64/include/md_var.h Tue Apr 13 23:54:40 2010 (r206572) @@ -83,10 +83,14 @@ void ld_ds(void) __asm(__STRING(ld_ds)); void ld_es(void) __asm(__STRING(ld_es)); void ld_fs(void) __asm(__STRING(ld_fs)); void ld_gs(void) __asm(__STRING(ld_gs)); +void ld_fsbase(void) __asm(__STRING(ld_fsbase)); +void ld_gsbase(void) __asm(__STRING(ld_gsbase)); void ds_load_fault(void) __asm(__STRING(ds_load_fault)); void es_load_fault(void) __asm(__STRING(es_load_fault)); void fs_load_fault(void) __asm(__STRING(fs_load_fault)); void gs_load_fault(void) __asm(__STRING(gs_load_fault)); +void fsbase_load_fault(void) __asm(__STRING(fsbase_load_fault)); +void gsbase_load_fault(void) __asm(__STRING(gsbase_load_fault)); void dump_add_page(vm_paddr_t); void dump_drop_page(vm_paddr_t); void initializecpu(void); Modified: projects/altix/sys/amd64/include/pmc_mdep.h ============================================================================== --- projects/altix/sys/amd64/include/pmc_mdep.h Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/amd64/include/pmc_mdep.h Tue Apr 13 23:54:40 2010 (r206572) @@ -43,17 +43,20 @@ struct pmc_mdep; #include <dev/hwpmc/hwpmc_core.h> #include <dev/hwpmc/hwpmc_piv.h> #include <dev/hwpmc/hwpmc_tsc.h> +#include <dev/hwpmc/hwpmc_uncore.h> /* * Intel processors implementing V2 and later of the Intel performance * measurement architecture have PMCs of the following classes: TSC, - * IAF and IAP. + * IAF, IAP, UCF and UCP. */ #define PMC_MDEP_CLASS_INDEX_TSC 0 #define PMC_MDEP_CLASS_INDEX_K8 1 #define PMC_MDEP_CLASS_INDEX_P4 1 #define PMC_MDEP_CLASS_INDEX_IAP 1 #define PMC_MDEP_CLASS_INDEX_IAF 2 +#define PMC_MDEP_CLASS_INDEX_UCP 3 +#define PMC_MDEP_CLASS_INDEX_UCF 4 /* * On the amd64 platform we support the following PMCs. @@ -63,12 +66,16 @@ struct pmc_mdep; * PIV Intel P4/HTT and P4/EMT64 * IAP Intel Core/Core2/Atom CPUs in 64 bits mode. * IAF Intel fixed-function PMCs in Core2 and later CPUs. + * UCP Intel Uncore programmable PMCs. + * UCF Intel Uncore fixed-function PMCs. */ union pmc_md_op_pmcallocate { struct pmc_md_amd_op_pmcallocate pm_amd; struct pmc_md_iaf_op_pmcallocate pm_iaf; struct pmc_md_iap_op_pmcallocate pm_iap; + struct pmc_md_ucf_op_pmcallocate pm_ucf; + struct pmc_md_ucp_op_pmcallocate pm_ucp; struct pmc_md_p4_op_pmcallocate pm_p4; uint64_t __pad[4]; }; @@ -83,6 +90,8 @@ union pmc_md_pmc { struct pmc_md_amd_pmc pm_amd; struct pmc_md_iaf_pmc pm_iaf; struct pmc_md_iap_pmc pm_iap; + struct pmc_md_ucf_pmc pm_ucf; + struct pmc_md_ucp_pmc pm_ucp; struct pmc_md_p4_pmc pm_p4; }; Modified: projects/altix/sys/arm/include/bus.h ============================================================================== --- projects/altix/sys/arm/include/bus.h Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/arm/include/bus.h Tue Apr 13 23:54:40 2010 (r206572) @@ -721,6 +721,8 @@ bs_c_8_proto(f); #define BUS_SPACE_MAXSIZE_32BIT 0xFFFFFFFF #define BUS_SPACE_MAXSIZE 0xFFFFFFFF +#define BUS_SPACE_UNRESTRICTED (~0) + #include <machine/bus_dma.h> #endif /* _MACHINE_BUS_H_ */ Modified: projects/altix/sys/cam/scsi/scsi_da.c ============================================================================== --- projects/altix/sys/cam/scsi/scsi_da.c Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/cam/scsi/scsi_da.c Tue Apr 13 23:54:40 2010 (r206572) @@ -997,6 +997,11 @@ dacleanup(struct cam_periph *periph) xpt_print(periph->path, "can't remove sysctl context\n"); } + /* + * Nullify our periph pointer here to try and catch + * race conditions in callbacks/downcalls. + */ + softc->disk->d_drv1 = NULL; disk_destroy(softc->disk); callout_drain(&softc->sendordered_c); free(softc, M_DEVBUF); Modified: projects/altix/sys/compat/ia32/ia32_signal.h ============================================================================== --- projects/altix/sys/compat/ia32/ia32_signal.h Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/compat/ia32/ia32_signal.h Tue Apr 13 23:54:40 2010 (r206572) @@ -180,6 +180,7 @@ struct ia32_sigframe3 { #endif struct ksiginfo; +struct image_params; extern char ia32_sigcode[]; extern char freebsd4_ia32_sigcode[]; extern int sz_ia32_sigcode; Modified: projects/altix/sys/compat/linprocfs/linprocfs.c ============================================================================== --- projects/altix/sys/compat/linprocfs/linprocfs.c Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/compat/linprocfs/linprocfs.c Tue Apr 13 23:54:40 2010 (r206572) @@ -110,12 +110,14 @@ __FBSDID("$FreeBSD$"); /* * Various conversion macros */ -#define T2J(x) (((x) * 100UL) / (stathz ? stathz : hz)) /* ticks to jiffies */ +#define T2J(x) ((long)(((x) * 100ULL) / (stathz ? stathz : hz))) /* ticks to jiffies */ +#define T2CS(x) ((unsigned long)(((x) * 100ULL) / (stathz ? stathz : hz))) /* ticks to centiseconds */ #define T2S(x) ((x) / (stathz ? stathz : hz)) /* ticks to seconds */ #define B2K(x) ((x) >> 10) /* bytes to kbytes */ #define B2P(x) ((x) >> PAGE_SHIFT) /* bytes to pages */ #define P2B(x) ((x) << PAGE_SHIFT) /* pages to bytes */ #define P2K(x) ((x) << (PAGE_SHIFT - 10)) /* pages to kbytes */ +#define TV2J(x) ((x)->tv_sec * 100UL + (x)->tv_usec / 10000) /** * @brief Mapping of ki_stat in struct kinfo_proc to the linux state @@ -505,9 +507,10 @@ linprocfs_douptime(PFS_FILL_ARGS) getmicrouptime(&tv); read_cpu_time(cp_time); - sbuf_printf(sb, "%lld.%02ld %ld.%02ld\n", + sbuf_printf(sb, "%lld.%02ld %ld.%02lu\n", (long long)tv.tv_sec, tv.tv_usec / 10000, - T2S(cp_time[CP_IDLE]), T2J(cp_time[CP_IDLE]) % 100); + T2S(cp_time[CP_IDLE] / mp_ncpus), + T2CS(cp_time[CP_IDLE] / mp_ncpus) % 100); return (0); } @@ -613,9 +616,17 @@ linprocfs_doprocstat(PFS_FILL_ARGS) struct kinfo_proc kp; char state; static int ratelimit = 0; + vm_offset_t startcode, startdata; PROC_LOCK(p); fill_kinfo_proc(p, &kp); + if (p->p_vmspace) { + startcode = (vm_offset_t)p->p_vmspace->vm_taddr; + startdata = (vm_offset_t)p->p_vmspace->vm_daddr; + } else { + startcode = 0; + startdata = 0; + }; sbuf_printf(sb, "%d", p->p_pid); #define PS_ADD(name, fmt, arg) sbuf_printf(sb, " " fmt, arg) PS_ADD("comm", "(%s)", p->p_comm); @@ -634,30 +645,27 @@ linprocfs_doprocstat(PFS_FILL_ARGS) PS_ADD("pgrp", "%d", p->p_pgid); PS_ADD("session", "%d", p->p_session->s_sid); PROC_UNLOCK(p); - PS_ADD("tty", "%d", 0); /* XXX */ + PS_ADD("tty", "%d", kp.ki_tdev); PS_ADD("tpgid", "%d", kp.ki_tpgid); PS_ADD("flags", "%u", 0); /* XXX */ PS_ADD("minflt", "%lu", kp.ki_rusage.ru_minflt); PS_ADD("cminflt", "%lu", kp.ki_rusage_ch.ru_minflt); PS_ADD("majflt", "%lu", kp.ki_rusage.ru_majflt); PS_ADD("cmajflt", "%lu", kp.ki_rusage_ch.ru_majflt); - PS_ADD("utime", "%ld", T2J(tvtohz(&kp.ki_rusage.ru_utime))); - PS_ADD("stime", "%ld", T2J(tvtohz(&kp.ki_rusage.ru_stime))); - PS_ADD("cutime", "%ld", T2J(tvtohz(&kp.ki_rusage_ch.ru_utime))); - PS_ADD("cstime", "%ld", T2J(tvtohz(&kp.ki_rusage_ch.ru_stime))); + PS_ADD("utime", "%ld", TV2J(&kp.ki_rusage.ru_utime)); + PS_ADD("stime", "%ld", TV2J(&kp.ki_rusage.ru_stime)); + PS_ADD("cutime", "%ld", TV2J(&kp.ki_rusage_ch.ru_utime)); + PS_ADD("cstime", "%ld", TV2J(&kp.ki_rusage_ch.ru_stime)); PS_ADD("priority", "%d", kp.ki_pri.pri_user); PS_ADD("nice", "%d", kp.ki_nice); /* 19 (nicest) to -19 */ PS_ADD("0", "%d", 0); /* removed field */ PS_ADD("itrealvalue", "%d", 0); /* XXX */ - /* XXX: starttime is not right, it is the _same_ for _every_ process. - It should be the number of jiffies between system boot and process - start. */ - PS_ADD("starttime", "%lu", T2J(tvtohz(&kp.ki_start))); + PS_ADD("starttime", "%lu", TV2J(&kp.ki_start) - TV2J(&boottime)); PS_ADD("vsize", "%ju", P2K((uintmax_t)kp.ki_size)); PS_ADD("rss", "%ju", (uintmax_t)kp.ki_rssize); PS_ADD("rlim", "%lu", kp.ki_rusage.ru_maxrss); - PS_ADD("startcode", "%u", (unsigned)0); - PS_ADD("endcode", "%u", 0); /* XXX */ + PS_ADD("startcode", "%ju", (uintmax_t)startcode); + PS_ADD("endcode", "%ju", (uintmax_t)startdata); PS_ADD("startstack", "%u", 0); /* XXX */ PS_ADD("kstkesp", "%u", 0); /* XXX */ PS_ADD("kstkeip", "%u", 0); /* XXX */ @@ -800,7 +808,7 @@ linprocfs_doprocstatus(PFS_FILL_ARGS) */ sbuf_printf(sb, "VmSize:\t%8ju kB\n", B2K((uintmax_t)kp.ki_size)); sbuf_printf(sb, "VmLck:\t%8u kB\n", P2K(0)); /* XXX */ - sbuf_printf(sb, "VmRss:\t%8ju kB\n", P2K((uintmax_t)kp.ki_rssize)); + sbuf_printf(sb, "VmRSS:\t%8ju kB\n", P2K((uintmax_t)kp.ki_rssize)); sbuf_printf(sb, "VmData:\t%8ju kB\n", P2K((uintmax_t)kp.ki_dsize)); sbuf_printf(sb, "VmStk:\t%8ju kB\n", P2K((uintmax_t)kp.ki_ssize)); sbuf_printf(sb, "VmExe:\t%8ju kB\n", P2K((uintmax_t)kp.ki_tsize)); Modified: projects/altix/sys/conf/files ============================================================================== --- projects/altix/sys/conf/files Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/conf/files Tue Apr 13 23:54:40 2010 (r206572) @@ -1190,7 +1190,7 @@ iwn6000fw.fwo optional iwn6000fw | iwn clean "iwn6000fw.fwo" iwn6000.fw optional iwn6000fw | iwnfw \ dependency ".PHONY" \ - compile-with "uudecode -o ${.TARGET} $S/contrib/dev/iwn/iwlwifi-6000-9.176.4.1.fw.uu" \ + compile-with "uudecode -o ${.TARGET} $S/contrib/dev/iwn/iwlwifi-6000-9.193.4.1.fw.uu" \ no-obj no-implicit-rule \ clean "iwn6000.fw" dev/ixgb/if_ixgb.c optional ixgb @@ -2358,7 +2358,7 @@ net80211/ieee80211_action.c optional wla net80211/ieee80211_ageq.c optional wlan net80211/ieee80211_adhoc.c optional wlan net80211/ieee80211_ageq.c optional wlan -net80211/ieee80211_amrr.c optional wlan wlan_amrr +net80211/ieee80211_amrr.c optional wlan | wlan_amrr net80211/ieee80211_crypto.c optional wlan net80211/ieee80211_crypto_ccmp.c optional wlan wlan_ccmp net80211/ieee80211_crypto_none.c optional wlan @@ -2380,6 +2380,7 @@ net80211/ieee80211_phy.c optional wlan net80211/ieee80211_power.c optional wlan net80211/ieee80211_proto.c optional wlan net80211/ieee80211_radiotap.c optional wlan +net80211/ieee80211_ratectl.c optional wlan net80211/ieee80211_regdomain.c optional wlan net80211/ieee80211_rssadapt.c optional wlan wlan_rssadapt net80211/ieee80211_scan.c optional wlan Modified: projects/altix/sys/conf/files.amd64 ============================================================================== --- projects/altix/sys/conf/files.amd64 Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/conf/files.amd64 Tue Apr 13 23:54:40 2010 (r206572) @@ -198,6 +198,7 @@ dev/hptrr/hptrr_config.c optional hptrr dev/hwpmc/hwpmc_amd.c optional hwpmc dev/hwpmc/hwpmc_intel.c optional hwpmc dev/hwpmc/hwpmc_core.c optional hwpmc +dev/hwpmc/hwpmc_uncore.c optional hwpmc dev/hwpmc/hwpmc_piv.c optional hwpmc dev/hwpmc/hwpmc_tsc.c optional hwpmc dev/hwpmc/hwpmc_x86.c optional hwpmc Modified: projects/altix/sys/conf/files.i386 ============================================================================== --- projects/altix/sys/conf/files.i386 Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/conf/files.i386 Tue Apr 13 23:54:40 2010 (r206572) @@ -179,6 +179,7 @@ dev/hptrr/hptrr_config.c optional hptrr dev/hwpmc/hwpmc_amd.c optional hwpmc dev/hwpmc/hwpmc_intel.c optional hwpmc dev/hwpmc/hwpmc_core.c optional hwpmc +dev/hwpmc/hwpmc_uncore.c optional hwpmc dev/hwpmc/hwpmc_pentium.c optional hwpmc dev/hwpmc/hwpmc_piv.c optional hwpmc dev/hwpmc/hwpmc_ppro.c optional hwpmc Modified: projects/altix/sys/conf/files.pc98 ============================================================================== --- projects/altix/sys/conf/files.pc98 Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/conf/files.pc98 Tue Apr 13 23:54:40 2010 (r206572) @@ -99,6 +99,7 @@ dev/fe/if_fe_cbus.c optional fe isa dev/hwpmc/hwpmc_amd.c optional hwpmc dev/hwpmc/hwpmc_intel.c optional hwpmc dev/hwpmc/hwpmc_core.c optional hwpmc +dev/hwpmc/hwpmc_uncore.c optional hwpmc dev/hwpmc/hwpmc_pentium.c optional hwpmc dev/hwpmc/hwpmc_piv.c optional hwpmc dev/hwpmc/hwpmc_ppro.c optional hwpmc Modified: projects/altix/sys/conf/files.sparc64 ============================================================================== --- projects/altix/sys/conf/files.sparc64 Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/conf/files.sparc64 Tue Apr 13 23:54:40 2010 (r206572) @@ -79,6 +79,7 @@ sparc64/pci/ofw_pcib.c optional pci sparc64/pci/ofw_pcib_subr.c optional pci sparc64/pci/ofw_pcibus.c optional pci sparc64/pci/psycho.c optional pci +sparc64/pci/sbbc.c optional uart sbbc sparc64/pci/schizo.c optional pci sparc64/sbus/dma_sbus.c optional sbus sparc64/sbus/sbus.c optional sbus Modified: projects/altix/sys/conf/kern.mk ============================================================================== --- projects/altix/sys/conf/kern.mk Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/conf/kern.mk Tue Apr 13 23:54:40 2010 (r206572) @@ -108,3 +108,11 @@ CFLAGS+= -restrict ${MACHINE_ARCH} != "arm" && ${MACHINE_ARCH} != "mips" CFLAGS+= -fstack-protector .endif + +# +# Enable CTF conversation on request. +# +.if defined(WITH_CTF) +.undef NO_CTF +.endif + Modified: projects/altix/sys/conf/kern.post.mk ============================================================================== --- projects/altix/sys/conf/kern.post.mk Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/conf/kern.post.mk Tue Apr 13 23:54:40 2010 (r206572) @@ -19,6 +19,10 @@ MKMODULESENV+= KERNBUILDDIR="${.CURDIR}" MKMODULESENV+= CONF_CFLAGS="${CONF_CFLAGS}" .endif +.if defined(WITH_CTF) +MKMODULESENV+= WITH_CTF="${WITH_CTF}" +.endif + .MAIN: all .for target in all clean cleandepend cleandir clobber depend install \ @@ -90,9 +94,7 @@ ${FULLKERNEL}: ${SYSTEM_DEP} vers.o @rm -f ${.TARGET} @echo linking ${.TARGET} ${SYSTEM_LD} -.if defined(CTFMERGE) - ${SYSTEM_CTFMERGE} -.endif + @${SYSTEM_CTFMERGE} .if !defined(DEBUG) ${OBJCOPY} --strip-debug ${.TARGET} .endif @@ -240,9 +242,7 @@ kernel-reinstall: config.o env.o hints.o vers.o vnode_if.o: ${NORMAL_C} -.if defined(CTFCONVERT) - ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} -.endif + @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} config.ln env.ln hints.ln vers.ln vnode_if.ln: ${NORMAL_LINT} Modified: projects/altix/sys/conf/kern.pre.mk ============================================================================== --- projects/altix/sys/conf/kern.pre.mk Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/conf/kern.pre.mk Tue Apr 13 23:54:40 2010 (r206572) @@ -128,11 +128,7 @@ NORMAL_C_NOWERROR= ${CC} -c ${CFLAGS} ${ NORMAL_M= ${AWK} -f $S/tools/makeobjops.awk ${.IMPSRC} -c ; \ ${CC} -c ${CFLAGS} ${WERROR} ${PROF} ${.PREFIX}.c -.if defined(CTFCONVERT) -NORMAL_CTFCONVERT= ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} -.else -NORMAL_CTFCONVERT= -.endif +NORMAL_CTFCONVERT= @[ -z "${CTFCONVERT}" -o -n "${NO_CTF}" ] || ${CTFCONVERT} ${CTFFLAGS} ${.TARGET} NORMAL_LINT= ${LINT} ${LINTFLAGS} ${CFLAGS:M-[DIU]*} ${.IMPSRC} @@ -141,10 +137,7 @@ SYSTEM_CFILES= config.c env.c hints.c vn SYSTEM_DEP= Makefile ${SYSTEM_OBJS} SYSTEM_OBJS= locore.o ${MDOBJS} ${OBJS} SYSTEM_OBJS+= ${SYSTEM_CFILES:.c=.o} -.if defined(CTFMERGE) -SYSTEM_CTFMERGE= ${CTFMERGE} ${CTFFLAGS} -o ${.TARGET} ${SYSTEM_OBJS} vers.o -LD+= -g -.endif +SYSTEM_CTFMERGE= [ -z "${CTFMERGE}" -o -n "${NO_CTF}" ] || ${CTFMERGE} ${CTFFLAGS} -o ${.TARGET} ${SYSTEM_OBJS} vers.o .if ${MACHINE_ARCH} == XXX_ALTIX_TODO SYSTEM_LDFLAGS= -r .else Modified: projects/altix/sys/conf/kmod.mk ============================================================================== --- projects/altix/sys/conf/kmod.mk Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/conf/kmod.mk Tue Apr 13 23:54:40 2010 (r206572) @@ -69,6 +69,11 @@ OBJCOPY?= objcopy .error "Do not use KMODDEPS on 5.0+; use MODULE_VERSION/MODULE_DEPEND" .endif +# Enable CTF conversion on request. +.if defined(WITH_CTF) +.undef NO_CTF +.endif + .include <bsd.init.mk> .SUFFIXES: .out .o .c .cc .cxx .C .y .l .s .S Modified: projects/altix/sys/contrib/dev/acpica/changes.txt ============================================================================== --- projects/altix/sys/contrib/dev/acpica/changes.txt Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/contrib/dev/acpica/changes.txt Tue Apr 13 23:54:40 2010 (r206572) @@ -1,4 +1,79 @@ ---------------------------------------- +31 March 2010. Summary of changes for version 20100331: + +1) ACPI CA Core Subsystem: + +Completed a major update for the GPE support in order to improve support for +shared GPEs and to simplify both host OS and ACPICA code. Added a reference +count mechanism to support shared GPEs that require multiple device drivers. +Several external interfaces have changed. One external interface has been +removed. One new external interface was added. Most of the GPE external +interfaces now use the GPE spinlock instead of the events mutex (and the +Flags parameter for many GPE interfaces has been removed.) See the updated +ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, Rafael +Wysocki. ACPICA BZ 831. + +Changed: + AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus +Removed: + AcpiSetGpeType +New: + AcpiSetGpe + +Implemented write support for DataTable operation regions. These regions are +defined via the DataTableRegion() operator. Previously, only read support was +implemented. The ACPI specification allows DataTableRegions to be read/write, +however. + +Implemented a new subsystem option to force a copy of the DSDT to local +memory. Optionally copy the entire DSDT to local memory (instead of simply +mapping it.) There are some (albeit very rare) BIOSs that corrupt or replace +the original DSDT, creating the need for this option. Default is FALSE, do +not copy the DSDT. + +Implemented detection of a corrupted or replaced DSDT. This change adds +support to detect a DSDT that has been corrupted and/or replaced from outside +the OS (by firmware). This is typically catastrophic for the system, but has +been seen on some machines. Once this problem has been detected, the DSDT +copy option can be enabled via system configuration. Lin Ming, Bob Moore. + +Fixed two problems with AcpiReallocateRootTable during the root table copy. +When copying the root table to the new allocation, the length used was +incorrect. The new size was used instead of the current table size, meaning +too much data was copied. Also, the count of available slots for ACPI tables +was not set correctly. Alexey Starikovskiy, Bob Moore. + +Example Code and Data Size: These are the sizes for the OS-independent +acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The +debug version of the code includes the debug output trace mechanism and has a +much larger code and data size. + + Previous Release: + Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total + Debug Version: 163.4K Code, 51.1K Data, 214.5K Total + Current Release: + Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total + Debug Version: 163.5K Code, 51.3K Data, 214.8K Total + +2) iASL Compiler/Disassembler and Tools: + +iASL: Implement limited typechecking for values returned from predefined +control methods. The type of any returned static (unnamed) object is now +validated. For example, Return(1). ACPICA BZ 786. + +iASL: Fixed a predefined name object verification regression. Fixes a problem +introduced in version 20100304. An error is incorrectly generated if a +predefined name is declared as a static named object with a value defined +using the keywords "Zero", "One", or "Ones". Lin Ming. + +iASL: Added Windows 7 support for the -g option (get local ACPI tables) by +reducing the requested registry access rights. ACPICA BZ 842. + +Disassembler: fixed a possible fault when generating External() statements. +Introduced in commit ae7d6fd: Properly handle externals with parent-prefix +(carat). Fixes a string length allocation calculation. Lin Ming. + +---------------------------------------- 04 March 2010. Summary of changes for version 20100304: 1) ACPI CA Core Subsystem: Modified: projects/altix/sys/contrib/dev/acpica/common/dmextern.c ============================================================================== --- projects/altix/sys/contrib/dev/acpica/common/dmextern.c Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/contrib/dev/acpica/common/dmextern.c Tue Apr 13 23:54:40 2010 (r206572) @@ -270,6 +270,15 @@ AcpiDmNormalizeParentPrefix ( } Length = (ACPI_STRLEN (ParentPath) + ACPI_STRLEN (Path) + 1); + if (ParentPath[1]) + { + /* + * If ParentPath is not just a simple '\', increment the length + * for the required dot separator (ParentPath.Path) + */ + Length++; + } + Fullpath = ACPI_ALLOCATE_ZEROED (Length); if (!Fullpath) { Modified: projects/altix/sys/contrib/dev/acpica/compiler/aslanalyze.c ============================================================================== --- projects/altix/sys/contrib/dev/acpica/compiler/aslanalyze.c Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/contrib/dev/acpica/compiler/aslanalyze.c Tue Apr 13 23:54:40 2010 (r206572) @@ -1157,6 +1157,12 @@ AnMethodAnalysisWalkEnd ( case PARSEOP_RETURN: /* + * If the parent is a predefined method name, attempt to typecheck + * the return value. Only static types can be validated. + */ + ApCheckPredefinedReturnValue (Op, MethodInfo); + + /* * The parent block does not "exit" and continue execution -- the * method is terminated here with the Return() statement. */ Modified: projects/altix/sys/contrib/dev/acpica/compiler/aslcompiler.h ============================================================================== --- projects/altix/sys/contrib/dev/acpica/compiler/aslcompiler.h Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/contrib/dev/acpica/compiler/aslcompiler.h Tue Apr 13 23:54:40 2010 (r206572) @@ -461,6 +461,11 @@ ApCheckForPredefinedMethod ( ACPI_PARSE_OBJECT *Op, ASL_METHOD_INFO *MethodInfo); +void +ApCheckPredefinedReturnValue ( + ACPI_PARSE_OBJECT *Op, + ASL_METHOD_INFO *MethodInfo); + UINT32 ApCheckForPredefinedName ( ACPI_PARSE_OBJECT *Op, Modified: projects/altix/sys/contrib/dev/acpica/compiler/aslpredef.c ============================================================================== --- projects/altix/sys/contrib/dev/acpica/compiler/aslpredef.c Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/contrib/dev/acpica/compiler/aslpredef.c Tue Apr 13 23:54:40 2010 (r206572) @@ -296,7 +296,11 @@ ApCheckForPredefinedMethod ( if (MethodInfo->NumReturnNoValue && PredefinedNames[Index].Info.ExpectedBtypes) { - sprintf (MsgBuffer, "%4.4s", PredefinedNames[Index].Info.Name); + ApGetExpectedTypes (StringBuffer, + PredefinedNames[Index].Info.ExpectedBtypes); + + sprintf (MsgBuffer, "%s required for %4.4s", + StringBuffer, PredefinedNames[Index].Info.Name); AslError (ASL_WARNING, ASL_MSG_RESERVED_RETURN_VALUE, Op, MsgBuffer); @@ -308,6 +312,90 @@ ApCheckForPredefinedMethod ( /******************************************************************************* * + * FUNCTION: ApCheckPredefinedReturnValue + * + * PARAMETERS: Op - A parse node of type "RETURN". + * MethodInfo - Saved info about this method + * + * RETURN: None + * + * DESCRIPTION: If method is a predefined name, attempt to validate the return + * value. Only "static" types can be validated - a simple return + * of an integer/string/buffer/package or a named reference to + * a static object. Values such as a Localx or Argx or a control + * method invocation are not checked. + * + ******************************************************************************/ + +void +ApCheckPredefinedReturnValue ( + ACPI_PARSE_OBJECT *Op, + ASL_METHOD_INFO *MethodInfo) +{ + UINT32 Index; + ACPI_PARSE_OBJECT *ReturnValueOp; + + + /* Check parent method for a match against the predefined name list */ + + Index = ApCheckForPredefinedName (MethodInfo->Op, + MethodInfo->Op->Asl.NameSeg); + + switch (Index) + { + case ACPI_NOT_RESERVED_NAME: /* No underscore or _Txx or _xxx name not matched */ + case ACPI_PREDEFINED_NAME: /* Resource Name or reserved scope name */ + case ACPI_COMPILER_RESERVED_NAME: /* A _Txx that was not emitted by compiler */ + case ACPI_EVENT_RESERVED_NAME: /* _Lxx, _Exx, and _Qxx methods */ + + /* Just return, nothing to do */ + return; + + default: /* a real predefined ACPI name */ + + /* Exit if no return value expected */ + + if (!PredefinedNames[Index].Info.ExpectedBtypes) + { + return; + } + + /* Get the object returned, it is the next argument */ + + ReturnValueOp = Op->Asl.Child; + switch (ReturnValueOp->Asl.ParseOpcode) + { + case PARSEOP_ZERO: + case PARSEOP_ONE: + case PARSEOP_ONES: + case PARSEOP_INTEGER: + case PARSEOP_STRING_LITERAL: + case PARSEOP_BUFFER: + case PARSEOP_PACKAGE: + + /* Static data return object - check against expected type */ + + ApCheckObjectType (ReturnValueOp, + PredefinedNames[Index].Info.ExpectedBtypes); + break; + + default: + + /* + * All other ops are very difficult or impossible to typecheck at + * compile time. These include all Localx, Argx, and method + * invocations. Also, NAMESEG and NAMESTRING because the type of + * any named object can be changed at runtime (for example, + * CopyObject will change the type of the target object.) + */ + break; + } + } +} + + +/******************************************************************************* + * * FUNCTION: ApCheckForPredefinedObject * * PARAMETERS: Op - A parse node @@ -441,7 +529,7 @@ ApCheckForPredefinedName ( * * RETURN: None * - * DESCRIPTION: Check for the "special" predefined names - + * DESCRIPTION: Check for the "special" predefined names - * _Lxx, _Exx, _Qxx, and _T_x * ******************************************************************************/ @@ -512,7 +600,7 @@ ApCheckForSpecialName ( * * FUNCTION: ApCheckObjectType * - * PARAMETERS: Op - A parse node + * PARAMETERS: Op - Current parse node * ExpectedBtypes - Bitmap of expected return type(s) * * RETURN: None @@ -529,11 +617,13 @@ ApCheckObjectType ( UINT32 ExpectedBtypes) { UINT32 ReturnBtype; - char TypeBuffer[48]; /* Room for 5 types */ switch (Op->Asl.ParseOpcode) { + case PARSEOP_ZERO: + case PARSEOP_ONE: + case PARSEOP_ONES: case PARSEOP_INTEGER: ReturnBtype = ACPI_RTYPE_INTEGER; break; @@ -552,11 +642,11 @@ ApCheckObjectType ( default: /* Not one of the supported object types */ - + goto TypeErrorExit; } - /* Is the object one of the expected types? */ + /* Exit if the object is one of the expected types */ if (ReturnBtype & ExpectedBtypes) { @@ -568,10 +658,13 @@ TypeErrorExit: /* Format the expected types and emit an error message */ - ApGetExpectedTypes (TypeBuffer, ExpectedBtypes); + ApGetExpectedTypes (StringBuffer, ExpectedBtypes); + + sprintf (MsgBuffer, "found %s, requires %s", + UtGetOpName (Op->Asl.ParseOpcode), StringBuffer); AslError (ASL_ERROR, ASL_MSG_RESERVED_OPERAND_TYPE, Op, - TypeBuffer); + MsgBuffer); } Modified: projects/altix/sys/contrib/dev/acpica/compiler/aslstubs.c ============================================================================== --- projects/altix/sys/contrib/dev/acpica/compiler/aslstubs.c Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/contrib/dev/acpica/compiler/aslstubs.c Tue Apr 13 23:54:40 2010 (r206572) @@ -243,13 +243,6 @@ AcpiEvInitializeRegion ( return (AE_OK); } -ACPI_STATUS -AcpiEvCheckForWakeOnlyGpe ( - ACPI_GPE_EVENT_INFO *GpeEventInfo) -{ - return (AE_OK); -} - void AcpiExDoDebugObject ( ACPI_OPERAND_OBJECT *SourceDesc, Modified: projects/altix/sys/contrib/dev/acpica/compiler/asltypes.h ============================================================================== --- projects/altix/sys/contrib/dev/acpica/compiler/asltypes.h Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/contrib/dev/acpica/compiler/asltypes.h Tue Apr 13 23:54:40 2010 (r206572) @@ -507,7 +507,7 @@ char *AslMessages /* ASL_MSG_RESERVED_ARG_COUNT_HI */ "Reserved method has too many arguments", /* ASL_MSG_RESERVED_ARG_COUNT_LO */ "Reserved method has too few arguments", /* ASL_MSG_RESERVED_METHOD */ "Reserved name must be a control method", -/* ASL_MSG_RESERVED_OPERAND_TYPE */ "Invalid object type for reserved name, must be", +/* ASL_MSG_RESERVED_OPERAND_TYPE */ "Invalid object type for reserved name", /* ASL_MSG_RESERVED_RETURN_VALUE */ "Reserved method must return a value", /* ASL_MSG_RESERVED_USE */ "Invalid use of reserved name", /* ASL_MSG_RESERVED_WORD */ "Use of reserved name", Modified: projects/altix/sys/contrib/dev/acpica/debugger/dbdisply.c ============================================================================== --- projects/altix/sys/contrib/dev/acpica/debugger/dbdisply.c Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/contrib/dev/acpica/debugger/dbdisply.c Tue Apr 13 23:54:40 2010 (r206572) @@ -848,13 +848,12 @@ AcpiDbDisplayGpes ( Block, GpeBlock, GpeBlock->Node, Buffer); AcpiOsPrintf (" Registers: %u (%u GPEs)\n", - GpeBlock->RegisterCount, - ACPI_MUL_8 (GpeBlock->RegisterCount)); + GpeBlock->RegisterCount, GpeBlock->GpeCount); - AcpiOsPrintf (" GPE range: 0x%X to 0x%X\n", + AcpiOsPrintf (" GPE range: 0x%X to 0x%X on interrupt %u\n", GpeBlock->BlockBaseNumber, - GpeBlock->BlockBaseNumber + - (GpeBlock->RegisterCount * 8) -1); + GpeBlock->BlockBaseNumber + (GpeBlock->GpeCount - 1), + GpeXruptInfo->InterruptNumber); AcpiOsPrintf ( " RegisterInfo: %p Status %8.8X%8.8X Enable %8.8X%8.8X\n", @@ -871,9 +870,12 @@ AcpiDbDisplayGpes ( GpeRegisterInfo = &GpeBlock->RegisterInfo[i]; AcpiOsPrintf ( - " Reg %u: WakeEnable %2.2X, RunEnable %2.2X Status %8.8X%8.8X Enable %8.8X%8.8X\n", - i, GpeRegisterInfo->EnableForWake, + " Reg %u: (GPE %.2X-%.2X) RunEnable %2.2X WakeEnable %2.2X" + " Status %8.8X%8.8X Enable %8.8X%8.8X\n", + i, GpeRegisterInfo->BaseGpeNumber, + GpeRegisterInfo->BaseGpeNumber + (ACPI_GPE_REGISTER_WIDTH - 1), GpeRegisterInfo->EnableForRun, + GpeRegisterInfo->EnableForWake, ACPI_FORMAT_UINT64 (GpeRegisterInfo->StatusAddress.Address), ACPI_FORMAT_UINT64 (GpeRegisterInfo->EnableAddress.Address)); @@ -886,17 +888,19 @@ AcpiDbDisplayGpes ( if (!(GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK)) { - /* This GPE is not used (no method or handler) */ + /* This GPE is not used (no method or handler), ignore it */ continue; } AcpiOsPrintf ( - " GPE %.3X: %p Flags %2.2X: ", - GpeBlock->BlockBaseNumber + GpeIndex, - GpeEventInfo, + " GPE %.2X: %p RunRefs %2.2X WakeRefs %2.2X Flags %2.2X (", + GpeBlock->BlockBaseNumber + GpeIndex, GpeEventInfo, + GpeEventInfo->RuntimeCount, GpeEventInfo->WakeupCount, GpeEventInfo->Flags); + /* Decode the flags byte */ + if (GpeEventInfo->Flags & ACPI_GPE_LEVEL_TRIGGERED) { AcpiOsPrintf ("Level, "); @@ -906,38 +910,13 @@ AcpiDbDisplayGpes ( AcpiOsPrintf ("Edge, "); } - switch (GpeEventInfo->Flags & ACPI_GPE_TYPE_MASK) - { - case ACPI_GPE_TYPE_WAKE: - AcpiOsPrintf ("WakeOnly: "); - break; - case ACPI_GPE_TYPE_RUNTIME: - AcpiOsPrintf (" RunOnly: "); - break; - case ACPI_GPE_TYPE_WAKE_RUN: - AcpiOsPrintf (" WakeRun: "); - break; - default: - AcpiOsPrintf (" NotUsed: "); - break; - } - - if (GpeEventInfo->Flags & ACPI_GPE_WAKE_ENABLED) - { - AcpiOsPrintf ("[Wake 1 "); - } - else - { - AcpiOsPrintf ("[Wake 0 "); - } - - if (GpeEventInfo->Flags & ACPI_GPE_RUN_ENABLED) + if (GpeEventInfo->Flags & ACPI_GPE_CAN_WAKE) { - AcpiOsPrintf ("Run 1], "); + AcpiOsPrintf ("CanWake, "); } else { - AcpiOsPrintf ("Run 0], "); + AcpiOsPrintf ("RunOnly, "); } switch (GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK) @@ -957,7 +936,7 @@ AcpiDbDisplayGpes ( break; } - AcpiOsPrintf ("\n"); + AcpiOsPrintf (")\n"); } } Block++; Modified: projects/altix/sys/contrib/dev/acpica/events/evgpe.c ============================================================================== --- projects/altix/sys/contrib/dev/acpica/events/evgpe.c Tue Apr 13 22:27:39 2010 (r206571) +++ projects/altix/sys/contrib/dev/acpica/events/evgpe.c Tue Apr 13 23:54:40 2010 (r206572) @@ -134,71 +134,20 @@ AcpiEvAsynchEnableGpe ( /******************************************************************************* * - * FUNCTION: AcpiEvSetGpeType - * - * PARAMETERS: GpeEventInfo - GPE to set - * Type - New type - * - * RETURN: Status - * - * DESCRIPTION: Sets the new type for the GPE (wake, run, or wake/run) - * - ******************************************************************************/ - -ACPI_STATUS -AcpiEvSetGpeType ( - ACPI_GPE_EVENT_INFO *GpeEventInfo, - UINT8 Type) -{ - ACPI_STATUS Status; - - - ACPI_FUNCTION_TRACE (EvSetGpeType); - - - /* Validate type and update register enable masks */ - - switch (Type) - { - case ACPI_GPE_TYPE_WAKE: - case ACPI_GPE_TYPE_RUNTIME: - case ACPI_GPE_TYPE_WAKE_RUN: - break; *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201004132354.o3DNsexU002253>