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...
Marcel Moolenaar
marcel at FreeBSD.org
Tue Apr 13 23:54:41 UTC 2010
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 ***
More information about the svn-src-projects
mailing list