summaryrefslogtreecommitdiff
path: root/usr/src/uts/common
diff options
context:
space:
mode:
authorcindi <none@none>2006-02-11 15:36:52 -0800
committercindi <none@none>2006-02-11 15:36:52 -0800
commit7aec1d6e253b21f9e9b7ef68b4d81ab9859b51fe (patch)
tree6d2238a19328181f6effdcd9f45c17b71b905c87 /usr/src/uts/common
parent25145214af3b4b0be324f9115e4aee99f1e31edf (diff)
downloadillumos-joyent-7aec1d6e253b21f9e9b7ef68b4d81ab9859b51fe.tar.gz
PSARC 2006/020 FMA for Athlon 64 and Opteron Processors
PSARC 2006/028 eversholt language enhancements 6181364 Eversholt needs method to revise value of a fault's property 6183842 eft can construct extra propagations in the instance tree 6187143 eversholt needs to use fmd_case_add_serd() to add counted ereports against open case 6232253 wildcarding may not pick up matches buried in config path 6284455 eversholt wildcarding and vertical expansion have trouble working together 6298484 properties are not auto-converting to integers in eversholt constraints 6298972 eversholt should be able to mark faults as no-message like the cpumem DE 6298974 nested SERD engines don't work 6298981 eft memory usage could improve by caching common constraint expressions 6323319 call() is not allowing string-valued returns 6323322 a global variable should be allowed as the RHS of an nvpair 6323393 eversholt caches a little too much info when caching constraints 6323554 eversholt type conversion can cause core dump 6328144 libexacct leaks like a really big sieve when faced with non-exacct input 6331093 payloadprop should be able to read and interpret hc scheme fmris 6332245 payloadprop() returns cached value from existing FME when not appropriate 6333617 eversholt should have way to check if a global is defined 6346926 eversholt needs a way to maintain diagnosis statistics 6359264 Provide FMA support for AMD64 processors 6363503 Can not register error handler callbacks for root node 6366821 cpu scheme serial number should be a string 6367031 eft.so leaks memory 6370284 cpumem-diagnosis checks the asru version against FM_EREPORT_VERSION instead of FM_CPU_SCHEME_VERSION 6377319 eft could close cases for resources already in the faulty state 6379498 fmd dies on assertion failure when repairing an fmd module 6381022 fmd_case_insert_event() should reject duplicates and save memory --HG-- rename : usr/src/cmd/fm/schemes/cpu/Makefile.targ => deleted_files/usr/src/cmd/fm/schemes/cpu/Makefile.targ rename : usr/src/cmd/fm/schemes/mem/Makefile.targ => deleted_files/usr/src/cmd/fm/schemes/mem/Makefile.targ rename : usr/src/cmd/fm/topo/Makefile => deleted_files/usr/src/cmd/fm/topo.1/Makefile rename : usr/src/cmd/fm/topo/Makefile.rootdirs => deleted_files/usr/src/cmd/fm/topo.1/Makefile.rootdirs rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-T1000/Makefile => deleted_files/usr/src/cmd/fm/topo/files.1/sparc/SUNW,Sun-Fire-T1000/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-T1000/platform.topo => deleted_files/usr/src/cmd/fm/topo/files.1/sparc/SUNW,Sun-Fire-T1000/platform.topo rename : usr/src/cmd/fm/topo/files/Makefile => deleted_files/usr/src/cmd/fm/topo/files/Makefile rename : usr/src/cmd/fm/topo/files/Makefile.com => deleted_files/usr/src/cmd/fm/topo/files/Makefile.com rename : usr/src/cmd/fm/topo/files/Makefile.link => deleted_files/usr/src/cmd/fm/topo/files/Makefile.link rename : usr/src/cmd/fm/topo/files/i386/Makefile => deleted_files/usr/src/cmd/fm/topo/files/i386/Makefile rename : usr/src/cmd/fm/topo/files/sparc/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,A70/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,A70/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,A70/platform.topo => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,A70/platform.topo rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Netra-210/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Netra-210/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Netra-210/platform.topo => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Netra-210/platform.topo rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Netra-240/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Netra-240/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Netra-440/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Netra-440/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Netra-CP3010/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Netra-CP3010/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Netra-CP3010/platform.topo => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Netra-CP3010/platform.topo rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Netra-T12/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Netra-T12/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Netra-T12/platform.topo => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Netra-T12/platform.topo rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Netra-T4/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Netra-T4/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Serverblade1/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Serverblade1/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Serverblade1/platform.topo => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Serverblade1/platform.topo rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Blade-100/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Blade-100/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Blade-100/platform.topo => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Blade-100/platform.topo rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Blade-1000/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Blade-1000/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Blade-1000/platform.topo => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Blade-1000/platform.topo rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Blade-1500/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Blade-1500/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Blade-1500/platform.topo => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Blade-1500/platform.topo rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Blade-2000/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Blade-2000/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Blade-2500/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Blade-2500/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Blade-2500/platform.topo => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Blade-2500/platform.topo rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-15000/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-15000/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-15000/platform.topo => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-15000/platform.topo rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-280R/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-280R/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-480R/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-480R/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-480R/platform.topo => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-480R/platform.topo rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-880/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-880/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-880/platform.topo => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-880/platform.topo rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-T200/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-T200/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-T200/pcidev.topo => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-T200/pcidev.topo rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-T200/pciexdev.topo => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-T200/pciexdev.topo rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-T200/platform.topo => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-T200/platform.topo rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-V210/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-V210/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-V215/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-V215/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-V240/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-V240/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-V240/platform.topo => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-V240/platform.topo rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-V245/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-V245/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-V245/platform.topo => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-V245/platform.topo rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-V250/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-V250/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-V440/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-V440/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-V440/platform.topo => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-V440/platform.topo rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-V445/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-V445/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-V445/platform.topo => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-V445/platform.topo rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-V490/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-V490/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-V890/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire-V890/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire/platform.topo => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Sun-Fire/platform.topo rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Ultra-250/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Ultra-250/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Ultra-250/platform.topo => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Ultra-250/platform.topo rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Ultra-30/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Ultra-30/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Ultra-30/platform.topo => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Ultra-30/platform.topo rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Ultra-4/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Ultra-4/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Ultra-4/platform.topo => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Ultra-4/platform.topo rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Ultra-5_10/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Ultra-5_10/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Ultra-5_10/platform.topo => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Ultra-5_10/platform.topo rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Ultra-60/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Ultra-60/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Ultra-60/platform.topo => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Ultra-60/platform.topo rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Ultra-80/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Ultra-80/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,Ultra-80/platform.topo => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,Ultra-80/platform.topo rename : usr/src/cmd/fm/topo/files/sparc/SUNW,UltraAX-i2/Makefile => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,UltraAX-i2/Makefile rename : usr/src/cmd/fm/topo/files/sparc/SUNW,UltraAX-i2/platform.topo => deleted_files/usr/src/cmd/fm/topo/files/sparc/SUNW,UltraAX-i2/platform.topo rename : usr/src/cmd/fm/topo/plugins/Makefile => deleted_files/usr/src/cmd/fm/topo/plugins/Makefile rename : usr/src/cmd/fm/topo/plugins/Makefile.plugin => deleted_files/usr/src/cmd/fm/topo/plugins/Makefile.plugin rename : usr/src/cmd/fm/topo/plugins/Makefile.topoonly => deleted_files/usr/src/cmd/fm/topo/plugins/Makefile.topoonly rename : usr/src/cmd/fm/topo/plugins/common/Makefile => deleted_files/usr/src/cmd/fm/topo/plugins/common/Makefile rename : usr/src/cmd/fm/topo/plugins/common/pcibus/Makefile => deleted_files/usr/src/cmd/fm/topo/plugins/common/pcibus/Makefile rename : usr/src/cmd/fm/topo/plugins/common/pcibus/enumpci.h => deleted_files/usr/src/cmd/fm/topo/plugins/common/pcibus/enumpci.h rename : usr/src/cmd/fm/topo/plugins/common/pcibus/pcibus.c => deleted_files/usr/src/cmd/fm/topo/plugins/common/pcibus/pcibus.c rename : usr/src/cmd/fm/topo/plugins/common/pcibus/pcibus.topo => deleted_files/usr/src/cmd/fm/topo/plugins/common/pcibus/pcibus.topo rename : usr/src/cmd/fm/topo/plugins/common/pciexbus/Makefile => deleted_files/usr/src/cmd/fm/topo/plugins/common/pciexbus/Makefile rename : usr/src/cmd/fm/topo/plugins/common/pciexbus/pciexbus.topo => deleted_files/usr/src/cmd/fm/topo/plugins/common/pciexbus/pciexbus.topo rename : usr/src/cmd/fm/topo/plugins/common/pciexrc/Makefile => deleted_files/usr/src/cmd/fm/topo/plugins/common/pciexrc/Makefile rename : usr/src/cmd/fm/topo/plugins/common/pciexrc/pciexrc.topo => deleted_files/usr/src/cmd/fm/topo/plugins/common/pciexrc/pciexrc.topo rename : usr/src/cmd/fm/topo/plugins/common/cpu/Makefile => deleted_files/usr/src/cmd/fm/topo/plugins/sparc/cpu/Makefile rename : usr/src/cmd/fm/topo/plugins/common/cpu/cpu.c => deleted_files/usr/src/cmd/fm/topo/plugins/sparc/cpu/cpu.c rename : usr/src/cmd/fm/topo/plugins/common/cpu/cpu.topo => deleted_files/usr/src/cmd/fm/topo/plugins/sparc/cpu/cpu.topo rename : usr/src/lib/fm/libtopo/Makefile => deleted_files/usr/src/lib/fm/libtopo/Makefile rename : usr/src/lib/fm/libtopo/Makefile.com => deleted_files/usr/src/lib/fm/libtopo/Makefile.com rename : usr/src/lib/fm/libtopo/amd64/Makefile => deleted_files/usr/src/lib/fm/libtopo/amd64/Makefile rename : usr/src/lib/fm/libtopo/common/libtopo.h => deleted_files/usr/src/lib/fm/libtopo/common/libtopo.h rename : usr/src/lib/fm/libtopo/common/libtopo_enum.h => deleted_files/usr/src/lib/fm/libtopo/common/libtopo_enum.h rename : usr/src/lib/fm/libtopo/common/llib-ltopo => deleted_files/usr/src/lib/fm/libtopo/common/llib-ltopo rename : usr/src/lib/fm/libtopo/common/topo.c => deleted_files/usr/src/lib/fm/libtopo/common/topo.c rename : usr/src/lib/fm/libtopo/common/topo_enum.c => deleted_files/usr/src/lib/fm/libtopo/common/topo_enum.c rename : usr/src/lib/fm/libtopo/common/topo_enum.h => deleted_files/usr/src/lib/fm/libtopo/common/topo_enum.h rename : usr/src/lib/fm/libtopo/common/topo_hash.c => deleted_files/usr/src/lib/fm/libtopo/common/topo_hash.c rename : usr/src/lib/fm/libtopo/common/topo_hcfmri.c => deleted_files/usr/src/lib/fm/libtopo/common/topo_hcfmri.c rename : usr/src/lib/fm/libtopo/common/topo_hcpath.c => deleted_files/usr/src/lib/fm/libtopo/common/topo_hcpath.c rename : usr/src/lib/fm/libtopo/common/topo_impl.h => deleted_files/usr/src/lib/fm/libtopo/common/topo_impl.h rename : usr/src/lib/fm/libtopo/common/topo_mem.c => deleted_files/usr/src/lib/fm/libtopo/common/topo_mem.c rename : usr/src/lib/fm/libtopo/common/topo_out.c => deleted_files/usr/src/lib/fm/libtopo/common/topo_out.c rename : usr/src/lib/fm/libtopo/common/topo_parse.c => deleted_files/usr/src/lib/fm/libtopo/common/topo_parse.c rename : usr/src/lib/fm/libtopo/common/topo_paths.c => deleted_files/usr/src/lib/fm/libtopo/common/topo_paths.c rename : usr/src/lib/fm/libtopo/common/topo_pkg.c => deleted_files/usr/src/lib/fm/libtopo/common/topo_pkg.c rename : usr/src/lib/fm/libtopo/common/topo_prop.c => deleted_files/usr/src/lib/fm/libtopo/common/topo_prop.c rename : usr/src/lib/fm/libtopo/common/topo_traverse.c => deleted_files/usr/src/lib/fm/libtopo/common/topo_traverse.c rename : usr/src/lib/fm/libtopo/i386/Makefile => deleted_files/usr/src/lib/fm/libtopo/i386/Makefile rename : usr/src/lib/fm/libtopo/sparc/Makefile => deleted_files/usr/src/lib/fm/libtopo/sparc/Makefile rename : usr/src/lib/fm/libtopo/sparcv9/Makefile => deleted_files/usr/src/lib/fm/libtopo/sparcv9/Makefile rename : usr/src/lib/fm/libtopo/spec/Makefile => deleted_files/usr/src/lib/fm/libtopo/spec/Makefile rename : usr/src/lib/fm/libtopo/spec/Makefile.targ => deleted_files/usr/src/lib/fm/libtopo/spec/Makefile.targ rename : usr/src/lib/fm/libtopo/spec/amd64/Makefile => deleted_files/usr/src/lib/fm/libtopo/spec/amd64/Makefile rename : usr/src/lib/fm/libtopo/spec/i386/Makefile => deleted_files/usr/src/lib/fm/libtopo/spec/i386/Makefile rename : usr/src/lib/fm/libtopo/spec/sparc/Makefile => deleted_files/usr/src/lib/fm/libtopo/spec/sparc/Makefile rename : usr/src/lib/fm/libtopo/spec/sparcv9/Makefile => deleted_files/usr/src/lib/fm/libtopo/spec/sparcv9/Makefile rename : usr/src/lib/fm/libtopo/spec/topo.spec => deleted_files/usr/src/lib/fm/libtopo/spec/topo.spec rename : usr/src/lib/fm/libtopo/spec/versions => deleted_files/usr/src/lib/fm/libtopo/spec/versions rename : usr/src/cmd/fm/topo/prtopo/Makefile => usr/src/cmd/fm/fmtopo/Makefile rename : usr/src/cmd/fm/topo/prtopo/Makefile.com => usr/src/cmd/fm/fmtopo/Makefile.com rename : usr/src/cmd/fm/topo/prtopo/common/prtopo.c => usr/src/cmd/fm/fmtopo/common/fmtopo.c rename : usr/src/cmd/fm/topo/prtopo/i386/Makefile => usr/src/cmd/fm/fmtopo/i386/Makefile rename : usr/src/cmd/fm/topo/prtopo/sparc/Makefile => usr/src/cmd/fm/fmtopo/sparc/Makefile rename : usr/src/cmd/fm/schemes/cpu/cpu_mdesc.c => usr/src/cmd/fm/schemes/cpu/sparc/cpu_mdesc.c rename : usr/src/cmd/fm/schemes/cpu/cpu.h => usr/src/cmd/fm/schemes/cpu/sparc/cpu_mdesc.h rename : usr/src/cmd/fm/schemes/mem/mem_disc.c => usr/src/cmd/fm/schemes/mem/sparc/mem_disc.c rename : usr/src/uts/common/sys/fm/cpu/UltraSPARC-II.h => usr/src/uts/sparc/sys/fm/cpu/UltraSPARC-II.h rename : usr/src/uts/common/sys/fm/cpu/UltraSPARC-III.h => usr/src/uts/sparc/sys/fm/cpu/UltraSPARC-III.h rename : usr/src/uts/common/sys/fm/cpu/UltraSPARC-T1.h => usr/src/uts/sparc/sys/fm/cpu/UltraSPARC-T1.h
Diffstat (limited to 'usr/src/uts/common')
-rw-r--r--usr/src/uts/common/io/mem.c62
-rw-r--r--usr/src/uts/common/krtld/kobj.c4
-rw-r--r--usr/src/uts/common/krtld/kobj_stubs.c4
-rw-r--r--usr/src/uts/common/os/chip.c12
-rw-r--r--usr/src/uts/common/os/cpu.c52
-rw-r--r--usr/src/uts/common/os/ddifm.c29
-rw-r--r--usr/src/uts/common/os/fm.c184
-rw-r--r--usr/src/uts/common/os/kcpc.c44
-rw-r--r--usr/src/uts/common/os/modconf.c7
-rw-r--r--usr/src/uts/common/os/modctl.c97
-rw-r--r--usr/src/uts/common/os/panic.c3
-rw-r--r--usr/src/uts/common/os/policy.c8
-rw-r--r--usr/src/uts/common/sys/Makefile13
-rw-r--r--usr/src/uts/common/sys/chip.h1
-rw-r--r--usr/src/uts/common/sys/dumphdr.h3
-rw-r--r--usr/src/uts/common/sys/fm/cpu/UltraSPARC-II.h65
-rw-r--r--usr/src/uts/common/sys/fm/cpu/UltraSPARC-III.h446
-rw-r--r--usr/src/uts/common/sys/fm/cpu/UltraSPARC-T1.h66
-rw-r--r--usr/src/uts/common/sys/fm/protocol.h15
-rw-r--r--usr/src/uts/common/sys/fm/util.h10
-rw-r--r--usr/src/uts/common/sys/kobj.h4
-rw-r--r--usr/src/uts/common/sys/mem.h10
-rw-r--r--usr/src/uts/common/sys/modctl.h51
-rw-r--r--usr/src/uts/common/sys/policy.h3
24 files changed, 428 insertions, 765 deletions
diff --git a/usr/src/uts/common/io/mem.c b/usr/src/uts/common/io/mem.c
index 0569b0ebae..11667e8c59 100644
--- a/usr/src/uts/common/io/mem.c
+++ b/usr/src/uts/common/io/mem.c
@@ -68,13 +68,15 @@
#include <sys/debug.h>
#include <sys/fm/protocol.h>
-#ifdef __sparc
+#if defined(__sparc)
extern int cpu_get_mem_name(uint64_t, uint64_t *, uint64_t, char *, int, int *);
extern int cpu_get_mem_info(uint64_t, uint64_t, uint64_t *, uint64_t *,
uint64_t *, int *, int *, int *);
extern size_t cpu_get_name_bufsize(void);
extern int cpu_get_mem_sid(char *, char *, int, int *);
extern int cpu_get_mem_addr(char *, char *, uint64_t, uint64_t *);
+#elif defined(__i386) || defined(__amd64)
+#include <sys/cpu_module.h>
#endif /* __sparc */
/*
@@ -415,6 +417,9 @@ mmwrite(dev_t dev, struct uio *uio, cred_t *cred)
static int
mmioctl_vtop(intptr_t data)
{
+#ifdef _SYSCALL32
+ mem_vtop32_t vtop32;
+#endif
mem_vtop_t mem_vtop;
proc_t *p;
pfn_t pfn = (pfn_t)PFN_INVALID;
@@ -422,13 +427,36 @@ mmioctl_vtop(intptr_t data)
struct as *as;
struct seg *seg;
- if (copyin((void *)data, &mem_vtop, sizeof (mem_vtop_t)))
- return (EFAULT);
+ if (get_udatamodel() == DATAMODEL_NATIVE) {
+ if (copyin((void *)data, &mem_vtop, sizeof (mem_vtop_t)))
+ return (EFAULT);
+ }
+#ifdef _SYSCALL32
+ else {
+ if (copyin((void *)data, &vtop32, sizeof (mem_vtop32_t)))
+ return (EFAULT);
+ mem_vtop.m_as = (struct as *)vtop32.m_as;
+ mem_vtop.m_va = (void *)vtop32.m_va;
+
+ if (mem_vtop.m_as != NULL)
+ return (EINVAL);
+ }
+#endif
+
if (mem_vtop.m_as == &kas) {
pfn = hat_getpfnum(kas.a_hat, mem_vtop.m_va);
- } else if (mem_vtop.m_as == NULL) {
- return (EIO);
} else {
+ if (mem_vtop.m_as == NULL) {
+ /*
+ * Assume the calling process's address space if the
+ * caller didn't specify one.
+ */
+ p = curthread->t_procp;
+ if (p == NULL)
+ return (EIO);
+ mem_vtop.m_as = p->p_as;
+ }
+
mutex_enter(&pidlock);
for (p = practive; p != NULL; p = p->p_next) {
if (p->p_as == mem_vtop.m_as) {
@@ -461,8 +489,18 @@ mmioctl_vtop(intptr_t data)
mem_vtop.m_pfn = pfn;
if (pfn == PFN_INVALID)
return (EIO);
- if (copyout(&mem_vtop, (void *)data, sizeof (mem_vtop_t)))
- return (EFAULT);
+
+ if (get_udatamodel() == DATAMODEL_NATIVE) {
+ if (copyout(&mem_vtop, (void *)data, sizeof (mem_vtop_t)))
+ return (EFAULT);
+ }
+#ifdef _SYSCALL32
+ else {
+ vtop32.m_pfn = mem_vtop.m_pfn;
+ if (copyout(&vtop32, (void *)data, sizeof (mem_vtop32_t)))
+ return (EFAULT);
+ }
+#endif
return (0);
}
@@ -533,7 +571,7 @@ mmioctl_page_fmri_retire(int cmd, intptr_t data)
if ((err = mm_get_mem_fmri(&mpage, &nvl)) < 0)
return (err);
- if ((err = mm_get_paddr(nvl, &pa)) < 0) {
+ if ((err = mm_get_paddr(nvl, &pa)) != 0) {
nvlist_free(nvl);
return (err);
}
@@ -1120,7 +1158,7 @@ mm_get_paddr(nvlist_t *nvl, uint64_t *paddr)
* If the "offset" member is not present, then the address is
* retrieved from the "physaddr" member.
*/
-#ifdef __sparc
+#if defined(__sparc)
if (nvlist_lookup_uint64(nvl, FM_FMRI_MEM_OFFSET, &offset) != 0) {
if (nvlist_lookup_uint64(nvl, FM_FMRI_MEM_PHYSADDR, &pa) !=
0) {
@@ -1134,9 +1172,11 @@ mm_get_paddr(nvlist_t *nvl, uint64_t *paddr)
if ((err = cpu_get_mem_addr(unum, serids[0], offset, &pa)) != 0)
return (err);
}
-#else /* __i386, __amd64 */
- if (nvlist_lookup_uint64(nvl, FM_FMRI_MEM_PHYSADDR, &pa) != 0)
+#elif defined(__i386) || defined(__amd64)
+ if (cmi_mc_unumtopa(NULL, nvl, &pa) == 0)
return (EINVAL);
+#else
+#error "port me"
#endif /* __sparc */
*paddr = pa;
diff --git a/usr/src/uts/common/krtld/kobj.c b/usr/src/uts/common/krtld/kobj.c
index 6df0916ea0..003022d104 100644
--- a/usr/src/uts/common/krtld/kobj.c
+++ b/usr/src/uts/common/krtld/kobj.c
@@ -20,7 +20,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -2970,7 +2970,7 @@ kobj_getelfsym(char *name, void *mp, int *size)
}
uintptr_t
-kobj_lookup(void *mod, char *name)
+kobj_lookup(struct module *mod, const char *name)
{
Sym *sp;
diff --git a/usr/src/uts/common/krtld/kobj_stubs.c b/usr/src/uts/common/krtld/kobj_stubs.c
index 7bc82c5139..3d972194bb 100644
--- a/usr/src/uts/common/krtld/kobj_stubs.c
+++ b/usr/src/uts/common/krtld/kobj_stubs.c
@@ -20,7 +20,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -159,7 +159,7 @@ kobj_searchsym(struct module *mp, uintptr_t value, ulong_t *offset)
/*ARGSUSED*/
uintptr_t
-kobj_lookup(void *mod, char *name)
+kobj_lookup(struct module *mod, const char *name)
{
return (0);
}
diff --git a/usr/src/uts/common/os/chip.c b/usr/src/uts/common/os/chip.c
index b6fcbe89d2..8b0bfd765d 100644
--- a/usr/src/uts/common/os/chip.c
+++ b/usr/src/uts/common/os/chip.c
@@ -124,6 +124,18 @@ chip_find(chipid_t chipid)
return (NULL);
}
+chip_t *
+chip_lookup(chipid_t chipid)
+{
+ chip_t *chp;
+
+ mutex_enter(&cpu_lock);
+ chp = chip_find(chipid);
+ mutex_exit(&cpu_lock);
+
+ return (chp);
+}
+
#ifndef sun4v
/*
* Setup the kstats for this chip, if needed
diff --git a/usr/src/uts/common/os/cpu.c b/usr/src/uts/common/os/cpu.c
index e9f4453f81..674f8bd6e5 100644
--- a/usr/src/uts/common/os/cpu.c
+++ b/usr/src/uts/common/os/cpu.c
@@ -59,6 +59,9 @@
#include <sys/msacct.h>
#include <sys/time.h>
#include <sys/archsystm.h>
+#if defined(__i386) || defined(__amd64)
+#include <sys/x86_archext.h>
+#endif
extern int mp_cpu_start(cpu_t *);
extern int mp_cpu_stop(cpu_t *);
@@ -2067,12 +2070,19 @@ static struct {
kstat_named_t ci_clock_MHz;
kstat_named_t ci_chip_id;
kstat_named_t ci_implementation;
-#ifdef __sparcv9
+ kstat_named_t ci_brandstr;
+ kstat_named_t ci_core_id;
+#if defined(__sparcv9)
kstat_named_t ci_device_ID;
kstat_named_t ci_cpu_fru;
#endif
- kstat_named_t ci_brandstr;
- kstat_named_t ci_core_id;
+#if defined(__i386) || defined(__amd64)
+ kstat_named_t ci_vendorstr;
+ kstat_named_t ci_family;
+ kstat_named_t ci_model;
+ kstat_named_t ci_step;
+ kstat_named_t ci_clogid;
+#endif
} cpu_info_template = {
{ "state", KSTAT_DATA_CHAR },
{ "state_begin", KSTAT_DATA_LONG },
@@ -2081,12 +2091,19 @@ static struct {
{ "clock_MHz", KSTAT_DATA_LONG },
{ "chip_id", KSTAT_DATA_LONG },
{ "implementation", KSTAT_DATA_STRING },
-#ifdef __sparcv9
+ { "brand", KSTAT_DATA_STRING },
+ { "core_id", KSTAT_DATA_LONG },
+#if defined(__sparcv9)
{ "device_ID", KSTAT_DATA_UINT64 },
{ "cpu_fru", KSTAT_DATA_STRING },
#endif
- { "brand", KSTAT_DATA_STRING },
- { "core_id", KSTAT_DATA_LONG },
+#if defined(__i386) || defined(__amd64)
+ { "vendor_id", KSTAT_DATA_STRING },
+ { "family", KSTAT_DATA_INT32 },
+ { "model", KSTAT_DATA_INT32 },
+ { "stepping", KSTAT_DATA_INT32 },
+ { "clog_id", KSTAT_DATA_INT32 },
+#endif
};
static kmutex_t cpu_info_template_lock;
@@ -2132,13 +2149,23 @@ cpu_info_kstat_update(kstat_t *ksp, int rw)
cpu_info_template.ci_chip_id.value.l = chip_plat_get_chipid(cp);
kstat_named_setstr(&cpu_info_template.ci_implementation,
cp->cpu_idstr);
-#ifdef __sparcv9
+ kstat_named_setstr(&cpu_info_template.ci_brandstr, cp->cpu_brandstr);
+
+#if defined(__sparcv9)
cpu_info_template.ci_device_ID.value.ui64 =
cpunodes[cp->cpu_id].device_id;
kstat_named_setstr(&cpu_info_template.ci_cpu_fru, cpu_fru_fmri(cp));
#endif
- kstat_named_setstr(&cpu_info_template.ci_brandstr, cp->cpu_brandstr);
+#if defined(__i386) || defined(__amd64)
cpu_info_template.ci_core_id.value.l = chip_plat_get_coreid(cp);
+ kstat_named_setstr(&cpu_info_template.ci_vendorstr,
+ cpuid_getvendorstr(cp));
+ cpu_info_template.ci_family.value.l = cpuid_getfamily(cp);
+ cpu_info_template.ci_model.value.l = cpuid_getmodel(cp);
+ cpu_info_template.ci_step.value.l = cpuid_getstep(cp);
+ cpu_info_template.ci_clogid.value.l = chip_plat_get_clogid(cp);
+#endif
+
return (0);
}
@@ -2155,13 +2182,16 @@ cpu_info_kstat_create(cpu_t *cp)
zoneid = ALL_ZONES;
if ((cp->cpu_info_kstat = kstat_create_zone("cpu_info", cp->cpu_id,
NULL, "misc", KSTAT_TYPE_NAMED,
- sizeof (cpu_info_template) / sizeof (kstat_named_t),
- KSTAT_FLAG_VIRTUAL, zoneid)) != NULL) {
+ sizeof (cpu_info_template) / sizeof (kstat_named_t),
+ KSTAT_FLAG_VIRTUAL, zoneid)) != NULL) {
cp->cpu_info_kstat->ks_data_size += 2 * CPU_IDSTRLEN;
-#ifdef __sparcv9
+#if defined(__sparcv9)
cp->cpu_info_kstat->ks_data_size +=
strlen(cpu_fru_fmri(cp)) + 1;
#endif
+#if defined(__i386) || defined(__amd64)
+ cp->cpu_info_kstat->ks_data_size += X86_VENDOR_STRLEN;
+#endif
cp->cpu_info_kstat->ks_lock = &cpu_info_template_lock;
cp->cpu_info_kstat->ks_data = &cpu_info_template;
cp->cpu_info_kstat->ks_private = cp;
diff --git a/usr/src/uts/common/os/ddifm.c b/usr/src/uts/common/os/ddifm.c
index 911a7d9a2f..6edd829ba8 100644
--- a/usr/src/uts/common/os/ddifm.c
+++ b/usr/src/uts/common/os/ddifm.c
@@ -20,7 +20,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -477,7 +477,10 @@ ddi_fm_handler_register(dev_info_t *dip, ddi_err_func_t handler,
return;
}
- pdip = (dev_info_t *)DEVI(dip)->devi_parent;
+ if (dip == ddi_root_node())
+ pdip = dip;
+ else
+ pdip = (dev_info_t *)DEVI(dip)->devi_parent;
ASSERT(pdip);
@@ -529,7 +532,10 @@ ddi_fm_handler_unregister(dev_info_t *dip)
return;
}
- pdip = (dev_info_t *)DEVI(dip)->devi_parent;
+ if (dip == ddi_root_node())
+ pdip = dip;
+ else
+ pdip = (dev_info_t *)DEVI(dip)->devi_parent;
ASSERT(pdip);
@@ -581,10 +587,11 @@ ddi_fm_handler_unregister(dev_info_t *dip)
* This function must be called from a driver's attach(9E) entry point.
*/
void
-ddi_fm_init(dev_info_t *dip, int *fmcap, ddi_iblock_cookie_t *ibc)
+ddi_fm_init(dev_info_t *dip, int *fmcap, ddi_iblock_cookie_t *ibcp)
{
struct dev_info *devi = DEVI(dip);
struct i_ddi_fmhdl *fmhdl;
+ ddi_iblock_cookie_t ibc;
int pcap, newcap = DDI_FM_NOT_CAPABLE;
if (!DEVI_IS_ATTACHING(dip)) {
@@ -606,11 +613,12 @@ ddi_fm_init(dev_info_t *dip, int *fmcap, ddi_iblock_cookie_t *ibc)
* Initialize the default ibc. The parent may change it
* depending upon its capabilities.
*/
- *ibc = (ddi_iblock_cookie_t)ipltospl(FM_ERR_PIL);
+ ibc = (ddi_iblock_cookie_t)ipltospl(FM_ERR_PIL);
- pcap = i_ndi_busop_fm_init(dip, *fmcap, ibc);
+ pcap = i_ndi_busop_fm_init(dip, *fmcap, &ibc);
} else {
pcap = *fmcap;
+ ibc = *ibcp;
}
/* Initialize the per-device instance FM handle */
@@ -636,7 +644,7 @@ ddi_fm_init(dev_info_t *dip, int *fmcap, ddi_iblock_cookie_t *ibc)
fmhdl->fh_acc_cache = NULL;
fmhdl->fh_tgts = NULL;
fmhdl->fh_dip = dip;
- fmhdl->fh_ibc = *ibc;
+ fmhdl->fh_ibc = ibc;
mutex_init(&fmhdl->fh_lock, NULL, MUTEX_DRIVER, fmhdl->fh_ibc);
devi->devi_fmhdl = fmhdl;
@@ -672,7 +680,7 @@ ddi_fm_init(dev_info_t *dip, int *fmcap, ddi_iblock_cookie_t *ibc)
*/
if (DDI_FM_DMA_ERR_CAP(*fmcap) && DDI_FM_DMA_ERR_CAP(pcap)) {
- i_ndi_fmc_create(&fmhdl->fh_dma_cache, 2, *ibc);
+ i_ndi_fmc_create(&fmhdl->fh_dma_cache, 2, ibc);
/* Set-up dma chk capability prop */
if (ddi_getprop(DDI_DEV_T_ANY, dip, DDI_PROP_DONTPASS,
@@ -684,7 +692,7 @@ ddi_fm_init(dev_info_t *dip, int *fmcap, ddi_iblock_cookie_t *ibc)
}
if (DDI_FM_ACC_ERR_CAP(*fmcap) && DDI_FM_ACC_ERR_CAP(pcap)) {
- i_ndi_fmc_create(&fmhdl->fh_acc_cache, 2, *ibc);
+ i_ndi_fmc_create(&fmhdl->fh_acc_cache, 2, ibc);
/* Set-up dma chk capability prop */
if (ddi_getprop(DDI_DEV_T_ANY, dip, DDI_PROP_DONTPASS,
"fm-accchk-capable", 0) == 0)
@@ -700,6 +708,9 @@ ddi_fm_init(dev_info_t *dip, int *fmcap, ddi_iblock_cookie_t *ibc)
*/
fmhdl->fh_cap = newcap;
*fmcap = newcap;
+
+ if (ibcp != NULL)
+ *ibcp = ibc;
}
/*
diff --git a/usr/src/uts/common/os/fm.c b/usr/src/uts/common/os/fm.c
index 33e8357a88..897697c2dc 100644
--- a/usr/src/uts/common/os/fm.c
+++ b/usr/src/uts/common/os/fm.c
@@ -20,7 +20,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -60,7 +60,6 @@
#include <sys/sysevent.h>
#include <sys/sysevent_impl.h>
#include <sys/nvpair.h>
-#include <sys/nvpair_impl.h>
#include <sys/cmn_err.h>
#include <sys/cpuvar.h>
#include <sys/sysmacros.h>
@@ -73,6 +72,8 @@
#include <sys/cpuvar.h>
#include <sys/console.h>
#include <sys/panic.h>
+#include <sys/kobj.h>
+#include <sys/sunddi.h>
#include <sys/systeminfo.h>
#include <sys/sysevent/eventdefs.h>
#include <sys/fm/util.h>
@@ -614,15 +615,13 @@ fm_nvlist_create(nv_alloc_t *nva)
void
fm_nvlist_destroy(nvlist_t *nvl, int flag)
{
- nv_alloc_t *nvhdl;
-
- nvhdl = ((nvpriv_t *)(uintptr_t)nvl->nvl_priv)->nvp_nva;
+ nv_alloc_t *nva = nvlist_lookup_nv_alloc(nvl);
nvlist_free(nvl);
- if (nvhdl != NULL) {
+ if (nva != NULL) {
if (flag == FM_NVA_FREE)
- fm_nva_xdestroy(nvhdl);
+ fm_nva_xdestroy(nva);
}
}
@@ -820,53 +819,88 @@ fm_ereport_set(nvlist_t *ereport, int version, const char *erpt_class,
atomic_add_64(&erpt_kstat_data.erpt_set_failed.value.ui64, 1);
}
+/*
+ * Set-up and validate the members of an hc fmri according to;
+ *
+ * Member name Type Value
+ * ===================================================
+ * version uint8_t 0
+ * auth nvlist_t <auth>
+ * hc-name string <name>
+ * hc-id string <id>
+ *
+ * Note that auth and hc-id are optional members.
+ */
+
+#define HC_MAXPAIRS 20
+#define HC_MAXNAMELEN 50
+
static int
-i_fm_fmri_hc_set_v0(nvlist_t *hc, uint32_t size, va_list ap)
+fm_fmri_hc_set_common(nvlist_t *fmri, int version, const nvlist_t *auth)
{
- int i, ret;
- const char *name, *id;
- nvlist_t **hc_nvl;
+ if (version != FM_HC_SCHEME_VERSION) {
+ atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
+ return (0);
+ }
- if (size <= 0)
+ if (nvlist_add_uint8(fmri, FM_VERSION, version) != 0 ||
+ nvlist_add_string(fmri, FM_FMRI_SCHEME, FM_FMRI_SCHEME_HC) != 0) {
+ atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
return (0);
+ }
- hc_nvl = kmem_zalloc(size * sizeof (nvlist_t *), KM_SLEEP);
+ if (auth != NULL && nvlist_add_nvlist(fmri, FM_FMRI_AUTHORITY,
+ (nvlist_t *)auth) != 0) {
+ atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
+ return (0);
+ }
- for (i = 0; i < size; ++i) {
- name = va_arg(ap, const char *);
- if (name == NULL) {
- ret = EINVAL;
- goto fail;
- }
- id = va_arg(ap, const char *);
- if ((hc_nvl[i] = fm_nvlist_create(
- ((nvpriv_t *)(uintptr_t)hc->nvl_priv)->nvp_nva)) == NULL) {
- ret = ENOMEM;
- goto fail;
+ return (1);
+}
+
+void
+fm_fmri_hc_set(nvlist_t *fmri, int version, const nvlist_t *auth,
+ nvlist_t *snvl, int npairs, ...)
+{
+ nv_alloc_t *nva = nvlist_lookup_nv_alloc(fmri);
+ nvlist_t *pairs[HC_MAXPAIRS];
+ va_list ap;
+ int i;
+
+ if (!fm_fmri_hc_set_common(fmri, version, auth))
+ return;
+
+ npairs = MIN(npairs, HC_MAXPAIRS);
+
+ va_start(ap, npairs);
+ for (i = 0; i < npairs; i++) {
+ const char *name = va_arg(ap, const char *);
+ uint32_t id = va_arg(ap, uint32_t);
+ char idstr[11];
+
+ (void) snprintf(idstr, sizeof (idstr), "%u", id);
+
+ pairs[i] = fm_nvlist_create(nva);
+ if (nvlist_add_string(pairs[i], FM_FMRI_HC_NAME, name) != 0 ||
+ nvlist_add_string(pairs[i], FM_FMRI_HC_ID, idstr) != 0) {
+ atomic_add_64(
+ &erpt_kstat_data.fmri_set_failed.value.ui64, 1);
}
- if ((ret = nvlist_add_string(hc_nvl[i], FM_FMRI_HC_NAME,
- name)) != 0)
- goto fail;
- if ((ret = nvlist_add_string(hc_nvl[i], FM_FMRI_HC_ID,
- id)) != 0)
- goto fail;
}
+ va_end(ap);
- if ((ret = nvlist_add_nvlist_array(hc, FM_FMRI_HC_LIST, hc_nvl,
- size)) != 0)
- goto fail;
+ if (nvlist_add_nvlist_array(fmri, FM_FMRI_HC_LIST, pairs, npairs) != 0)
+ atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
- kmem_free(hc_nvl, size * sizeof (nvlist_t *));
- return (0);
+ for (i = 0; i < npairs; i++)
+ fm_nvlist_destroy(pairs[i], FM_NVA_RETAIN);
-fail:
- for (i = 0; i < size; ++i) {
- if (hc_nvl[i] != NULL)
- fm_nvlist_destroy(hc_nvl[i], FM_NVA_RETAIN);
+ if (snvl != NULL) {
+ if (nvlist_add_nvlist(fmri, FM_FMRI_HC_SPECIFIC, snvl) != 0) {
+ atomic_add_64(
+ &erpt_kstat_data.fmri_set_failed.value.ui64, 1);
+ }
}
-
- kmem_free(hc_nvl, size * sizeof (nvlist_t *));
- return (ret);
}
/*
@@ -930,47 +964,45 @@ fm_fmri_dev_set(nvlist_t *fmri_dev, int version, const nvlist_t *auth,
* cpumask uint8_t <cpu_mask>
* serial uint64_t <serial_id>
*
- * Note that auth is an optional member.
+ * Note that auth, cpumask, serial are optional members.
*
*/
void
fm_fmri_cpu_set(nvlist_t *fmri_cpu, int version, const nvlist_t *auth,
- uint32_t cpu_id, uint8_t cpu_mask, uint64_t serial_id)
+ uint32_t cpu_id, uint8_t *cpu_maskp, const char *serial_idp)
{
- if (version != CPU_SCHEME_VERSION0) {
- atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
+ uint64_t *failedp = &erpt_kstat_data.fmri_set_failed.value.ui64;
+
+ if (version < CPU_SCHEME_VERSION1) {
+ atomic_add_64(failedp, 1);
return;
}
if (nvlist_add_uint8(fmri_cpu, FM_VERSION, version) != 0) {
- atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
+ atomic_add_64(failedp, 1);
return;
}
if (nvlist_add_string(fmri_cpu, FM_FMRI_SCHEME,
FM_FMRI_SCHEME_CPU) != 0) {
- atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
+ atomic_add_64(failedp, 1);
return;
}
- if (auth != NULL)
- if (nvlist_add_nvlist(fmri_cpu, FM_FMRI_AUTHORITY,
- (nvlist_t *)auth) != 0) {
- atomic_add_64(
- &erpt_kstat_data.fmri_set_failed.value.ui64, 1);
- }
+ if (auth != NULL && nvlist_add_nvlist(fmri_cpu, FM_FMRI_AUTHORITY,
+ (nvlist_t *)auth) != 0)
+ atomic_add_64(failedp, 1);
- if (nvlist_add_uint32(fmri_cpu, FM_FMRI_CPU_ID, cpu_id) != 0) {
- atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
- }
+ if (nvlist_add_uint32(fmri_cpu, FM_FMRI_CPU_ID, cpu_id) != 0)
+ atomic_add_64(failedp, 1);
- if (nvlist_add_uint8(fmri_cpu, FM_FMRI_CPU_MASK, cpu_mask) != 0) {
- atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
- }
+ if (cpu_maskp != NULL && nvlist_add_uint8(fmri_cpu, FM_FMRI_CPU_MASK,
+ *cpu_maskp) != 0)
+ atomic_add_64(failedp, 1);
- if (nvlist_add_uint64(fmri_cpu, FM_FMRI_CPU_SERIAL_ID, serial_id)
- != 0)
- atomic_add_64(&erpt_kstat_data.fmri_set_failed.value.ui64, 1);
+ if (serial_idp == NULL || nvlist_add_string(fmri_cpu,
+ FM_FMRI_CPU_SERIAL_ID, (char *)serial_idp) != 0)
+ atomic_add_64(failedp, 1);
}
/*
@@ -1159,3 +1191,29 @@ fm_ena_time_get(uint64_t ena)
return (time);
}
+
+/*
+ * Convert a getpcstack() trace to symbolic name+offset, and add the resulting
+ * string array to a Fault Management ereport as FM_EREPORT_PAYLOAD_NAME_STACK.
+ */
+void
+fm_payload_stack_add(nvlist_t *payload, const pc_t *stack, int depth)
+{
+ int i;
+ char *sym;
+ ulong_t off;
+ char *stkpp[FM_STK_DEPTH];
+ char buf[FM_STK_DEPTH * FM_SYM_SZ];
+ char *stkp = buf;
+
+ for (i = 0; i < depth && i != FM_STK_DEPTH; i++, stkp += FM_SYM_SZ) {
+ if ((sym = kobj_getsymname(stack[i], &off)) != NULL)
+ (void) snprintf(stkp, FM_SYM_SZ, "%s+%lx", sym, off);
+ else
+ (void) snprintf(stkp, FM_SYM_SZ, "%lx", (long)stack[i]);
+ stkpp[i] = stkp;
+ }
+
+ fm_payload_set(payload, FM_EREPORT_PAYLOAD_NAME_STACK,
+ DATA_TYPE_STRING_ARRAY, FM_STK_DEPTH, stkpp, NULL);
+}
diff --git a/usr/src/uts/common/os/kcpc.c b/usr/src/uts/common/os/kcpc.c
index f3bfd93d24..569344e8ca 100644
--- a/usr/src/uts/common/os/kcpc.c
+++ b/usr/src/uts/common/os/kcpc.c
@@ -19,8 +19,9 @@
*
* CDDL HEADER END
*/
+
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -1515,41 +1516,12 @@ kcpc_invalidate(kthread_t *t)
int
kcpc_pcbe_tryload(const char *prefix, uint_t first, uint_t second, uint_t third)
{
- char modname[PCBE_NAMELEN];
- char stub[PCBE_NAMELEN];
-
- if (prefix != NULL)
- (void) snprintf(stub, PCBE_NAMELEN, "pcbe.%s", prefix);
- else
- (void) snprintf(stub, PCBE_NAMELEN, "pcbe");
-
- (void) snprintf(modname, PCBE_NAMELEN, "%s.%u.%u.%u",
- stub, first, second, third);
-
- DTRACE_PROBE1(kcpc__pcbe__spec, char *, modname);
-
- if (modload("pcbe", modname) >= 0)
- return (0);
-
- (void) snprintf(modname, PCBE_NAMELEN, "%s.%u.%u",
- stub, first, second);
- if (modload("pcbe", modname) >= 0)
- return (0);
-
- (void) snprintf(modname, PCBE_NAMELEN, "%s.%u", stub, first);
- if (modload("pcbe", modname) >= 0)
- return (0);
-
- if (prefix == NULL)
- /*
- * If no prefix was given, we have tried all possible
- * PCBE names.
- */
- return (-1);
+ uint_t s[3];
- (void) snprintf(modname, PCBE_NAMELEN, "%s", stub);
- if (modload("pcbe", modname) >= 0)
- return (0);
+ s[0] = first;
+ s[1] = second;
+ s[2] = third;
- return (-1);
+ return (modload_qualified("pcbe",
+ "pcbe", prefix, ".", s, 3) < 0 ? -1 : 0);
}
diff --git a/usr/src/uts/common/os/modconf.c b/usr/src/uts/common/os/modconf.c
index 2c033495bc..f270cad2a0 100644
--- a/usr/src/uts/common/os/modconf.c
+++ b/usr/src/uts/common/os/modconf.c
@@ -20,7 +20,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -101,6 +101,11 @@ struct mod_ops mod_miscops = {
mod_null, mod_null, mod_infonull
};
+/* CPU Modules */
+struct mod_ops mod_cpuops = {
+ mod_null, mod_null, mod_infonull
+};
+
/*
* Cryptographic Modules
*/
diff --git a/usr/src/uts/common/os/modctl.c b/usr/src/uts/common/os/modctl.c
index 73e0447ab1..e776a36310 100644
--- a/usr/src/uts/common/os/modctl.c
+++ b/usr/src/uts/common/os/modctl.c
@@ -19,6 +19,7 @@
*
* CDDL HEADER END
*/
+
/*
* Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
@@ -84,15 +85,14 @@ static int modinfo(modid_t, struct modinfo *);
static void mod_uninstall_all(void);
static int mod_getinfo(struct modctl *, struct modinfo *);
-static struct modctl *allocate_modp(char *, char *);
+static struct modctl *allocate_modp(const char *, const char *);
static int mod_load(struct modctl *, int);
static void mod_unload(struct modctl *);
static int modinstall(struct modctl *);
static int moduninstall(struct modctl *);
-static struct modctl *mod_hold_by_name_common(struct modctl *, char *);
-static struct modctl *mod_hold_by_id(modid_t);
+static struct modctl *mod_hold_by_name_common(struct modctl *, const char *);
static struct modctl *mod_hold_next_by_id(modid_t);
static struct modctl *mod_hold_loaded_mod(struct modctl *, char *, int *);
static struct modctl *mod_hold_installed_mod(char *, int, int *);
@@ -1943,6 +1943,71 @@ modload(char *subdir, char *filename)
}
/*
+ * Load a module using a series of qualified names from most specific to least
+ * specific, e.g. for subdir "foo", p1 "bar", p2 "baz", we might try:
+ *
+ * foo/bar.baz.1.2.3
+ * foo/bar.baz.1.2
+ * foo/bar.baz.1
+ *
+ * Return the module ID on success; -1 if no module was loaded.
+ */
+int
+modload_qualified(const char *subdir, const char *p1,
+ const char *p2, const char *delim, uint_t suffv[], int suffc)
+{
+ char path[MOD_MAXPATH];
+ size_t n, resid = sizeof (path);
+ char *p = path;
+
+ char **dotv;
+ int i, rc, id;
+ modctl_t *mp;
+
+ if (p2 != NULL)
+ n = snprintf(p, resid, "%s/%s%s%s", subdir, p1, delim, p2);
+ else
+ n = snprintf(p, resid, "%s/%s", subdir, p1);
+
+ if (n >= resid)
+ return (-1);
+
+ p += n;
+ resid -= n;
+ dotv = kmem_alloc(sizeof (char *) * (suffc + 1), KM_SLEEP);
+
+ for (i = 0; i < suffc; i++) {
+ dotv[i] = p;
+ n = snprintf(p, resid, "%s%u", delim, suffv[i]);
+
+ if (n >= resid) {
+ kmem_free(dotv, sizeof (char *) * (suffc + 1));
+ return (-1);
+ }
+
+ p += n;
+ resid -= n;
+ }
+
+ dotv[suffc] = p;
+
+ for (i = suffc; i >= 0; i--) {
+ dotv[i][0] = '\0';
+ mp = mod_hold_installed_mod(path, 1, &rc);
+
+ if (mp != NULL) {
+ kmem_free(dotv, sizeof (char *) * (suffc + 1));
+ id = mp->mod_id;
+ mod_release_mod(mp);
+ return (id);
+ }
+ }
+
+ kmem_free(dotv, sizeof (char *) * (suffc + 1));
+ return (-1);
+}
+
+/*
* Load a module.
*/
int
@@ -2440,7 +2505,7 @@ modadd(struct modctl *mp)
/*ARGSUSED*/
static struct modctl *
-allocate_modp(char *filename, char *modname)
+allocate_modp(const char *filename, const char *modname)
{
struct modctl *mp;
@@ -2473,12 +2538,12 @@ modgetsymname(uintptr_t value, ulong_t *offset)
}
/*
- * Lookup a symbol in a specified module. This is a wrapper routine that
- * calls kobj_lookup(). kobj_lookup() may go away but this
- * wrapper will prevent callers from noticing.
+ * Lookup a symbol in a specified module. These are wrapper routines that
+ * call kobj_lookup(). kobj_lookup() may go away but these wrappers will
+ * prevent callers from noticing.
*/
uintptr_t
-modlookup(char *modname, char *symname)
+modlookup(const char *modname, const char *symname)
{
struct modctl *modp;
uintptr_t val;
@@ -2490,6 +2555,14 @@ modlookup(char *modname, char *symname)
return (val);
}
+uintptr_t
+modlookup_by_modctl(modctl_t *modp, const char *symname)
+{
+ ASSERT(modp->mod_ref > 0 || modp->mod_busy);
+
+ return (kobj_lookup(modp->mod_mp, symname));
+}
+
/*
* Ask the user for the name of the system file and the default path
* for modules.
@@ -3149,9 +3222,9 @@ mod_hold_by_modctl(struct modctl *mp, int f)
}
static struct modctl *
-mod_hold_by_name_common(struct modctl *dep, char *filename)
+mod_hold_by_name_common(struct modctl *dep, const char *filename)
{
- char *modname;
+ const char *modname;
struct modctl *mp;
char *curname, *newname;
int found = 0;
@@ -3232,12 +3305,12 @@ mod_hold_by_name_requisite(struct modctl *dep, char *filename)
}
struct modctl *
-mod_hold_by_name(char *filename)
+mod_hold_by_name(const char *filename)
{
return (mod_hold_by_name_common(NULL, filename));
}
-static struct modctl *
+struct modctl *
mod_hold_by_id(modid_t modid)
{
struct modctl *mp;
diff --git a/usr/src/uts/common/os/panic.c b/usr/src/uts/common/os/panic.c
index e085b0e586..87910574f5 100644
--- a/usr/src/uts/common/os/panic.c
+++ b/usr/src/uts/common/os/panic.c
@@ -20,7 +20,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -143,6 +143,7 @@
#include <sys/spl.h>
#include <sys/errorq.h>
#include <sys/panic.h>
+#include <sys/fm/util.h>
/*
* Panic variables which are set once during the QUIESCE state by the
diff --git a/usr/src/uts/common/os/policy.c b/usr/src/uts/common/os/policy.c
index 0dccc35dce..fe4a5c82df 100644
--- a/usr/src/uts/common/os/policy.c
+++ b/usr/src/uts/common/os/policy.c
@@ -20,7 +20,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -1279,6 +1279,12 @@ secpolicy_kmdb(const cred_t *scr)
return (PRIV_POLICY(scr, PRIV_ALL, B_FALSE, EPERM, NULL));
}
+int
+secpolicy_error_inject(const cred_t *scr)
+{
+ return (PRIV_POLICY(scr, PRIV_ALL, B_FALSE, EPERM, NULL));
+}
+
/*
* Processor sets, cpu configuration, resource pools.
*/
diff --git a/usr/src/uts/common/sys/Makefile b/usr/src/uts/common/sys/Makefile
index bb8e6e8d7a..f82a933903 100644
--- a/usr/src/uts/common/sys/Makefile
+++ b/usr/src/uts/common/sys/Makefile
@@ -20,7 +20,7 @@
#
#
-# Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+# Copyright 2006 Sun Microsystems, Inc. All rights reserved.
# Use is subject to license terms.
#
# ident "%Z%%M% %I% %E% SMI"
@@ -657,12 +657,6 @@ FMHDRS= \
protocol.h \
util.h
-sparc_FMCPUHDRS= \
- UltraSPARC-II.h \
- UltraSPARC-III.h \
- UltraSPARC-T1.h
-FMCPUHDRS=$($(MACH)_FMCPUHDRS)
-
FMIOHDRS= \
ddi.h \
pci.h \
@@ -920,7 +914,6 @@ CHECKHDRS= \
$(TAVORHDRS:%.h=ib/adapters/tavor/%.check) \
$(ISOHDRS:%.h=iso/%.check) \
$(FMHDRS:%.h=fm/%.check) \
- $(FMCPUHDRS:%.h=fm/cpu/%.check) \
$(FMIOHDRS:%.h=fm/io/%.check) \
$(FSHDRS:%.h=fs/%.check) \
$(LVMHDRS:%.h=lvm/%.check) \
@@ -955,8 +948,7 @@ CHECKHDRS= \
$(ROOTDCAMHDRS) \
$(ROOTISOHDRS) \
$(ROOTFMHDRS) \
- $(ROOTFMCPUHDRS) \
- $(ROOTFMIOHDRS) \
+ $(ROOTFMIOHDRS) \
$(ROOTFSHDRS) \
$(ROOTIBDHDRS) \
$(ROOTIBHDRS) \
@@ -1000,7 +992,6 @@ install_h: \
$(ROOTDCAMHDRS) \
$(ROOTISOHDRS) \
$(ROOTFMHDRS) \
- $(ROOTFMCPUHDRS) \
$(ROOTFMIOHDRS) \
$(ROOTFSHDRS) \
$(ROOTIBDHDRS) \
diff --git a/usr/src/uts/common/sys/chip.h b/usr/src/uts/common/sys/chip.h
index e33b521783..80b9541d9a 100644
--- a/usr/src/uts/common/sys/chip.h
+++ b/usr/src/uts/common/sys/chip.h
@@ -172,6 +172,7 @@ void chip_cpu_fini(cpu_t *);
void chip_cpu_assign(cpu_t *);
void chip_cpu_unassign(cpu_t *);
void chip_cpu_startup(cpu_t *);
+chip_t *chip_lookup(chipid_t);
void chip_bootstrap_cpu(cpu_t *);
void chip_cpu_move_part(cpu_t *, struct cpupart *,
diff --git a/usr/src/uts/common/sys/dumphdr.h b/usr/src/uts/common/sys/dumphdr.h
index 7be14a40ed..5949b218c8 100644
--- a/usr/src/uts/common/sys/dumphdr.h
+++ b/usr/src/uts/common/sys/dumphdr.h
@@ -20,7 +20,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -33,7 +33,6 @@
#include <sys/param.h>
#include <sys/utsname.h>
#include <sys/log.h>
-#include <sys/fm/util.h>
#ifdef __cplusplus
extern "C" {
diff --git a/usr/src/uts/common/sys/fm/cpu/UltraSPARC-II.h b/usr/src/uts/common/sys/fm/cpu/UltraSPARC-II.h
deleted file mode 100644
index c6013c9515..0000000000
--- a/usr/src/uts/common/sys/fm/cpu/UltraSPARC-II.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
- *
- * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-/*
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
- */
-
-#ifndef _SYS_FM_ULTRASPARC_II_H
-#define _SYS_FM_ULTRASPARC_II_H
-
-#pragma ident "%Z%%M% %I% %E% SMI"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Ereport class subcategories for UltraSPARC I, and II families */
-#define FM_EREPORT_CPU_USI "ultraSPARC-I"
-#define FM_EREPORT_CPU_USII "ultraSPARC-II"
-#define FM_EREPORT_CPU_USIIe "ultraSPARC-IIe"
-#define FM_EREPORT_CPU_USIIi "ultraSPARC-IIi"
-#define FM_EREPORT_CPU_UNSUPPORTED "unsupported"
-
-/*
- * FM Ereport definitions.
- */
-#define FM_EREPORT_CPU_USII_ISAP "isap"
-#define FM_EREPORT_CPU_USII_ETP "etp"
-#define FM_EREPORT_CPU_USII_IVUE "ivue"
-#define FM_EREPORT_CPU_USII_TO "to"
-#define FM_EREPORT_CPU_USII_BERR "berr"
-#define FM_EREPORT_CPU_USII_LDP "ldp"
-#define FM_EREPORT_CPU_USII_CP "cp"
-#define FM_EREPORT_CPU_USII_WP "wp"
-#define FM_EREPORT_CPU_USII_EDP "edp"
-#define FM_EREPORT_CPU_USII_UE "ue"
-#define FM_EREPORT_CPU_USII_CE "ce"
-#define FM_EREPORT_CPU_USII_ESCRUB_TAG "escrub-etp"
-#define FM_EREPORT_CPU_USII_ESCRUB_DATA "escrub-edp"
-#define FM_EREPORT_CPU_USII_UNKNOWN "unknown"
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _SYS_FM_ULTRASPARC_II_H */
diff --git a/usr/src/uts/common/sys/fm/cpu/UltraSPARC-III.h b/usr/src/uts/common/sys/fm/cpu/UltraSPARC-III.h
deleted file mode 100644
index 6422868396..0000000000
--- a/usr/src/uts/common/sys/fm/cpu/UltraSPARC-III.h
+++ /dev/null
@@ -1,446 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
- *
- * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
- */
-
-#ifndef _SYS_FM_ULTRASPARC_III_H
-#define _SYS_FM_ULTRASPARC_III_H
-
-#pragma ident "%Z%%M% %I% %E% SMI"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Ereport class subcategories for UltraSPARC III and IV families */
-#define FM_EREPORT_CPU_USIII "ultraSPARC-III"
-#define FM_EREPORT_CPU_USIIIplus "ultraSPARC-IIIplus"
-#define FM_EREPORT_CPU_USIIIi "ultraSPARC-IIIi"
-#define FM_EREPORT_CPU_USIIIiplus "ultraSPARC-IIIiplus"
-#define FM_EREPORT_CPU_USIV "ultraSPARC-IV"
-#define FM_EREPORT_CPU_USIVplus "ultraSPARC-IVplus"
-#define FM_EREPORT_CPU_UNSUPPORTED "unsupported"
-
-/*
- * Ereport payload definitions.
- */
-#define FM_EREPORT_PAYLOAD_NAME_AFSR "afsr"
-#define FM_EREPORT_PAYLOAD_NAME_AFAR "afar"
-#define FM_EREPORT_PAYLOAD_NAME_AFAR_STATUS "afar-status"
-#define FM_EREPORT_PAYLOAD_NAME_PC "pc"
-#define FM_EREPORT_PAYLOAD_NAME_TL "tl"
-#define FM_EREPORT_PAYLOAD_NAME_TT "tt"
-#define FM_EREPORT_PAYLOAD_NAME_PRIV "privileged"
-#define FM_EREPORT_PAYLOAD_NAME_ME "multiple"
-#define FM_EREPORT_PAYLOAD_NAME_SYND "syndrome"
-#define FM_EREPORT_PAYLOAD_NAME_SYND_STATUS "syndrome-status"
-#define FM_EREPORT_PAYLOAD_NAME_EMU_EMR_SIZE "emu-mask-size"
-#define FM_EREPORT_PAYLOAD_NAME_EMU_EMR_DATA "emu-mask-data"
-#define FM_EREPORT_PAYLOAD_NAME_EMU_ESR_SIZE "emu-shadow-size"
-#define FM_EREPORT_PAYLOAD_NAME_EMU_ESR_DATA "emu-shadow-data"
-#define FM_EREPORT_PAYLOAD_NAME_L2_WAYS "l2-cache-ways"
-#define FM_EREPORT_PAYLOAD_NAME_L2_DATA "l2-cache-data"
-#define FM_EREPORT_PAYLOAD_NAME_L3_WAYS "l3-cache-ways"
-#define FM_EREPORT_PAYLOAD_NAME_L3_DATA "l3-cache-data"
-#define FM_EREPORT_PAYLOAD_NAME_L1D_WAYS "dcache-ways"
-#define FM_EREPORT_PAYLOAD_NAME_L1D_DATA "dcache-data"
-#define FM_EREPORT_PAYLOAD_NAME_L1I_WAYS "icache-ways"
-#define FM_EREPORT_PAYLOAD_NAME_L1I_DATA "icache-data"
-#define FM_EREPORT_PAYLOAD_NAME_L1P_WAYS "pcache-ways"
-#define FM_EREPORT_PAYLOAD_NAME_L1P_DATA "pcache-data"
-#define FM_EREPORT_PAYLOAD_NAME_ITLB_ENTRIES "itlb-entries"
-#define FM_EREPORT_PAYLOAD_NAME_ITLB_DATA "itlb-data"
-#define FM_EREPORT_PAYLOAD_NAME_DTLB_ENTRIES "dtlb-entries"
-#define FM_EREPORT_PAYLOAD_NAME_DTLB_DATA "dtlb-data"
-#define FM_EREPORT_PAYLOAD_NAME_ERR_TYPE "error-type"
-#define FM_EREPORT_PAYLOAD_NAME_RESOURCE "resource"
-#define FM_EREPORT_PAYLOAD_NAME_VA "va"
-#define FM_EREPORT_PAYLOAD_NAME_AFSR_EXT "afsr-ext"
-#define FM_EREPORT_PAYLOAD_NAME_COPYFUNCTION "copy-function"
-#define FM_EREPORT_PAYLOAD_NAME_INSTRBLOCK "instr-block"
-#define FM_EREPORT_PAYLOAD_NAME_HOWDETECTED "how-detected"
-#define FM_EREPORT_PAYLOAD_NAME_ERR_DISP "error-disposition"
-
-#define FM_EREPORT_PAYLOAD_FLAG_AFSR 0x0000000000000001
-#define FM_EREPORT_PAYLOAD_FLAG_AFAR_STATUS 0x0000000000000002
-#define FM_EREPORT_PAYLOAD_FLAG_AFAR 0x0000000000000004
-#define FM_EREPORT_PAYLOAD_FLAG_PC 0x0000000000000008
-#define FM_EREPORT_PAYLOAD_FLAG_TL 0x0000000000000010
-#define FM_EREPORT_PAYLOAD_FLAG_TT 0x0000000000000020
-#define FM_EREPORT_PAYLOAD_FLAG_PRIV 0x0000000000000040
-#define FM_EREPORT_PAYLOAD_FLAG_ME 0x0000000000000080
-#define FM_EREPORT_PAYLOAD_FLAG_SYND 0x0000000000000100
-#define FM_EREPORT_PAYLOAD_FLAG_SYND_STATUS 0x0000000000000200
-#define FM_EREPORT_PAYLOAD_FLAG_EMU_EMR_SIZE 0x0000000000000400
-#define FM_EREPORT_PAYLOAD_FLAG_EMU_EMR_DATA 0x0000000000000800
-#define FM_EREPORT_PAYLOAD_FLAG_EMU_ESR_SIZE 0x0000000000001000
-#define FM_EREPORT_PAYLOAD_FLAG_EMU_ESR_DATA 0x0000000000002000
-#define FM_EREPORT_PAYLOAD_FLAG_L2_WAYS 0x0000000000004000
-#define FM_EREPORT_PAYLOAD_FLAG_L2_DATA 0x0000000000008000
-#define FM_EREPORT_PAYLOAD_FLAG_L1D_WAYS 0x0000000000010000
-#define FM_EREPORT_PAYLOAD_FLAG_L1D_DATA 0x0000000000020000
-#define FM_EREPORT_PAYLOAD_FLAG_L1I_WAYS 0x0000000000040000
-#define FM_EREPORT_PAYLOAD_FLAG_L1I_DATA 0x0000000000080000
-#define FM_EREPORT_PAYLOAD_FLAG_ERR_TYPE 0x0000000000100000
-#define FM_EREPORT_PAYLOAD_FLAG_RESOURCE 0x0000000000200000
-#define FM_EREPORT_PAYLOAD_FLAG_AFSR_EXT 0x0000000000400000
-#define FM_EREPORT_PAYLOAD_FLAG_L1P_WAYS 0x0000000000800000
-#define FM_EREPORT_PAYLOAD_FLAG_L1P_DATA 0x0000000001000000
-#define FM_EREPORT_PAYLOAD_FLAG_ITLB_ENTRIES 0x0000000002000000
-#define FM_EREPORT_PAYLOAD_FLAG_ITLB_DATA 0x0000000004000000
-#define FM_EREPORT_PAYLOAD_FLAG_DTLB_ENTRIES 0x0000000008000000
-#define FM_EREPORT_PAYLOAD_FLAG_DTLB_DATA 0x0000000010000000
-#define FM_EREPORT_PAYLOAD_FLAG_FAULT_VA 0x0000000020000000
-#define FM_EREPORT_PAYLOAD_FLAG_L3_WAYS 0x0000000040000000
-#define FM_EREPORT_PAYLOAD_FLAG_L3_DATA 0x0000000080000000
-#define FM_EREPORT_PAYLOAD_FLAG_COPYFUNCTION 0x0000000100000000
-#define FM_EREPORT_PAYLOAD_FLAG_INSTRBLOCK 0x0000000200000000
-#define FM_EREPORT_PAYLOAD_FLAG_HOWDETECTED 0x0000000400000000
-#define FM_EREPORT_PAYLOAD_FLAG_ERR_DISP 0x0000000800000000
-
-#define FM_EREPORT_PAYLOAD_FLAGS_AFAR \
- (FM_EREPORT_PAYLOAD_FLAG_AFAR | \
- FM_EREPORT_PAYLOAD_FLAG_AFAR_STATUS)
-#define FM_EREPORT_PAYLOAD_FLAGS_TRAP \
- (FM_EREPORT_PAYLOAD_FLAG_TL | \
- FM_EREPORT_PAYLOAD_FLAG_TT)
-#define FM_EREPORT_PAYLOAD_FLAGS_SYND \
- (FM_EREPORT_PAYLOAD_FLAG_SYND | \
- FM_EREPORT_PAYLOAD_FLAG_SYND_STATUS)
-#define FM_EREPORT_PAYLOAD_FLAGS_EMU \
- (FM_EREPORT_PAYLOAD_FLAG_EMU_EMR_SIZE | \
- FM_EREPORT_PAYLOAD_FLAG_EMU_EMR_DATA | \
- FM_EREPORT_PAYLOAD_FLAG_EMU_ESR_SIZE | \
- FM_EREPORT_PAYLOAD_FLAG_EMU_ESR_DATA)
-#define FM_EREPORT_PAYLOAD_FLAGS_L2 \
- (FM_EREPORT_PAYLOAD_FLAG_L2_WAYS | \
- FM_EREPORT_PAYLOAD_FLAG_L2_DATA)
-#define FM_EREPORT_PAYLOAD_FLAGS_L3 \
- (FM_EREPORT_PAYLOAD_FLAG_L3_WAYS | \
- FM_EREPORT_PAYLOAD_FLAG_L3_DATA)
-#define FM_EREPORT_PAYLOAD_FLAGS_L1D \
- (FM_EREPORT_PAYLOAD_FLAG_L1D_WAYS | \
- FM_EREPORT_PAYLOAD_FLAG_L1D_DATA)
-#define FM_EREPORT_PAYLOAD_FLAGS_L1I \
- (FM_EREPORT_PAYLOAD_FLAG_L1I_WAYS | \
- FM_EREPORT_PAYLOAD_FLAG_L1I_DATA)
-#define FM_EREPORT_PAYLOAD_FLAGS_L1P \
- (FM_EREPORT_PAYLOAD_FLAG_L1P_WAYS | \
- FM_EREPORT_PAYLOAD_FLAG_L1P_DATA)
-#define FM_EREPORT_PAYLOAD_FLAGS_L1 \
- (FM_EREPORT_PAYLOAD_FLAGS_L1D | \
- FM_EREPORT_PAYLOAD_FLAGS_L1I)
-#define FM_EREPORT_PAYLOAD_FLAGS_L1L2 \
- (FM_EREPORT_PAYLOAD_FLAGS_L1 | \
- FM_EREPORT_PAYLOAD_FLAGS_L2)
-#define FM_EREPORT_PAYLOAD_FLAGS_ITLB \
- (FM_EREPORT_PAYLOAD_FLAG_ITLB_ENTRIES | \
- FM_EREPORT_PAYLOAD_FLAG_ITLB_DATA)
-#define FM_EREPORT_PAYLOAD_FLAGS_DTLB \
- (FM_EREPORT_PAYLOAD_FLAG_DTLB_ENTRIES | \
- FM_EREPORT_PAYLOAD_FLAG_DTLB_DATA)
-#define FM_EREPORT_PAYLOAD_FLAGS_TLB \
- (FM_EREPORT_PAYLOAD_FLAGS_ITLB | \
- FM_EREPORT_PAYLOAD_FLAGS_DTLB)
-#define FM_EREPORT_PAYLOAD_FLAG_AFSRS \
- (FM_EREPORT_PAYLOAD_FLAG_AFSR | \
- FM_EREPORT_PAYLOAD_FLAG_AFSR_EXT)
-
-
-#define FM_EREPORT_PAYLOAD_UNKNOWN 0
-#define FM_EREPORT_PAYLOAD_INVALID_AFSR (FM_EREPORT_PAYLOAD_FLAG_AFSRS | \
- FM_EREPORT_PAYLOAD_FLAGS_AFAR | \
- FM_EREPORT_PAYLOAD_FLAG_PC | \
- FM_EREPORT_PAYLOAD_FLAGS_TRAP | \
- FM_EREPORT_PAYLOAD_FLAG_PRIV | \
- FM_EREPORT_PAYLOAD_FLAG_ME)
-#define FM_EREPORT_PAYLOAD_SYSTEM1 (FM_EREPORT_PAYLOAD_FLAG_AFSRS | \
- FM_EREPORT_PAYLOAD_FLAG_PC | \
- FM_EREPORT_PAYLOAD_FLAGS_TRAP | \
- FM_EREPORT_PAYLOAD_FLAG_PRIV | \
- FM_EREPORT_PAYLOAD_FLAG_ME)
-#define FM_EREPORT_PAYLOAD_SYSTEM2 (FM_EREPORT_PAYLOAD_FLAG_AFSRS | \
- FM_EREPORT_PAYLOAD_FLAGS_AFAR | \
- FM_EREPORT_PAYLOAD_FLAG_PC | \
- FM_EREPORT_PAYLOAD_FLAGS_TRAP | \
- FM_EREPORT_PAYLOAD_FLAG_PRIV | \
- FM_EREPORT_PAYLOAD_FLAG_ME | \
- FM_EREPORT_PAYLOAD_FLAGS_EMU)
-#define FM_EREPORT_PAYLOAD_SYSTEM3 (FM_EREPORT_PAYLOAD_FLAG_AFSR | \
- FM_EREPORT_PAYLOAD_FLAGS_AFAR | \
- FM_EREPORT_PAYLOAD_FLAG_PC | \
- FM_EREPORT_PAYLOAD_FLAGS_TRAP | \
- FM_EREPORT_PAYLOAD_FLAG_PRIV | \
- FM_EREPORT_PAYLOAD_FLAG_ME | \
- FM_EREPORT_PAYLOAD_FLAGS_L2)
-#define FM_EREPORT_PAYLOAD_IO (FM_EREPORT_PAYLOAD_FLAG_AFSR | \
- FM_EREPORT_PAYLOAD_FLAGS_AFAR | \
- FM_EREPORT_PAYLOAD_FLAG_PC | \
- FM_EREPORT_PAYLOAD_FLAGS_TRAP | \
- FM_EREPORT_PAYLOAD_FLAG_PRIV | \
- FM_EREPORT_PAYLOAD_FLAG_ME)
-#define FM_EREPORT_PAYLOAD_L2_TAG_PE (FM_EREPORT_PAYLOAD_FLAG_AFSR | \
- FM_EREPORT_PAYLOAD_FLAGS_AFAR | \
- FM_EREPORT_PAYLOAD_FLAG_PC | \
- FM_EREPORT_PAYLOAD_FLAGS_TRAP | \
- FM_EREPORT_PAYLOAD_FLAG_PRIV | \
- FM_EREPORT_PAYLOAD_FLAG_ME | \
- FM_EREPORT_PAYLOAD_FLAGS_L1L2)
-#define FM_EREPORT_PAYLOAD_L2_TAG_ECC (FM_EREPORT_PAYLOAD_FLAG_AFSRS | \
- FM_EREPORT_PAYLOAD_FLAGS_AFAR | \
- FM_EREPORT_PAYLOAD_FLAG_PC | \
- FM_EREPORT_PAYLOAD_FLAGS_TRAP | \
- FM_EREPORT_PAYLOAD_FLAG_PRIV | \
- FM_EREPORT_PAYLOAD_FLAG_ME | \
- FM_EREPORT_PAYLOAD_FLAGS_L1L2 | \
- FM_EREPORT_PAYLOAD_FLAGS_L3)
-#define FM_EREPORT_PAYLOAD_L3_TAG_ECC (FM_EREPORT_PAYLOAD_FLAG_AFSRS | \
- FM_EREPORT_PAYLOAD_FLAGS_AFAR | \
- FM_EREPORT_PAYLOAD_FLAG_PC | \
- FM_EREPORT_PAYLOAD_FLAGS_TRAP | \
- FM_EREPORT_PAYLOAD_FLAG_PRIV | \
- FM_EREPORT_PAYLOAD_FLAG_ME | \
- FM_EREPORT_PAYLOAD_FLAGS_L1L2 | \
- FM_EREPORT_PAYLOAD_FLAGS_L3)
-#define FM_EREPORT_PAYLOAD_L2_DATA (FM_EREPORT_PAYLOAD_FLAG_AFSRS | \
- FM_EREPORT_PAYLOAD_FLAGS_AFAR | \
- FM_EREPORT_PAYLOAD_FLAG_PC | \
- FM_EREPORT_PAYLOAD_FLAGS_TRAP | \
- FM_EREPORT_PAYLOAD_FLAG_PRIV | \
- FM_EREPORT_PAYLOAD_FLAG_ME | \
- FM_EREPORT_PAYLOAD_FLAGS_SYND | \
- FM_EREPORT_PAYLOAD_FLAGS_L1L2 | \
- FM_EREPORT_PAYLOAD_FLAG_RESOURCE | \
- FM_EREPORT_PAYLOAD_FLAGS_L3)
-#define FM_EREPORT_PAYLOAD_L3_DATA (FM_EREPORT_PAYLOAD_FLAG_AFSRS | \
- FM_EREPORT_PAYLOAD_FLAGS_AFAR | \
- FM_EREPORT_PAYLOAD_FLAG_PC | \
- FM_EREPORT_PAYLOAD_FLAGS_TRAP | \
- FM_EREPORT_PAYLOAD_FLAG_PRIV | \
- FM_EREPORT_PAYLOAD_FLAG_ME | \
- FM_EREPORT_PAYLOAD_FLAGS_SYND | \
- FM_EREPORT_PAYLOAD_FLAGS_L1L2 | \
- FM_EREPORT_PAYLOAD_FLAG_RESOURCE | \
- FM_EREPORT_PAYLOAD_FLAGS_L3)
-#define FM_EREPORT_PAYLOAD_MEMORY (FM_EREPORT_PAYLOAD_FLAG_AFSRS | \
- FM_EREPORT_PAYLOAD_FLAGS_AFAR | \
- FM_EREPORT_PAYLOAD_FLAG_PC | \
- FM_EREPORT_PAYLOAD_FLAGS_TRAP | \
- FM_EREPORT_PAYLOAD_FLAG_PRIV | \
- FM_EREPORT_PAYLOAD_FLAG_ME | \
- FM_EREPORT_PAYLOAD_FLAGS_SYND | \
- FM_EREPORT_PAYLOAD_FLAG_ERR_TYPE | \
- FM_EREPORT_PAYLOAD_FLAG_ERR_DISP | \
- FM_EREPORT_PAYLOAD_FLAGS_L1L2 | \
- FM_EREPORT_PAYLOAD_FLAG_RESOURCE | \
- FM_EREPORT_PAYLOAD_FLAGS_L3)
-#define FM_EREPORT_PAYLOAD_ICACHE_PE (FM_EREPORT_PAYLOAD_FLAG_PC | \
- FM_EREPORT_PAYLOAD_FLAGS_TRAP | \
- FM_EREPORT_PAYLOAD_FLAG_PRIV | \
- FM_EREPORT_PAYLOAD_FLAGS_L1I)
-#define FM_EREPORT_PAYLOAD_DCACHE_PE (FM_EREPORT_PAYLOAD_FLAG_PC | \
- FM_EREPORT_PAYLOAD_FLAGS_TRAP | \
- FM_EREPORT_PAYLOAD_FLAG_PRIV | \
- FM_EREPORT_PAYLOAD_FLAGS_L1D)
-#define FM_EREPORT_PAYLOAD_PCACHE_PE (FM_EREPORT_PAYLOAD_FLAG_PC | \
- FM_EREPORT_PAYLOAD_FLAGS_TRAP | \
- FM_EREPORT_PAYLOAD_FLAG_PRIV | \
- FM_EREPORT_PAYLOAD_FLAGS_L1P)
-#define FM_EREPORT_PAYLOAD_ITLB_PE (FM_EREPORT_PAYLOAD_FLAG_PC | \
- FM_EREPORT_PAYLOAD_FLAGS_TRAP | \
- FM_EREPORT_PAYLOAD_FLAG_PRIV | \
- FM_EREPORT_PAYLOAD_FLAGS_ITLB)
-#define FM_EREPORT_PAYLOAD_DTLB_PE (FM_EREPORT_PAYLOAD_FLAG_PC | \
- FM_EREPORT_PAYLOAD_FLAGS_TRAP | \
- FM_EREPORT_PAYLOAD_FLAG_PRIV | \
- FM_EREPORT_PAYLOAD_FLAGS_DTLB | \
- FM_EREPORT_PAYLOAD_FLAG_FAULT_VA)
-#define FM_EREPORT_PAYLOAD_FPU_HWCOPY (FM_EREPORT_PAYLOAD_FLAG_COPYFUNCTION |\
- FM_EREPORT_PAYLOAD_FLAG_INSTRBLOCK|\
- FM_EREPORT_PAYLOAD_FLAG_HOWDETECTED)
-/*
- * FM_EREPORT_PAYLOAD_UNKNOWN
- */
-#define FM_EREPORT_CPU_USIII_UNKNOWN "unknown"
-
-/*
- * FM_EREPORT_PAYLOAD_INVALID_AFSR
- */
-#define FM_EREPORT_CPU_USIII_INVALID_AFSR "invalid-afsr"
-
-/*
- * FM_EREPORT_PAYLOAD_SYSTEM1
- */
-#define FM_EREPORT_CPU_USIII_IVC "ivc"
-#define FM_EREPORT_CPU_USIII_IVU "ivu"
-#define FM_EREPORT_CPU_USIII_IMC "imc"
-#define FM_EREPORT_CPU_USIII_IMU "imu"
-#define FM_EREPORT_CPU_USIII_JETO "jeto"
-#define FM_EREPORT_CPU_USIII_SCE "sce"
-#define FM_EREPORT_CPU_USIII_JEIC "jeic"
-#define FM_EREPORT_CPU_USIII_JEIT "jeit"
-#define FM_EREPORT_CPU_USIII_JEIS "jeis"
-#define FM_EREPORT_CPU_USIII_ISAP "isap"
-#define FM_EREPORT_CPU_USIII_IVPE "ivpe"
-
-/*
- * FM_EREPORT_PAYLOAD_SYSTEM2
- */
-#define FM_EREPORT_CPU_USIII_PERR "perr"
-#define FM_EREPORT_CPU_USIII_IERR "ierr"
-
-/*
- * FM_EREPORT_PAYLOAD_SYSTEM3
- */
-#define FM_EREPORT_CPU_USIII_BP "bp"
-#define FM_EREPORT_CPU_USIII_WBP "wbp"
-
-/*
- * FM_EREPORT_PAYLOAD_IO
- */
-#define FM_EREPORT_CPU_USIII_TO "to"
-#define FM_EREPORT_CPU_USIII_BERR "berr"
-#define FM_EREPORT_CPU_USIII_DTO "dto"
-#define FM_EREPORT_CPU_USIII_DBERR "dberr"
-#define FM_EREPORT_CPU_USIII_OM "om"
-#define FM_EREPORT_CPU_USIII_UMS "ums"
-
-/*
- * FM_EREPORT_PAYLOAD_L2_TAG_PE
- */
-#define FM_EREPORT_CPU_USIII_ETP "etp"
-
-/*
- * FM_EREPORT_PAYLOAD_L2_TAG_ECC
- */
-#define FM_EREPORT_CPU_USIII_THCE "thce"
-#define FM_EREPORT_CPU_USIII_TSCE "tsce"
-#define FM_EREPORT_CPU_USIII_TUE "tue"
-#define FM_EREPORT_CPU_USIII_TUE_SH "tue-sh"
-#define FM_EREPORT_CPU_USIII_ETU "etu"
-#define FM_EREPORT_CPU_USIII_ETC "etc"
-#define FM_EREPORT_CPU_USIII_ETI "eti"
-#define FM_EREPORT_CPU_USIII_ETS "ets"
-
-/*
- * FM_EREPORT_PAYLOAD_L3_TAG_ECC
- */
-#define FM_EREPORT_CPU_USIII_L3_THCE "l3-thce"
-#define FM_EREPORT_CPU_USIII_L3_TUE "l3-tue"
-#define FM_EREPORT_CPU_USIII_L3_TUE_SH "l3-tue-sh"
-
-/*
- * FM_EREPORT_PAYLOAD_L2_DATA
- */
-#define FM_EREPORT_CPU_USIII_UCC "ucc"
-#define FM_EREPORT_CPU_USIII_UCU "ucu"
-#define FM_EREPORT_CPU_USIII_CPC "cpc"
-#define FM_EREPORT_CPU_USIII_CPU "cpu"
-#define FM_EREPORT_CPU_USIII_WDC "wdc"
-#define FM_EREPORT_CPU_USIII_WDU "wdu"
-#define FM_EREPORT_CPU_USIII_EDC "edc"
-#define FM_EREPORT_CPU_USIII_EDUBL "edu-bl"
-#define FM_EREPORT_CPU_USIII_EDUST "edu-st"
-
-/*
- * FM_EREPORT_PAYLOAD_L3_DATA
- */
-#define FM_EREPORT_CPU_USIII_L3_UCC "l3-ucc"
-#define FM_EREPORT_CPU_USIII_L3_UCU "l3-ucu"
-#define FM_EREPORT_CPU_USIII_L3_CPC "l3-cpc"
-#define FM_EREPORT_CPU_USIII_L3_CPU "l3-cpu"
-#define FM_EREPORT_CPU_USIII_L3_WDC "l3-wdc"
-#define FM_EREPORT_CPU_USIII_L3_WDU "l3-wdu"
-#define FM_EREPORT_CPU_USIII_L3_EDC "l3-edc"
-#define FM_EREPORT_CPU_USIII_L3_EDUBL "l3-edu-bl"
-#define FM_EREPORT_CPU_USIII_L3_EDUST "l3-edu-st"
-#define FM_EREPORT_CPU_USIII_L3_MECC "l3-mecc"
-
-/*
- * FM_EREPORT_PAYLOAD_MEMORY
- */
-#define FM_EREPORT_CPU_USIII_CE "ce"
-#define FM_EREPORT_CPU_USIII_RCE "rce"
-#define FM_EREPORT_CPU_USIII_FRC "frc"
-#define FM_EREPORT_CPU_USIII_EMC "emc"
-#define FM_EREPORT_CPU_USIII_UE "ue"
-#define FM_EREPORT_CPU_USIII_DUE "due"
-#define FM_EREPORT_CPU_USIII_RUE "rue"
-#define FM_EREPORT_CPU_USIII_FRU "fru"
-#define FM_EREPORT_CPU_USIII_EMU "emu"
-
-/*
- * FM_EREPORT_PAYLOAD_ICACHE_PE
- */
-#define FM_EREPORT_CPU_USIII_IPE "ipe"
-#define FM_EREPORT_CPU_USIII_IDSPE "idspe"
-#define FM_EREPORT_CPU_USIII_ITSPE "itspe"
-
-/*
- * FM_EREPORT_PAYLOAD_DCACHE_PE
- */
-#define FM_EREPORT_CPU_USIII_DPE "dpe"
-#define FM_EREPORT_CPU_USIII_DDSPE "ddspe"
-#define FM_EREPORT_CPU_USIII_DTSPE "dtspe"
-
-/*
- * FM_EREPORT_PAYLOAD_PCACHE_PE
- */
-#define FM_EREPORT_CPU_USIII_PDSPE "pdspe"
-
-
-/*
- * FM_EREPORT_PAYLOAD_DTLB_PE
- */
-#define FM_EREPORT_CPU_USIII_DTLBPE "dtlbpe"
-
-/*
- * FM_EREPORT_PAYLOAD_ITLB_PE
- */
-#define FM_EREPORT_CPU_USIII_ITLBPE "itlbpe"
-
-/*
- * FM_EREPORT_PAYLOAD_FPU_HWCOPY
- */
-#define FM_EREPORT_CPU_USIII_FPU_HWCOPY "fpu.hwcopy"
-
-/*
- * Magic values for cache dump logflags.
- * These flags are used to indicate that the structures
- * defined in cheetahregs.h to capture cache data contain
- * valid information.
- */
-#define EC_LOGFLAG_MAGIC 0xEC0106F1A6 /* =~ EC_LOGFLAG */
-#define DC_LOGFLAG_MAGIC 0xDC0106F1A6 /* =~ DC_LOGFLAG */
-#define IC_LOGFLAG_MAGIC 0x1C0106F1A6 /* =~ IC_LOGFLAG */
-#define PC_LOGFLAG_MAGIC 0x9C0106F1A6 /* =~ PC_LOGFLAG */
-#define IT_LOGFLAG_MAGIC 0x170106F1A6 /* =~ IT_LOGFLAG */
-#define DT_LOGFLAG_MAGIC 0xD70106F1A6 /* =~ DT_LOGFLAG */
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _SYS_FM_ULTRASPARC_III_H */
diff --git a/usr/src/uts/common/sys/fm/cpu/UltraSPARC-T1.h b/usr/src/uts/common/sys/fm/cpu/UltraSPARC-T1.h
deleted file mode 100644
index e6ffdfe922..0000000000
--- a/usr/src/uts/common/sys/fm/cpu/UltraSPARC-T1.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * CDDL HEADER START
- *
- * The contents of this file are subject to the terms of the
- * Common Development and Distribution License, Version 1.0 only
- * (the "License"). You may not use this file except in compliance
- * with the License.
- *
- * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
- * or http://www.opensolaris.org/os/licensing.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- *
- * When distributing Covered Code, include this CDDL HEADER in each
- * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
- * If applicable, add the following below this CDDL HEADER, with the
- * fields enclosed by brackets "[]" replaced with your own identifying
- * information: Portions Copyright [yyyy] [name of copyright owner]
- *
- * CDDL HEADER END
- */
-/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
- */
-
-#ifndef _SYS_FM_ULTRASPARC_T1_H
-#define _SYS_FM_ULTRASPARC_T1_H
-
-#pragma ident "%Z%%M% %I% %E% SMI"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * header file for Niagara-specific ereports
- */
-
-#define FM_EREPORT_PAYLOAD_NAME_L2_AFSR "l2-afsr"
-#define FM_EREPORT_PAYLOAD_NAME_L2_REAL_AFAR "l2-real-afar"
-#define FM_EREPORT_PAYLOAD_NAME_L2_SYND "l2-synd"
-
-#define FM_EREPORT_PAYLOAD_NAME_DRAM_AFSR "dram-afsr"
-#define FM_EREPORT_PAYLOAD_NAME_DRAM_REAL_AFAR "dram-real-afar"
-#define FM_EREPORT_PAYLOAD_NAME_DRAM_SYND "dram-synd"
-
-#define FM_EREPORT_CPU_UST1_DAU "dau"
-#define FM_EREPORT_CPU_UST1_DAC "dac"
-#define FM_EREPORT_CPU_UST1_DSU "dsu"
-#define FM_EREPORT_CPU_UST1_DSC "dsc"
-
-/*
- * The following constants are also defined in UltraSPARC-III.h and
- * could possibly be moved into a common header file
- */
-
-#define FM_EREPORT_PAYLOAD_NAME_RESOURCE "resource"
-#define FM_EREPORT_PAYLOAD_NAME_ERR_TYPE "error-type"
-#define FM_EREPORT_PAYLOAD_NAME_ERR_DISP "error-disposition"
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _SYS_FM_ULTRASPARC_T1_H */
diff --git a/usr/src/uts/common/sys/fm/protocol.h b/usr/src/uts/common/sys/fm/protocol.h
index 32f4d099f0..89b761ef6c 100644
--- a/usr/src/uts/common/sys/fm/protocol.h
+++ b/usr/src/uts/common/sys/fm/protocol.h
@@ -21,7 +21,7 @@
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -177,7 +177,8 @@ extern "C" {
#define FM_HC_VERS0 0
#define FM_HC_SCHEME_VERSION FM_HC_VERS0
#define CPU_SCHEME_VERSION0 0
-#define FM_CPU_SCHEME_VERSION CPU_SCHEME_VERSION0
+#define CPU_SCHEME_VERSION1 1
+#define FM_CPU_SCHEME_VERSION CPU_SCHEME_VERSION1
#define MEM_SCHEME_VERSION0 0
#define FM_MEM_SCHEME_VERSION MEM_SCHEME_VERSION0
#define MOD_SCHEME_VERSION0 0
@@ -194,6 +195,7 @@ extern "C" {
#define FM_FMRI_HC_ROOT "hc-root"
#define FM_FMRI_HC_LIST_SZ "hc-list-sz"
#define FM_FMRI_HC_LIST "hc-list"
+#define FM_FMRI_HC_SPECIFIC "hc-specific"
/* hc-list version and member names */
#define FM_FMRI_HC_NAME "hc-name"
@@ -202,6 +204,9 @@ extern "C" {
#define HC_LIST_VERSION0 0
#define FM_HC_LIST_VERSION HC_LIST_VERSION0
+/* hc-specific member names */
+#define FM_FMRI_HC_SPECIFIC_OFFSET "offset"
+
/* fmd module scheme member names */
#define FM_FMRI_FMD_NAME "mod-name"
#define FM_FMRI_FMD_VERSION "mod-version"
@@ -261,13 +266,13 @@ extern void fm_ereport_set(nvlist_t *, int, const char *, uint64_t,
const nvlist_t *, ...);
extern void fm_payload_set(nvlist_t *, ...);
extern int i_fm_payload_set(nvlist_t *, const char *, va_list);
-extern void fm_fmri_hc_set(nvlist_t *, int, const nvlist_t *, const char *,
- const char *, const char *, const char *, uint32_t, ...);
+extern void fm_fmri_hc_set(nvlist_t *, int, const nvlist_t *, nvlist_t *,
+ int, ...);
extern void fm_fmri_dev_set(nvlist_t *, int, const nvlist_t *, const char *,
const char *);
extern void fm_fmri_de_set(nvlist_t *, int, const nvlist_t *, const char *);
extern void fm_fmri_cpu_set(nvlist_t *, int, const nvlist_t *, uint32_t,
- uint8_t, uint64_t);
+ uint8_t *, const char *);
extern void fm_fmri_mem_set(nvlist_t *, int, const nvlist_t *, const char *,
const char *, uint64_t);
extern void fm_authority_set(nvlist_t *, int, const char *, const char *,
diff --git a/usr/src/uts/common/sys/fm/util.h b/usr/src/uts/common/sys/fm/util.h
index c0dc908ddc..33f5876cab 100644
--- a/usr/src/uts/common/sys/fm/util.h
+++ b/usr/src/uts/common/sys/fm/util.h
@@ -19,8 +19,9 @@
*
* CDDL HEADER END
*/
+
/*
- * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -74,9 +75,14 @@ typedef struct erpt_dump {
} erpt_dump_t;
#ifdef _KERNEL
+#include <sys/systm.h>
+#define FM_STK_DEPTH 20 /* maximum stack depth */
+#define FM_SYM_SZ 64 /* maximum symbol size */
#define FM_ERR_PIL 2 /* PIL for ereport_errorq drain processing */
+#define FM_EREPORT_PAYLOAD_NAME_STACK "stack"
+
extern errorq_t *ereport_errorq;
extern void *ereport_dumpbuf;
extern size_t ereport_dumplen;
@@ -89,6 +95,8 @@ extern void fm_banner(void);
extern void fm_ereport_dump(void);
extern void fm_ereport_post(nvlist_t *, int);
+extern void fm_payload_stack_add(nvlist_t *, const pc_t *, int);
+
#endif /* _KERNEL */
#ifdef __cplusplus
diff --git a/usr/src/uts/common/sys/kobj.h b/usr/src/uts/common/sys/kobj.h
index c2f8b2f9cb..7d2bd0922e 100644
--- a/usr/src/uts/common/sys/kobj.h
+++ b/usr/src/uts/common/sys/kobj.h
@@ -20,7 +20,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -152,7 +152,7 @@ typedef struct {
extern int kobj_load_module(struct modctl *, int);
extern void kobj_unload_module(struct modctl *);
-extern uintptr_t kobj_lookup(void *, char *);
+extern uintptr_t kobj_lookup(struct module *, const char *);
extern Sym *kobj_lookup_all(struct module *, char *, int);
extern int kobj_addrcheck(void *, caddr_t);
extern int kobj_module_to_id(void *);
diff --git a/usr/src/uts/common/sys/mem.h b/usr/src/uts/common/sys/mem.h
index f6f749ef0e..d1307589a1 100644
--- a/usr/src/uts/common/sys/mem.h
+++ b/usr/src/uts/common/sys/mem.h
@@ -20,7 +20,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -55,6 +55,14 @@ typedef struct mem_vtop {
pfn_t m_pfn;
} mem_vtop_t;
+#if defined(_SYSCALL32)
+typedef struct mem_vtop32 {
+ uint32_t m_as;
+ uint32_t m_va;
+ uint32_t m_pfn;
+} mem_vtop32_t;
+#endif
+
/*
* Private ioctls for fmd(1M). These interfaces are Sun Private. Applications
* and drivers should not make use of these interfaces: they can change without
diff --git a/usr/src/uts/common/sys/modctl.h b/usr/src/uts/common/sys/modctl.h
index 06019d5f0f..d2f4cfd803 100644
--- a/usr/src/uts/common/sys/modctl.h
+++ b/usr/src/uts/common/sys/modctl.h
@@ -62,6 +62,9 @@ struct mod_ops {
* The defined set of mod_ops structures for each loadable module type
* Defined in modctl.c
*/
+#if defined(__i386) || defined(__amd64)
+extern struct mod_ops mod_cpuops;
+#endif
extern struct mod_ops mod_cryptoops;
extern struct mod_ops mod_driverops;
extern struct mod_ops mod_execops;
@@ -107,6 +110,17 @@ struct modlfs {
struct vfsdef_v3 *fs_vfsdef; /* version may actually vary */
};
+#if defined(__i386) || defined(__amd64)
+struct cmi_ops;
+
+/* For CPU modules */
+struct modlcpu {
+ struct mod_ops *cpu_modops;
+ char *cpu_linkinfo;
+ struct cmi_ops *cpu_cmiops;
+};
+#endif
+
/* For cryptographic providers */
struct modlcrypto {
struct mod_ops *crypto_modops;
@@ -417,7 +431,7 @@ struct modctl_list {
* are replicated in the modctl structure so that mod_containing_pc()
* doesn't have to grab any locks (modctls are persistent; modules are not.)
*/
-struct modctl {
+typedef struct modctl {
struct modctl *mod_next; /* &modules based list */
struct modctl *mod_prev;
int mod_id;
@@ -449,7 +463,7 @@ struct modctl {
int mod_gencount; /* # times loaded/unloaded */
struct modctl *mod_requisite_loading; /* mod circular dependency */
-};
+} modctl_t;
/*
* mod_loadflags
@@ -479,7 +493,10 @@ extern int moddebug;
* this is the head of a doubly linked list. Only the next and prev
* pointers are used
*/
-extern struct modctl modules;
+extern modctl_t modules;
+
+extern int modload_qualified(const char *,
+ const char *, const char *, const char *, uint_t[], int);
extern void mod_setup(void);
extern int modload(char *, char *);
@@ -494,7 +511,7 @@ extern int mod_remove_by_name(char *);
extern int mod_sysvar(const char *, const char *, u_longlong_t *);
extern int mod_sysctl(int, void *);
struct sysparam;
-extern int mod_hold_by_modctl(struct modctl *, int);
+extern int mod_hold_by_modctl(modctl_t *, int);
#define MOD_WAIT_ONCE 0x01
#define MOD_WAIT_FOREVER 0x02
#define MOD_LOCK_HELD 0x04
@@ -506,13 +523,15 @@ extern void mod_release_stub(struct mod_stub_info *);
extern void mod_askparams(void);
extern void mod_uninstall_daemon(void);
extern void modreap(void);
-extern struct modctl *mod_hold_by_name(char *);
-extern void mod_release_mod(struct modctl *);
-extern uintptr_t modlookup(char *, char *);
+extern modctl_t *mod_hold_by_id(modid_t);
+extern modctl_t *mod_hold_by_name(const char *);
+extern void mod_release_mod(modctl_t *);
+extern uintptr_t modlookup(const char *, const char *);
+extern uintptr_t modlookup_by_modctl(modctl_t *, const char *);
extern char *modgetsymname(uintptr_t, unsigned long *);
-extern void mod_release_requisites(struct modctl *);
-extern struct modctl *mod_load_requisite(struct modctl *, char *);
-extern struct modctl *mod_find_by_filename(char *, char *);
+extern void mod_release_requisites(modctl_t *);
+extern modctl_t *mod_load_requisite(modctl_t *, char *);
+extern modctl_t *mod_find_by_filename(char *, char *);
extern uintptr_t modgetsymvalue(char *, int);
extern void mod_rele_dev_by_major(major_t);
@@ -532,11 +551,11 @@ extern void read_class_file(void);
extern void setbootpath(char *);
extern void setbootfstype(char *);
-extern int install_stubs_by_name(struct modctl *, char *);
-extern void install_stubs(struct modctl *);
-extern void uninstall_stubs(struct modctl *);
-extern void reset_stubs(struct modctl *);
-extern struct modctl *mod_getctl(struct modlinkage *);
+extern int install_stubs_by_name(modctl_t *, char *);
+extern void install_stubs(modctl_t *);
+extern void uninstall_stubs(modctl_t *);
+extern void reset_stubs(modctl_t *);
+extern modctl_t *mod_getctl(struct modlinkage *);
extern major_t mod_name_to_major(char *);
extern modid_t mod_name_to_modid(char *);
extern char *mod_major_to_name(major_t);
@@ -550,7 +569,7 @@ extern char *mod_containing_pc(caddr_t);
extern int mod_in_autounload(void);
extern char *mod_modname(struct modlinkage *);
-extern int dev_minorperm(dev_info_t *dip, char *name, mperm_t *rmp);
+extern int dev_minorperm(dev_info_t *, char *, mperm_t *);
/*
* Declarations used for dynamic linking support routines. Interfaces
diff --git a/usr/src/uts/common/sys/policy.h b/usr/src/uts/common/sys/policy.h
index 3e1b260c1e..9653a58b0e 100644
--- a/usr/src/uts/common/sys/policy.h
+++ b/usr/src/uts/common/sys/policy.h
@@ -20,7 +20,7 @@
* CDDL HEADER END
*/
/*
- * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
+ * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
@@ -88,6 +88,7 @@ boolean_t secpolicy_contract_event_choice(const cred_t *);
int secpolicy_coreadm(const cred_t *);
int secpolicy_cpc_cpu(const cred_t *);
int secpolicy_dispadm(const cred_t *);
+int secpolicy_error_inject(const cred_t *);
int secpolicy_excl_open(const cred_t *);
int secpolicy_fs_mount(cred_t *, vnode_t *, struct vfs *);
int secpolicy_fs_unmount(cred_t *, struct vfs *);